introduce a bare-bones invidious API translation layer
also rewritten ythdd_api.py a tiny bit
This commit is contained in:
114
invidious_formats.py
Normal file
114
invidious_formats.py
Normal file
@@ -0,0 +1,114 @@
|
||||
# Part of the Invidious project
|
||||
# https://github.com/iv-org/invidious
|
||||
# License: AGPLv3
|
||||
|
||||
FORMATS = {
|
||||
|
||||
5: {"ext": "flv", "width": 400, "height": 240, "acodec": "mp3", "abr": 64, "vcodec": "h263"},
|
||||
6: {"ext": "flv", "width": 450, "height": 270, "acodec": "mp3", "abr": 64, "vcodec": "h263"},
|
||||
13: {"ext": "3gp", "acodec": "aac", "vcodec": "mp4v"},
|
||||
17: {"ext": "3gp", "width": 176, "height": 144, "acodec": "aac", "abr": 24, "vcodec": "mp4v"},
|
||||
18: {"ext": "mp4", "width": 640, "height": 360, "acodec": "aac", "abr": 96, "vcodec": "h264"},
|
||||
22: {"ext": "mp4", "width": 1280, "height": 720, "acodec": "aac", "abr": 192, "vcodec": "h264"},
|
||||
34: {"ext": "flv", "width": 640, "height": 360, "acodec": "aac", "abr": 128, "vcodec": "h264"},
|
||||
35: {"ext": "flv", "width": 854, "height": 480, "acodec": "aac", "abr": 128, "vcodec": "h264"},
|
||||
36: {"ext": "3gp", "width": 320, "acodec": "aac", "vcodec": "mp4v"},
|
||||
37: {"ext": "mp4", "width": 1920, "height": 1080, "acodec": "aac", "abr": 192, "vcodec": "h264"},
|
||||
38: {"ext": "mp4", "width": 4096, "height": 3072, "acodec": "aac", "abr": 192, "vcodec": "h264"},
|
||||
43: {"ext": "webm", "width": 640, "height": 360, "acodec": "vorbis", "abr": 128, "vcodec": "vp8"},
|
||||
44: {"ext": "webm", "width": 854, "height": 480, "acodec": "vorbis", "abr": 128, "vcodec": "vp8"},
|
||||
45: {"ext": "webm", "width": 1280, "height": 720, "acodec": "vorbis", "abr": 192, "vcodec": "vp8"},
|
||||
46: {"ext": "webm", "width": 1920, "height": 1080, "acodec": "vorbis", "abr": 192, "vcodec": "vp8"},
|
||||
59: {"ext": "mp4", "width": 854, "height": 480, "acodec": "aac", "abr": 128, "vcodec": "h264"},
|
||||
78: {"ext": "mp4", "width": 854, "height": 480, "acodec": "aac", "abr": 128, "vcodec": "h264"},
|
||||
|
||||
# 3D videos
|
||||
82: {"ext": "mp4", "height": 360, "format": "3D", "acodec": "aac", "abr": 128, "vcodec": "h264"},
|
||||
83: {"ext": "mp4", "height": 480, "format": "3D", "acodec": "aac", "abr": 128, "vcodec": "h264"},
|
||||
84: {"ext": "mp4", "height": 720, "format": "3D", "acodec": "aac", "abr": 192, "vcodec": "h264"},
|
||||
85: {"ext": "mp4", "height": 1080, "format": "3D", "acodec": "aac", "abr": 192, "vcodec": "h264"},
|
||||
100: {"ext": "webm", "height": 360, "format": "3D", "acodec": "vorbis", "abr": 128, "vcodec": "vp8"},
|
||||
101: {"ext": "webm", "height": 480, "format": "3D", "acodec": "vorbis", "abr": 192, "vcodec": "vp8"},
|
||||
102: {"ext": "webm", "height": 720, "format": "3D", "acodec": "vorbis", "abr": 192, "vcodec": "vp8"},
|
||||
|
||||
# Apple HTTP Live Streaming
|
||||
91: {"ext": "mp4", "height": 144, "format": "HLS", "acodec": "aac", "abr": 48, "vcodec": "h264"},
|
||||
92: {"ext": "mp4", "height": 240, "format": "HLS", "acodec": "aac", "abr": 48, "vcodec": "h264"},
|
||||
93: {"ext": "mp4", "height": 360, "format": "HLS", "acodec": "aac", "abr": 128, "vcodec": "h264"},
|
||||
94: {"ext": "mp4", "height": 480, "format": "HLS", "acodec": "aac", "abr": 128, "vcodec": "h264"},
|
||||
95: {"ext": "mp4", "height": 720, "format": "HLS", "acodec": "aac", "abr": 256, "vcodec": "h264"},
|
||||
96: {"ext": "mp4", "height": 1080, "format": "HLS", "acodec": "aac", "abr": 256, "vcodec": "h264"},
|
||||
132: {"ext": "mp4", "height": 240, "format": "HLS", "acodec": "aac", "abr": 48, "vcodec": "h264"},
|
||||
151: {"ext": "mp4", "height": 72, "format": "HLS", "acodec": "aac", "abr": 24, "vcodec": "h264"},
|
||||
|
||||
# DASH mp4 video
|
||||
133: {"ext": "mp4", "height": 240, "format": "DASH video", "vcodec": "h264"},
|
||||
134: {"ext": "mp4", "height": 360, "format": "DASH video", "vcodec": "h264"},
|
||||
135: {"ext": "mp4", "height": 480, "format": "DASH video", "vcodec": "h264"},
|
||||
136: {"ext": "mp4", "height": 720, "format": "DASH video", "vcodec": "h264"},
|
||||
137: {"ext": "mp4", "height": 1080, "format": "DASH video", "vcodec": "h264"},
|
||||
138: {"ext": "mp4", "format": "DASH video", "vcodec": "h264"}, # Height can vary (https://github.com/ytdl-org/youtube-dl/issues/4559)
|
||||
160: {"ext": "mp4", "height": 144, "format": "DASH video", "vcodec": "h264"},
|
||||
212: {"ext": "mp4", "height": 480, "format": "DASH video", "vcodec": "h264"},
|
||||
264: {"ext": "mp4", "height": 1440, "format": "DASH video", "vcodec": "h264"},
|
||||
298: {"ext": "mp4", "height": 720, "format": "DASH video", "vcodec": "h264", "fps": 60},
|
||||
299: {"ext": "mp4", "height": 1080, "format": "DASH video", "vcodec": "h264", "fps": 60},
|
||||
266: {"ext": "mp4", "height": 2160, "format": "DASH video", "vcodec": "h264"},
|
||||
|
||||
# Dash mp4 audio
|
||||
139: {"ext": "m4a", "format": "DASH audio", "acodec": "aac", "abr": 48, "container": "m4a_dash"},
|
||||
140: {"ext": "m4a", "format": "DASH audio", "acodec": "aac", "abr": 128, "container": "m4a_dash"},
|
||||
141: {"ext": "m4a", "format": "DASH audio", "acodec": "aac", "abr": 256, "container": "m4a_dash"},
|
||||
256: {"ext": "m4a", "format": "DASH audio", "acodec": "aac", "container": "m4a_dash"},
|
||||
258: {"ext": "m4a", "format": "DASH audio", "acodec": "aac", "container": "m4a_dash"},
|
||||
325: {"ext": "m4a", "format": "DASH audio", "acodec": "dtse", "container": "m4a_dash"},
|
||||
328: {"ext": "m4a", "format": "DASH audio", "acodec": "ec-3", "container": "m4a_dash"},
|
||||
|
||||
# Dash webm
|
||||
167: {"ext": "webm", "height": 360, "width": 640, "format": "DASH video", "container": "webm", "vcodec": "vp8"},
|
||||
168: {"ext": "webm", "height": 480, "width": 854, "format": "DASH video", "container": "webm", "vcodec": "vp8"},
|
||||
169: {"ext": "webm", "height": 720, "width": 1280, "format": "DASH video", "container": "webm", "vcodec": "vp8"},
|
||||
170: {"ext": "webm", "height": 1080, "width": 1920, "format": "DASH video", "container": "webm", "vcodec": "vp8"},
|
||||
218: {"ext": "webm", "height": 480, "width": 854, "format": "DASH video", "container": "webm", "vcodec": "vp8"},
|
||||
219: {"ext": "webm", "height": 480, "width": 854, "format": "DASH video", "container": "webm", "vcodec": "vp8"},
|
||||
278: {"ext": "webm", "height": 144, "format": "DASH video", "container": "webm", "vcodec": "vp9"},
|
||||
242: {"ext": "webm", "height": 240, "format": "DASH video", "vcodec": "vp9"},
|
||||
243: {"ext": "webm", "height": 360, "format": "DASH video", "vcodec": "vp9"},
|
||||
244: {"ext": "webm", "height": 480, "format": "DASH video", "vcodec": "vp9"},
|
||||
245: {"ext": "webm", "height": 480, "format": "DASH video", "vcodec": "vp9"},
|
||||
246: {"ext": "webm", "height": 480, "format": "DASH video", "vcodec": "vp9"},
|
||||
247: {"ext": "webm", "height": 720, "format": "DASH video", "vcodec": "vp9"},
|
||||
248: {"ext": "webm", "height": 1080, "format": "DASH video", "vcodec": "vp9"},
|
||||
271: {"ext": "webm", "height": 1440, "format": "DASH video", "vcodec": "vp9"},
|
||||
|
||||
# itag 272 videos are either 3840x2160 (e.g. RtoitU2A-3E) or 7680x4320 (sLprVF6d7Ug)
|
||||
272: {"ext": "webm", "height": 2160, "format": "DASH video", "vcodec": "vp9"},
|
||||
302: {"ext": "webm", "height": 720, "format": "DASH video", "vcodec": "vp9", "fps": 60},
|
||||
303: {"ext": "webm", "height": 1080, "format": "DASH video", "vcodec": "vp9", "fps": 60},
|
||||
308: {"ext": "webm", "height": 1440, "format": "DASH video", "vcodec": "vp9", "fps": 60},
|
||||
313: {"ext": "webm", "height": 2160, "format": "DASH video", "vcodec": "vp9"},
|
||||
315: {"ext": "webm", "height": 2160, "format": "DASH video", "vcodec": "vp9", "fps": 60},
|
||||
330: {"ext": "webm", "height": 144, "format": "DASH video", "vcodec": "vp9", "fps": 60},
|
||||
331: {"ext": "webm", "height": 240, "format": "DASH video", "vcodec": "vp9", "fps": 60},
|
||||
332: {"ext": "webm", "height": 360, "format": "DASH video", "vcodec": "vp9", "fps": 60},
|
||||
333: {"ext": "webm", "height": 480, "format": "DASH video", "vcodec": "vp9", "fps": 60},
|
||||
334: {"ext": "webm", "height": 720, "format": "DASH video", "vcodec": "vp9", "fps": 60},
|
||||
335: {"ext": "webm", "height": 1080, "format": "DASH video", "vcodec": "vp9", "fps": 60},
|
||||
336: {"ext": "webm", "height": 1440, "format": "DASH video", "vcodec": "vp9", "fps": 60},
|
||||
337: {"ext": "webm", "height": 2160, "format": "DASH video", "vcodec": "vp9", "fps": 60},
|
||||
|
||||
# Dash webm audio
|
||||
171: {"ext": "webm", "acodec": "vorbis", "format": "DASH audio", "abr": 128},
|
||||
172: {"ext": "webm", "acodec": "vorbis", "format": "DASH audio", "abr": 256},
|
||||
|
||||
# Dash webm audio with opus inside
|
||||
249: {"ext": "webm", "format": "DASH audio", "acodec": "opus", "abr": 50},
|
||||
250: {"ext": "webm", "format": "DASH audio", "acodec": "opus", "abr": 70},
|
||||
251: {"ext": "webm", "format": "DASH audio", "acodec": "opus", "abr": 160},
|
||||
|
||||
# av01 video only formats sometimes served with "unknown" codecs
|
||||
394: {"ext": "mp4", "height": 144, "vcodec": "av01.0.05M.08"},
|
||||
395: {"ext": "mp4", "height": 240, "vcodec": "av01.0.05M.08"},
|
||||
396: {"ext": "mp4", "height": 360, "vcodec": "av01.0.05M.08"},
|
||||
397: {"ext": "mp4", "height": 480, "vcodec": "av01.0.05M.08"},
|
||||
}
|
||||
Reference in New Issue
Block a user