fapy 中文文档
原文地址:https://pythonhosted.org/pafy/#Pafy.Pafy.streams
pafy文档
这是pafy的文档-一个Python库,用于下载YouTube内容并检索元数据
API keys
指定API密钥是可选的,因为pafy包括一个。但是,最好是调用pafy的软件提供它自己的API密钥,并且将来可能会删除默认值。
Google提供的有关获取API密钥的信息
pafy.set_api_key(key)
“设置供用户使用的API密钥。”
参数:key-使用的API密钥
Pafy对象和Stream对象
Pafy对象与YouTube上托管的视频有关。它们包含元数据,例如标题,观看次数,作者和视频ID
流对象与YouTube视频的各个流相关。它们保存特定于流的数据,例如分辨率,比特率和url。每个Pafy对象包含多个流对象。
Pafy对象
使用pafy.new()函数创建一个Pafy对象,并以YouTube视频URL作为参数。
pafy.new(video_url[, basic=True][, gdata=False][, signature=True][, size=False][, callback=None])
创建一个新的Pafy对象。所有可选参数(除回调外)均用于指定在初始化时获取哪些数据项。
参数:
- url (str)– YouTube网址或视频的11个字符的视频ID
- basic (布尔)–获取基本元数据和流
- gdata (布尔)–获取gdata信息(上传日期,描述,类别,用户名,喜欢和不喜欢)
- signature (布尔)–注意:签名参数现在无效,并且将在以后的版本中删除
- size 大小(布尔)–获取每个流的大小(慢)(如果需要,解密URL)
- callback (函数)–接收状态字符串的回调函数
返回类型:pafy.Pafy
如果basic,gdata或size中的任何一个为False,则仅在首次调用时才获取这些数据项。
在大多数情况下,建议使用默认值。如果您希望一次创建许多视频对象,则可能希望将其全部设置为False,例如:
vid = pafy.new(basic=False)
这将很快,因为初始化时不会发出任何HTTP请求。
将size设置为True将覆盖基本参数,并强制获取基本数据(获取Stream对象需要基本数据)
例如:
import pafy
myvid = pafy.new("http://www.youtube.com/watch?v=dQw4w9WgXc")
Pafy属性
一旦使用pafy.new()创建了Pafy对象,就可以使用几个数据属性
Pafy.author # 视频的作者(str)
Pafy.bigthumb(*str*) # 视频显示图片的网址(并非始终可用)
Pafy.bigthumbhd # 影片较大显示图片的网址(并非总是可用)(str)
Pafy.category # 影片类别(str)
Pafy.description # 视频描述文字(str)
Pafy.dislikes # 视频收到的不喜欢次数(int)
Pafy.duration # 流的持续时间(字符串格式为HH:MM:SS)
Pafy.keywords # 视频关键字列表(并非始终可用)([str])
Pafy.length # 流的持续时间(秒)(int)
Pafy.likes # 视频收到的点赞次数(int)
Pafy.published # 视频的上传日期(例如2012-10-02 17:17:24)(str)
Pafy.mix # YouTube为此视频提供的混合播放列表(dict)
Pafy.rating # 视频的评分(0-5),(float)
Pafy.thumb # 视频缩略图的网址(str)
Pafy.title # 视频标题(str)
Pafy.username # 上传者的用户名(str)
Pafy.videoid # 11个字符的视频ID(str)
Pafy.viewcount # 视频的观看次数(int)
访问该视频元数据的示例如下所示:
import pafy
v = pafy.new("dQw4w9WgXcQ")
print(v.title)
print(v.duration)
print(v.rating)
print(v.author)
print(v.length)
print(v.keywords)
print(v.thumb)
print(v.videoid)
print(v.viewcount)
这将导致以下输出:
Rick Astley - Never Gonna Give You Up
00:03:33
4.75177729422
RickAstleyVEVO
213
['Rick', 'Astley', 'Sony', 'BMG', 'Music', 'UK', 'Pop']
https://i1.ytimg.com/vi/dQw4w9WgXcQ/default.jpg
dQw4w9WgXcQ
69788014
Pafy方法
Pafy.getbest(),Pafy.getbestaudio()和Pafy.getbestvideo()方法是一种快速访问特定视频的最高质量流的方法,而无需查询流列表。
Pafy.getbest([preftype="any"][, ftypestrict=True])
选择最高分辨率的流。这将返回“正常”流(即带有视频和音频的流)
参数:
- preftype(str)-首选类型,设置为mp4,webm,flv,3gp或任何其他类型
- ftypestrict(boolean)-设置为False可以返回除preftype中指定的类型以外的其他类型(如果具有更高的分辨率)
返回类型: pafy.Stream
Pafy.getbestaudio([preftype="any"][, ftypestrict=True])
选择具有最高比特率的音频流。
参数:
- preftype(str)-首选类型,设置为ogg或m4a或任何其他类型
- ftypestrict(boolean–设置为False以返回除preftype中指定的类型以外的其他类型(如果其具有最高的比特率)
返回类型:pafy.Stream
Pafy.getbestvideo([preftype="any"][, ftypestrict=True])
选择最高分辨率的纯视频流。这将返回“视频”流(即没有音频的流)
参数:
- preftype(str)-首选类型,设置为m4v,webm或任何其他类型
- ftypestrict(boolean)–如果解析度更高,则设置为False以返回除preftype中指定的类型以外的其他类型
返回类型:pafy.Stream
流列表
Pafy对象提供多个流列表。它们是:
Pafy.streams
常规流(包含音频和视频的流)列表
Pafy.audiostreams
仅音频流的列表; aac流(.m4a)和ogg vorbis流(.ogg)(如果有)
Pafy.videostreams
仅视频流的列表(注意:这些流没有音频数据)
Pafy.oggstreams
ogg vorbis编码的音频流列表(注意:某些视频可能为空)
Pafy.m4astreams
AAC编码的音频流列表
Pafy.allstreams
所有可用流的列表
访问流列表的示例:
>>> import pafy
>>> v = pafy.new("cyMHZVT91Dw")
>>> v.audiostreams
[audio:m4a@48k, audio:m4a@128k, audio:m4a@256k]
>>> v.streams
[normal:webm@640x360, normal:mp4@640x360, normal:flv@320x240, normal:3gp@320x240, normal:3gp@176x144]
>>> v.allstreams
[normal:webm@640x360, normal:mp4@640x360, normal:flv@320x240, normal:3gp@320x240, normal:3gp@176x144, video:m4v@854x480, video:m4v@640x360, video:m4v@426x240, video:m4v@256x144, audio:m4a@48k, audio:m4a@128k, audio:m4a@256k]
流对象
class pafy.Stream
使用new()创建Pafy对象后,可以使用流列表之一或通过对该对象调用Pafy.getbest()或Pafy.getbestaudio()来访问流。
流属性
Stream对象可用于访问以下属性
Stream.url
流的直接访问URL。这可用于在mplayer或vlc中流式传输媒体,或用于通过wget或curl下载。若要直接下载,请使用Stream.download()方法。
Stream.url_https
流的直接访问HTTPS URL。
Stream.bitrate
流的比特率-如果是音频流,则为None,这是形式为“ 192k”的字符串。
Stream.dimensions
代表视频流分辨率的2元组(x,y)。
Stream.extension
流的格式将是以下之一:‘ogg’,‘m4a’,‘mp4’,‘flv’,‘webm’,‘3gp’
Stream.mediatype
字符串属性,是“普通”,“音频”或“视频”,具体取决于流的内容
Stream.quality
流的分辨率或比特率,分别取决于流是视频还是音频
Stream.resolution
视频的字符串分辨率,例如:“ 820x640”。注意,如果流是3D的,则将其附加;例如:“ 820x640-3D”。 对于音频流,将其设置为“ 0x0”
Stream.rawbitrate
音频流的比特率,整数 对于视频流,将其设置为“None”
Stream.threed
如果流是3D视频,则为True(boolean)
Stream.title
视频标题,与Pafy.title相同
Stream.notes
有关流的任何其他注释(例如6声道环绕声)str
访问Stream属性的示例:
>>> import pafy
>>> v = pafy.new("cyMHZVT91Dw")
>>> v.audiostreams
[audio:m4a@48k, audio:m4a@128k, audio:m4a@256k]
>>> mystream = v.audiostreams[2]
>>> mystream.rawbitrate
255940
>>> mystream.bitrate
'256k'
>>> mystream.url
'http://r20---sn-aigllnes.c.youtube.com/videoplayback?ipbits=8&clen=1130...
流方法
Stream.get_filesize()
返回流的文件大小
Stream.download([filepath=""][, quiet=False][, callback=None][, meta=False][, remux_audio=False])
下载流对象,返回下载文件的路径。
参数:
- filepath(string)–用于保存流的文件路径,默认为(已删除)title.extension(如果省略)
- quiet(boolean)–如果为True,则不显示下载进度
- callback(function or None)–回调函数用于接收下载进度
- meta(bool)–如果为True,则将视频ID和Itag附加到文件名中
- remux_audio(bool)–如果为True,则下载remux音频文件(修复了文件格式的某些兼容性问题,需要ffmpeg / avconv)
返回类型:str
如果提供了回调函数,则将为每个下载的块重复调用该函数。它必须是一个具有以下五个参数的函数: - 流中的总字节数,int
- 已下载全部字节,int
- 下载比例(0-1),float
- 下载速率(kbps),float
- 预计到达时间(以秒为单位),float
Stream.download()示例
使用stream.download()的示例:
import pafy
v = pafy.new("cyMHZVT91Dw")
s = v.getbest()
print("Size is %s" % s.get_filesize())
filename = s.download() # starts download
将下载到当前工作目录并输出以下进度统计信息:
Size is 34775366
1,015,808 Bytes [2.92%] received. Rate: [ 640 kbps]. ETA: [51 secs]
使用回调示例下载:
import pafy
# callback function, this callback simply prints the bytes received,
# ratio downloaded and eta.
def mycb(total, recvd, ratio, rate, eta):
print(recvd, ratio, eta)
p = pafy.new("cyMHZVT91Dw")
ba = p.getbestaudio()
filename = ba.download(quiet=True, callback=mycb)
下载文件时,其输出将显示如下:
(16384, 0.001449549245392125, 20.05230682669207)
(32768, 0.00289909849078425, 16.88200659636641)
(49152, 0.004348647736176375, 15.196503182407469)
(65536, 0.0057981969815685, 14.946467230009146)
(81920, 0.007247746226960625, 15.066431667096913)
(98304, 0.00869729547235275, 14.978577915171627)
(114688, 0.010146844717744874, 14.529802172976945)
(131072, 0.011596393963137, 14.31917945870373)
...
播放列表检索
pafy.get_playlist()函数使用与pafy.new()类似的参数进行初始化,并将返回一个包含元数据和YouTube播放列表中列出的Pafy对象的字典。
pafy.get_playlist(playlist_url[, basic=False][, gdata=False][, signature=False][, size=False][, callback=None])
参数:
- playlist_url(str)– YouTube播放列表网址
- basic(bool)–获取基本元数据和流
- gdata(bool)–获取gdata信息(上传日期,描述,类别,用户名,喜欢和不喜欢)
- signature (bool) –提取解密url所需的数据(如果已加密)
- size(bool)–获取每个流的大小(慢)(如果需要,解密URL)
- callback(function)–接收状态字符串的回调函数
返回类型:dict
返回的字典包含以下键:
playlist_id:播放列表的ID
likes:播放列表的点赞次数
dislikes:播放列表不喜欢的次数
title:播放列表的标题
author:播放列表的作者
description:播放列表的描述
items:字典列表,每个字典代表视频,并包含以下键:
pafy:此视频的Pafy对象,使用赋予pafy.get_playlist()的参数进行初始化
playlist_meta:从播放列表数据中提取的各种特定于视频的元数据的字典,包括:
added, likes, dislikes, thumbnail, is_cc, is_hd, user_id, cc_license, privacy, category_id
pafy.get_playlist()示例
>>> import pafy
>>> plurl = "https://www.youtube.com/playlist?list=PL634F2B56B8C346A2"
>>> playlist = pafy.get_playlist(plurl)
>>>
>>> playlist['title']
u'Rick Astley playlist'
>>>
>>> playlist['author']
u'Deborah Back'
>>>
>>> len(playlist['items'])
43
>>>
>>> playlist['items'][21]['pafy']
Title: Body and Soul - Rick astley
Author: jadiafa
ID: QtHnEJ8UArY
Duration: 00:04:11
Rating: 5.0
Views: 18855
Thumbnail: http://i1.ytimg.com/vi/QtHnEJ8UArY/default.jpg
Keywords: Rick, astely, body, and, soul, pop
>>>
>>> playlist['items'][21]['pafy'].audiostreams
[audio:m4a@128k]
>>>
>>> playlist['items'][21]['pafy'].getbest()
normal:webm@640x360
>>>
>>> playlist['items'][21]['pafy'].getbest().url
u'http://r4---sn-4g57knzr.googlevideo.com/videoplayback?ipbits=0&ratebypas...'
pafy.get_playlist2()与pafy.get_playlist()的用途相同,但使用的是youtube api版本3,因此可以检索200多个项目的播放列表。它还提供了一个不同的接口,返pafy.Playlist而不是字典。
pafy.get_playlist2(playlist_url[, basic=False][, gdata=False][, signature=False][, size=False][, callback=None])
参数:
- playlist_url(str)– YouTube播放列表网址
- basic(bool)–获取基本元数据和流
- gdata(bool)–获取gdata信息(上传日期,描述,类别,用户名,喜欢和不喜欢)
- signature (bool) –提取解密url所需的数据(如果已加密)
- callback (function)–获取每个流的大小(慢)(如果需要,解密URL)
- 回调(函数)–接收状态字符串的回调函数
返回类型:pafy.Playlist
播放列表属性
使用pafy.get_playlist2()检索播放列表后,可以对其进行迭代以获取其中的项目的Pafy对象,或者使用len(playlist)来获取其长度。此外,您可以访问以下属性:
Pafy.plid
播放列表的ID(str)
Pafy.title
播放列表的标题(str)
Pafy.author
播放列表的作者(str)
Pafy.description
播放列表说明(str)