VB.NET中的自动提取抒情

时间:2014-12-26 14:39:36

标签: vb.net webbrowser-control google-search audio-player

你好我正在做一个关于音乐播放器的项目。我添加了一个功能,当音乐播放器改变歌曲时,有一个浏览器将重定向到该歌曲的歌词。

但是有一个问题,我正在使用谷歌感觉幸运的api (http://google.com/search?sourceid=navclient&btnI=1&q=),这是我的代码(我使用的是visual basic):

Private Sub Player_CurrentItemChange(sender As Object, e As AxWMPLib._WMPOCXEvents_CurrentItemChangeEvent) Handles Player.CurrentItemChange
    If My.Settings.lyricenable = True Then
        Dim Artist As String = Player.Ctlcontrols.currentItem.getItemInfo("Artist")
        Dim Title As String = Player.Ctlcontrols.currentItem.getItemInfo("Title")
        lyricsbrowser.Navigate("http://google.com/search?sourceid=navclient&btnI=1&q=" + Title + "+" + Artist + "+Lyrics")

    End If
End Sub

(lyricenable是用户可以启用自动歌词查找或取消它的设置)

所以我运行该程序,我发现其中一些有效(例如http://google.com/search?sourceid=navclient&btnI=1&q=Pompeii+Bastille+lyrics,这会转到http://www.azlyrics.com/lyrics/bastille/pompeii.html

但有些人向Google展示了所有搜索结果(例如https://www.google.fr/search?sourceid=navclient&btnI=1&q=Problem+Pentatonix+Lyrics

问题出在哪里?我是VB的新手,所以我知道这些。告诉我是否有更好的方法。谢谢!

(抱歉,stackoverfow只允许我有2个链接,所以我阻止引用一些链接)

1 个答案:

答案 0 :(得分:0)

您可以尝试以下几种方法:

  1. 正如评论中所提到的,最有效的方法可能是使用歌词API,例如http://api.wikia.com/wiki/LyricWiki_API。如果你不是一个经验丰富的开发人员,那么在VB.Net中这很难做到,但是有可能使用WebRequest()。

  2. 您可以使用其他搜索引擎 - Bing曾经拥有最佳匹配功能,但我认为它已被弃用。 DuckDuckGo(顺便说一句伟大的搜索引擎),有一个你可以使用的即时答案API(https://duckduckgo.com/api)。

  3. 使用内部网站搜索,该搜索仅在一个网站上搜索歌词。这只是找到一个歌词网站的问题。如果网站有内置网站搜索,您可以使用该搜索,或为其创建Google自定义搜索(请参阅https://support.google.com/customsearch/answer/2630963?hl=en)。

  4. 或者,如果您知道格式,只需转到特定网站的直接网址即可。您可以使用正则表达式(RegEx)正确格式化歌曲的URL,并在If语句中尝试多种格式。

  5. 在VB.Net中可能只需要三个和四个,但它们并不可靠。我想你总是可以将多种方法结合起来作为后备。希望有所帮助。