Public/Other/Search-GoogleIt.ps1

# REFACTOR: Code quality. Linux support.
function Search-GoogleIt {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory,Position=0,ValueFromPipeline)]
        [String[]]
        $Query,

        [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName)]
        [Switch]
        $ImageSearch,

        [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName)]
        [Switch]
        $CleanUpFilename,

        [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName)]
        [ValidateSet('Any', '2mp', '4mp', '6mp', '8mp', '10mp', '12mp', '15mp', '20mp', '40mp', '70mp', IgnoreCase = $true)]
        [String]
        $ImageSearchSize = 'Any',

        [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName)]
        [ValidateSet('Any', 'jpg', 'gif', 'png', 'bmp', 'svg', 'webp', 'ico', 'raw', IgnoreCase = $true)]
        [String]
        $ImageFileType = 'Any',

        [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName)]
        [String]
        $SiteOrDomain = ''
    )

    process {

        $ImageSearchSizeStr = ($ImageSearchSize -eq 'Any') ? '' : "$($ImageSearchSize.ToLower())"
        $ImageFileTypeStr   = ($ImageFileType -eq 'Any') ? '' : "filetype:$($ImageFileType.ToLower())"
        $SiteOrDomainStr    = ($SiteOrDomain) ? "site:$SiteOrDomain" : ''
        $DefaultBrowserPath = (Get-WindowsDefaultBrowser).ImagePath

        $idx = 1
        foreach ($Q in $Query) {
            if($CleanUpFilename){
                $Q = $Q -replace '_',' '
                $Q = $Q -replace '\.',' '
            }

            $Encoded = [System.Web.HttpUtility]::UrlEncode($Q)

            if($ImageSearch){
                $SearchString = "https://www.google.com/search?as_st=y&tbm=isch&as_q=$Encoded+$SiteOrDomainStr&as_epq=&as_oq=&as_eq=&cr=&as_sitesearch=&safe=images&tbs=isz:lt,islt:$ImageSearchSizeStr,ift:$ImageFileTypeStr"
            }else{
                $SearchString = "https://www.google.com/search?q=$Encoded+$SiteOrDomainStr"
            }

            if($idx -ne 1) { Start-Sleep -Seconds .4 }
            $idx++
            Start-Process $DefaultBrowserPath $SearchString
        }
    }
}