基于python3的you-get视频下载工具

"welcome to ARTAvrilLavigne Blog"

Posted by ARTAvrilLavigne on August 31, 2019

一、you-get介绍

  在回看经典的无限挑战2015歌谣祭这一期后,准备从爱奇艺下载保存起来,但是发现爱奇艺流氓地要求下载客户端才能下载。所以拒绝这种方式,发现了一款基于python3的you-get视频下载工具。这是命令行程序,用于从Web下载媒体内容(视频,音频,图像)。例如YouTube,优酷,Bilibili,爱奇艺等等。大致原理:通过抓取URL视频资源的加密方式,然后根据解析器对网页请求进行相应的解析,然后从视频站服务器中获取下载地址出来。

二、安装

  环境准备:

2.1、安装you-get

  首先要在windows中装好python3环境。由于you-get的官方版本通过PyPI分发, 可从PyPI镜像中通过pip包管理器安装,所以使用pip命令方式安装:

C:\Users\ThinkPad\Desktop>pip3 install you-get


  或者选择其他五种安装方式见官网。如果以前已经安装好了you-get,那么可以更新一下最新版本:

C:\Users\ThinkPad\Desktop>pip3 install --upgrade you-get

2.2、安装FFmpeg

  通过官网下载压缩包解压到本地,并将bin目录添加到系统环境变量即可。如下图所示:




三、下载使用

  首先可以使用 --info/-i 以查看所有可用画质与格式。并且标有DEFAULT的为默认画质,默认选项为最高画质,并且默认下载为当前用户路径,如不希望you-get合并视频,使用 --no-merge/-n

C:\Users\ThinkPad\Desktop>you-get -i https://www.iqiyi.com/v_19rro67g8w.html

  结果如下所示,爱奇艺这个资源不能下载,查看官网资料发现个别网站还存在一些BUG,有些资源还不能下载:

  官网展示的BUG如下所示:

  于是更换无限挑战歌谣祭2015这一期在B站上的资源后,成功找到资源并且下载,这个资源它下载各个片段最后自动合并为一个完整视频:

C:\Users\ThinkPad\Desktop>you-get https://www.bilibili.com/video/av14784402/
you-get: This is a multipart video. (use --playlist to download all parts.)
site:                Bilibili
title:               无限挑战2015歌谣祭(合集) (P1. 150704)
stream:
    - format:        flv720
      container:     flv
      quality:       高清 720P
      size:          1135.1 MiB (1190190184 bytes)
    # download-with: you-get --format=flv720 [URL]

Downloading 无限挑战2015歌谣祭(合集) (P1. 150704).mp4 ...
 100% (1135.1/1135.1MB) ├████████████████████████████████████┤[13/13]    5 MB/s
Merging video parts... Merged into 无限挑战2015歌谣祭(合集) (P1. 150704).mp4

Downloading 无限挑战2015歌谣祭(合集) (P1. 150704).cmt.xml ...



3.1、遇到问题更新2019-09-08

  距离上次使用才过几天,刚刚使用you-get下载B站视频时发现失败了,debug显示HTTP Error with code403,而且下载前几天使用的同一资源也是这个报错。说明请求被服务器拒绝了,于是去you-get官网pull requests查看最新合并问题,发现刚好这几天B站禁止了这个常量user-agent,已经有人解决申请合并了,更改源码bilibili.py中固定的UA即可(现在就临时找到我本地python安装目录的python3.7.4\Lib\site-packages\you_get\extractors下的bilibili.py修改,以后该问题合并通过后,重新卸载掉you-get再安装最新修复版本就行了。其中,我在修改后运行报错为TabError: inconsistent use of tabs and spaces in indentation,查询发现是Tab和空格的缩进不一致问题,更改后就成功了!!),如下所示:




src/you_get/extractors/bilibili.py下:
1、增加import random
2、增删代码为:
        # a reasonable UA
        # bilibili has banned constant UA,so use random   
        # ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36'
        browser_version=str(random.randint(60, 63))+'.0.'+str(random.randint(1239, 4239))+'.'+str(random.randint(10, 80))
        OSversion=str(random.randint(8, 10))+'_'+str(random.randint(5, 10))+'_'+str(random.randint(5, 10))
        webkitversion=str(random.randint(500, 537))+'.'+str(random.randint(30, 60))
        ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X '+OSversion+') AppleWebKit/'+webkitversion+' (KHTML, like Gecko) Chrome/'+browser_version+' Safari/'+webkitversion

        # headers = {'Accept': '*/*', 'User-Agent': ua}
        headers = {'User-Agent': ua}

四、you-get常用命令及说明

1、可以使用 Ctrl+C 来暂停当前的下载。

  临时的 .download 文件将保存于输出目录。下次使用 you-get 传入相同参数时,下载将从上次继续开始。如果下载已经完成 (临时的 .download 扩展名消失), you-get将忽略下载。

2、可以使用--force/-f 进行强行重下载。(注意: 这将会覆盖同名文件或临时文件!)

