天天看点

用ruby写了一个搜索下载歌曲的工具

[url=http://fuliang.iteye.com/blog/176323]前几天用java写了一个GUI的搜索下载工具[/url],主要利用baidu mp3搜索的结果。[url=http://hi.baidu.com/david_jlu/blog/item/d76622a1f1a6878f46106446.html]david同学用perl写了命令行的类似的下载工具[/url],为了练练ruby,我又写了ruby版的。

Fetcher类:

根据url来Fetch到页面,供Parser分析之用

Parser类:

提取出可供下载的链接,并通过ping,来选取速度最快的连接,供Download之用:

Download类:

[quote]

[email protected]:~/program/ruby/mp3download$ ruby download.rb pretty body

正在建立连接...

正在获取搜索结果...

已经搜索到25个链接可以下载...

正在选择速度最快的链接...

已经获得最快的下载连接:http://www.jxggzp.com/muisc/20051122185348.mp3.

开始下载...

大小: 6570KB

歌曲名: 20051122185348.mp3

已经下载: 100%

下载完毕...

[/quote]

基本上可以使用。现在还存在一些问题,下载链接中有中文,往往会失败,主要是没有进行编码,知道ruby有个Iconv.conv来转换编码,不知道如何直接对中文进行编码:不知道没有像encode("gb2312","大海")之类的方法。另一个是下载问题:进度条有问题,主要open-uri使用open貌似就把文件下载到本地了,造成open很长时间,fin.read,fout.write是本地操作则非常快,结果下载进度从开始出现到下载完成瞬间就完成。希望各位达人可以帮助修正两个问题。