yt-dlc/yt_dlp
pukkandan 8f3343809e
[utils] Improve `traverse_obj`
* Allow skipping a level: `traverse_obj([{k:v1}, {k:v2}], (None, k))` => `[v1, v2]`
* Make keys variadic: `traverse_obj(obj, k1: str, k2: str)` => `traverse_obj(obj, (k1,), (k2,))`
* Fetch from multiple keys: `traverse_obj([{k1:[1], k2:[2], k3:[3]}], (0, (k1, k2), 0))` => `[1, 2]`

TODO: Add tests
2021-07-20 02:42:11 +05:30
..
downloader [fragment] Handle errors in threads correctly 2021-07-07 01:55:54 +05:30
extractor [youtube] Extract more thumbnails 2021-07-20 02:42:11 +05:30
postprocessor Add option `--exec-before-download` 2021-07-19 23:47:45 +05:30
YoutubeDL.py [youtube] Extract more thumbnails 2021-07-20 02:42:11 +05:30
__init__.py Add option `--exec-before-download` 2021-07-19 23:47:45 +05:30
__main__.py [cleanup] Point all shebang to `python3` (#372) 2021-06-06 00:59:04 +05:30
aes.py Completely change project name to yt-dlp (#85) 2021-02-25 00:15:56 +05:30
cache.py Completely change project name to yt-dlp (#85) 2021-02-25 00:15:56 +05:30
compat.py [websockets] Add `WebSocketFragmentFD` (#399) 2021-06-21 22:56:36 +05:30
jsinterp.py Completely change project name to yt-dlp (#85) 2021-02-25 00:15:56 +05:30
options.py [youtube] Extract more thumbnails 2021-07-20 02:42:11 +05:30
socks.py Completely change project name to yt-dlp (#85) 2021-02-25 00:15:56 +05:30
swfinterp.py.disabled [cleanup] Mark unused files 2021-06-06 00:59:04 +05:30
update.py [build] Build Windows x86 version with py3.7 2021-06-10 01:41:04 +05:30
utils.py [utils] Improve `traverse_obj` 2021-07-20 02:42:11 +05:30
version.py [version] update 2021-07-07 05:43:58 +05:30
webvtt.py [webtt] Fix timestamps 2021-07-12 05:20:12 +05:30