3、可以使用 --output-dir/-o 设置下载的路径,以及--output-filename/-O 设置下载文件的名字:

C:\Users\ThinkPad>you-get -o Desktop -O IU https://www.bilibili.com/video/av14784402/

4、代理设置,可以通过you-get使用 --http-proxy/-x 选项指定要使用的HTTP代理:

C:\Users\ThinkPad\Desktop>you-get -x 127.0.0.1:8087 https://www.youtube.com/watch?v=jNQXAC9IVRw

但是,http_proxy 默认情况下应用系统代理设置(即环境变量)。要禁用任何代理,请使用该 --no-proxy 选项。

注意

  • If you need to use proxies a lot (in case your network is blocking certain sites), you might want to use you-get with proxychains and set alias you-get="proxychains -q you-get" (in Bash).
  • For some websites (e.g. Youku), if you need access to some videos that are only available in mainland China, there is an option of using a specific proxy to extract video information from the site: --extractor-proxy/-y.

五、you-get支持的网站

网站 URL 视频? 图片? 音频?
YouTube https://www.youtube.com/    
Twitter https://twitter.com/  
VK http://vk.com/  
Vine https://vine.co/    
Vimeo https://vimeo.com/    
Vidto http://vidto.me/    
Videomega http://videomega.tv/    
Veoh http://www.veoh.com/    
Tumblr https://www.tumblr.com/
TED http://www.ted.com/    
SoundCloud https://soundcloud.com/    
SHOWROOM https://www.showroom-live.com/    
Pinterest https://www.pinterest.com/    
MusicPlayOn http://en.musicplayon.com/    
MTV81 http://www.mtv81.com/    
Mixcloud https://www.mixcloud.com/    
Metacafe http://www.metacafe.com/    
Magisto http://www.magisto.com/    
Khan Academy https://www.khanacademy.org/    
Internet Archive https://archive.org/    
Instagram https://instagram.com/  
InfoQ http://www.infoq.com/presentations/    
Imgur http://imgur.com/    
Heavy Music Archive http://www.heavy-music.ru/    
Google+ https://plus.google.com/  
Freesound http://www.freesound.org/    
Flickr https://www.flickr.com/  
FC2 Video http://video.fc2.com/    
Facebook https://www.facebook.com/    
eHow http://www.ehow.com/    
Dailymotion http://www.dailymotion.com/    
Coub http://coub.com/    
CBS http://www.cbs.com/    
Bandcamp http://bandcamp.com/    
AliveThai http://alive.in.th/    
interest.me http://ch.interest.me/tvn    
755
ナナゴーゴー
http://7gogo.jp/  
niconico
ニコニコ動画
http://www.nicovideo.jp/    
163
网易视频
网易云音乐
http://v.163.com/
http://music.163.com/
 
56网 http://www.56.com/    
AcFun http://www.acfun.cn/    
Baidu
百度贴吧
http://tieba.baidu.com/  
爆米花网 http://www.baomihua.com/    
bilibili
哔哩哔哩
http://www.bilibili.com/    
豆瓣 http://www.douban.com/  
斗鱼 http://www.douyutv.com/    
Panda
熊猫
http://www.panda.tv/    
凤凰视频 http://v.ifeng.com/    
风行网 http://www.fun.tv/    
iQIYI
爱奇艺
http://www.iqiyi.com/    
激动网 http://www.joy.cn/    
酷6网 http://www.ku6.com/    
酷狗音乐 http://www.kugou.com/    
酷我音乐 http://www.kuwo.cn/    
乐视网 http://www.le.com/    
荔枝FM http://www.lizhi.fm/    
秒拍 http://www.miaopai.com/    
MioMio弹幕网 http://www.miomio.tv/    
痞客邦 https://www.pixnet.net/    
PPTV聚力 http://www.pptv.com/    
齐鲁网 http://v.iqilu.com/    
QQ
腾讯视频
http://v.qq.com/    
企鹅直播 http://live.qq.com/    
Sina
新浪视频
微博秒拍视频
http://video.sina.com.cn/
http://video.weibo.com/
   
Sohu
搜狐视频
http://tv.sohu.com/    
Tudou
土豆
http://www.tudou.com/    
虾米 http://www.xiami.com/  
阳光卫视 http://www.isuntv.com/    
音悦Tai http://www.yinyuetai.com/    
Youku
优酷
http://www.youku.com/    
战旗TV http://www.zhanqi.tv/lives    
央视网 http://www.cntv.cn/    
Naver
네이버
http://tvcast.naver.com/    
芒果TV http://www.mgtv.com/    
火猫TV http://www.huomao.com/    
阳光宽频网 http://www.365yg.com/    
西瓜视频 https://www.ixigua.com/    
快手 https://www.kuaishou.com/  
抖音 https://www.douyin.com/    
TikTok https://www.tiktok.com/    
中国体育(TV) http://v.zhibo.tv/ </br>http://video.zhibo.tv/    
知乎 https://www.zhihu.com/    

参考官网:https://github.com/soimort/you-get


みなさんのごおうえんをおねがいします~~