使用windows的朋友,请使用 《硕鼠-影音下载中心》
以下仅讨论Linux下的情况。
这几天忽然想看《七龙珠》,于是到youku.com下一集一集地看。可是网页看得不爽,广告贼多于是想着把flv下回来看,故而折腾出这个脚本。
原理是使用parse.php进行解析,然后调用aria2c进行下载(似乎wget, axel都会报403错误?)。脚本是用ruby写的,为了方便,我还加了GUI的提示(适合KDE。gnome用户就自己看着办吧。)
例子:
$ ./flvcd
将一下代码保存为/usr/bin/flvcd ,并添加可执行权限
#!/usr/bin/ruby
require 'open-uri'
require 'iconv'
# 下载命令调用(注意这里把文件下载到 ~/flv/目录下)
DL = "aria2c -c -j%d -s1 -i%s --referer=%s -d ~/flv"
class Flv
@@CONVERT = Iconv.new('UTF-8', 'GBK')
@@FLVCD="parse.php?kw="
#@@FLVCD=""
attr_reader :names, :urls, :count, :caption
# 解析flv播放页面的地址
def analyse(url)
path = @@FLVCD + url
open(path) do |page|
@content = @@CONVERT.iconv(page.read()).gsub ".sixxs.org", ""
@names = @content.scan(/<N>(.*)/).flatten
@urls = @content.scan(/<U>(.*)/).flatten
end
@count = @names.length
@caption = @names[0].gsub "-0001", ""
end
# 生成aria2c的下载列表
def aria2file(name, postfix = "")
file = File.new(name, "w")
@urls.each_with_index do |url, i|
file.puts url
file.puts " out=" + @names[i] + postfix
end
file.flush
file.close
end
end
# 使用kdialog进行提示。
def alarm(msg)
#puts msg # GNOME用户请使用这个
system "kdialog --passivepopup '#{msg}' 5"
end
flv = Flv.new
ARGV.each do |arg|
file="/tmp/urllist" + rand.to_s
alarm 'Analysing ' + arg
flv.analyse arg
flv.aria2file file, ".flv"
alarm 'Begin to download ' + flv.caption
system DL % [flv.count * 3, file, arg]
File.delete file
alarm 'Compelete ' + flv.caption
end
|
另外,对于opera用户(比如,我),可以给opera右键菜单添加选项进行调用。
编辑文件 ~/.opera/menu/standard_menu.ini (什么?没有这个文件?请将 /usr/share/opera/ui/standard_menu.ini 复制过来)。
找到 “[Link Popup Menu]” 一节,添加一行:
Item, "下载 FLVs" = Execute program, "flvcd", "%l"
找到 “[Document Popup Menu] ”一节,再添加一行:
Item, "下载 FLVs" = Execute program, "flvcd", "%u"
重启opera,就可以看到对应链接的右键菜单中有新的选项喽!
阅读(1833) | 评论(3) | 转发(0) |