nix*_*xda 1 powershell windows-7 powershell-4.0
假设您只有音乐文件中的艺术家和标题,但不知道专辑名称。
当您在 Chrome 中使用Google 搜索 ieGolden Earring Radar Love Album时,您会得到:
您可以看到专辑名称(Moontan)、发行日期(1973 年 7 月)甚至正确的专辑封面。该页面部分如何命名?谷歌预览?谷歌即时页面?我不知道
如何通过 PowerShell 以编程方式获取这些信息?
Invoke-Webrequest:不起作用,特定内容未响应
$Response = Invoke-WebRequest -URI "https://www.google.com/search?hl=en&q=Golden+Earring+Radar+Love+Album"
$Response.content | Set-Content D:\test.txt
Run Code Online (Sandbox Code Playgroud)XmlHttpRequest:不起作用,特定内容未响应
$objXmlHttp = New-Object -ComObject MSXML2.ServerXMLHTTP
$objXmlHttp.Open("GET", "https://www.google.com/search?hl=en&q=Golden+Earring+Radar+Love+Album")
$objXmlHttp.Send()
$objXmlHttp.responseText | Set-Content D:\test.txt
Run Code Online (Sandbox Code Playgroud)Invoke-RestMethod:不起作用,仅检索 URL 及其片段
$Response = Invoke-RestMethod -Uri 'https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Golden%20Earring%20Radar%20Love%20Album'
$Response.responseData.results
Run Code Online (Sandbox Code Playgroud)我寻找可以在 PowerShell 中使用的Google Play 或 Google Music API
我认为问题在于,这些信息是通过 Javascript 加载的,而在使用Invoke-WebRequest等方法时,Javascript 不会执行这些信息。我在这里可能是错的。
我看到两种解决方案:1)在 PowerShell 中模仿 Web 浏览器并将整个网站加载到表单中。或者 2)使用 fiddler 查看这些额外信息的加载时间和方式。我更喜欢第二种解决方案,但这两种解决方案都超出了我的知识范围。
我已经有了工作 PowerShell 脚本,仅获取给定艺术家的专辑名称和附加信息以及众多服务的曲目标题,包括Amazon、Deezer、Discogs、EchoNest、iTunes、Last.fm、MusicBrainz、Napster、rdio 和 Spotify。因为他们都提供了易于使用的 API(亚马逊除外。他们的实现相当困难)。
我对大约 3000 个音乐文件进行了一些测试,仅给出艺术家和曲目标题,以检索相应的专辑名称。当我将结果与谷歌进行比较时,我发现上述服务都没有谷歌那么准确。
ii $profileFunction search-google {
$query = 'https://www.google.com/search?q='
$args | % { $query = $query + "$_+" }
$url = $query.Substring(0, $query.Length - 1)
start "$url"
}
Set-Alias glg search-google
Run Code Online (Sandbox Code Playgroud)
glg hello world | 归档时间: |
|
| 查看次数: |
10814 次 |
| 最近记录: |