iambus / youku-lixian Goto Github PK
View Code? Open in Web Editor NEW优酷下载脚本,顺便支持其他……
License: Other
优酷下载脚本,顺便支持其他……
License: Other
似乎是因为acfun调整了页面结构。
我看了一下主要变化是两点:第一是页面编码改成utf-8了,代码中用gbk做解码会出错;第二个是对flashvar的获取,现在的格式完全变了,最关键是没有type这个参数了,所以我自己不知道怎么改,只能发issue上来求助了。
root@Route:/opt# python /opt/bin/video_lixian.py --playlist http://www.tudou.com/playlist/p/a67146i91771627.html
Downloading 1 of 24 videos...
Traceback (most recent call last):
File "/opt/bin/video_lixian.py", line 48, in
main()
File "/opt/bin/video_lixian.py", line 45, in main
script_main('video_lixian', any_download, any_download_playlist)
File "/opt/bin/common.py", line 244, in script_main
download_playlist(url)
File "/opt/bin/video_lixian.py", line 42, in any_download_playlist
m.download_playlist(url)
File "/opt/bin/tudou.py", line 64, in tudou_download_playlist
tudou_download_by_iid(id, title)
File "/opt/bin/tudou.py", line 18, in tudou_download_by_iid
download_urls([url], title, 'flv', total_size=None)
File "/opt/bin/common.py", line 175, in download_urls
if os.path.exists(filepath) and os.path.getsize(filepath) >= total_size * 0.9:
File "/opt/lib/python2.7/genericpath.py", line 18, in exists
os.stat(path)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 2-7: ordinal not in range(128)
另外能不能把文件头由python修改成python2,毕竟arch和gentoo什么的发行版都是3默认了
download all videos in a play list.
A站B站上还有一些土豆的视频,望支持,先谢谢了
bilibili都支持了...
然后就是...
“本脚本完全按需编码(目前就我个人的需求)。如果想支持其他在线视频站点的下载,请在github里New Issue:”
这个后面网址和句号之间可以加个空格...
这个网站视频质量蛮高哦
就是不要等到下载完再合并,用追加文件的方式每下完一段就和前面的合并。。
能否支持土豆网,尤其是土豆网的“原画”画质
路由器使用OpenVPN无缝翻墙,可以正常访问youtube,能否增加对youtube的支持?
中关村
天极
新华卫视
爆米花
http://www.iqiyi.com/jilupian/20120105/e866f8946924ff5c.html
Traceback (most recent call last):
File "iqiyi.py", line 43, in
main()
File "iqiyi.py", line 40, in main
script_main('iqiyi', iqiyi_download)
File "C:\codes\ztfx\video\youku-lixian\common.py", line 287, in script_main
download(url, merge=merge)
File "iqiyi.py", line 23, in iqiyi_download
assert videoId
AssertionError
➜ youku-lixian git:(master) python2 ./video_lixian.py http://www.yinyuetai.com/video/463772
Traceback (most recent call last):
File "./video_lixian.py", line 62, in <module>
main()
File "./video_lixian.py", line 59, in main
script_main('video_lixian', any_download, any_download_playlist)
File "/home/soimort/Source/youku-lixian/common.py", line 287, in script_main
download(url, merge=merge)
File "./video_lixian.py", line 52, in any_download
m.download(url, merge=merge)
File "/home/soimort/Source/youku-lixian/yinyuetai.py", line 42, in yinyuetai_download
yinyuetai_download_by_id(id, title, merge=merge)
File "/home/soimort/Source/youku-lixian/yinyuetai.py", line 29, in yinyuetai_download_by_id
assert url
AssertionError
给 video_lixian.py 加上执行权限吧,每次打 python 和脚本路径可不好用。加上执行权限,我可以直接软链接到 $PATH 里。
嗯,还有 #! 别忘了呀。记得写明版本号。Arch 默认的 python 是 python3 的。
acfun.py 40行左右作者寫下如下一句語句:
title = r1(r'<h1 id="title-article" class="title"[^<>]>([^<>]+)<span', html)
但是我在看某些網站,如http://www.acfun.tv/v/ac479289時,發現沒有span標籤,致使title獲取失敗
建議將其改成r'<h1 id="title-article" class="title"[^<>]>([^<>]+)</h1>'或者其他更通用的正則匹配
➜ youku-lixian git:(master) python2 ./video_lixian.py http://www.tudou.com/programs/view/LFxGz2FTF70/
Traceback (most recent call last):
File "./video_lixian.py", line 63, in <module>
main()
File "./video_lixian.py", line 60, in main
script_main('video_lixian', any_download, any_download_playlist)
File "/home/soimort/Source/youku-lixian/common.py", line 287, in script_main
download(url, merge=merge)
File "./video_lixian.py", line 53, in any_download
m.download(url, merge=merge)
File "/home/soimort/Source/youku-lixian/tudou.py", line 31, in tudou_download
assert title
AssertionError
任何拖拉始终只能从第一段结束开始播放
比如 http://news.cntv.cn/program/xwlb/20121113/106744.shtml
正则里 r'http://\w+.cntv.cn/(\w+/\w+/classpage/video/)?\d+/\d+.shtml' 改成 r'http://\w+.cntv.cn/(\w+/\w+/)?\d+/\d+.shtml' 才能下载。希望能更新一下cntv的正则表达式
希望支持爱奇艺(http://www.iqiyi.com)上的剧集,最好能支持 --playlist
R:\DOWNLOADS\iambus>python bilibili.py http://www.bilibili.tv/video/av204442/index_3.html
Traceback (most recent call last):
File "bilibili.py", line 73, in
main()
File "bilibili.py", line 70, in main
script_main('bilibili', bilibili_download)
File "R:\DOWNLOADS\iambus\common.py", line 232, in script_main
download(url)
File "bilibili.py", line 57, in bilibili_download
iask_download_by_id(id, title)
File "R:\DOWNLOADS\iambus\iask.py", line 16, in iask_download_by_id
download_urls(urls, title, 'flv', total_size=None)
File "R:\DOWNLOADS\iambus\common.py", line 188, in download_urls
print 'Downloading %s.%s ...' % (title, ext)
File "C:\Python27\lib\encodings\cp437.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 12-21: character maps to
OS: win7 64bit
youku上的我到现在下载的所有视频都不能在android设备上正常播放,mxplayer到每段的结尾处会卡死,vlc直接会退出,无论用何种解码方式,pc上mplayer倒是可以直接看不过终端会冒出很多错误,vlc在硬解下直接Segmentation fault。。既然有点问题,可否添加一个不要合并的选项?毕竟大多数移动设备的播放器会自动添加文件播放列表,连续看不是问题。谢谢了
首先感谢你 youku.py离线下载表现非常好
tudou.py下载http://www.tudou.com/programs/view/DbiFGTJ4LHQ 上的视频文件大小为120MB且在本地用快播无法拖动进度条 用Replay.Media.Catcher自带flv播放器播放可拖动进度条但存在画面往复现象
idm捕捉到的视频大小为80MB左右 用快播可以拖动进度条
因为对python不了解 不明白是什么原因
望解答
虽然我用idown下来,还是来报一下
56那个脚本assert ext in ['mp4', 'flv']的时候出错了
我把中间变量都打出来看到,url现在是 xxxx.mp4?param=xxx 这样的形式,所以提取ext的正则把后面参数都提出来了
能不能自动根据后缀名调用 mp4 或者flv的拼接呢
谢谢
E:\youku-lixian\iambus-youku-lixian-8058707>ku6 http://v.ku6.com/show/KSYMbPaXn-BMuzFZuYLd1g...html
Traceback (most recent call last):
File "E:\youku-lixian\iambus-youku-lixian-8058707\ku6.py", line 33, in
main()
File "E:\youku-lixian\iambus-youku-lixian-8058707\ku6.py", line 30, in main
script_main('ku6', ku6_download)
File "E:\youku-lixian\iambus-youku-lixian-8058707\common.py", line 291, in script_main
download(url, merge=merge)
File "E:\youku-lixian\iambus-youku-lixian-8058707\ku6.py", line 24, in ku6_download
ku6_download_by_id(id, merge=merge)
File "E:\youku-lixian\iambus-youku-lixian-8058707\ku6.py", line 10, in ku6_download_by_id
data = json.loads(get_html('http://v.ku6.com/fetchVideo4Player/%s...html'%id))['data']
File "E:\youku-lixian\iambus-youku-lixian-8058707\common.py", line 56, in get_html
content = get_response(url).data
File "E:\youku-lixian\iambus-youku-lixian-8058707\common.py", line 46, in get_response
response = urllib2.urlopen(url)
File "D:\Python27\lib\urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "D:\Python27\lib\urllib2.py", line 400, in open
response = meth(req, response)
File "D:\Python27\lib\urllib2.py", line 513, in http_response
'http', request, response, code, msg, hdrs)
File "D:\Python27\lib\urllib2.py", line 438, in error
return self._call_chain(_args)
File "D:\Python27\lib\urllib2.py", line 372, in _call_chain
result = func(_args)
File "D:\Python27\lib\urllib2.py", line 521, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 404: Not Found
我想用wget下载这个,或者其他支持命令行的工具,能否支持一下呢?
RT,能不能像 xunlei-lixian 项目一样,写一个 类似 lixian_cli.py 的脚本,根据网址自动调用对应的模块来下载
对于多视频页面和电视剧的下载有点茫然
特别是我用路由来操作的人
要是能添加对多视频或者电视剧的选择下载就好了
比如根据自己的需要我每天只更新5集或者10集电视剧就好
由于路由的能力和网络使用的需要不能长时间的挂机特别是合并对硬件要求还是有点高
如果可以根据视频ID选择就可以在闲时根据实际情况添加需要下的视频了
可能我这个要求有点不合理呵呵。。。。。。。。。。。。。。
好像还没有迅雷看看的,上面有些是1080P的视频,值得下载。
错误信息如下:
Traceback (most recent call last):
File "/usr/bin/lxv", line 60, in
main()
File "/usr/bin/lxv", line 57, in main
script_main('video_lixian', any_download, any_download_playlist)
File "/_my/youku-lixian/common.py", line 285, in script_main
download(url, merge=merge)
File "/usr/bin/lxv", line 49, in any_download
m = url_to_module(url)
File "/usr/bin/lxv", line 46, in url_to_module
raise NotImplementedError(url)
NotImplementedError: http://kankan.xunlei.com/vod/mp4/33/33773.shtml
测试地址:
http://kankan.xunlei.com/vod/1080p/66917.shtml
http://kankan.xunlei.com/vod/mp4/33/33773.shtml
http://www.iqiyi.com/jilupian/20120105/e866f8946924ff5c.html
Traceback (most recent call last):
File "/usr/bin/lxv", line 62, in
main()
File "/usr/bin/lxv", line 59, in main
script_main('video_lixian', any_download, any_download_playlist)
File "/_my/youku-lixian/common.py", line 287, in script_main
download(url, merge=merge)
File "/usr/bin/lxv", line 52, in any_download
m.download(url, merge=merge)
File "/_my/youku-lixian/iqiyi.py", line 22, in iqiyi_download
assert videoId
AssertionError
请查看一下,谢谢!!
Add support for CBS.com videos.
Example: http://www.cbs.com/shows/survivor/video/OY3wxBVz8cpSMXJ6nX2h758qVYmJjoa9/survivor-philippines-dead-man-walking
貌似提取视频title的正则失效了
D:\下载\iambus-youku-lixian-7720b95>python video_lixian.py http://www.tudou.com/programs/view/SGfYUr
tzMe8/?resourceId=101048554_06_02_99
Traceback (most recent call last):
File "video_lixian.py", line 50, in
main()
File "video_lixian.py", line 47, in main
script_main('video_lixian', any_download, any_download_playlist)
File "D:\下载\iambus-youku-lixian-7720b95\common.py", line 261, in script_main
download(url)
File "video_lixian.py", line 40, in any_download
m.download(url)
File "D:\下载\iambus-youku-lixian-7720b95\tudou.py", line 31, in tudou_download
assert title
AssertionError
希望可以选择分辨率,或默认下载最高分辨率
我要下一部很大的電視劇,結果下到15個video的時候卡住,原因應該是youku會定時更新cookie,導致下載失敗(懷疑),希望加入超時機制,發現失敗重新獲取地址下載。
作者辛苦,這個東西做得真的很不錯,非常感謝
順便把結束時候卡住的日誌發過來:File "youku.py", line 169, in
main()
File "youku.py", line 166, in main
script_main('youku', youku_download, youku_download_playlist)
File "....../youku-lixian/common.py", line 262, in script_main
download_playlist(url)
File "youku.py", line 160, in youku_download_playlist
youku_download(id)
File "youku.py", line 111, in youku_download
youku_download_by_id(id2, title, output_dir)
File "youku.py", line 99, in youku_download_by_id
download_urls(urls, title, file_type_of_url(urls[0]), total_size, output_dir)
File ".....youku-lixian/common.py", line 213, in download_urls
url_save(url, filepath, bar, refer=refer)
File ".....youku-lixian/common.py", line 88, in url_save
buffer = response.read(1024*256)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 380, in read
data = self._sock.recv(left)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 553, in read
s = self.fp.read(amt)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 380, in read
data = self._sock.recv(left)
卡在common.py", line 88
文件夹名字是播放单的名字,如果下的东西多了,找不着北,顺便把把专辑下载下来的文件名后面的相同文字cut掉
C:\Users\asdf\youku-lixian>python youku.py --playlist http://www.youku.com/play
list_show/id_4248711.html
Downloading 1 of 22 videos...
Downloading ----22(---).flv ...
Traceback (most recent call last):
File "youku.py", line 169, in
main()
File "youku.py", line 166, in main
script_main('youku', youku_download, youku_download_playlist)
File "C:\Users\asdf\youku-lixian\common.py", line 272, in script_main
download_playlist(url)
File "youku.py", line 160, in youku_download_playlist
youku_download(id)
File "youku.py", line 111, in youku_download
youku_download_by_id(id2, title, output_dir)
File "youku.py", line 99, in youku_download_by_id
download_urls(urls, title, file_type_of_url(urls[0]), total_size, output_dir
)
File "C:\Users\asdf\youku-lixian\common.py", line 212, in download_urls
url_save(url, filepath, bar, refer=refer)
File "C:\Users\asdf\youku-lixian\common.py", line 75, in url_save
response = urllib2.urlopen(request)
File "c:\python27\lib\urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "c:\python27\lib\urllib2.py", line 406, in open
response = meth(req, response)
File "c:\python27\lib\urllib2.py", line 519, in http_response
'http', request, response, code, msg, hdrs)
File "c:\python27\lib\urllib2.py", line 444, in error
return self._call_chain(_args)
File "c:\python27\lib\urllib2.py", line 378, in _call_chain
result = func(_args)
File "c:\python27\lib\urllib2.py", line 527, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 404: Not Found
是不是因為我在美國?
有个用lua写的视频下载器叫idown,支持很多视频网站,本来想学python,把那个lua脚本用python重写一遍,可惜,你懂的,如果这个下载器想idown那样有个图形界面会吸引更多用户的,当然我知道这玩意可能是跑在嵌入式的linux下,建议,纯属建议
➜ youku-lixian git:(master) python2 acfun.py http://www.acfun.tv/v/ac432142
Traceback (most recent call last):
File "acfun.py", line 57, in <module>
main()
File "acfun.py", line 54, in main
script_main('acfun', acfun_download)
File "/home/soimort/Source/youku-lixian/common.py", line 287, in script_main
download(url, merge=merge)
File "acfun.py", line 41, in acfun_download
assert title
AssertionError
E:\ANIMATION__bilibili>python iambus-youku-lixian\bilibili.py http://www.bilibili.tv/video/av206982/
Traceback (most recent call last):
File "iambus-youku-lixian\bilibili.py", line 63, in
main()
File "iambus-youku-lixian\bilibili.py", line 60, in main
script_main('bilibili', bilibili_download)
File "E:\ANIMATION__bilibili\iambus-youku-lixian\common.py", line 232, in script_main
download(url)
File "iambus-youku-lixian\bilibili.py", line 53, in bilibili_download
iask_download_by_id(id, title)
File "E:\ANIMATION__bilibili\iambus-youku-lixian\iask.py", line 16, in iask_download_by_id
download_urls(urls, title, 'flv', total_size=None)
File "E:\ANIMATION__bilibili\iambus-youku-lixian\common.py", line 164, in download_urls
assert urls
AssertionError
您好:
诚望youku-lixian 能支持央视网站视频下载。举两个例子,如下。
[军旅文化大视野]纪念建军85周年特别节目:《金色的记忆》之《闪闪的红星》(20120527)
http://news.cntv.cn/20120527/110964.shtml
探索发现 20111120 黄埔军校(一):到黄埔去
http://xiyou.cntv.cn/v-2e02aa92-40e2-11e1-b140-a4badb469111.html
en
http://tv.sohu.com/20110923/n320325529.shtml
Traceback (most recent call last):
File "sohu.py", line 36, in
main()
File "sohu.py", line 33, in main
script_main('sohu', sohu_download)
File "/home/pi/local/youku-lixian/common.py", line 285, in script_main
download(url, merge=merge)
File "sohu.py", line 25, in sohu_download
urls.append(real_url(host, prot, file, new))
File "sohu.py", line 9, in real_url
start, _, host, key, _, _ = get_html(url).split('|')
File "/home/pi/local/youku-lixian/common.py", line 56, in get_html
content = get_response(url).data
File "/home/pi/local/youku-lixian/common.py", line 46, in get_response
response = urllib2.urlopen(url)
File "/usr/lib/python2.6/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.6/urllib2.py", line 397, in open
response = meth(req, response)
File "/usr/lib/python2.6/urllib2.py", line 510, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.6/urllib2.py", line 435, in error
return self._call_chain(_args)
File "/usr/lib/python2.6/urllib2.py", line 369, in _call_chain
result = func(_args)
File "/usr/lib/python2.6/urllib2.py", line 518, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 601: Internal Server Error
iambus,按照你的python脚本去执行的,获取到的分段的MP4链接无效,后来我去抓包了一下,发现它获取key的算法貌似变了,获取到的最终的下载MP4地址失效了,求解释。
测试链接:http://v.pptv.com/show/KZvXVb0jk9E0sho.html
好久没用,今天发现,比如http://www.youku.com/playlist_show/id_16603972.html
下载的时候只会重复最后一个视频的名称《推不倒的纯爷们》,结果就是一个被一个推倒。。。。
如果一个视频有超清、高清或者标清,现在默认只下载一种格式,能否一次全部下载,多谢。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.