yt-dlp/yt_dlp
Matthew 8e40b9d1ec
Improve plugin architecture ()
to make plugins easier to develop and use:
* Plugins are now loaded as namespace packages.
* Plugins can be loaded in any distribution of yt-dlp (binary, pip, source, etc.).
* Plugin packages can be installed and managed via pip, or dropped into any of the documented locations.
* Users do not need to edit any code files to install plugins.
* Backwards-compatible with previous plugin architecture.

As a side-effect, yt-dlp will now search in a few more locations for config files.

Closes https://github.com/yt-dlp/yt-dlp/issues/1389

Authored by: flashdagger, coletdjnz, pukkandan, Grub4K
Co-authored-by: Marcel <flashdagger@googlemail.com>
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
Co-authored-by: Simon Sawicki <accounts@grub4k.xyz>
..
compat [compat] Fix `shutils.move` in restricted ACL mode on BSD ()
downloader [downloader/ffmpeg] Fix headers for video+audio formats ()
extractor Improve plugin architecture ()
postprocessor Improve plugin architecture ()
YoutubeDL.py Improve plugin architecture ()
__init__.py Let `--parse/replace-in-metadata` run at any post-processing stage
__main__.py [cleanup] Misc
aes.py Update to ytdl-commit-de39d128
cache.py [extractor/cda] Support premium and misc improvements ()
cookies.py [cookies] Improve `LenientSimpleCookie` ()
dependencies.py [cleanup] Misc
jsinterp.py [jsinterp] Escape regex that looks like nested set
minicurses.py [docs] Consistent use of `e.g.` ()
options.py Improve plugin architecture ()
plugins.py Improve plugin architecture ()
socks.py [compat] Remove more functions
update.py [update] Workaround
utils.py Improve plugin architecture ()
version.py [version] update
webvtt.py [webvtt] Handle premature EOF