检索YouTube的含量和元数据
paf的Python项目详细描述
功能
- 检索元数据,如viewcount、duration、rating、author、thumbnail、keywords
- 按要求的分辨率/比特率/格式/文件大小下载视频或音频
- 用于直接从命令行下载的命令行工具(YTDL)
- 检索用于在VLC或MPlayer等播放器中传输视频的URL
- 适用于年龄限制的视频和不可嵌入的视频
- 小型、独立、单个可导入模块文件(pafy.py)
- 选择最高质量的流进行下载或流式传输
- 仅下载M4V或WebM格式的视频(无音频)
- 仅下载ogg或m4a格式的音频(无视频)
- 检索播放列表和播放列表元数据
- 适用于Python2.6+和3.3+
- 可选地依赖于youtube dl(推荐;更稳定)
文档
用法示例
下面是如何在您自己的python代码中使用该模块。用于命令行工具 (YTDL)说明,详见下文
>>> importpafy
从YouTube URL创建视频实例:
>>> url="https://www.youtube.com/watch?v=bMt47wvK6u0">>> video=pafy.new(url)
获取某些属性:
>>> video.title'Richard Jones: Introduction to game programming - PyCon 2014' >>> video.rating5.0 >>> video.viewcount,video.author,video.length(1916, 'PyCon 2014', 10394) >>> video.duration,video.likes,video.dislikes('02:53:14', 25, 0) >>> print(video.description)Speaker: Richard Jones This tutorial will walk the attendees through development of a simple game using PyGame with time left over for some experimentation and exploration of different types of games. Slides can be found at: https://speakerdeck.com/pycon2014 and https://github.com/PyCon/2014-slides
列出视频的可用流:
>>> streams=video.streams>>> forsinstreams:... print(s)...normal:mp4@1280x720 normal:webm@640x360 normal:mp4@640x360 normal:flv@320x240 normal:3gp@320x240 normal:3gp@176x144
显示所有格式、文件大小及其下载URL:
>>> forsinstreams:... print(s.resolution,s.extension,s.get_filesize(),s.url)...1280x720 mp4 2421958510 https://r1---sn-aiglln7e.googlevideo.com/videoplayba[...] 640x360 webm 547015732 https://r1---sn-aiglln7e.googlevideo.com/videoplaybac[...] 640x360 mp4 470655850 https://r1---sn-aiglln7e.googlevideo.com/videoplayback[...] 320x240 flv 345455674 https://r1---sn-aiglln7e.googlevideo.com/videoplayback[...] 320x240 3gp 208603447 https://r1---sn-aiglln7e.googlevideo.com/videoplayback[...] 176x144 3gp 60905732 https://r1---sn-aiglln7e.googlevideo.com/videoplayback?[...]
无论文件格式如何,都能获得最佳分辨率:
>>> best=video.getbest()>>> best.resolution,best.extension('1280x720', 'mp4')
获取特定文件格式的最佳分辨率: (MP4、WebM、FLV或3GP)
>>> best=video.getbest(preftype="webm")>>> best.resolution,best.extension('640x360', 'webm')
获取URL,以便在MPlayer/VLC等中下载或流媒体:
>>> best.url'http://r12---sn-aig7kner.c.youtube.com/videoplayback?expire=1369...
下载视频并显示进度:
>>> best.download(quiet=False)3,734,976 Bytes [0.20%] received. Rate: [ 719 KB/s]. ETA: [3284 secs]
下载视频,使用特定目录和/或文件名:
>>> filename=best.download(filepath="/tmp/")>>> filename=best.download(filepath="/tmp/Game."+best.extension)
获取音频流(m4a和/或ogg vorbis):
>>> audiostreams=video.audiostreams>>> forainaudiostreams:... print(a.bitrate,a.extension,a.get_filesize())...256k m4a 331379079 192k ogg 172524223 128k m4a 166863001 128k ogg 108981120 48k m4a 62700449
从以上列表中下载第二个音频流:
>>> audiostreams[1].download()
获得最佳质量的音频流:
>>> bestaudio=video.getbestaudio()>>> bestaudio.bitrate'256'
下载最优质的音频文件:
>>> bestaudio.download()
显示视频的所有媒体类型(视频+音频、仅视频和仅音频):
>>> allstreams=video.allstreams>>> forsinallstreams:... print(s.mediatype,s.extension,s.quality)... normal mp4 1280x720 normal webm 640x360 normal mp4 640x360 normal flv 320x240 normal 3gp 320x240 normal 3gp 176x144 video m4v 1280x720 video webm 1280x720 video m4v 854x480 video webm 854x480 video m4v 640x360 video webm 640x360 video m4v 426x240 video webm 426x240 video m4v 256x144 video webm 256x144 audio m4a 256k audio ogg 192k audio m4a 128k audio ogg 128k audio m4a 48k
安装
pafy可以使用pip:
$ [sudo] pip install pafy
如果不想在系统范围内安装,也可以使用virtualenv:
$ virtualenv venv
$ source venv/bin/activate
$ pip install pafy
命令行工具(YTDL)用法
usage: ytdl [-h][-i][-s][-t {audio,video,normal,all}[{audio,video,normal,all} ...]][-n N][-b][-a] url YouTube Download Tool positional arguments: url YouTube video URL to download optional arguments: -h, --help show this help message and exit -i Display vid info -s Display available streams -t {audio,video,normal,all}[{audio,video,normal,all} ...] Stream types to display -n N Specify stream to download by stream number (use -s to list available streams) -b Download the best quality video (ignores -n) -a Download the best quality audio (ignores -n)
YTDL示例
下载可用的最佳分辨率(-b):
$ ytdl -b "http://www.youtube.com/watch?v=cyMHZVT91Dw"
下载最佳可用音频流(-a) (注意:不需要完整的url,只要视频id即可):
$ ytdl -a cyMHZVT91Dw
获取视频信息(-i):
$ ytdl -i cyMHZVT91Dw
列出可用的下载流:
$ ytdl cyMHZVT91Dw Stream Type Format Quality Size ------ ---- ------ ------- ---- 1 normal webm [640x360]33 MB 2 normal mp4 [640x360]23 MB 3 normal flv [320x240]14 MB 4 normal 3gp [320x240]9 MB 5 normal 3gp [176x144]3 MB 6 audio m4a [48k]2 MB 7 audio m4a [128k]5 MB 8 audio ogg [128k]5 MB 9 audio ogg [192k]7 MB 10 audio m4a [256k]10 MB
下载MP4 640x360(即2号流):
$ ytdl -n2 cyMHZVT91Dw
以256K比特率下载M4A音频流:
$ ytdl -n10 cyMHZVT91Dw
IRC
MPS YouTube IRC频道(自由节点上的MPS YouTube)可用于讨论Pafy。