pytube / pytube /itags.py
nficano's picture
pydocstyle
5d5b970
raw
history blame
2.79 kB
# -*- coding: utf-8 -*-
"""This module contains a lookup table of YouTube's itag values."""
ITAGS = {
5: ('240p', '64kbps'),
6: ('270p', '64kbps'),
13: ('144p', None),
17: ('144p', '24kbps'),
18: ('360p', '96kbps'),
22: ('720p', '192kbps'),
34: ('360p', '128kbps'),
35: ('480p', '128kbps'),
36: ('240p', None),
37: ('1080p', '192kbps'),
38: ('3072p', '192kbps'),
43: ('360p', '128kbps'),
44: ('480p', '128kbps'),
45: ('720p', '192kbps'),
46: ('1080p', '192kbps'),
59: ('480p', '128kbps'),
78: ('480p', '128kbps'),
82: ('360p', '128kbps'),
83: ('480p', '128kbps'),
84: ('720p', '192kbps'),
85: ('1080p', '192kbps'),
91: ('144p', '48kbps'),
92: ('240p', '48kbps'),
93: ('360p', '128kbps'),
94: ('480p', '128kbps'),
95: ('720p', '256kbps'),
96: ('1080p', '256kbps'),
100: ('360p', '128kbps'),
101: ('480p', '192kbps'),
102: ('720p', '192kbps'),
132: ('240p', '48kbps'),
151: ('720p', '24kbps'),
# DASH Video
133: ('240p', None),
134: ('360p', None),
135: ('480p', None),
136: ('720p', None),
137: ('1080p', None),
138: ('2160p', None),
160: ('144p', None),
167: ('360p', None),
168: ('480p', None),
169: ('720p', None),
170: ('1080p', None),
212: ('480p', None),
218: ('480p', None),
219: ('480p', None),
242: ('240p', None),
243: ('360p', None),
244: ('480p', None),
245: ('480p', None),
246: ('480p', None),
247: ('720p', None),
248: ('1080p', None),
264: ('144p', None),
266: ('2160p', None),
271: ('144p', None),
272: ('2160p', None),
278: ('144p', None),
298: ('720p', None),
299: ('1080p', None),
302: ('720p', None),
303: ('1080p', None),
308: ('1440p', None),
313: ('2160p', None),
315: ('2160p', None),
# DASH Audio
139: (None, '48kbps'),
140: (None, '128kbps'),
141: (None, '256kbps'),
171: (None, '128kbps'),
172: (None, '256kbps'),
249: (None, '50kbps'),
250: (None, '70kbps'),
251: (None, '160kbps'),
256: (None, None),
258: (None, None),
325: (None, None),
328: (None, None),
}
_60FPS = [298, 299, 302, 303, 308, 315]
_3D = [82, 83, 84, 85, 100, 101, 102]
LIVE = [91, 92, 93, 94, 95, 96, 132, 151]
def get_format_profile(itag):
"""Get dditional format information for a given itag.
:param str itag:
YouTube format identifier code.
"""
itag = int(itag)
if itag in ITAGS:
res, bitrate = ITAGS[itag]
else:
res, bitrate = None, None
return {
'resolution': res,
'abr': bitrate,
'is_live': itag in LIVE,
'is_3d': itag in _3D,
'fps': 60 if itag in _60FPS else 30,
}