pafy 中文文档


原文地址: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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值