用VB写歌词搜索程序节能
民生理财 2020-11-20 07:57 字号: 大 中 小
,听歌,再加上一杯香茗,真是悠哉游哉。听到兴致之时,自然想看歌词。音乐极限站就提供了歌词搜索。我想,作为编程爱好者的我们,能不能在程序中实现歌词搜索呢?经过一番研究,发觉其实也很简单。 首先看看音乐极限歌词搜索是怎样进行的。比如搜索张学友的《偷心》,我发觉音乐极限有一种歌词搜索方式是这样的:只要在IE地址栏中键入偷心singer_name=张学友
并回车,即可搜索出歌词。也就是说在“张学友”处要输入的是歌手名,在“偷心”处要输入的是歌名,然后就能搜索。我又试了搜索其他歌手的歌曲,均可以。并且我查看源文件发觉歌词在页中排放有固定规律。比如在显示歌词的页上,均有固定的“歌词:”后面接歌词,而且在源文件中它们都被放在一个
…
之间。所以当我们获取了全部源文件,我们首先寻找“歌词:”,如果找不到,则服务器上没提供要搜索的歌词;如果找到,则去掉它前面所有代码,然后再寻找“
”,只要找到第一个“
”,我们就把它以及它后面的代码全部清除,歌词就在剩下的代码中。我们知道,在页中“”和“”是配对出现的。我仔细研究了剩下的代码,发觉在“”和“”之间要么是歌词,要么是空格。所以只要在剩下的代码中去除全部“”和“”之间的内容包括它们本身即可得到歌词。
又如何进行搜索以获取源文件呢?VB当中有几个控件都可以做到。本程序使用inet控件。inet有两种方法可以向服务器请求获取指定的数据,分别是OpenURL和Execute。他们的不同点在于前者是同步的,后者是异步的。一般来说,使用OpenURL比较方便,因为它可以直接把获取的数据赋给某个变量。但是本程序只用Execute,因为使用OpenURL会出现一个很难解决的问题,至于什么问题,还是留着给读者您当练习吧。
现在开工。打开VB6,新建一个工程,在工具箱里添加inet控件。在窗体Form上画出三个文本框,分别命名为txt歌手、txt歌名和txt歌词,Text属性均为空,其中txt歌词的属性MultiLine为True,属性ScrollBars为2-Vertical。再添加一个按钮并命名为cmd搜索,其属性Caption为搜索;最后添加一个inet控件,名为inet1。
详细代码如下:
Option Explicit
Private Sub cmd搜索_Click()
''向服务器请求下载歌词
ecute "" Trim(txt歌 名) "" "singer_name=" Trim(txt歌手), "get"
End Sub
Private Sub inet1_StateChanged(ByVal State As Integer)
Dim 页代码$
Dim 临时变量$
Dim 位置
If State = 11 Then
MsgBox "出现错误!"
ElseIf State = 12 Then
<也就导致了这个戒指的价格相当的低。从而便宜了我们广大平民玩家。试想一下艾尔文价值3000w才增加9%的智力。而拉罗只需要40w就可以增加15%的智力p>Do ''开始接受数据DoEvents
临时变量$ = tChunk(1024, icString)
If Len(临时变量$) = 0 Then Exit Do
页代码$ = 页代码$ 临时变量$ ''接受到的所有数据存放在变量 “页代码$”中
Loop
位置 = InStr(1, 页代码$, "歌词:") ''首先寻找特征词“歌词:”
If 位置 = 0 Then
''如果没找到特征词“歌词:”就证明服务器上没提供要搜索的歌词
MsgBox "未收录这首歌的歌词!"
Exit Sub
Else
''把歌词解析出来
''首先把“页代码$”中“歌词:”前面的代码全部去掉
页代码$ = Right(页代码$, Len(页代码$) - (位置 - 1))
''寻找第二个特征词“
”
位置 = InStr(1, 页代码$, "
")
''把特征词“
”后面的代码(包括特征词自身)全部去掉
页代码$ = Left(页代码$, 位置 - 1)
''歌词就在剩下的代码中
Do
DoEven平均起来ts
位置 = InStr(1, 页代码$, "")
If 位置 = 0 Then
''如果找不到字符“”则证明整个寻找已结束
临时变量$ = 临时变量$ " " 页代码$
Exit Do
Else
''找到字符“”把它前面的代码截取保存
临时变量$ = 临时变量$ " " Left(页代码$, 位置 - 1)
''然后从“页代码$ ”中清除已被截取部分和字符“”
页代码$ = Right(页代码$, Len(页代码$) - 位置)
''再寻找字符“”
位置 = InStr(1, 页代码$, "")
''找到字符“”把它前面代码包括它自身全部清除
页代码$ = Right(页代码$, Len(页代码$) - 位置)
End If
Loop
''“临时变量$”中存放着歌词,把它们全部赋给“txt歌词”
txt歌词 = 临时变量$
End If
End If
End Sub
南通治白癜风佳木斯看牛皮癣去哪个医院舟山看白癜风医院哪家好-
-
天津女排踏上复兴之路阵容重组陈丽怡仍是中
天津女排踏上复兴之路 阵容重组陈丽怡仍是中坚天津女排夺冠...
2020-07-07 | 民生理财
-
-
专家房产税征收受到九成以上政府官员阻挠搭配
专家:房产税征收受到九成以上政府官员阻挠 “要搞好房地产...
2020-06-06 | 民生理财
-
-
海南西环高速铁路正式试运行和谐号动车疾驰搭配
海南西环高速铁路正式试运行 和谐号动车疾驰前进 11月26日,...
2020-06-02 | 民生理财
-
-
北京市机动车停车条例搭配
北京市机动车停车条例(2018年3月30日北京市第十五届人民代表...
2020-05-31 | 民生理财
-
-
决胜局独揽分李盈莹表现出彩担任接应效果不搭配
决胜局独揽分李盈莹表现出彩 担任接应效果不佳李盈莹中国女...
2020-05-30 | 民生理财
-
-
特评从C罗到彩票佛爷的任性主帅为他背锅搭配
特评:从C罗到彩票!佛爷的任性 主帅为他背锅原标题:特评...
2020-05-29 | 民生理财