Files
ythdd/invidious_formats.py
sherl 3212627d89 introduce a bare-bones invidious API translation layer
also rewritten ythdd_api.py a tiny bit
2024-12-26 20:38:33 +01:00

114 lines
8.3 KiB
Python

# 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"},
}