Compare commits

...

3964 Commits

Author SHA1 Message Date
bashonly 3e35aa32c7
[ie/twitter] Fix auth for x.com migration (#9952)
Authored by: bashonly
15 hours ago
coletdjnz 53b4d44f55
[test] Fix connect timeout test (#9906)
Fixes https://github.com/yt-dlp/yt-dlp/issues/9659

Authored by: coletdjnz
1 day ago
bashonly c999bac02c
Bugfix for 61b17437dc
Authored by: bashonly
1 day ago
coletdjnz 12d8ea8246
[ie/youtube] Remove `android` from default clients (#9553)
Closes #9554
Authored by: coletdjnz, bashonly

Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
2 days ago
Justin Keogh 8e15177b41
[ie/youtube] Fix comments extraction (#9775)
Closes #9358
Authored by: jakeogh, minamotorin, shoxie007, bbilly1

Co-authored-by: minamotorin <76122224+minamotorin@users.noreply.github.com>
Co-authored-by: shoxie007 <74592022+shoxie007@users.noreply.github.com>
Co-authored-by: Simon <35427372+bbilly1@users.noreply.github.com>
2 days ago
Roeniss Moon dd9ad97b1f
[cookies] Add `--cookies-from-browser` support for Whale (#9649)
Closes #9307
Authored by: roeniss
2 days ago
minamotorin 61b17437dc
[ie] Add POST data hash to `--write-pages` filenames (#9879)
Closes #9773
Authored by: minamotorin
2 days ago
kylegustavo 7975ddf245
[ie/bbc] Fix and extend extraction (#9705)
Closes #9701
Authored by: kylegustavo, dirkf, pukkandan
2 days ago
Podiumnoche 6d8a53d870
[ie/cda] Fix age-gated web extraction (#9939)
Closes #5980, Closes #6638
Authored by: Podiumnoche, Szpachlarz, dirkf, emqi
2 days ago
bashonly 4813173e45
[ie/twitter] Support x.com URLs (#9926)
Closes #9923
Authored by: bashonly
2 days ago
bashonly 41ba4a808b
[ie/tiktok] Extract via mobile API only if `app_info` is passed (#9938)
Partially addresses #9506
Authored by: bashonly
2 days ago
Mozi 351dc0bc33
[ie/eplus] Handle URLs without videos (#9855)
Authored by: pzhlkj6612
5 days ago
feederbox826 518c1afc15
[ie/pornhub] Fix login by email address (#9914)
Closes #9717
Authored by: feederbox826
5 days ago
WyohKnott 85ec2a337a
[ie/googledrive] Fix formats extraction (#9908)
Closes #8281
Authored by: WyohKnott
6 days ago
Jake Finley b207d26f83
[ie/xvideos:quickies] Fix extractor (#9834)
Closes #6356
Authored by: JakeFinley96
7 days ago
sepro 01395a3434
[cleanup] Remove questionable extractors (#9911)
Closes #6279, Closes #6799
Authored by: seproDev
7 days ago
Haxy cf212d0a33
[ie/youtube] Add `mediaconnect` client (#9546)
Authored by: clienthax
7 days ago
alard 6db96268c5
[ie/TV5Monde] Fix extractor (#9143)
Closes #9118
Authored by: alard, seproDev

Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com>
1 week ago
Eric Lam 800a43983e
[ie/EuroParlWebstream] Support new URL format (#9647)
Authored by: voidful, seproDev

Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com>
1 week ago
DaPotato69 7e4259dff0
Better warning when requested subs format not found (#9873)
Closes #9760
Authored by: DaPotato69
1 week ago
Stefan Lobbenmeier f1f158976e
[cookies] Get chrome session cookies with `--cookies-from-browser` (#9747)
Partially addresses #5534
Authored by: StefanLobbenmeier
1 week ago
llamasblade 31b417e1d1
[ie/hytale] Use `CloudflareStreamIE` explicitly (#9672)
Authored by: llamasblade
1 week ago
Hugo Azevedo fc2879ecb0
[ie/alura] Fix extractor (#9658)
Authored by: hugohaa
1 week ago
rrgomes 0a1a8e3005
[ie/nfb] Fix extractors (#9650)
Authored by: rrgomes
1 week ago
c-basalt 4cc99d7b6c
[ie/BilibiliSpaceVideo] Fix extraction (#9905)
Closes #9892
Authored by: c-basalt
1 week ago
coletdjnz 3c7a287e28
[test] Add HTTP proxy tests (#9578)
Also fixes HTTPS proxies for curl_cffi

Authored by: coletdjnz
1 week ago
sepro 98d71d8c5e
[ie/commonmistakes] Raise error on blob URLs (#9897)
Authored by: seproDev
1 week ago
kclauhk 00a9f2e1f7
[ie/canalalpha] Fix extractor (#9675)
Authored by: kclauhk
1 week ago
Mozi 73f12119b5
[ie/netease:program] Improve `--no-playlist` message (#9488)
Authored by: pzhlkj6612
1 week ago
Alexandre Huot 6b54cccdcb
[ie/Qub] Fix extractor (#7019)
Closes #4989
Authored by: alexhuot1, dirkf
1 week ago
src-tinkerer c4b87dd885
[ie/ZenYandex] Fix extractor (#9813)
Closes #9803
Authored by: src-tinkerer
2 weeks ago
fireattack 2338827072
[ie/bilibili] Fix `--geo-verification-proxy` support (#9817)
Closes #9797
Authored by: fireattack
2 weeks ago
fireattack 06d52c8731
[ie/BilibiliSpaceVideo] Better error message (#9839)
Closes #9528
Authored by: fireattack
2 weeks ago
sepro df5c9e733a
[ie/vk] Improve format extraction (#9885)
Closes #5675
Authored by: seproDev
2 weeks ago
Mozi b38018b781
[ie/mixch] Extract comments (#9860)
Authored by: pzhlkj6612
2 weeks ago
Rasmus Antons 145dc6f656
[ie/boosty] Add cookies support (#9522)
Closes #9401
Authored by: RasmusAntons
2 weeks ago
bashonly 5904853ae5
[ie/crunchyroll] Support browser impersonation (#9857)
Closes #7442
Authored by: bashonly
2 weeks ago
Chris Caruso c8bf48f3a8
[ie/cbc.ca:player] Improve `_VALID_URL` (#9866)
Closes #9825
Authored by: carusocr
2 weeks ago
The-MAGI 351368cb9a
[ie/youporn] Fix extractor (#8827)
Closes #7967
Authored by: The-MAGI
2 weeks ago
sepro 96da952504
[core] Warn if lack of ffmpeg alters format selection (#9805)
Authored by: seproDev, pukkandan
2 weeks ago
bashonly bec9a59e8e
[networking] Add `extensions` attribute to `Response` (#9756)
CurlCFFIRH now provides an `impersonate` field in its responses' extensions

Authored by: bashonly
2 weeks ago
bashonly 036e0d92c6
[ie/patreon] Extract multiple embeds (#9850)
Closes #9848
Authored by: bashonly
2 weeks ago
bashonly cb2fb4a643
[ie/crunchyroll] Always make metadata available (#9772)
Closes #9750
Authored by: bashonly
2 weeks ago
bashonly 231c2eacc4
[ie/soundcloud] Extract `genres` (#9821)
Authored by: bashonly
2 weeks ago
bashonly c4853655cb
[ie/wrestleuniverse] Avoid partial stream formats (#9800)
Authored by: bashonly
2 weeks ago
Simon Sawicki ac817bc83e
[build] Migrate `linux_exe` to static musl builds (#9811)
Authored by: Grub4K, bashonly

Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
3 weeks ago
bashonly 1a366403d9
[build] Run `macos_legacy` job on `macos-12` (#9804)
`macos-latest` has been bumped to `macos-14-arm64` which breaks the builds

Authored by: bashonly
3 weeks ago
Simon Sawicki 7e26bd53f9
[core/windows] Fix tests for `sys.executable` with spaces (Fix for 64766459e3)
Authored by: Grub4K
3 weeks ago
Simon Sawicki 64766459e3
[core/windows] Improve shell quoting and tests (#9802)
Authored by: Grub4K
3 weeks ago
bashonly 89f535e265
[ci] Fix `curl-cffi` installation (Bugfix for 02483bea1c)
Authored by: bashonly
4 weeks ago
bashonly ff38a011d5
[ie/crunchyroll] Fix auth and remove cookies support (#9749)
Closes #9745
Authored by: bashonly
4 weeks ago
bashonly 8056a3026e
[ie/theatercomplextown] Fix extractors (#9754)
Authored by: bashonly
4 weeks ago
Simon Sawicki 3ee1194288
[ie] Make `_search_nextjs_data` non fatal (#8937)
Authored by: Grub4K
4 weeks ago
bashonly e3b42d8b1b
[ie/facebook] Fix DASH formats extraction (#9734)
Closes #9720
Authored by: bashonly
4 weeks ago
bashonly c9ce57d9bf
[ie/patreon] Fix Vimeo embed extraction (#9712)
Fixes regression in 36b240f9a7

Closes #9709
Authored by: bashonly
1 month ago
bashonly 02483bea1c
[build] Normalize `curl_cffi` group to `curl-cffi` (#9698)
Closes #9682
Authored by: bashonly
1 month ago
bashonly 315b354429
[ie/afreecatv:live] Add `cdn` extractor-arg (#9666)
Closes #6497
Authored by: bashonly
1 month ago
bashonly 0c21c53885
[ie/jiosaavn] Extract via API and fix playlists (#9656)
Closes #9648
Authored by: bashonly
1 month ago
github-actions[bot] 168e72dcd3 Release 2024.04.09
Created by: Grub4K

:ci skip all :ci run dl
1 month ago
Simon Sawicki ff07792676
[core] Prevent RCE when using `--exec` with `%q` (CVE-2024-22423)
The shell escape function now properly escapes `%`, `\\` and `\n`. `utils.Popen` as well as `%q` output template expansion have been patched accordingly.

Prior to this fix using `--exec` together with `%q` when on Windows could cause remote code to execute. See https://github.com/yt-dlp/yt-dlp/security/advisories/GHSA-hjq6-52gw-2g7p for more details.

Authored by: Grub4K
1 month ago
bashonly 216f6a3cb5
[cleanup] Misc (#9426)
Authored by: bashonly, pukkandan
1 month ago
bashonly b19ae095fd
[build] Do not include `curl_cffi` in `macos_legacy` (#9653)
Authored by: bashonly
1 month ago
Simon Sawicki 9590cc6b47
Add new option `--progress-delta` (#9082)
Authored by: Grub4K
1 month ago
luiso1979 79a451e576
[networking] Respect `SSLKEYLOGFILE` environment variable (#9543)
Authored by: luiso1979
1 month ago
Leo Heitmann Ruiz df0e138fc0
[docs] Various manpage fixes
Authored by: leoheitmannruiz
1 month ago
bashonly 2e94602f24
[ie/jiosaavn] Support playlists (#9622)
Closes #9616
Authored by: bashonly
1 month ago
bashonly 4af9d5c2f6
[ie/nhk] Fix NHK World extractors (#9623)
Closes #9513
Authored by: bashonly
1 month ago
John Victor 36b240f9a7
[ie/patreon] Do not extract dead embed URLs (#9613)
Closes #8702
Authored by: johnvictorfs
1 month ago
bashonly fc53ec13ff
[ie/tiktok] Restore `carrier_region` API parameter (#9637)
Avoids some geo-blocks

Authored by: bashonly
1 month ago
Dmitry Meyer 2ab2651a4a
[cookies] Add `--cookies-from-browser` support for Firefox Flatpak (#9619)
Authored by: un-def
1 month ago
bashonly b15b0c1d21
[ie/vkplay] Fix `_VALID_URL` (#9636)
Closes #9635
Authored by: bashonly
1 month ago
bashonly c8a61a9100
[ie/kick] Support browser impersonation (#9611)
Closes #6748
Authored by: bashonly
1 month ago
Mozi f2fd449b46
[ie/joqrag] Fix live status detection (#9624)
Authored by: pzhlkj6612
1 month ago
Tomoka1 9415f1a5ef
[ie/afreecatv] Overhaul extractor (#9566)
Closes #4592, Closes #8862, Closes #9544
Authored by: bashonly, Tomoka1

Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
1 month ago
bashonly a48cc86d6f
[ie/dropbox] Fix formats extraction (#9627)
Closes #9533
Authored by: bashonly
1 month ago
bytedream 954e57e405
[ie/crunchyroll] Fix extractor (#9615)
Authored by: bytedream
1 month ago
Dong Heon Hee 9073ae6458
[ie/afreecatv:live] Fix extractor (#9348)
Closes #4466, Closes #9345
Authored by: hui1601
1 month ago
Offert4324 4cd9e251b9
[ie/medici] Fix extractor (#9518)
Closes #8813
Authored by: Offert4324
1 month ago
bashonly 0ae16ceb18
[ie/jiosaavn] Extract artists (#9612)
Closes #9607
Authored by: bashonly
2 months ago
bashonly 443e206ec4
[ie/jiosaavn] Fix format extensions (#9609)
Authored by: bashonly
2 months ago
bashonly 4c3b7a0769
[ie/mixch] Fix extractor (#9608)
Closes #9536
Authored by: bashonly, nipotan
2 months ago
bashonly 16be117729
Add option `--no-break-on-existing` (#9610)
Authored by: bashonly
2 months ago
trainman261 b49d5ffc53
[ie/cbc.ca:player] Support new URL format (#9561)
Closes #9534
Authored by: trainman261
2 months ago
HobbyistDev 36baaa10e0
[ie/Radio1Be] Add extractor (#9122)
Closes #8707
Authored by: HobbyistDev
2 months ago
Kacper Michajłow 02f93ff51b
[ie/twitch] Extract AV1 and HEVC formats (#9158)
Authored by: kasper93
2 months ago
Mozi c59de48e2b
[ie/mixch:archive] Fix extractor (#8761)
Closes #2373
Authored by: pzhlkj6612
2 months ago
Mozi 0284f1fee2
[ie/asobistage] Add extractor (#8735)
Authored by: pzhlkj6612
2 months ago
bashonly e8032503b9
[build] Print SHA sums to GHA logs (#9582)
Authored by: bashonly
2 months ago
bashonly 97362712a1
[ie/soundcloud] Support cookies (#9586)
Closes #997
Authored by: bashonly
2 months ago
bashonly 246571ae1d
[ie/soundcloud] Support retries for API rate-limit (#9585)
Authored by: bashonly
2 months ago
Simon Sawicki 32abfb00bd
[utils] `traverse_obj`: Convenience improvements (#9577)
Add support for:
- `http.cookies.Morsel`
- Multi type filters (`{type, type}`)

Authored by: Grub4K
2 months ago
pukkandan c305a25c1b
[cleanup] Standardize `import datetime as dt` (#8978) 2 months ago
pukkandan e3a3ed8a98
[ie, cleanup] No `from` stdlib imports in extractors (#8978) 2 months ago
pukkandan a25a424323
[ie/youtube] Calculate more accurate `filesize`
YouTube provides slightly different duration for each format.
Calculating file-size based on this duration instead of the
video duration gives more accurate results.

Ref: https://github.com/yt-dlp/yt-dlp/issues/1400#issuecomment-2007441207
2 months ago
sepro 86e3b82261
[core] Fix `filesize_approx` calculation (#9560)
Reverts 22e4dfacb6

Despite being documented as `Kbit/s`, the extractors/manifests were returning bitrates in SI units of kilobits/sec.

Authored by: seproDev, pukkandan
2 months ago
pukkandan e7b17fce14
[ie/youtube] Update `android` params
Discovered by LuanRT - https://github.com/LuanRT/YouTube.js/pull/624

Closes #9554
2 months ago
bashonly a2d0840739
[ie/soundcloud] Adjust format sorting (#9584)
- Adapt to 86a972033e

Authored by: bashonly
2 months ago
pukkandan 86a972033e
Infer `acodec` for single-codec containers 2 months ago
bashonly 50c2935231
[ie] Add extractor impersonate API (#9474)
Authored by: bashonly, Grub4K, pukkandan
2 months ago
bashonly 0df63cce69
[ie/thisoldhouse] Support Brightcove embeds (#9576)
Closes #9570
Authored by: bashonly
2 months ago
bashonly 63f685f341
[ie/tiktok] Prefer non-bytevc2 formats (#9575)
Closes #9567
Authored by: bashonly
2 months ago
Simon Sawicki 3699eeb67c
[utils] `traverse_obj`: Allow unbranching using `all` and `any` (#9571)
Authored by: Grub4K
2 months ago
Simon Sawicki 979ce2e786
[test] `traversal`: Separate traversal tests (#9574)
Authored by: Grub4K
2 months ago
bashonly 58dd0f8d1e
[build] Optional dependencies cleanup (#9550)
Authored by: bashonly
2 months ago
bashonly cb61e20c26
[ie/tiktok] Fix API extraction (#9548)
Closes #9506
Authored by: bashonly, Grub4K

Co-authored-by: Simon Sawicki <contact@grub4k.xyz>
2 months ago
bashonly 9c42b7eef5
[fd/ffmpeg] Accept output args from info dict (#9278)
Authored by: bashonly
2 months ago
coletdjnz e5d4f11104
[rh:websockets] Workaround race condition causing issues on PyPy (#9514)
Authored by: coletdjnz
2 months ago
src-tinkerer bc2b8c0596
[ie/fathom] Add extractor (#9495)
Closes #8541
Authored by: src-tinkerer
2 months ago
sta1us aa7e9ae4f4
[ie/xvideos] Support new URL format (#9493) (#9502)
Closes #9493
Authored by: sta1us
2 months ago
Shreyas Minocha 07f5b2f757
[ie/box] Support URLs without file IDs (#9504)
Authored by: shreyasminocha
2 months ago
Daniel Vogt ff349ff94a
[ie/sharepoint] Add extractor (#6531)
Authored by: C0D3D3V, bashonly

Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
2 months ago
Hasan Rüzgar f859ed3ba1
[ie/loom] Add extractors (#8686)
Closes #3715
Authored by: bashonly, hruzgar

Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
2 months ago
Aron Buzinkay 17d248a587
[ie/youtube:search] Fix params for uncensored results (#9456)
Closes #9156
Authored by: alb, pukkandan
2 months ago
sepro 388c979ac6
[docs] Update yt-dlp tagline (#9481)
Authored by: seproDev, bashonly, coletdjnz, Grub4K, pukkandan
2 months ago
sepro 22e4dfacb6
[ie/youtube] Fix tbr calculation (#9489)
Authored by: pukkandan

Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
2 months ago
Trustin 86d2f4d248
[ie/imgur] Fix extraction (#9471)
Closes #9458
Authored by: trwstin
2 months ago
coletdjnz 52f5be1f1e
[rh:curlcffi] Add support for `curl_cffi`
Authored by: coletdjnz, Grub4K, pukkandan, bashonly

Co-authored-by: Simon Sawicki <contact@grub4k.xyz>
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
Co-authored-by: bashonly <bashonly@protonmail.com>
2 months ago
coletdjnz 0b81d4d252
Add new options `--impersonate` and `--list-impersonate-targets`
Authored by: coletdjnz, Grub4K, pukkandan, bashonly

Co-authored-by: Simon Sawicki <contact@grub4k.xyz>
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
Co-authored-by: bashonly <bashonly@protonmail.com>
2 months ago
coletdjnz f849d77ab5
[test] Workaround websocket server hanging (#9467)
Authored by: coletdjnz
2 months ago
bashonly f2868b26e9
[ie/SonyLIVSeries] Fix season extraction (#9423)
Authored by: bashonly
2 months ago
bashonly be77923ffe
[ie/crunchyroll] Extract `vo_adaptive_hls` formats by default (#9447)
Closes #9439
Authored by: bashonly
2 months ago
bashonly 8c05b3ebae
[ie/tiktok] Update API hostname (#9444)
Closes #9441
Authored by: bashonly
2 months ago
jazz1611 0da66980d3
[ie/gofile] Fix extractor (#9446)
Authored by: jazz1611
2 months ago
bashonly 17b96974a3
[build] Update changelog for tarball and sdist (#9425)
Closes #9417
Authored by: bashonly
2 months ago
github-actions[bot] 8463fb510a Release 2024.03.10
Created by: Grub4K

:ci skip all :ci run dl
2 months ago
pukkandan 615a84447e
[cleanup] Misc (#8968)
Authored by: pukkandan, bashonly, seproDev
2 months ago
pukkandan ed3bb2b0a1
[cleanup] Remove unused code (#8968)
Authored by: pukkandan, seproDev
2 months ago
pukkandan 45491a2a30
[utils] Improve `repr` of `DateRange`, `match_filter_func` 2 months ago
sepro a687226b48
[cleanup, ie] Match both `http` and `https` in `_VALID_URL` (#8968)
Except for Vimeo, since that causes matching collisions.

Authored by: seproDev
2 months ago
pukkandan 93240fc184
[cleanup] Fix misc bugs (#8968)
Closes #8816

Authored by: bashonly, seproDev, pukkandan, Grub4k
2 months ago
pukkandan 47ab66db0f
[docs] Misc Cleanup (#8977)
Closes #8355, #8944

Authored by: bashonly, Grub4k, Arthurszzz, seproDev, pukkandan

Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com>
Co-authored-by: bashonly <bashonly@protonmail.com>
Co-authored-by: Arthurszzz <minecraftgamerarthur@gmail.com>
Co-authored-by: Simon Sawicki <accounts@grub4k.xyz>
Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
2 months ago
bashonly 0abf2f1f15
[build] Add transitional `setup.py` and `pyinst.py` (#9296)
Authored by: bashonly, Grub4K, pukkandan

Co-authored-by: Simon Sawicki <contact@grub4k.xyz>
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
2 months ago
Peter Hosey 2d91b98456
[fd/http] Reset resume length to handle `FileNotFoundError` (#8399)
Closes #4521
Authored by: boredzo
2 months ago
x11x 8828f4576b
[ie/youtube:tab] Fix `tags` extraction (#9413)
Closes #9412
Authored by: x11x
2 months ago
Simon Sawicki dbd8b1bff9
Improve 069b2aedae
Authored by: Grub4k
2 months ago
Bl4Cc4t 8993721ecb
[ie/roosterteeth] Support bonus features (#9406)
Authored by: Bl4Cc4t
2 months ago
bashonly 263a4b55ac
[core] Handle `--load-info-json` format selection errors (#9392)
Closes #9388
Authored by: bashonly
2 months ago
bashonly b136e2af34
Bugfix for 104a7b5a46 (#9394)
Authored by: bashonly
2 months ago
bashonly b2cc150ad8
[ie/roosterteeth] Add Brightcove fallback (#9403)
Authored by: bashonly
2 months ago
Xpl0itU 785ab1af7f
[ie/crtvg] Fix `_VALID_URL` (#9404)
Authored by: Xpl0itU
2 months ago
bashonly 7aad06541e
[ie/youtube] Further bump client versions (#9395)
Authored by: bashonly
2 months ago
DmitryScaletta d3d4187da9
[ie/duboku] Fix m3u8 formats extraction (#9161)
Closes #9159
Authored by: DmitryScaletta
2 months ago
sepro c8c9039e64
[ie/generic] Follow https redirects properly (#9121)
Authored by: seproDev
2 months ago
sepro df773c3d5d
[cleanup] Mark broken and remove dead extractors (#9238)
Authored by: seproDev
2 months ago
sepro f4f9f6d00e
[cleanup] Fix infodict returned fields (#8906)
Authored by: seproDev
2 months ago
bashonly dfd8c0b696
[ie/roosterteeth] Extract release date and timestamp (#9393)
Authored by: bashonly
2 months ago
James Martindale dd29e6e5fd
[ie/roosterteeth] Extract ad-free streams (#9355)
Closes #7647
Authored by: jkmartindale
2 months ago
bashonly 96f3924bac
[ie/craftsy] Fix extractor (#9384)
Closes #9383
Authored by: bashonly
2 months ago
Simon Sawicki 0fcefb92f3
[ie/newgrounds] Fix login and clean up extraction (#9356)
Authored by: mrmedieval, Grub4K
2 months ago
bashonly e4fbe5f886
[ie/francetv] Fix DAI livestreams (#9380)
Closes #9382
Authored by: bashonly
2 months ago
SirElderling cd7086c0d5
[ie/RideHome] Add extractor (#8875)
Authored by: SirElderling
2 months ago
bashonly cf91400a1d
[build] Add `default` optional dependency group (#9295)
Authored by: bashonly, Grub4K

Co-authored-by: Simon Sawicki <contact@grub4k.xyz>
3 months ago
sepro ac340d0745
[test:websockets] Fix timeout test on Windows (#9344)
Authored by: seproDev
3 months ago
Raphaël Droz 11ffa92a61
[ie/dailymotion] Support search (#8292)
Closes #6126
Authored by: drzraf, seproDev

Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com>
3 months ago
bashonly ede624d1db
[ie/francetv] Fix m3u8 formats extraction (#9347)
Authored by: bashonly
3 months ago
Mozi 40966e8da2
Bugfix for aa13a8e3dd (#9338)
Closes #9351
Authored by: pzhlkj6612
3 months ago
Roy eedb38ce40
[ie/dumpert] Improve `_VALID_URL` (#9320)
Authored by: rvsit
3 months ago
src-tinkerer 6ad11fef65
[ie/CCTV] Fix extraction (#9325)
Closes #9299
Authored by: src-tinkerer
3 months ago
Mozi f0426e9ca5
[ie/vimeo] Extract `live_status` and `release_timestamp` (#9290)
Authored by: pzhlkj6612
3 months ago
bashonly d9b4154cbc
[ie/tiktok] Fix webpage extraction (#9327)
Closes #4992, Closes #8620
Authored by: bashonly
3 months ago
bashonly 9749ac7fec
[ie/francetv] Fix extractors (#9333)
Closes #9323
Authored by: bashonly
3 months ago
bashonly 413d367580
[ie/youtube] Bump Android and iOS client versions (#9317)
Closes #9316
Authored by: bashonly
3 months ago
Mozi aa13a8e3dd
[ie/niconico] Support DMS formats (#9282)
Closes #8389, Closes #8758, Closes #9254
Authored by: pzhlkj6612, xpadev-net
3 months ago
nixxo 8f423cf805
[ie/rai] Fix m3u8 formats extraction (#9291)
Closes #887
Authored by: nixxo
3 months ago
Dong Heon Hee 804f236611
[ie/chzzk:live] Support `--wait-for-video` (#9309)
Authored by: hui1601
3 months ago
SirElderling f00c0def74
[ie/zenporn] Add extractor (#8509)
Closes #8398
Authored by: SirElderling
3 months ago
bashonly e546e5d3b3
Bugfix for 9ff9466455
Closes #9322
Authored by: bashonly
3 months ago
bashonly 4170b3d712
[ie/MujRozhlas] Fix extraction (#9306)
Closes #9304
Authored by: bashonly
3 months ago
114514ns 9ff9466455
[ie/Douyin] Fix extractor (#9239)
Closes #7854, Closes #7941
Authored by: 114514ns, bashonly

Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
3 months ago
marcdumais e28e135d6f
[ie/altcensored:channel] Fix playlist extraction (#9297)
Authored by: marcdumais
3 months ago
Tobias Gruetzmacher f1570ab84d
Bugfix for 1713c88273 (#9298)
Authored by: TobiX
3 months ago
pukkandan 069b2aedae
Create `ydl._request_director` when needed 3 months ago
Simon Sawicki 5eedc208ec
[ie/youtube] Better error when all player responses are skipped (#9083)
Authored by: Grub4K, pukkandan

Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
3 months ago
bashonly 464c919ea8
[ie/CloudflareStream] Improve embed detection (#9287)
Partially addresses #7858
Authored by: bashonly
3 months ago
bashonly 3894ab9574
[ie/archiveorg] Fix format URL encoding (#9279)
Closes #9173
Authored by: bashonly
3 months ago
bashonly b05640d532
[ie/swearnet] Raise for login required (#9281)
Closes #9110
Authored by: bashonly
3 months ago
bashonly 7a29cbbd5f
[ie/ntvru] Fix extraction (#9276)
Closes #8347
Authored by: bashonly, dirkf

Co-authored-by: dirkf <fieldhouse@gmx.net>
3 months ago
bashonly 2e8de097ad
[ie/vimeo] Fix login (#9274)
Closes #9273
Authored by: bashonly
3 months ago
bashonly f3d5face83
[ie/CloudflareStream] Improve `_VALID_URL` (#9280)
Closes #9171
Authored by: bashonly
3 months ago
bashonly eabbccc439
[build] Support failed build job re-runs (#9277)
Authored by: bashonly
3 months ago
sepro 0de09c5b9e
[ie/nebula] Support podcasts (#9140)
Closes #8838
Authored by: seproDev, c-basalt

Co-authored-by: c-basalt <117849907+c-basalt@users.noreply.github.com>
3 months ago
sepro 6a6cdcd182
[core] Warn user when not launching through shell on Windows (#9250)
Authored by: seproDev, Grub4K

Co-authored-by: Simon Sawicki <contact@grub4k.xyz>
3 months ago
J. Gonzalez 998dffb5a2
[ie/cnbc] Overhaul extractors (#8741)
Closes #5871, Closes #8378
Authored by: gonzalezjo, Noor-5, zhijinwuu, ruiminggu, seproDev

Co-authored-by: Noor Mostafa <93787875+Noor-5@users.noreply.github.com>
Co-authored-by: zhijinwuu <zhijinw@andrew.cmu.edu>
Co-authored-by: ruiminggu <ruimingg@andrew.cmu.edu>
Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com>
3 months ago
sepro 29a74a6126
[ie/NerdCubedFeed] Overhaul extractor (#9269)
Authored by: seproDev
3 months ago
bashonly 55f1833376
[ie/twitter] Extract numeric `channel_id` (#9263)
Authored by: bashonly
3 months ago
gmes78 3d9dc2f359
[ie/Rule34Video] Extract `creators` (#9258)
Authored by: gmes78
3 months ago
bashonly 28e53d60df
[ie/twitter] Extract bitrate for HLS audio formats (#9257)
Closes #9202
Authored by: bashonly
3 months ago
fireattack f591e605df
[ie/openrec] Pass referer for m3u8 formats (#9253)
Closes #6946
Authored by: fireattack
3 months ago
Jade Laurence Empleo 9a8afadd17
[plugins] Handle `PermissionError` (#9229)
Authored by: syntaxsurge, pukkandan
3 months ago
Lev 104a7b5a46
[ie] Migrate commonly plural fields to lists (#8917)
Authored by: llistochek, pukkandan
Related: #3944
3 months ago
alard 7e90e34fa4
[extractor/goplay] Fix extractor (#6654)
Authored by: alard
Closes #6235
3 months ago
Alard 4ce57d3b87
[ie] Support multi-period MPD streams (#6654) 3 months ago
pukkandan ffff1bc659
Fix 3725b4f0c9 3 months ago
DmitryScaletta 4f04347909
[ie/FlexTV] Add extractor (#9178)
Closes #9175
Authored by: DmitryScaletta
3 months ago
garret 4392447d94
[ie/NhkRadiru] Extract extended description (#9162)
Authored by: garret1317
3 months ago
bashonly 43cfd462c0
Bugfix for 775cde82dc (#9241)
Authored by: bashonly
3 months ago
Mozi 974d444039
[ie/niconico] Remove legacy danmaku extraction (#9209)
Closes #8684
Authored by: pzhlkj6612
3 months ago
Elan Ruusamäe 80ed8bdeba
[ie/ERRJupiter] Improve `_VALID_URL` (#9218)
Authored by: glensc
3 months ago
feederbox826 de954c1b4d
[ie/pornhub] Fix login support (#9227)
Closes #7981
Authored by: feederbox826
3 months ago
coletdjnz 0085e2bab8
[rh] Remove additional logging handlers on close (#9032)
Fixes https://github.com/yt-dlp/yt-dlp/issues/8922

Authored by: coletdjnz
3 months ago
bashonly 73fcfa39f5
Bugfix for beaa1a4455 (#9235)
[build:Makefile] Restore compatibility with GNU Make <4.0

- The != variable assignment operator is not supported by GNU Make <4.0
- $(shell) is a no-op in BSD Make, assigns an empty string to the var
- Try to assign with != and fallback to $(shell) if not assigned (?=)

- Old versions of BSD find have different -exec behavior
- Pipe to `sed` instead of using `find ... -exec dirname {}`

- BSD tar does not support --transform, --owner or --group
- Allow user to specify path to GNU tar by passing GNUTAR variable

- pandoc vars are immediately evaluated with != in gmake>=4 and bmake
- Suppress stderr output for pandoc -v in case it is not installed
- Use string comparison instead of int comparison for pandoc version

Authored by: bashonly
3 months ago
DmitryScaletta 41d6b61e98
[ie/Utreon] Support playeur.com (#9182)
Closes #9180
Authored by: DmitryScaletta
3 months ago
sepro 0bee29493c
[ie/Screencastify] Update `_VALID_URL` (#9232)
Authored by: seproDev
3 months ago
sepro 644738ddaa
[ie/OneFootball] Fix extractor (#9222)
Authored by: seproDev
3 months ago
sepro c168d8791d
[ie/Nova] Fix embed extraction (#9221)
Authored by: seproDev
3 months ago
diman8 ddd4b5e10a
[ie/SVTPage] Fix extractor (#8938)
Closes #8930
Authored by: diman8
3 months ago
nixxo f788149237
[ie/rai] Filter unavailable formats (#9189)
Closes #9154
Authored by: nixxo
3 months ago
barsnick 017adb28e7
[ie/LinkedIn] Fix metadata and extract subtitles (#9056)
Closes #9003
Authored by: barsnick
3 months ago
ringus1 2e30b5567b
[ie/facebook] Improve extraction
Partially addresses #4311

Authored by: jingtra, ringus1

Co-authored-by: Jing Kjeldsen <jingtra@gmail.com>
3 months ago
bashonly beaa1a4455
[build:Makefile] Ensure compatibility with BSD `make` (#9210)
Authored by: bashonly
3 months ago
Florian Meißner fb44020fa9
[build:Makefile] Fix man pages generated by `pandoc>=3` (#7047)
Closes #7046, Closes #8481
Authored by: t-nil
3 months ago
sepro 3dc9232e1a
[ie/MagellanTV] Support episodes (#9199)
Authored by: seproDev
3 months ago
sepro 9401736fd0
[ie/LeFigaroVideoEmbed] Fix extractor (#9198)
Authored by: seproDev
3 months ago
sepro cd0443fb14
[ie/Funk] Fix extractor (#9194)
Authored by: seproDev
3 months ago
sepro 03536126d3
[ie/CrooksAndLiars] Fix extractor (#9192)
Authored by: seproDev
3 months ago
sepro 1ed5ee2f04
[ie/Ant1NewsGrEmbed] Fix extractor (#9191)
Authored by: seproDev
3 months ago
bashonly 3876429d72
[build] Bump `actions/upload-artifact` to v4 and adjust workflows
Authored by: bashonly
3 months ago
bashonly b0059f0413
[build] Bump `conda-incubator/setup-miniconda` to v3
Authored by: bashonly
3 months ago
bashonly b14e818b37
[ci] Bump `actions/setup-python` to v5
Authored by: bashonly
3 months ago
bashonly 867f637b95
[cleanup] Build files cleanup
- Fix `AUTHORS` file by doing an unshallow checkout
- Update triggers for nightly/master release

Authored by: bashonly
3 months ago
bashonly 920397634d
[build] Fix `secretstorage` for ARM builds
Authored by: bashonly
3 months ago
bashonly b8a433aaca
[devscripts] `install_deps`: Add script and migrate to it
Authored by: bashonly
3 months ago
Simon Sawicki fd647775e2
[devscripts] `tomlparse`: Add makeshift toml parser
Authored by: Grub4K
3 months ago
bashonly 775cde82dc
[build] Migrate to `pyproject.toml` and `hatchling`
Authored by: bashonly
3 months ago
bashonly 868d2f60a7
[build:Makefile] Add automated `CODE_FOLDERS` and `CODE_FILES`
Authored by: bashonly
3 months ago
bashonly a1b7784289
[build] Move bundle scripts into `bundle` submodule
Authored by: bashonly
3 months ago
lauren n. liberda 882e3b753c
[ie/tvp] Support livestreams (#8860)
Closes #8824
Authored by: selfisekai
3 months ago
Dmitry Meyer 540b682981
[ie/Boosty] Add extractor (#9144)
Closes #5900, Closes #8704
Authored by: un-def
3 months ago
SirElderling 05420227aa
[ie/nytimes] Extract timestamp (#9142)
Authored by: SirElderling
3 months ago
Chocobozzz 35d96982f1
[ie/peertube] Update instances (#9070)
Authored by: Chocobozzz
3 months ago
DmitryScaletta acaf806c15
[ie/nuum] Add extractors (#8868)
Authored by: DmitryScaletta, seproDev

Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com>
3 months ago
SirElderling 07256b9fee
[ie/nytimes] Overhaul extractors (#9075)
Closes #2899, Closes #8605
Authored by: SirElderling
3 months ago
c-basalt e439693f72
[ie/bilibili] Support `--no-playlist` (#9139)
Addresses #8499
Authored by: c-basalt
3 months ago
Michal 96d0f8c1cb
[ie/eporner] Extract AV1 formats (#9028)
Authored by: michal-repo
3 months ago
YoshichikaAAA e3ce2b385e
[ie/radiko] Extract more metadata (#9115)
Authored by: YoshichikaAAA
4 months ago
sepro 4253e3b7f4
[ie/CCMA] Extract 1080p DASH formats (#9130)
Closes #5755
Authored by: seproDev
4 months ago
bashonly 8e765755f7
[ie/vimeo] Fix API headers (#9125)
Closes #9124
Authored by: bashonly
4 months ago
c-basalt ffa017cfc5
[ie/BiliBiliSearch] Set cookie to fix extraction (#9119)
Closes #5083
Authored by: c-basalt
4 months ago
HobbyistDev a0d50aabc5
[ie/orf:on] Add extractor (#9113)
Closes #8903
Authored by: HobbyistDev
4 months ago
HobbyistDev 2f4b575946
[ie/zetland] Add extractor (#9116)
Closes #9024
Authored by: HobbyistDev
4 months ago
garret fc2cc626f0
[ie/cineverse] Detect when login required (#9081)
Partially addresses #9072
Authored by: garret1317
4 months ago
columndeeply a2bac6b7ad
[ie/PrankCastPost] Add extractor (#8933)
Authored by: columndeeply
4 months ago
rrgomes 4b8b0dded8
[ie/nfb] Add support for onf.ca and series (#8997)
Closes #8198
Authored by: bashonly, rrgomes

Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
4 months ago
jazz1611 4a6ff0b47a
[ie/redtube] Support redtube.com.br URLs (#9103)
Authored by: jazz1611
4 months ago
Radu Manole 62c65bfaf8
[ie/NinaProtocol] Add extractor (#8946)
Closes #8709, Closes #8764
Authored by: RaduManole, seproDev

Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com>
4 months ago
bashonly d63eae7e7f
[core] Don't select storyboard formats as fallback
Closes #7715
Authored by: bashonly
4 months ago
Simon Sawicki 2792092afd
[cookies] Improve error message for Windows `--cookies-from-browser chrome` issue (#9080)
Authored by: Grub4K
4 months ago
Simon Sawicki cbed249aaa
[cookies] Fix `--cookies-from-browser` for `snap` Firefox (#9016)
Authored by: Grub4K
4 months ago
Simon Sawicki 3725b4f0c9
[core] Add `--compat-options 2023` (#9084)
Authored by: Grub4K
4 months ago
sepro 67bb70cd70
[ie/Vbox7] Fix extractor (#9100)
Closes #1098, Closes #5661
Authored by: seproDev
4 months ago
kclauhk 9b5efaf86b
[ie/facebook] Support events (#9055)
Closes #5355
Authored by: kclauhk
4 months ago
sepro 999ea80beb
[ie/art19] Add extractors (#9099)
Authored by: seproDev
4 months ago
Nur Mahmud Ul Alam Tasin 41b6cdb419
[ie/viewlift] Add support for chorki.com (#9095)
Closes #3369
Authored by: NurTasin
4 months ago
Danish Humair 02e343f6ef
[ie/MedalTV] Fix extraction (#9098)
Closes #8766
Authored by: Danish-H
4 months ago
Elan Ruusamäe a514cc2feb
[ie/ERRJupiter] Add extractor (#8549)
Authored by: glensc
4 months ago
kclauhk 87286e93af
[ie/facebook] Support permalink URLs (#9061)
Authored by: kclauhk
4 months ago
kclauhk 3c4d3ee491
[ie/facebook] Improve thumbnail extraction (#9060)
Authored by: kclauhk
4 months ago
kclauhk 5b68c478fb
[ie/facebook] Set format HTTP chunk size (#9058)
Closes #8197
Authored by: bashonly, kclauhk
4 months ago
Christopher Schreiner 9526b1f179
[ie/adn] Improve auth error handling (#9068)
Closes #9067
Authored by: infanf
4 months ago
vista-narvas 0023af81fb
[ie/RumbleChannel] Fix extractor (#9092)
Closes #8782
Authored by: vista-narvas, Pranaxcau
4 months ago
Christian Kündig cae6e46107
[ie/PlaySuisse] Add login support (#9077)
Closes #7974
Authored by: chkuendig
4 months ago
jazz1611 c91d8b1899
[ie/redtube] Fix formats extraction (#9076)
Authored by: jazz1611
4 months ago
jazz1611 77c2472ca1
[ie/Gofile] Fix extraction (#9074)
Closes #9073
Authored by: jazz1611
4 months ago
shmohawk d79c7e9937
[ie/Txxx] Extract thumbnails (#9063)
Authored by: shmohawk
4 months ago
Caesim404 5dda3b291f
[ie/lsm,cloudycdn] Add extractors (#8643)
Closes #2978
Authored by: Caesim404
4 months ago
Simon Sawicki 5f25f348f9
[ie/pr0gramm] Enable POL filter and provide tags without login (#9051)
Authored by: Grub4K
4 months ago
kclauhk a40b0070c2
[ie/facebook:ads] Add extractor (#8870)
Closes #8083
Authored by: kclauhk
4 months ago
chtk 9cd9044790
[ie/Floatplane] Improve metadata extraction (#8934)
Authored by: chtk
4 months ago
John Victor f0e8bc7c60
[ie/patreon] Fix embedded HLS extraction (#8993)
Closes #8973
Authored by: johnvictorfs
4 months ago
Stefan Lobbenmeier c099ec9392
[ie/ard:mediathek] Support cookies to verify age (#9037)
Closes #9035
Authored by: StefanLobbenmeier
4 months ago
gmes78 c0ecceeefe
[ie/Rule34Video] Fix `_VALID_URL` (#9044)
Authored by: gmes78
4 months ago
u-spec-png 3e083191cd
[ie/Newgrounds:user] Fix extractor (#9046)
Closes #7308
Authored by: u-spec-png
4 months ago
dasidiot 9f1e9dab21
[ie/motherless] Support uploader playlists (#8994)
Authored by: dasidiot
4 months ago
Martin Renold 5a63454b36
[ie/mx3] Add extractors (#8736)
Authored by: martinxyz
4 months ago
lauren n. liberda fcaa2e735b
[ie/Sejm,RedCDNLivx] Add extractors (#8676)
Authored by: selfisekai
4 months ago
coletdjnz 35f4f764a7
[rh:requests] Apply `remove_dot_segments` to absolute redirect locations
Fixes https://github.com/yt-dlp/yt-dlp/issues/9020

Authored by: coletdjnz
4 months ago
sepro f24e44e8cb
[webvtt] Don't parse single fragment files (#9034)
Partially addresses #5804
Authored by: seproDev
4 months ago
coletdjnz 811d298b23
[networking] Remove `_CompatHTTPError` (#8871)
Use `yt_dlp.networking.exceptions.HTTPError`.
`_CompatHTTPError` was to help with transition to the networking framework.

Authored by: coletdjnz
4 months ago
coletdjnz 69d3191495
[test] Skip source address tests if the address cannot be bound to (#8900)
Fixes https://github.com/yt-dlp/yt-dlp/issues/8890

Authored by: coletdjnz
4 months ago
HobbyistDev 50e06e21a6
[ie/MLBArticle] Fix extractor (#9021)
Closes #8682
Authored by: HobbyistDev
4 months ago
divStar 4310b6650e
[ie/getcourseru] Add extractors (#8873)
Authored by: divStar, seproDev

Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com>
4 months ago
SirElderling 1713c88273
[ie/bilibili] Add referer header and fix metadata extraction (#8832)
Closes #6640
Authored by: SirElderling
4 months ago
Alexey Neyman 4a07a455bb
[ie/GoPro] Fix extractor (#9019)
Authored by: stilor
4 months ago
Christopher Schreiner 5eb1458be4
[ie/adn] Add support for German site (#8708)
- Add extractor for seasons

Closes #6643, Closes #8945
Authored by: infanf
4 months ago
SirElderling 1a36dbad71
[ie/RinseFMArtistPlaylist] Add extractor (#8794)
Authored by: SirElderling
4 months ago
Snack 12f0427405
[ie/asobichannel] Add extractors (#8700)
Authored by: Snack-X
4 months ago
alien-developers 5154dc0a68
[ie/JioSaavnSong] Support more bitrates (#8834)
Authored by: alien-developers, bashonly

Co-authored-by: bashonly <bashonly@protonmail.com>
4 months ago
ufukk 8ab8465083
[ie/TrtWorld] Add extractor (#8701)
Closes #8455
Authored by: ufukk
4 months ago
ArnauvGilotra e641aab7a6
[ie/AmadeusTV] Add extractor (#8744)
Closes #8155
Authored by: ArnauvGilotra
4 months ago
DmitryScaletta 20cdad5a2c
[ie/KukuluLive] Add extractor (#8877)
Closes #8865
Authored by: DmitryScaletta
4 months ago
SirElderling 43694ce13c
[ie/NineNews] Add extractor (#8840)
Closes #8831
Authored by: SirElderling
4 months ago
sefidel 8226a3818f
[ie/abematv] Support login for playlists (#8901)
Authored by: sefidel
4 months ago
sefidel c51316f8a6
[ie/abematv] Fix extraction with cache (#8895)
Closes #6532
Authored by: sefidel
4 months ago
sepro a281beba8d
[ie/naver] Fix extractors (#8883)
Closes #8850, Closes #8692
Authored by: seproDev
4 months ago
DmitryScaletta ba6b0c8261
[ie/chzzk] Add extractors (#8887)
Closes #8804
Authored by: DmitryScaletta
4 months ago
Karavellas 6171b050d7
[ie/ElementorEmbed] Add extractor (#8948)
Authored by: pompos02, seproDev

Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com>
4 months ago
Giulio Muscarello aa5dcc4ee6
[ie/IlPost] Add extractor (#9001)
Authored by: CapacitorSet
4 months ago
Philipp Waldhauer 5e2e24b2c5
[ie/MagentaMusik] Add extractor (#7790)
Authored by: pwaldhauer, seproDev

Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com>
4 months ago
gmes78 fee2d8d9c3
[ie/Rule34Video] Extract more metadata (#7416)
Closes #7233
Authored by: gmes78
4 months ago
Akmal cf9af2c7f1
[ie/Facebook] Add new ID format (#3824)
Closes #3496
Authored by: Wikidepia, kclauhk

Co-authored-by: kclauhk <78251477+kclauhk@users.noreply.github.com>
4 months ago
HobbyistDev cf6413e840
[ie/BiliIntl] Fix and improve subtitles extraction (#7077)
Closes #7075, Closes #6664
Authored by: HobbyistDev, itachi-19, dirkf, seproDev

Co-authored-by: itachi-19 <16500619+itachi-19@users.noreply.github.com>
Co-authored-by: dirkf <fieldhouse@gmx.net>
Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com>
4 months ago
jazz1611 5498729c59
[ie/GoogleDrive] Fix source file extraction (#8990)
Closes #8976
Authored by: jazz1611
4 months ago
Nicolas Appriou 393b487a4e
[ie/ArteTV] Separate closed captions (#8231)
Authored by: Nicals, seproDev

Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com>
4 months ago
Bibhav48 4d9dc0abe2
[ie/cloudflarestream] Extract subtitles (#9007)
Closes #8830
Authored by: Bibhav48
4 months ago
Andrew Gibson 014cb5774d
[ie/aenetworks] Rating should be optional for AP extraction (#9005)
Authored by: agibson-fl
4 months ago
Finn R. Gärtner 8e6e365172
[ie/Piapro] Improve `_VALID_URL` (#8999)
Authored by: FinnRG
4 months ago
Max 95e82347b3
[ie/Viously] Add extractor (#8927)
Replaces Turbo extractor

Authored by: nbr23, seproDev

Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com>
4 months ago
DmitryScaletta 5b8c69ae04
[ie/twitch] Fix m3u8 extraction (#8960)
Closes #8958
Authored by: DmitryScaletta
4 months ago
garret 5af1f19787
[ie/NhkRadiruLive] Make metadata extraction non-fatal (#8956)
Authored by: garret1317
4 months ago
Simon Sawicki b6951271ac
[ie/ard:mediathek] Revert to using old id (#8916)
Authored by: Grub4K
4 months ago
Simon Sawicki ffbd4f2a02
[utils] `traverse_obj`: Support `xml.etree.ElementTree.Element` (#8911)
Authored by: Grub4K
4 months ago
mara004 292d60b1ed
[cleanup] Fix typo in README.md (#8894)
Authored by: antonkesy
4 months ago
Ralph Drake 85b33f5c16
[cookies] Fix `--cookies-from-browser` with macOS Firefox profiles (#8909)
Ref: https://support.mozilla.org/en-US/kb/profile-manager-create-remove-switch-firefox-profiles#firefox:mac

Closes #8898
Authored by: RalphORama
5 months ago
DmitryScaletta 85a2d07c1f
[ie/Bigo] Fix JSON extraction (#8893)
Closes #8852
Authored by: DmitryScaletta
5 months ago
github-actions[bot] 9f40cd2896 Release 2023.12.30
Created by: bashonly

:ci skip all :ci run dl
5 months ago
bashonly f10589e345
[docs] Update youtube-dl merge commit in `README.md`
Authored by: bashonly
5 months ago
Simon Sawicki f9fb3ce86e
[cleanup] Misc (#8598)
Authored by: bashonly, pukkandan, seproDev, Grub4K

Co-authored-by: bashonly <bashonly@protonmail.com>
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com>
5 months ago
sepro 5f009a094f
[ie/ARD] Overhaul extractors (#8878)
Closes #8731, Closes #6784, Closes #2366, Closes #2975, Closes #8760
Authored by: seproDev
5 months ago
Simon Sawicki 225cf2b830
Fix 2d1d683a54
Authored by: Grub4K
5 months ago
Simon Sawicki 2d1d683a54
[devscripts] `run_tests`: Create Python script (#8720)
Authored by: Grub4K
5 months ago
Simon Sawicki 65de7d204c
Update to ytdl-commit-be008e6 (#8836)
- [utils] Make restricted filenames ignore some Unicode categories (by dirkf)
- [ie/telewebion] Fix extraction (by Grub4K)
- [ie/imgur] Overhaul extractor (by bashonly, Grub4K)
- [ie/EpidemicSound] Add extractor (by Grub4K)

Authored by: bashonly, dirkf, Grub4K

Co-authored-by: bashonly <bashonly@protonmail.com>
5 months ago
kclauhk c39358a54b
[ie/Facebook] Fix Memories extraction (#8681)
- Support group /posts/ URLs
- Raise a proper error message if no formats are found

Closes #8669
Authored by: kclauhk
5 months ago
Lars Strojny 1f8bd8eba8
[ie/ARDBetaMediathek] Fix series extraction (#8687)
Closes #7666
Authored by: lstrojny
5 months ago
Simon Sawicki 00cdda4f6f
[core] Fix format selection parse error for CPython 3.12 (#8797)
Authored by: Grub4K
5 months ago
bashonly 116c268438
[ie/twitter] Work around API rate-limit (#8825)
Closes #8762
Authored by: bashonly
5 months ago
bashonly e7d22348e7
[ie/twitter] Prioritize m3u8 formats (#8826)
Closes #8117
Authored by: bashonly
5 months ago
bashonly 50eaea9fd7
[ie/instagram] Fix stories extraction (#8843)
Closes #8290
Authored by: bashonly
5 months ago
bashonly f45c4efcd9
[ie/litv] Fix premium content extraction (#8842)
Closes #8654
Authored by: bashonly
5 months ago
Simon Sawicki 13b3cb3c2b
[ci] Run core tests only for core changes (#8841)
Authored by: Grub4K
5 months ago
Nicolas Dato 0d531c35ec
[ie/RudoVideo] Add extractor (#8664)
Authored by: nicodato
5 months ago
barsnick bc4ab17b38
[cleanup] Fix spelling of `IE_NAME` (#8810)
Authored by: barsnick
5 months ago
bashonly 632b8ee54e
[core] Release workflow and Updater cleanup (#8640)
- Only use trusted publishing with PyPI and remove support for PyPI tokens from release workflow
- Clean up improper actions syntax in the build workflow inputs
- Refactor Updater to allow for consistent unit testing with `UPDATE_SOURCES`

Authored by: bashonly
5 months ago
barsnick c919b68f7e
[ie/bbc] Extract more formats (#8321)
Closes #4902
Authored by: barsnick, dirkf
5 months ago
bashonly 19741ab8a4
[ie/bbc] Fix JSON parsing bug
Authored by: bashonly
5 months ago
bashonly 37755a037e
[test:networking] Update tests for OpenSSL 3.2 (#8814)
Authored by: bashonly
5 months ago
coletdjnz 196eb0fe77
[networking] Strip whitespace around header values (#8802)
Fixes https://github.com/yt-dlp/yt-dlp/issues/8729
Authored by: coletdjnz
5 months ago
Mozi db8b4edc7d
[ie/JoqrAg] Add extractor (#8384)
Authored by: pzhlkj6612
5 months ago
bashonly 1c54a98e19
[ie/twitter] Extract stale tweets (#8724)
Closes #8691
Authored by: bashonly
5 months ago
Simon Sawicki 00a3e47bf5
[ie/bundestag] Add extractor (#8783)
Authored by: Grub4K
5 months ago
Amir Y. Perehodnik c5f01bf7d4
[ie/Maariv] Add extractor (#8331)
Authored by: amir16yp
5 months ago
Tristan Charpentier c91af948e4
[ie/RinseFM] Add extractor (#8778)
Authored by: hashFactory
5 months ago
Pandey Ganesha 6b5d93b0b0
[ie/youtube] Fix `like_count` extraction (#8763)
Closes #8759
Authored by: Ganesh910
5 months ago
pukkandan 298230e550
[webvtt] Fix 15f22b4880 5 months ago
Mozi d5d1517e7d
[ie/eplus] Add login support and DRM detection (#8661)
Authored by: pzhlkj6612
5 months ago
trainman261 7e09c147fd
[ie/theplatform] Extract more metadata (#8635)
Authored by: trainman261
5 months ago
Benjamin Krausse e370f9ec36
[ie] Add `media_type` field
Authored by: trainman261
5 months ago
SirElderling b1a1ec1540
[ie/bitchute] Fix and improve metadata extraction (#8507)
Closes #8492
Authored by: SirElderling
5 months ago
Simon Sawicki 0b6f829b1d
[utils] `traverse_obj`: Move `is_user_input` into output template (#8673)
Authored by: Grub4K
5 months ago
Simon Sawicki f98a3305eb
[ie/pr0gramm] Support variant formats and subtitles (#8674)
Authored by: Grub4K
5 months ago
sepro 04a5e06350
[ie/ondemandkorea] Fix upgraded format extraction (#8677)
Closes #8675
Authored by: seproDev
5 months ago
Nicolas Cisco b03c89309e
[ie/mediastream] Fix authenticated format extraction (#8657)
Authored by: NickCis
5 months ago
Pierrick Guillaume 71f28097fe
[ie/francetv] Improve metadata extraction (#8409)
Authored by: Fymyte
5 months ago
pukkandan 044886c220
[ie/youtube] Return empty playlist when channel/tab has no videos
Closes #8634
6 months ago
pukkandan 993edd3f6e
[outtmpl] Support multiplication
Related: #8683
6 months ago
OIRNOIR 6a9c7a2b52
[ie/youtube] Support cf.piped.video (#8514)
Authored by: OIRNOIR
Closes #8457
6 months ago
pukkandan a174c453ee
Let `read_stdin` obey `--quiet`
Closes #8668
6 months ago
TSRBerry 15f22b4880
[webvtt] Allow spaces before newlines for CueBlock (#7681)
Closes #7453

Ref: https://www.w3.org/TR/webvtt1/#webvtt-cue-block
6 months ago
sepro 9751a457cf
[cleanup] Remove dead extractors (#8604)
Closes #1609, Closes #3232, Closes #4763, Closes #6026, Closes #6322, Closes #7912
Authored by: seproDev
6 months ago
bashonly 5a230233d6
[ie/box] Fix formats extraction (#8649)
Closes #5098
Authored by: bashonly
6 months ago
bashonly 4903f452b6
[ie/bfmtv] Fix extractors (#8651)
Closes #8425
Authored by: bashonly
6 months ago
bashonly ff2fde1b8f
[ie/TwitCastingUser] Fix extraction (#8650)
Closes #8653
Authored by: bashonly
6 months ago
bashonly deeb13eae8
[pp/FFmpegMetadata] Embed stream metadata in single format downloads (#8647)
Closes #8568
Authored by: bashonly
6 months ago
bashonly bb5a54e6db
[ie/youtube] Improve detection of faulty HLS formats (#8646)
Closes #7747
Authored by: bashonly
6 months ago
sepro 628fa244bb
[ie/floatplane] Add extractors (#8639)
Closes #5877, Closes #5912
Authored by: seproDev
6 months ago
kclauhk 9cafb9ff17
[ie/facebook] Improve subtitles extraction (#8296)
Authored by: kclauhk
6 months ago
sepro 1732eccc0a
[core] Parse `release_year` from `release_date` (#8524)
Closes #7263
Authored by: seproDev
6 months ago
pk a0b19d319a
[core] Support `NO_COLOR` environment variable (#8385)
Authored by: prettykool, Grub4K
6 months ago
middlingphys cc07f5cc85
[ie/abematv] Fix season metadata (#8607)
Authored by: middlingphys
6 months ago
coletdjnz ccfd70f4c2
[rh:websockets] Migrate websockets to networking framework (#7720)
* Adds a basic WebSocket framework
* Introduces new minimum `websockets` version of 12.0
* Deprecates `WebSocketsWrapper`

Fixes https://github.com/yt-dlp/yt-dlp/issues/8439

Authored by: coletdjnz
6 months ago
sepro 45d82be65f
[ie/nebula] Overhaul extractors (#8566)
Closes #4300, Closes #5814, Closes #7588, Closes #6334, Closes #6538
Authored by: elyse0, pukkandan, seproDev

Co-authored-by: Elyse <26639800+elyse0@users.noreply.github.com>
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
6 months ago
Safouane Aarab 3237f8ba29
[ie/allstar] Add extractors (#8274)
Closes #6917
Authored by: S-Aarab
6 months ago
Kyraminol Endyeran 1725e943b0
[ie/vvvvid] Set user-agent to fix extraction (#8615)
Authored by: Kyraminol
6 months ago
c-basalt 9f09bdcfcb
[ie/bilibili] Support courses and interactive videos (#8343)
Closes #6135, Closes #8428
Authored by: c-basalt
6 months ago
Simon Sawicki f124fa4588
[ci] Concurrency optimizations (#8614)
Authored by: Grub4K
6 months ago
JC-Chung 585d0ed9ab
[ie/twitcasting] Detect livestreams via API and `show` page (#8601)
Authored by: JC-Chung, bashonly
6 months ago
SirElderling 1fa3f24d4b
[ie/theguardian] Add extractors (#8535)
Closes #8520
Authored by: SirElderling
6 months ago
sepro ddb2d7588b
[ie] Extract from `media` elements in SMIL manifests (#8504)
Authored by: seproDev
6 months ago
qbnu f223b1b078
[ie/vocaroo] Do not use deprecated `getheader` (#8606)
Authored by: qbnu
6 months ago
Berkay 6fe82491ed
[ie/twitter:broadcast] Extract `concurrent_view_count` (#8600)
Authored by: sonmezberkay
6 months ago
sepro 34df1c1f60
[ie/vidly] Add extractor (#8612)
Authored by: seproDev
6 months ago
Simon Sawicki 1d24da6c89
[ie/nintendo] Fix Nintendo Direct extraction (#8609)
Authored by: Grub4K
6 months ago
Elan Ruusamäe 66a0127d45
[ie/duoplay] Add extractor (#8542)
Authored by: glensc
6 months ago
Raphaël Droz 3f90813f06
[ie/altcensored] Add extractor (#8291)
Authored by: drzraf
6 months ago
Ha Tien Loi 64de1a4c25
[ie/zingmp3] Add support for radio and podcasts (#7189)
Authored by: hatienl0i261299
6 months ago
sepro f96ab86cd8
[ie/drtv] Set default ext for m3u8 formats (#8590)
Closes #8589
Authored by: seproDev
6 months ago
bashonly f4b95acafc
Remove Python 3.7 support (#8361)
Closes #7803
Authored by: bashonly
6 months ago
github-actions[bot] fe6c82ccff Release 2023.11.16
Created by: bashonly

:ci skip all :ci run dl
6 months ago
bashonly 24f827875c
[build] Make `secretstorage` an optional dependency (#8585)
Authored by: bashonly
6 months ago
bashonly 15cb3528cb
[ie/abc.net.au:iview:showseries] Fix extraction (#8586)
Closes #8554, Closes #8572
Authored by: bashonly
6 months ago
JC-Chung 2325d03aa7
[ie/twitcasting] Fix livestream detection (#8574)
Authored by: JC-Chung
6 months ago
aarubui e569c2d1f4
[ie/njpwworld] Remove (#8570)
Authored by: aarubui
6 months ago
TravisDupes a489f07150
[ie/dailymotion] Improve `_VALID_URL` (#7692)
Closes #7601
Authored by: TravisDupes
6 months ago
Boris Nagaev 5efe68b73c
[ie/ZenYandex] Fix extraction (#8454)
Closes #8275
Authored by: starius
6 months ago
Awal Garg b530118e7f
[ie/JioSaavn] Add extractors (#8307)
Authored by: awalgarg
6 months ago
Eze Livinsky dcfad52812
[ie/eltrecetv] Add extractor (#8216)
Authored by: elivinsky
6 months ago
almx 0783fd558e
[ie/DRTV] Fix extractor (#8484)
Closes #8298
Authored by: almx, seproDev

Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com>
6 months ago
FrankZ85 0f634dba3a
[ie/tv5mondeplus] Extract subtitles (#4209)
Closes #4205
Authored by: FrankZ85
6 months ago
sepro 21dc069bea
[ie/beatbump] Update `_VALID_URL` (#8576)
Authored by: seproDev
6 months ago
github-actions 5d3a3cd493 Release 2023.11.14
Created by: Grub4K

:ci skip all :ci run dl
6 months ago
bashonly a9d3f4b20a
[cleanup] Fix changelog typo
Authored by: bashonly
6 months ago
Simon Sawicki b012271d01
[cleanup] Misc (#8510)
Authored by: bashonly, coletdjnz, dirkf, gamer191, seproDev, Grub4K
6 months ago
bashonly f04b5bedad
[ie] Do not smuggle `http_headers`
See: https://github.com/yt-dlp/yt-dlp/security/advisories/GHSA-3ch3-jhc6-5r8x

Authored by: coletdjnz
6 months ago
bashonly d4f14a72dc
[ie] Do not test truth value of `xml.etree.ElementTree.Element` (#8582)
Testing the truthiness of an `xml.etree.ElementTree.Element` instance is deprecated in py3.12

Authored by: bashonly
6 months ago
bashonly 87264d4fda
[test:update] Implement simple updater unit tests
Authored by: bashonly
6 months ago
bashonly a00af29853
[cleanup] Update documentation for master and nightly channels
Authored by: bashonly, Grub4K

Co-authored-by: Simon Sawicki <contact@grub4k.xyz>
6 months ago
bashonly 0b6ad22e6a
[update] Overhaul self-updater
Authored by: bashonly, Grub4K

Co-authored-by: Simon Sawicki <contact@grub4k.xyz>
6 months ago
bashonly 5438593a35
[ci] Bump `actions/checkout` to v4
Authored by: bashonly
6 months ago
bashonly 9970d74c83
[build] Include secretstorage in Linux builds
Authored by: bashonly
6 months ago
bashonly 20314dd46f
[core] Include build origin in verbose output
Authored by: bashonly, Grub4K

Co-authored-by: Simon Sawicki <contact@grub4k.xyz>
6 months ago
bashonly 1d03633c5a
[build] Overhaul and unify release workflow
Authored by: bashonly, Grub4K

Co-authored-by: Simon Sawicki <contact@grub4k.xyz>
6 months ago
Frank Aurich 8afd9468b0
[ie/n-tv.de] Fix extractor (#8414)
Closes #3179
Authored by: 1100101
6 months ago
SirElderling ef12dbdcd3
[ie/radiocomercial] Add extractors (#8508)
Authored by: SirElderling
6 months ago
LoserFox 46acc418a5
[ie/neteasemusic] Improve metadata extraction (#8531)
Closes #8530
Authored by: LoserFox
6 months ago
Esokrates 6ba3085616
[ie/orf:podcast] Add extractor (#8486)
Closes #5265
Authored by: Esokrates
6 months ago
bashonly f6e97090d2
[ie/twitter:broadcast] Support `--wait-for-video` (#8475)
Closes #8473
Authored by: bashonly
6 months ago
bashonly 2863fcf2b6
[ie/theatercomplextown] Add extractors (#8560)
Closes #8491
Authored by: bashonly
6 months ago
bashonly c76c96677f
[ie/thisoldhouse] Add login support (#8561)
Closes #8257
Authored by: bashonly
6 months ago
c-basalt 15b252dfd2
[ie/weibo] Fix extraction (#8463)
Closes #8445
Authored by: c-basalt
6 months ago
Aniol Pagès 312a2d1e8b
[ie/LaXarxaMes] Add extractor (#8412)
Authored by: aniolpages
6 months ago
garret 54579be436
[ie/nhk] Improve metadata extraction (#8388)
Authored by: garret1317
6 months ago
sepro 05adfd883a
[ie/ondemandkorea] Overhaul extractor (#8386)
Closes #8374
Authored by: seproDev
6 months ago
Martin Pecka 3ff494f6f4
[ie/NovaEmbed] Improve `_VALID_URL` (#8368)
Authored by: peci1
6 months ago
Mozi 9b5bedf13a
[ie/brilliantpala] Fix cookies support (#8352)
Authored by: pzhlkj6612
6 months ago
bashonly cb480e390d
[ie/thisav] Remove (#8346)
Authored by: bashonly
6 months ago
sepro 25a4bd345a
[ie/sbs.co.kr] Add extractors (#8326)
Authored by: seproDev
6 months ago
Tom 3906de0755
[ie/zoom] Extract combined view formats (#7847)
Authored by: Mipsters
6 months ago
HitomaruKonpaku 7d337ca977
[ie/twitter:broadcast] Improve metadata extraction (#8383)
Authored by: HitomaruKonpaku
6 months ago
bashonly 10025b715e
[core] Add `--compat-option manifest-filesize-approx` (#8356)
Closes #7623
Authored by: bashonly
6 months ago
bashonly 595ea4a99b
[core] Fix format sorting with `--load-info-json` (#8521)
Closes #7971
Authored by: bashonly
6 months ago
bashonly 2622c804d1
[fd/dash] Force native downloader for `--live-from-start` (#8339)
Closes #8212
Authored by: bashonly
6 months ago
bashonly fd8fcf8f4f
Revert 39abae2354
The iOS client is not subject to integrity checks and is likely to be a more stable choice going forward

Authored by: bashonly
6 months ago
CrendKing 21b25281c5
[fd/aria2c] Remove duplicate `--file-allocation=none` (#8332)
Authored by: CrendKing
6 months ago
sepro 4a601c9eff
[ie/weverse] Fix login error handling (#8458)
Authored by: seproDev
7 months ago
Shubham 464327acdb
[ie/polskieradio:audition] Fix playlist extraction (#8459)
Closes #8419
Authored by: shubhexists
7 months ago
bashonly ef79d20dc9
[ie/youtube] Check newly uploaded iOS HLS formats (#8336)
Closes #7747
Authored by: bashonly
7 months ago
bashonly 39abae2354
[ie/youtube] Deprioritize iOS client formats (#8337)
Authored by: bashonly
7 months ago
bashonly 4ce2f29a50
[ie/generic] Improve direct video link ext detection (#8340)
Closes #8265
Authored by: bashonly
7 months ago
bashonly 177f0d963e
[ie/QDance] Update `_VALID_URL` (#8426)
Authored by: bashonly
7 months ago
Bart Broere 8e02a4dcc8
[ie/npo] Send `POST` request to streams API endpoint (#8413)
Closes #6398
Authored by: bartbroere
7 months ago
saintliao 7b8b1cf5eb
[ie/twitcasting] Fix livestream extraction (#8427)
Closes #8431
Authored by: JC-Chung, saintliao

Co-authored-by: JC-Chung <52159296+JC-Chung@users.noreply.github.com>
7 months ago
bashonly a40e0b37df
[core] Only ensure playlist thumbnail dir if writing thumbs (#8373)
Bugfix for 2acd1d555e

Closes #8372
Authored by: bashonly
7 months ago
Simon Sawicki 4e38e2ae9d
[rh:requests] Handle both `bytes` and `int` for `IncompleteRead.partial` (Fix 8a8b54523a) (#8348)
Authored by: bashonly, coletdjnz, Grub4K
7 months ago
coletdjnz 8a8b54523a
[rh:requests] Add handler for `requests` HTTP library (#3668)
Adds support for HTTPS proxies and persistent connections (keep-alive)

Closes https://github.com/yt-dlp/yt-dlp/issues/1890
Resolves https://github.com/yt-dlp/yt-dlp/issues/4070
Resolves https://github.com/ytdl-org/youtube-dl/issues/32549
Resolves https://github.com/ytdl-org/youtube-dl/issues/14523
Resolves https://github.com/ytdl-org/youtube-dl/issues/13734

Authored by: coletdjnz, Grub4K, bashonly
7 months ago
bashonly 700444c23d
[ci] Run core tests with dependencies
Authored by: bashonly, coletdjnz
7 months ago
github-actions b73c409318 Release 2023.10.13
Created by: bashonly

:ci skip all :ci run dl
7 months ago
bashonly b634ba742d
[cleanup] Misc (#8338)
Authored by: bashonly, gamer191
7 months ago
Riteo 2acd1d555e
[core] Ensure thumbnail output directory exists (#7985)
Closes #8203
Authored by: Riteo
7 months ago
sepro b286ec68f1
[ie/jtbc] Add extractors (#8314)
Authored by: seproDev
7 months ago
sepro e030b6b6fb
[ie/mbn] Add extractor (#8312)
Authored by: seproDev
7 months ago
bashonly b931664231
[ie/radiko] Fix bug with `downloader_options`
Closes #8333
Authored by: bashonly
7 months ago
Simon Sawicki feebf6d02f
[ie/youtube] Fix bug with `--extractor-retries inf` (#8328)
Authored by: Grub4K
7 months ago
bashonly 84e26038d4
[utils] `write_xattr`: Use `os.setxattr` if available (#8205)
Closes #8193
Authored by: bashonly, Grub4K

Co-authored-by: Simon Sawicki <contact@grub4k.xyz>
7 months ago
garret 4de94b9e16
[ie/nhk] Fix Japanese-language VOD extraction (#8309)
Closes #8303
Authored by: garret1317
7 months ago
Midnight Veil 88a99c87b6
[ie/tenplay] Add support for seasons (#7939)
Closes #7744
Authored by: midnightveil
7 months ago
Stefan Lobbenmeier 09f815ad52
[ie/ArteTV] Support age-restricted content (#8301)
Closes #7782
Authored by: StefanLobbenmeier
7 months ago
naginatana b7098d46b5
[ie/youku] Improve tudou.com support (#8160)
Authored by: naginatana
7 months ago
Simon Sawicki 1c51c520f7
[fd/fragment] Improve progress calculation (#8241)
This uses the download speed from all threads and also adds smoothing to speed and eta

Authored by: Grub4K
7 months ago
Awal Garg 9d7ded6419
[utils] `js_to_json`: Fix `Date` constructor parsing (#8295)
Authored by: awalgarg, Grub4K
7 months ago
github-actions 4392c4680c Release 2023.10.07
Created by: Grub4K

:ci skip all :ci run dl
8 months ago
Simon Sawicki 377e85a179
[cleanup] Misc (#8300)
* Simplify nuxt regex
* Fix tmz quotes and tests
* Update test python versions

Authored by: dirkf, gamer191, Grub4K
8 months ago
bashonly 03e85ea99d
[ie/youtube] Fix `heatmap` extraction (#8299)
Closes #8189
Authored by: bashonly
8 months ago
Aleri Kaisattera 792f1e64f6
[ie/theta] Remove extractors (#8251)
Authored by: alerikaisattera
8 months ago
trainman261 19c90e405b
[cleanup] Update extractor tests (#7718)
Authored by: trainman261
8 months ago
garret e831c80e8b
[ie/nhk] Fix VOD extraction (#8249)
Closes #8242
Authored by: garret1317
8 months ago
Raphaël Droz 0e722f2f3c
[ie/lbry] Extract `uploader_id` (#8244)
Closes #123
Authored by: drzraf
8 months ago
Esme 47c598783c
[ie/erocast] Add extractor (#8264)
Closes #4001
Authored by: madewokherd
8 months ago
AS6939 35d9cbaf96
[ie/iq.com] Fix extraction and subtitles (#8260)
Closes #7734, Closes #8123
Authored by: AS6939
8 months ago
garret 2ad3873f0d
[ie/radiko] Improve extraction (#8221)
Authored by: garret1317
8 months ago
Umar Getagazov 2f2dda3a7e
[ie/substack] Fix download cookies bug (#8219)
Authored by: handlerug
8 months ago
Umar Getagazov fbcc299bd8
[ie/substack] Fix embed extraction (#8218)
Authored by: handlerug
8 months ago
Raphaël Droz 48cceec1dd
[ie/lbry] Add playlist support (#8213)
Closes #5982, Closes #8204
Authored by: drzraf, bashonly, Grub4K
8 months ago
xofe a9efb4b8d7
[ie/abc.net.au:iview] Improve `episode` extraction (#8201)
Authored by: xofe
8 months ago
c-basalt f980df734c
[ie/neteasemusic] Fix extractors (#8181)
Closes #4388
Authored by: c-basalt
8 months ago
gillux 91a670a4f7
[ie/LiTV] Fix extractor (#7785)
Closes #5456
Authored by: jiru
8 months ago
bashonly b095fd3fa9
[ie/WrestleUniverseVOD] Call API with device ID (#8272)
Closes #8271
Authored by: bashonly
8 months ago
bashonly 0730d5a966
[ie/gofile] Fix token cookie bug
Authored by: bashonly
8 months ago
Simon Sawicki cc8d844152
[ie/xhamster:user] Support creator urls (#8232)
Authored by: Grub4K
8 months ago
coletdjnz eb5bdbfa70
[ie/youtube] Raise a warning for `Incomplete Data` instead of an error (#8238)
Closes https://github.com/yt-dlp/yt-dlp/issues/8206

Adds `raise_incomplete_data` extractor arg to revert this behaviour and raise an error.

Authored by: coletdjnz
Co-authored-by: Simon Sawicki <contact@grub4k.xyz>
8 months ago
github-actions c54ddfba0f Release 2023.09.24
Created by: Grub4K

:ci skip all :ci run dl
8 months ago
Simon Sawicki 088add9567
[cleanup] Misc
Authored by: Grub4K
8 months ago
Simon Sawicki de015e9307
[core] Prevent RCE when using `--exec` with `%q` (CVE-2023-40581)
The shell escape function is now using `""` instead of `\"`. `utils.Popen` has been patched to properly quote commands.

Prior to this fix using `--exec` together with `%q` when on Windows could cause remote code to execute. See https://github.com/yt-dlp/yt-dlp/security/advisories/GHSA-42h4-v29r-42qg for reference.

Authored by: Grub4K
8 months ago
Simon Sawicki 61bdf15fc7
[core] Raise minimum recommended Python version to 3.8 (#8183)
Authored by: Grub4K
8 months ago
bashonly 1eaca74bc2
[ie/nfl.com:plus:replay] Fix extractor (#7838)
Closes #7836
Authored by: bashonly
8 months ago
Mozi 92feb5654c
[ie/brilliantpala] Add extractors (#6680)
Authored by: pzhlkj6612
8 months ago
Mozi 698beb9a49
[ie/niconicochannelplus] Add extractors (#5686)
Closes #2537
Authored by: pzhlkj6612
8 months ago
garret 15591940ff
[ie/cineverse] Add extractors (#8146)
Also removes AsianCrushIE and AsianCrushPlaylistIE (URLs do not work anymore & old IDs are unavailable).

Closes #8109
Authored by: garret1317
8 months ago
Mozi 6636021206
[ie/PIAULIZAPortal] Add extractor (#7903)
Authored by: pzhlkj6612
8 months ago
garret eaee21bf71
[ie/Monstercat] Add extractor (#8133)
Closes #8067
Authored by: garret1317
8 months ago
bashonly 5ca095cbcd
[cleanup] Misc (#8182)
Closes #7796, Closes #8028
Authored by: barsnick, sqrtNOT, gamer191, coletdjnz, Grub4K, bashonly
8 months ago
bashonly c2da0b5ea2
[ie/ArteTV] Fix HLS formats extraction
Closes #8156
Authored by: bashonly
8 months ago
Atsushi Watanabe c1d71d0d9f
[ie/twitcasting] Support `--wait-for-video` (#7975)
Authored by: at-wat
8 months ago
bashonly 661c9a1d02
[test:download] Test for `expected_exception`
Authored by: at-wat

Co-authored-by: Atsushi Watanabe <atsushi.w@ieee.org>
8 months ago
std-move 568f080518
[ie/iprima] Fix extractor (#7216)
Closes #7229
Authored by: std-move
8 months ago
bashonly 904a19ee93
[ie] Make `_search_nuxt_data` more lenient
Authored by: std-move

Co-authored-by: std-move <26625259+std-move@users.noreply.github.com>
8 months ago
bashonly 52414d64ca
[utils] `js_to_json`: Handle `Array` objects
Authored by: Grub4K, std-move

Co-authored-by: std-move <26625259+std-move@users.noreply.github.com>
Co-authored-by: Simon Sawicki <accounts@grub4k.xyz>
8 months ago
std-move 2269065ad6
[ie/NovaEmbed] Fix extractor (#7910)
Closes #8025
Authored by: std-move
8 months ago
kylegustavo a5e264d74b
[ie/Expressen] Improve `_VALID_URL` (#8153)
Closes #8141
Authored by: kylegustavo
8 months ago
ClosedPort22 b84fda7388
[ie/bilibili] Extract Dolby audio formats (#8142)
Closes #4050
Authored by: ClosedPort22
8 months ago
Simon 5fccabac27
[ie/rbgtum] Fix extraction and support new URL format (#7690)
Authored by: simon300000
8 months ago
c-basalt 21f40e75df
[ie/douyutv] Fix extractors (#7652)
Closes #2494, Closes #7295
Authored by: c-basalt
8 months ago
Elyse b3febedbeb
[ie/Canal1,CaracolTvPlay] Add extractors (#7151)
Closes #5826
Authored by: elyse0
8 months ago
Mozi 295fbb3ae3
[ie/eplus:inbound] Add extractor (#5782)
Authored by: pzhlkj6612
8 months ago
bashonly 35f9a306e6
[dependencies] Handle deprecation of `sqlite3.version` (#8167)
Closes #8152
Authored by: bashonly
8 months ago
coletdjnz 9d6254069c
Update to ytdl-commit-66ab08 (#8128)
[utils] Revert bbd3e7e, updating docstring, test instead
 66ab0814c4

Authored by: coletdjnz
8 months ago
Simon Sawicki b532556d0a
[ie/pr0gramm] Rewrite extractor (#8151)
Authored by: Grub4K
8 months ago
Rohan Dey cf11b40ac4
[ie/media.ccc.de:lists] Fix extraction (#8144)
Closes #8138
Authored by: Rohxn16
8 months ago
niemands 40999467f7
[ie/pornbox] Add extractor (#7386)
Authored by: niemands
8 months ago
u-spec-png 8ac5b6d96a
[ie/N1Info:article] Fix extractor (#7373)
Authored by: u-spec-png
8 months ago
c-basalt 69b03f84f8
[ie/weibo] Fix extractor and support user extraction (#7657)
Closes #3964, Closes #4673, Closes #6979
Authored by: c-basalt
8 months ago
c-basalt 9e68747f96
[ie/bilibili] Add support for series, favorites and watch later (#7518)
Closes #6719
Authored by: c-basalt
8 months ago
Elyse ba8e9eb2c8
[ie/radiofrance] Add support for livestreams, podcasts, playlists (#7006)
Closes #4282
Authored by: elyse0
8 months ago
coletdjnz 20fbbd9249
[networking] Fix various socks proxy bugs (#8065)
- Fixed support for IPv6 socks proxies
- Fixed support for IPv6 over socks5
- Fixed --source-address not being obeyed for socks4 and socks5
- Fixed socks4a when the destination address is an IPv4 address

Closes https://github.com/yt-dlp/yt-dlp/issues/7959
Fixes https://github.com/ytdl-org/youtube-dl/issues/15368

Authored by: coletdjnz
Co-authored-by: Simon Sawicki <accounts@grub4k.xyz>
Co-authored-by: bashonly <bashonly@bashonly.com>
8 months ago
Sebastian Koch 81f46ac573
[ie/massengeschmack.tv] Fix title extraction (#7813)
Authored by: sb0stn
8 months ago
aky-01 63e0c5748c
[ie/IndavideoEmbed] Fix extraction (#8129)
Closes #7190
Authored by: aky-01
8 months ago
Simon efa2339502
[ie/lecturio] Improve `_VALID_URL` (#7649)
Authored by: simon300000
8 months ago
soundchaser128 58493923e9
[ie/rule34video] Extract tags (#7117)
Authored by: soundchaser128
8 months ago
Simon Sawicki 30ba233d4c
[devscripts] `make_changelog`: Fix changelog grouping and add networking group (#8124)
Authored by: Grub4K
8 months ago
Simon Sawicki 836e06d246
[core] Fix support for upcoming Python 3.12 (#8130)
This also adds the following test runners:
- `3.12-dev` on `ubuntu-latest`
- `3.12-dev` on `windows-latest`
- `pypy-3.10` on `ubuntu-latest`

Authored by: Grub4K
8 months ago
bashonly 94389b225d
[ie/RTVSLO] Fix format extraction (#8131)
Closes #8020
Authored by: bashonly
8 months ago
bashonly 9652bca1bd
[ie/web.archive:vlive] Remove extractor (#8132)
Closes #8122
Authored by: bashonly
8 months ago
bashonly 538d37671a
[ie/AmazonMiniTV] Fix extractors
Closes #7817
Authored by: GautamMKGarg, bashonly

Co-authored by: GautamMKGarg <GautamMKgarg@gmail.com>
8 months ago
bashonly 2da7bcca16
Revert 9d376c4dae
Authored by: bashonly
8 months ago
garret eda0e415d2
[ie/bbc] Extract tracklist as chapters (#7788)
Authored by: garret1317
8 months ago
bashonly 20c3c9b433
[ie/reddit] Extract subtitles
Closes #7814
Authored by: bashonly
8 months ago
bashonly 635ae31f68
[ie/mediastream] Make embed extraction non-fatal
Authored by: bashonly
8 months ago
bashonly 5367585219
[ie/generic] Fix KVS thumbnail extraction
Closes #8045
Authored by: bashonly
8 months ago
fireattack 308936619c
[ie/facebook] Improve format sorting (#8074)
Authored by: fireattack
8 months ago
c-basalt 5be7e97886
[ie/sohu] Fix extractor (#7628)
Closes #1667, Closes #7463
Authored by: c-basalt, bashonly
8 months ago
barsnick b4c1c408c6
[ie/Bild.de] Extract HLS formats (#8032)
Closes #7951
Authored by: barsnick
8 months ago
Tristan Lee 23d829a342
[ie/Rumble] Fix embed extraction (#8035)
Authored by: trislee
8 months ago
04-pasha-04 0ce1f48bf1
[ie/funker530] Fix extraction (#8040)
Authored by: 04-pasha-04
8 months ago
Mozi ecef42c3ad
[ie/zaiko] Improve thumbnail extraction (#8054)
Authored by: pzhlkj6612
8 months ago
ApoorvShah111 a83da3717d
[ie/nitter] Fix title extraction fallback (#8102)
Closes #7575
Authored by: ApoorvShah111
8 months ago
Aniruddh Joshi 9d376c4dae
[ie/AmazonMiniTV] Fix extractor (#8103)
Closes #7817
Authored by: Aniruddh-J
8 months ago
c-basalt 5336bf57a7
[ie/bilibili] Extract `format_id` (#7555)
Authored by: c-basalt
8 months ago
makeworld 9bf14be775
[ie/cbc] Ignore any 426 from API (#7689)
Closes #7477
Authored by: makew0rld
8 months ago
c-basalt cebbd33b1c
[ie/twitcasting] Improve `_VALID_URL` (#8120)
Closes #7597
Authored by: c-basalt
8 months ago
bashonly 069cbece9d
[ie/tiktok] Fix webpage extraction
Closes #8089
Authored by: bashonly
8 months ago
Simon Sawicki f659e64394
[ie/bpb] Overhaul extractor (#8119)
Authored by: Grub4K
8 months ago
Jérôme Duval 7d3d658f4c
[ie/TV5MondePlus] Fix extractor (#7952)
Closes #4978
Authored by: korli, dirkf
8 months ago
hatsomatt 98eac0e6ba
[ie/videa] Fix extraction (#8003)
Closes #7427
Authored by: hatsomatt, aky-01

Co-authored-by: aky-01 <65510015+aky-01@users.noreply.github.com>
8 months ago
zhallgato 6e07e4bc7e
[ie/mediaklikk] Fix extractor (#8086)
Fixes https://github.com/yt-dlp/yt-dlp/issues/8053

Authored by: bashonly, zhallgato
8 months ago
barsnick aee6b9b88c
[ie/Axs] Add extractor (#8094)
Authored by: barsnick
8 months ago
Kshitiz Gupta 578a82e497
[ie/banbye] Support video ids containing a hyphen (#8059)
Fixes https://github.com/yt-dlp/yt-dlp/issues/7895

Authored by: kshitiz305
8 months ago
SevenLives 497bbbbd73
[ie/abematv] Fix proxy handling (#8046)
Fixes https://github.com/yt-dlp/yt-dlp/issues/8036

Authored by: SevenLives
8 months ago
garret 7b71643cc9
[ie/mixcloud] Update API URL (#8114)
Closes #8104
Authored by: garret1317
8 months ago
bashonly 66cc64ff66
[ie/zoom] Extract duration
Closes #8080
Authored by: bashonly
8 months ago
bashonly a006ce2b27
[ie/twitter] Fix retweet extraction and syndication API (#8016)
Authored by: bashonly
8 months ago
Szaby Grünwald 5d0395498d
[ie/wdr] Fix extraction (#7979)
Closes #7461
Authored by: szabyg
8 months ago
ifan-t fe371dcf0b
[ie/S4C] Add series support and extract subs/thumbs (#7776)
Authored by: ifan-t
8 months ago
ringus1 d3d81cc98f
[ie/facebook] Fix webpage extraction (#7890)
Closes #7901
Authored by: ringus1
9 months ago
bashonly 99c99c7185
[ie/gofile] Update token
Closes #7235
Authored by: bashonly
9 months ago
bashonly c6ef553792
[ie/twitter:spaces] Pass referer header to downloader
Closes #8029
Authored by: bashonly
9 months ago
bashonly 69dbfe01c4
Bugfix for bae4834245
Authored by: bashonly
9 months ago
Mattias Wadman 2301b5c1b7
[ie/SVTPlay] Fix extraction (#7789)
Closes #5595
Authored by: wader, dirkf
9 months ago
Simon Sawicki 77bff23ee9
Bugfix for 59e92b1f18
Closes #8012

Authored by: Grub4K
9 months ago
Rajeshwaran 7237c8dca0
[ie/hotstar] Extract `release_year` (#7869)
Authored by: Rajeshwaran2001
9 months ago
bashonly 30ea88591b
[ie/hotstar] Make metadata extraction non-fatal
Authored by: bashonly
9 months ago
Grabien 630a55df8d
[ie/Mediaite] Fix extraction (#7923)
Authored by: Grabien
9 months ago
RedDeffender bae4834245
[ie/NoodleMagazine] Fix extraction (#7830)
Closes #7917
Authored by: RedDeffender
9 months ago
bashonly 099fb1b35c
Bugfix for b9f2bc2dbe
Authored by: bashonly
9 months ago
Omar Atef 4b3a6ef1b3
[ie/hungama] Overhaul extractors (#7757)
Closes #7754
Authored by: Yalab7, bashonly
9 months ago
Stavros Ntentos 665876034c
[ie/antenna] Support antenna.gr (#7584)
Authored by: stdedos
9 months ago
Nathan Touzé b9f2bc2dbe
[ie/Dropbox] Fix extractor (#7926)
Closes #7005, Closes #7696
Authored by: nathantouze, bashonly, denhotte
9 months ago
sepro c2d8ee0000
[ie/weverse] Support extraction without auth (#7924)
Authored by: seproDev
9 months ago
bashonly 56b3dc0335
[ie/StagePlus] Fix m3u8 extraction (#7929)
Closes #7928
Authored by: bashonly
9 months ago
bashonly d7aee8e310
[ie/Mzaalo] Improve `_VALID_URL`
Authored by: bashonly
9 months ago
Simon Sawicki 59e92b1f18
[rh/urllib] Simplify gzip decoding (#7611)
Authored by: Grub4K
9 months ago
Simon Sawicki 1be0a96a4d
[docs] Update collaborators
Authored by: Grub4K
9 months ago
coletdjnz fcd6a76adc
[tests] Add tests for socks proxies (#7908)
Authored by: coletdjnz
9 months ago
Davin Kevin 7cccab79e7
[ie/wat.tv] Fix extraction (#7898)
Closes #7303
Authored by: davinkevin
9 months ago
trainman261 ed71189781
[ie/CBCPlayerPlaylist] Add extractor (#7870)
Authored by: trainman261
9 months ago
bashonly a0de8bb860
[ie/zee5] Update access token endpoint (#7914)
Closes #7911
Authored by: bashonly
9 months ago
garret 876b70c8ed
[ie/tbsjp] Add episode, program, playlist extractors (#7765)
Authored by: garret1317
9 months ago
trainman261 339c339fec
[ie/CBCPlayer] Extract HLS formats and subtitles (#7484)
Authored by: trainman261
9 months ago
bashonly dab87ca236
[cookies] Containers JSON should be opened as utf-8 (#7800)
Closes #7797
Authored by: bashonly
9 months ago
coletdjnz 378ae9f9fb
[ie/youtube] Fix consent cookie (#7774)
Fixes #7594

Authored by: coletdjnz
9 months ago
coletdjnz db7b054a61
[networking] Add request handler preference framework (#7603)
Preference functions that take a request and a request handler instance can be registered to prioritize different request handlers per request.

Authored by: coletdjnz
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
10 months ago
Franklin Lee db97438940
[ie/PicartoVod] Fix extractor (#7727)
Closes #2926
Authored by: Frankgoji
10 months ago
ifan-t b9de629d78
[ie/S4C] Add extractor (#7730)
Authored by: ifan-t
10 months ago
ringus1 a854fbec56
[ie/facebook] Add dash manifest URL (#7743)
Fixes #7742
Authored by: ringus1
10 months ago
ischmidt20 30b29f3715
[ie/fox] Support foxsports.com (#7724)
Authored by: ischmidt20
10 months ago
Steve 6d6081dda1
[extractor/pbs] Add extractor `PBSKidsIE` (#7602)
Authored by: snixon
Fixes #2440
10 months ago
bashonly 6014355c61
[ie/twitter] Add fallback, improve error handling (#7621)
Closes #7579, Closes #7625
Authored by: bashonly
10 months ago
pukkandan f73c118035
`FFmpegFixupM3u8PP` may need to run with ffmpeg
Bug in 62b5c94cad
Closes #7725
10 months ago
coletdjnz 546b2c28a1
[ie/youtube] Fix `player_params` arg being converted to lowercase
Fix bug in ba06d77a31

Authored by: coletdjnz
10 months ago
pukkandan 6148833f5c
[cleanup] Misc 10 months ago
pukkandan 8cb7fc44db
Fix `--check-formats`
Bug in bc344cd456
10 months ago
pukkandan 3f7965105d
[utils] HTTPHeaderDict: Handle byte values 10 months ago
pukkandan de20687ee6
[test] Fix `test_load_certifi`
Closes #7688, #7675
10 months ago
bashonly b09bd0c196
[ie/tiktok] Fix audio-only format extraction (#7712)
Closes #6608
Authored by: bashonly
10 months ago
bashonly 127a224606
[ie/LBRY] Fix original format extraction (#7711)
Authored by: bashonly
10 months ago
bashonly 86eeb044c2
[ie/hotstar] Support `/clips/` URLs (#7710)
Closes #7699
Authored by: bashonly
10 months ago
bashonly 9a04113dfb
[ie/Reddit] Fix thumbnail extraction
Authored by: bashonly
10 months ago
coletdjnz ba06d77a31
[ie/youtube] Add `player_params` extractor arg (#7719)
Authored by: coletdjnz
10 months ago
coletdjnz 4bf912282a
[networking] Remove dot segments during URL normalization (#7662)
This implements RFC3986 5.2.4 remove_dot_segments during the URL normalization process.

Closes #3355, #6526

Authored by: coletdjnz
10 months ago
nnoboa a15fcd299e
[ie/Wimbledon] Add extractor (#7551)
Closes #7462
Authored by: nnoboa
10 months ago
Amirreza Aflakparast c03a58ec99
[ie/MotorTrendOnDemand] Update `_VALID_URL` (#7683)
Closes #7680
Authored by: AmirAflak
10 months ago
coletdjnz bbeacff7fc
[networking] Ignore invalid proxies in env (#7704)
Authored by: coletdjnz
10 months ago
bashonly dae349da97
[ie/WrestleUniversePPV] Fix HLS AES key extraction
Fix bug in ef8fb7f029

Closes #7708
Authored by: bashonly
10 months ago
coletdjnz 95abea9a03
[test] Fix `httplib_validation_errors` test for old Python versions (#7677)
Fixes https://github.com/yt-dlp/yt-dlp/issues/7674

Authored by: coletdjnz
10 months ago
bashonly 550e65410a
[ie] Extract subtitles from SMIL manifests (#7667)
Authored by: bashonly, pukkandan
10 months ago
bashonly 39837ae319
[ie/triller] Fix unlisted video extraction (#7670)
Authored by: bashonly
10 months ago
coletdjnz 86aea0d3a2
[networking] Add strict Request extension checking (#7604)
Authored by: coletdjnz
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
10 months ago
bashonly 11de6fec9c
[ie/PatreonCampaign] Fix extraction (#7664)
Authored by: bashonly
10 months ago
pukkandan a250b24733
[compat] Ensure submodules are imported correctly
Closes #7663
10 months ago
pukkandan 25b6e8f946
Fix e0c4db04dc for pypy 10 months ago
pukkandan e705738338
[ie/unsupported] List more sites with DRM
Closes #7323, #3072, #5740, #5767, #6125
10 months ago
pukkandan 62b5c94cad
[cleanup] Misc fixes
Closes #7528
10 months ago
pukkandan e0c4db04dc
[compat] Add `types.NoneType` 10 months ago
pukkandan 81b4712bca
[extractor] Fix `--load-pages` 10 months ago
pukkandan 994f7ef8e6
[ie/generic] Fix generic title for embeds
Closes #7067
10 months ago
pukkandan a264433c9f
[outtmpl] Fix replacement for `playlist_index` 10 months ago
pukkandan 9f66247289
[ie/abematv] Temporary fix for protocol handler
Closes #7622
10 months ago
bashonly e57eb98222
[fd/external] Fix ffmpeg input from stdin (#7655)
Bugfix for 1ceb657bdd

Authored by: bashonly
10 months ago
Simon Sawicki 9b16762f48
[ie/crunchyroll] Remove initial state extraction (#7632)
Authored by: Grub4K
10 months ago
bashonly 65cfa2b057
[ie/MuseAI] Add extractor (#7614)
Closes #7543
Authored by: bashonly
10 months ago
bashonly f4ea501551
[ie/MagellanTV] Add extractor (#7616)
Closes #7529
Authored by: bashonly
10 months ago
bashonly af86873218
[utils] Improve `parse_duration`
Authored by: bashonly
10 months ago
bashonly 75dc8e673b
[networking] Fix `--legacy-server-connect` (#7645)
Bugfix for 227bf1a33b

Authored by: bashonly
10 months ago
bashonly 71baa490eb
[networking] Fix POST requests with zero-length payloads (#7648)
Bugfix for 227bf1a33b

Authored by: bashonly
10 months ago
bashonly 613dbce177
[ie/twitter:spaces] Fix format protocol (#7550)
Closes #7536
Authored by: bashonly
10 months ago
Văn Anh bb5d84c9d2
[ie/facebook:reel] Fix extraction (#7564)
Closes #7469
Authored by: demon071, bashonly
10 months ago
zhong-yiyu 1d3d579c21
[ie/pornhub] Update access cookies for UK (#7591)
Closes #7590
Authored by: zhong-yiyu
10 months ago
bashonly 42ded0a429
[fd/external] Fixes to cookie handling
- Fix bug in `axel` Cookie header arg
- Pass cookies to `curl` as strings
- Write session cookies for `aria2c` and `wget`

Closes #7539
Authored by: bashonly
10 months ago
bashonly 6c5211cebe
[core] Fix HTTP headers and cookie handling
- Remove `Cookie` header from `http_headers` immediately after loading into cookiejar
- Restore compat for `--load-info-json` cookies
- Add more tests
- Fix improper passing of Cookie header by `MailRu` extractor

Closes #7558
Authored by: bashonly, pukkandan
10 months ago
Aaruni Kaushik 2b029ca0a9
[cleanup] Add color to `download-archive` message (#5138)
Authored by: aaruni96, Grub4K, pukkandan
Closes #4913
10 months ago
pukkandan 131d132da5
[build] Make sure deprecated modules are added 10 months ago
coletdjnz 3d2623a898
[compat, networking] Deprecate old functions (#2861)
Authored by: coletdjnz, pukkandan
10 months ago
coletdjnz 227bf1a33b
[networking] Rewrite architecture (#2861)
New networking interface consists of a `RequestDirector` that directs
each `Request` to appropriate `RequestHandler` and returns the
`Response` or raises `RequestError`. The handlers define adapters to
transform its internal Request/Response/Errors to our interfaces.

User-facing changes:
- Fix issues with per request proxies on redirects for urllib
- Support for `ALL_PROXY` environment variable for proxy setting
- Support for `socks5h` proxy
   - Closes https://github.com/yt-dlp/yt-dlp/issues/6325, https://github.com/ytdl-org/youtube-dl/issues/22618, https://github.com/ytdl-org/youtube-dl/pull/28093
- Raise error when using `https` proxy instead of silently converting it to `http`

Authored by: coletdjnz
10 months ago
pukkandan c365dba843
[networking] Add module (#2861)
No actual changes - code is only moved around
10 months ago
pukkandan 1b392f905d
[utils] Add temporary shim for logging
Related: #5680, #7517
10 months ago
coletdjnz 1ba6fe9db5
[ie/youtube:tab] Detect looping feeds (#6621)
Closes https://github.com/yt-dlp/yt-dlp/issues/5555

Note: the first page may still be repeated, however this is better than nothing.

Authored by: coletdjnz
10 months ago
Finn R. Gärtner 1bcb9fe871
[ie/piapro] Support `/content` URL (#7592)
Authored by: FinnRG
10 months ago
Neurognostic 8a4cd12c8f
[pp/EmbedThumbnail] Support `m4v` (#7583)
Authored by: Neurognostic
10 months ago
Aleri Kaisattera 2cfe221fbb
[ie/streamanity] Remove (#7571)
Service is dead
Authored by: alerikaisattera
10 months ago
Mahmoud Abdel-Fattah 2af4eeb772
[utils] `clean_podcast_url`: Handle more trackers (#7556)
Authored by: mabdelfattah, bashonly
Closes #7544
10 months ago
Zprokkel 325191d0c9
[ie/vrt] Update token signing key (#7519)
Authored by: Zprokkel
10 months ago
GD-Slime bdd0b75e3f
[ie/BiliBiliBangumi] Fix extractors (#7337)
- Overhaul BiliBiliBangumi extractor for the site's new API
- Add BiliBiliBangumiSeason extractor
- Refactor BiliBiliBangumiMedia extractor

Closes #6701, Closes #7400
Authored by: GD-Slime
11 months ago
bashonly 92315c0377
[extractor/twitter] Fix GraphQL and legacy API (#7516)
Authored by: bashonly
11 months ago
pukkandan b03fa78345
Revert 49296437a8 11 months ago
github-actions cc0619f62d Release 2023.07.06
Created by: pukkandan

:ci skip all :ci run dl
11 months ago
pukkandan b532a34810
[docs] Minor fixes
Closes #7515
11 months ago
Simon Sawicki 3121512228
[core] Change how `Cookie` headers are handled
Cookies are now saved and loaded under `cookies` key in the info dict
instead of `http_headers.Cookie`. Cookies passed in headers are
auto-scoped to the input URLs with a warning.

Ref: https://github.com/yt-dlp/yt-dlp/security/advisories/GHSA-v8mc-9377-rwjj

Authored by: Grub4K
11 months ago
coletdjnz f8b4bcc0a7
[core] Prevent `Cookie` leaks on HTTP redirect
Ref: https://github.com/yt-dlp/yt-dlp/security/advisories/GHSA-v8mc-9377-rwjj

Authored by: coletdjnz
11 months ago
bashonly 1ceb657bdd
[fd/external] Scope cookies
- ffmpeg: Calculate cookies from cookiejar and pass with `-cookies` arg instead of `-headers`
- aria2c, curl, wget: Write cookiejar to file and use external FD built-in cookiejar support
- httpie: Calculate cookies from cookiejar instead of `http_headers`
- axel: Calculate cookies from cookiejar and disable http redirection if cookies are passed
    - May break redirects, but axel simply don't have proper cookie support

Ref: https://github.com/yt-dlp/yt-dlp/security/advisories/GHSA-v8mc-9377-rwjj

Authored by: bashonly, coletdjnz
11 months ago
pukkandan ad8902f616
[ie/vidlii] Handle relative URLs
Closes #7480
11 months ago
pukkandan 94ed638a43
[ie/youtube] Avoid false DRM detection (#7396)
Some master manifests contain a mix of DRM and non-DRM formats
11 months ago
pukkandan bc344cd456
[core] Allow extractors to mark formats as potentially DRM (#7396)
This is useful for HLS where detecting whether the format is
actually DRM requires the child manifest to be downloaded.

Makes the error message when using `--test` inconsistent,
but doesn't really matter.
11 months ago
pukkandan 906c0bdcd8
[formats] Fix best fallback for storyboards
Partial fix for #7478
11 months ago
pukkandan 337734d4a8
[cleanup] Misc 11 months ago
pukkandan fa44802809
[devscripts/make_changelog] Skip reverted commits 11 months ago
pukkandan 47bcd43724
[outtmpl] Pad `playlist_index` etc even when with internal formatting
Closes #7501
11 months ago
pukkandan 662ef1e910
[downloader/http] Avoid infinite loop when no data is received
Closes #7504
11 months ago
Jorge 6355b5f1e1
[misc] Add CodeQL workflow (#7497) 11 months ago
coletdjnz 90db9a3c00
[extractor/youtube:stories] Remove (#7459)
YouTube killed them

https://web.archive.org/web/20230630153050/https://support.google.com/youtube/thread/217640760
11 months ago
bashonly 49296437a8
[extractor/twitter] Fix unauthenticated extraction (#7476)
Closes #7473
Authored by: bashonly
11 months ago
bashonly 1cffd621cb
[extractor/twitter:spaces] Fix extraction (#7512)
Closes #7455
Authored by: bashonly
11 months ago
RfadnjdExt 3b7f5300c5
[extractor/googledrive] Fix source format extraction (#7395)
Closes #7344
Authored by: RfadnjdExt
11 months ago
coletdjnz 4dc4d8473c
[extractor/youtube] Ignore incomplete data for comment threads by default (#7475)
For both `--ignore-errors` and `--ignore-errors only_download`. Pass `--no-ignore-errors` to not ignore.

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

Authored by: coletdjnz
11 months ago
c-basalt 8776349ef6
[extractor/vk] VKPlay, VKPlayLive: Add extractors (#7358)
Closes #7107
Authored by: c-basalt
11 months ago
urectanc af1fd12f67
[extractor/stacommu] Add extractors (#7432)
Authored by: urectanc
11 months ago
coletdjnz fcbc9ed760
[extractor/youtube:tab] Support shorts-only playlists (#7425)
Fixes https://github.com/yt-dlp/yt-dlp/issues/7424

Authored by: coletdjnz
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
11 months ago
bashonly a2be9781fb
[extractor/Douyin] Fix extraction from webpage
Closes #7431
Authored by: bashonly
11 months ago
Xiao Han 8f05fbae2a
[extractor/abc] Fix extraction (#7434)
Closes #6433
Authored by: meliber
11 months ago
Aman Salwan 5b4b92769a
[extractor/crunchyroll:music] Fix `_VALID_URL` (#7439)
Closes #7419
Authored by: AmanSal1, rdamas

Co-authored-by: Robert Damas <robert.damas@byom.de>
11 months ago
pukkandan 91302ed349
[utils] clean_podcast_url: Handle protocol in redirect URL
Closes #7430
11 months ago
pukkandan f393bbe724
[extractor/sbs] Python 3.7 compat
Closes #7410
11 months ago
pukkandan 8a8af356e3
[downloader/aria2c] Add `--no-conf`
Closes #7404
11 months ago
pukkandan d949c10c45
[extractor/youtube] Process `post_live` over 2 hours 11 months ago
bashonly ef8509c300
[extractor/kick] Fix `_VALID_URL`
Closes #7384
Authored by: bashonly
11 months ago
nnoboa 5e16cf92eb
[extractor/AdultSwim] Extract subtitles from m3u8 (#7421)
Authored by: nnoboa
Closes #6191
11 months ago
bashonly f0a1ff1181
[extractor/qdance] Add extractor (#7420)
Closes #7385
Authored by: bashonly
11 months ago
pukkandan 58786a10f2
[extractor/youtube] Add extractor-arg `formats`
Closes #7417
11 months ago
pukkandan e59e20744e
Bugfix for b4e0d75848 11 months ago
Simon 89bed01374
[extractor/youtube] Fix comments' `is_favorited` (#7390)
Authored by: bbilly1
Closes #7389
11 months ago
github-actions de4cf77ec1 Release 2023.06.22
Created by: pukkandan

:ci skip all :ci run dl
11 months ago
pukkandan 812cdfa06c
[cleanup] Misc 11 months ago
pukkandan cd810afe2a
[extractor/youtube] Improve nsig function name extraction 11 months ago
pukkandan b4e0d75848
Improve `--download-sections`
* Support negative time-ranges
* Add `*from-url` to obey time-ranges in URL

Closes #7248
11 months ago
Berkan Teber 71dc18fa29
[extractor/youtube] Improve description parsing performance (#7315)
* The parsing is skipped when not needed
* The regex is improved by simulating atomic groups with lookaheads

Authored by: pukkandan, berkanteber
11 months ago
bashonly 98cb1eda7a
[extractor/rheinmaintv] Add extractor (#7311)
Authored by: barthelmannk

Co-authored-by: barthelmannk <81305638+barthelmannk@users.noreply.github.com>
11 months ago
bashonly 774aa09dd6
[extractor/dplay] GlobalCyclingNetworkPlus: Add extractor (#7360)
* Allows `country` API param to be configured with `--xff`/`geo_bypass_country`

Closes #7324
Authored by: bashonly
11 months ago
rexlambert22 f2ff0f6f19
[extractor/motherless] Add gallery support, fix groups (#7211)
Authored by: rexlambert22
11 months ago
pukkandan 5fd8367496
[extractor] Support multiple `_VALID_URL`s (#5812)
Authored by: nixxo
11 months ago
pukkandan 0dff8e4d1e
Indicate `filesize` approximated from `tbr` better 11 months ago
pukkandan 1e75d97db2
[extractor/youtube] Add `ios` to default clients used
* IOS is affected neither by 403 or by nsig so helps mitigate them preemptively
* IOS also has higher bit-rate "premium" formats though they are not labeled as such
11 months ago
pukkandan 81ca451480
[extractor/youtube] Workaround 403 for android formats
Ref: https://github.com/TeamNewPipe/NewPipe/issues/9038#issuecomment-1289756816
11 months ago
pukkandan a4486bfc1d
Revert "[misc] Add automatic duplicate issue detection"
This reverts commit 15b2d3db1d.
11 months ago
Roland Hieber 3f756c8c40
[extractor/nebula] Fix extractor (#7156)
Closes #7017
Authored by: Lamieur, rohieb

Co-authored-by: Lam <github@Lam.pl>
11 months ago
bashonly 7f9c6a63b1
[cleanup] Misc
Authored by: bashonly
11 months ago
OverlordQ db22142f6f
[extractor/dropout] Fix season extraction (#7304)
Authored by: OverlordQ
11 months ago
pukkandan d7cd97e8d8
Fix bug in db3ad8a676
Closes #7367
11 months ago
github-actions d1b2156149 Release 2023.06.21
Created by: pukkandan

:ci skip all :ci run dl
11 months ago
pukkandan 42f2d40b47
Update to ytdl-commit-07af47
[YouTube] Improve fix for ae8ba2c
07af47960f
11 months ago
pukkandan 1619ab3e67
Bugfix for ebe1b4e34f 11 months ago
pukkandan 84078a8b38
[core] Fix `filepath` being copied to underlying format dict
Closes #6536
11 months ago
pukkandan ad54c9130e
[cleanup] Misc
Closes #6288, Closes #7197, Closes #7265, Closes #7353, Closes #5773
Authored by: mikf, freezboltz, pukkandan
11 months ago
Nicolai Dagestad db3ad8a676
Add option `--netrc-cmd` (#6682)
Authored by: NDagestad, pukkandan
Closes #1706
11 months ago
MMM af7585c824
[extractor/tagesschau] Fix single audio urls (#6626)
Authored by: flashdagger
11 months ago
pukkandan 02948a17d9
[update] Do not restart into versions without `--update-to` 11 months ago
pukkandan 424f3bf033
[downloader/fragment] Do not sleep between fragments
Closes #6599
11 months ago
pukkandan ebe1b4e34f
[outtmpl] Fix some minor bugs
Closes #7164
11 months ago
pukkandan a35af4306d
[utils] `strftime_or_none`: Handle negative timestamps
Closes #6706
Authored by pukkandan, dirkf
11 months ago
pukkandan 93b39cdbd9
Add `--compat-option playlist-match-filter`
Closes #6073
11 months ago
pukkandan 97afb093d4
[extractor/youtube] Ignore wrong fps of some formats 11 months ago
pukkandan 2e023649ea
[cookies] Revert compatibility breakage in b38d4c941d 11 months ago
pukkandan 51a07b0dca
[extractor/youtube] Prioritize premium formats
Closes #7283
11 months ago
pukkandan eedda5252c
[utils] `FormatSorter`: Improve `size` and `br`
Closes #1596

Previously, when some formats have accurate size and some approximate,
the ones with accurate size was always prioritized

For formats with known tbr and unknown vbr/abr, we were setting
(vbr=tbr, abr=0) for sorting to work. This is no longer needed.

Authored by pukkandan, u-spec-png
11 months ago
Mozi 5cc09c004b
[extractor/zaiko] ZaikoETicket: Add extractor (#7347)
Authored by: pzhlkj6612
11 months ago
Vladislav 6f69101dc9
[extractor/yappy] YappyProfile: Add extractor (#7346)
Authored by: 7vlad7
11 months ago
garret 81c8b9bdd9
[extractor/nhk] `NhkRadiruLive`: Add extractor (#7332)
Authored by: garret1317
11 months ago
pukkandan 01aba2519a
[jsinterp] Fix global object extraction
Closes #7327
11 months ago
pukkandan 13ff780953
[postprocessor] Print newline for `--progress-template`
Closes #7193
11 months ago
pukkandan ff9b0e071f
[extractor/youtube] Determine audio language using automatic captions 11 months ago
toomyzoom 0a5d7c39e1
[extractor/iwara] Fix authentication (#7137)
Closes #7035, Closes #7207
Authored by: toomyzoom
11 months ago
TxI5 125ffaa173
[extractor/tv4] Fix extractor (#5649)
Closes #5535
Authored by: TxI5, dirkf
11 months ago
foreignBlade f9213f8a2d
[extractor/stripchat] Fix extractor (#7306)
Closes #7305
Authored by: foreignBlade
11 months ago
Jeong, Heon fdd69db389
[extractor/afreecatv] Fix extractor (#6283)
Closes #6133
Authored by: blmarket
11 months ago
Elyse 83465fc410
[extractor/ettutv] Add extractor (#6579)
Closes #6359
Authored by: elyse0
11 months ago
RjY 6daaf21092
[extractor/discogs] Add extractor (#6624)
Authored by: rjy
11 months ago
hoaluvn 7bcd481321
[extractor/urplay] Extract all subtitles (#7309)
Authored by: hoaluvn
11 months ago
bashonly c8561c6d03
[extractor/wrestleuniverse] Fix cookies support
Closes #7298
Authored by: bashonly
11 months ago
Cyberes cab94a0cd8
[extractor/funker530] Add extractor (#7291)
Authored by: Cyberes
11 months ago
c-basalt 345b4c0aed
[extractor/zaiko] Add extractor (#7254)
Closes #7196
Authored by: c-basalt
11 months ago
linsui 8790ea7b25
[extractor/ximalaya] Sort playlist entries (#7292)
Authored by: linsui
11 months ago
puc9 ab6057ec80
[extractor/tiktok] Fix resolution extraction (#7237)
Authored by: puc9
11 months ago
bashonly 9d7fde89a4
[extractor/zee5] Fix extraction of new content (#7280)
Authored by: bashonly
11 months ago
bashonly 1a2eb5bda5
[extractor/odnoklassniki] Fix formats extraction (#7217)
Closes #2959, Closes #4462, Closes #7201
Authored by: bashonly
11 months ago
DataGhost f8ae441501
[extractor/Dumpert] Fix m3u8 and support new URL pattern (#6091)
Authored by: DataGhost, pukkandan
Closes #5032
11 months ago
bashonly b4a252fba8
[jsinterp] Fix division (#7279)
* Fixes nsig decryption for Youtube JS player `8c7583ff`

Authored by: bashonly
11 months ago
bashonly 4f7b11cc1c
[extractor/voot] Fix extractor (#7227)
Closes #6715
Authored by: bashonly
11 months ago
bashonly d1795f4a6a
[extractor/twitter] Add login support (#7258)
Closes #6951
Authored by: bashonly
12 months ago
bashonly 44c0d66442
[extractor/lbry] Extract original quality formats (#7257)
Closes #7251
Authored by: bashonly
12 months ago
coletdjnz 8213ce28a4
[extractor/youtube] Extract `channel_is_verified` (#7213)
Authored by: coletdjnz
12 months ago
pukkandan 14a14335b2
[extractor/youtube] Misc cleanup
Authored by: coletdjnz
12 months ago
stanoarn c2b801fea5
[extractor/rozhlas] `MujRozhlas`: Add extractor (#7129)
Authored by: stanoarn
12 months ago
bashonly 59d9fe0831
[extractor/mgtv] Fix formats extraction (#7234)
Closes #7008
Authored by: bashonly
12 months ago
bashonly ee0ed0338d
[extractor/zdf] Fix formats extraction
Closes #7238, Closes #7240
Authored by: bashonly
12 months ago
bashonly c2a1bdb009
[extractor/tiktok] Extract 1080p adaptive formats (#7228)
Closes #7109
Authored by: bashonly
12 months ago
bashonly 7f8ddebbb5
[extractor/hotstar] Support `/shows/` URLs (#7225)
Closes #6463
Authored by: bashonly
12 months ago
bashonly 7bc9251746
[extractor/shemaroome] Pass `stream_key` header to downloader (#7224)
Closes #7133
Authored by: bashonly
12 months ago
bashonly 4815d35c19
[extractor/sonyliv] Fix login with token (#7223)
Authored by: bashonly
12 months ago
bashonly 97d60ad8cd
[extractor/foxnews] Fix extractors (#7222)
Closes #6050
Authored by: bashonly
12 months ago
bashonly 5ee9a7d6e1
[extractor/sverigesradio] Support slug URLs (#7220)
Closes #7145
Authored by: bashonly
12 months ago
bashonly 971d901d12
[extractor/tencent] Fix fatal metadata extraction (#7219)
Closes #7177
Authored by: bashonly
12 months ago
bashonly 12037d8b0a
[extractor/substack] Fix extraction (#7218)
Closes #7155
Authored by: bashonly
12 months ago
Paul Wise c91ac833ea
[extractor/acast] Support embeds (#7212)
Authored by: pabs3
12 months ago
coletdjnz 2fb35f6004
[extractor/youtube] Support shorter relative time format (#7191)
See: https://github.com/TeamNewPipe/NewPipeExtractor/issues/1067

Authored by: coletdjnz
12 months ago
Jeroen Jacobs 1a7dcca378
[extractor/vrt] Overhaul extractors (#6244)
* Fixes `VrtNU` extractor to work with the VRT MAX site change
* Adapts `VRT`, `Ketnet` and `DagelijkseKost` extractors to the new VRT API
* Removes `Canvas` and `CanvasEen` extractors; the sites and API no longer exist
* Moves all remaining VRT-related extractors into the `vrt` module

Closes #4908
Authored by: jeroenj, bergoid, bashonly

Co-authored-by: bergoid <bergoid@users.noreply.github.com>
Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
12 months ago
Mohamed Al Mehairbi 55ed4ff734
[extractor/DigitalConcertHall] Support films (#7202)
Authored by: ItzMaxTV
Closes #7184
12 months ago
bashonly 01231feb14
[extractor/twitch] Update `_CLIENT_ID` and add extractor-arg (#7200)
Closes #7058, Closes #7183
Authored by: bashonly
12 months ago
Daniel Rich f41b949a2e
[extractor/nhk] Fix API extraction (#7180)
Closes #6992
Authored by: sjthespian, menschel

Co-authored-by: Patrick Menschel <menschel.p@posteo.de>
12 months ago
coletdjnz c35448b7b1
[extractor/youtube] Extract more metadata for comments (#7179)
Adds new comment fields:
* `author_url` - The url to the comment author's page
* `author_is_verified` - Whether the author is verified on the platform
* `is_pinned` - Whether the comment is pinned to the top of the comments

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

Authored by: coletdjnz
12 months ago
CeruleanSky 1c16d9df53
[extractor/twitter:spaces] Add `release_timestamp` (#7186)
Authored by: CeruleanSky
12 months ago
Mohamed Al Mehairbi ecfe47973f
[extractor/elevensports] Add extractor (#7172)
Closes #6737
Authored by: ItzMaxTV
12 months ago
coletdjnz 18f8fba7c8
[extractor/youtube] Fix continuation loop with no comments (#7148)
Deep check the response for incomplete data.

Authored by: coletdjnz
12 months ago
mrscrapy c2502cfed9
[extractor/recurbate] Add extractor (#6297)
Authored by: mrscrapy
12 months ago
bashonly 1fe5bf240e
[extractor/bravotv] Detect DRM (#7171)
Authored by: bashonly
12 months ago
Mohamed Al Mehairbi 26c517b29c
[extractor/crtvg] Add extractor (#7168)
Closes #6609
Authored by: ItzMaxTV
12 months ago
Elyse 6f10cdcf7e
[extractor/bilibili:SpaceVideo] Extract signature (#7149)
Authored by: elyse0
Closes #6956, closes #7081
12 months ago
HobbyistDev 03789976d3
[extractor/europarl] Rewrite extractor (#7114)
Authored by: HobbyistDev
Closes #6396
12 months ago
Mohamed Al Mehairbi dc3c44f349
[extractor/Mzaalo] Add extractor (#7163)
Authored by: ItzMaxTV
12 months ago
Ivan Skodje 937264419f
[extractor/tvplay] Remove outdated domains (#7106)
Closes #3920
Authored by: ivanskodje
12 months ago
Ivan Skodje 372a0f3b9d
Auto-select default format in `-f-` (#7101)
Authored by: ivanskodje, pukkandan
Closes #6720
12 months ago
garret 4cbfa570a1
[extractor/camfm] Add extractors (#7083)
Authored by: garret1317
12 months ago
HobbyistDev 45e87ea106
[extractor/eurosport] Improve `_VALID_URL` (#7076)
Closes #7042
Authored by: HobbyistDev
12 months ago
Florian Albrechtskirchinger dbce5afa6b
[extractor/twitch:vod] Support links from schedule tab (#7071)
Authored by: falbrechtskirchinger
12 months ago
Stefan Lobbenmeier f78eb41e1c
[extractor/ARDBetaMediathek] Add thumbnail (#6890)
Closes #6889
Authored by: StefanLobbenmeier
12 months ago
Matt Broadway b38d4c941d
[cookies] Update for chromium changes (#6897)
Authored by: mbway
12 months ago
hasezoey 489f51279d
[extractor/nekohacker] Add extractor (#7003)
Authored by: hasezoey
12 months ago
JChris246 2d306c03d6
[extractor/rottentomatoes] Fix extractor (#6844)
Closes #6729
Authored by: JChris246
12 months ago
bashonly f6e43d6fa9
[extractor/cbsnews] Overhaul extractors (#6681)
Closes #6565
Authored by: bashonly
12 months ago
bashonly fd5d93f704
Bugfix for b844a3f8b1
[extractor/weverse] Avoid unnecessary duplicate login

Authored by: bashonly
12 months ago
Lesmiscore f8f9250fe2
[extractor/niconico:live] Add extractor (#5764)
Authored by: Lesmiscore
12 months ago
Lesmiscore 3459d3c5af
[extractor/JStream] Add extractor (#6252)
Authored by: Lesmiscore
12 months ago
bashonly c25cac2f8e
[extractor/dacast] Add extractors (#6896)
Closes #6163
Authored by: bashonly
12 months ago
Nam Vu a58182b75a
[cookies] Support custom Safari cookies path (#6783)
Authored by: NextFire
12 months ago
jo-nike 4afb208cf0
[extractor/cbc] Ignore 426 from API (#6781)
Closes #6716
Authored by: jo-nike
12 months ago
ping 5c14b21367
[extractor/idolplus] Add extractor (#6732)
Authored by:  ping
Closes #6246
12 months ago
bepvte 02312c03cf
[extractor/twitch] Support mobile clips (#6699)
Authored by: bepvte
12 months ago
Stefan Borer 94627c5dde
[extractor/playsuisse] Support new url format (#6528)
Authored by: sbor23
12 months ago
Daniel Vogt c6d4b82a8b
[extractor/owncloud] Add extractor (#6533)
Authored by: C0D3D3V
12 months ago
Ha Tien Loi 17d7ca84ea
[extractor/zingmp3] Fix and improve extractors (#6367)
Authored by: hatienl0i261299
12 months ago
Mohit Tokas bfdf144c7e
[extractor/livestream] Support videos with account id (#6324)
Authored by: theperfectpunk
Closes #2225
12 months ago
nixxo c6d3f81a40
[extractor/rai] Rewrite extractors (#5940)
Authored by: nixxo, danog
Closes #5672, closes #6341

Co-authored-by: Daniil Gentili <daniil@daniil.it>
12 months ago
lauren n. liberda aed945e1b9
[extractor/wykop] Add extractors (#6140)
Authored by: selfisekai
12 months ago
JChris246 fc5a7f9b27
[extractor/daftsex] Update domain and embed player url (#5966)
Closes #5881
Authored by: JChris246
12 months ago
lauren n. liberda 738c90a463
[extractor/polskieradio] Improve extractors (#5948)
Authored by: selfisekai
12 months ago
coletdjnz 93e12ed76e
[extractor/youtube] Extract uploader metadata for feed/playlist items
Fixes https://github.com/yt-dlp/yt-dlp/issues/7104

Authored by: coletdjnz
12 months ago
Mohamed Al Mehairbi 6dc00acf0f
[extractor/weyyak] Add extractor (#7124)
Closes #7118
Authored by: ItzMaxTV
12 months ago
coletdjnz daafbf49b3
[core] Support decoding multiple content encodings (#7142)
Authored by: coletdjnz
12 months ago
coletdjnz 3f66b6fe50
[core] Workaround erroneous urllib Windows proxy parsing (#7092)
Convert proxies extracted from windows registry to http for older Python versions.
See: https://github.com/python/cpython/issues/86793

Authored by: coletdjnz
12 months ago
coletdjnz b87e01c123
[cookies] Move `YoutubeDLCookieJar` to cookies module (#7091)
Authored by: coletdjnz
12 months ago
coletdjnz 08916a49c7
[core] Improve HTTP redirect handling (#7094)
Aligns HTTP redirect handling with what browsers commonly do and RFC standards. 

Fixes issues afac4caa7d missed.

Authored by: coletdjnz
12 months ago
sqrtNOT 66468bbf49
[extractor/comedycentral] Add support for movies (#7108)
Closes #1926
Authored by: sqrtNOT
12 months ago
bashonly b844a3f8b1
[extractor/weverse] Add extractors (#6711)
Closes #4786
Authored by: bashonly
12 months ago
Audrey 5caf30dbc3
[extractor/youtube] Extract `heatmap` data (#7100)
Closes #3888
Authored by: tntmod54321
12 months ago
MMM 4ad58667c1
[extractor/bibeltv] Fix extraction, support live streams and series (#6505)
Authored by: flashdagger
12 months ago
Simon Sawicki edbe5b589d
Bugfixes for 4823ec9f46
Hotfix for fragmented downloads

Authored by: bashonly
12 months ago
Simon Sawicki 032de83ea9
[extractor/crunchyroll] Rework with support for movies, music and artists (#6237)
This adds `CrunchyrollMusicIE` and `CrunchyrollArtistIE` extractors using the new, reworked base class and expands the `CrunchyrollBetaIE` with support for movies and movie listings and more complete metadata extraction

Authored by: Grub4K
1 year ago
Simon Sawicki 8417f26b8a
[core] Implement `--color` flag (#6904)
Authored by: Grub4K
1 year ago
pukkandan 7aeda6cc9e
[jsinterp] Do not compile regex 1 year ago
pukkandan 15b2d3db1d
[misc] Add automatic duplicate issue detection 1 year ago
pukkandan 4823ec9f46
Update to ytdl-commit-d1c6c5
[YouTube] [core] Improve platform debug log, based on yt-dlp
d1c6c5c4d6

Except:
    * 6ed34338285f722d0da312ce0af3a15a077a3e2a [jsinterp] Add short-cut evaluation for common expression
        * There was no performance improvement when tested with https://github.com/ytdl-org/youtube-dl/issues/30641
    * e8de54bce50f6f77a4d7e8e80675f7003d5bf630 [core] Handle `/../` sequences in HTTP URLs
        * We plan to implement this differently
1 year ago
pukkandan 46f1370e9a
[devscripts/cli_to_api] Add script 1 year ago
kangalio 69a40e4a7f
[extractor/youtube:music:search_url] Extract title (#7102)
Authored by: kangalio
Closes #7095
1 year ago
coletdjnz 955c89584b
[core] Deprecate internal `Youtubedl-no-compression` header (#6876)
Authored by: coletdjnz
1 year ago
coletdjnz 69bec6730e
[cleanup, utils] Split into submodules (#7090)
Closes https://github.com/yt-dlp/yt-dlp/pull/2173

Authored by: pukkandan, coletdjnz
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
1 year ago
Simon Sawicki 23c39a4bea
[devscripts] `make_changelog`: Various improvements
- Make single items collapse into one line
- Don't hide "Important changes" in `<details>`
- Move upstream merge into priority
- Properly support comma separated prefixes

Authored by: Grub4K
1 year ago
bashonly b73193c99a
[build] Implement build verification using `--update-to`
Authored by: bashonly, Grub4K
1 year ago
bashonly c4efa0aefe
[build] Various build workflow improvements
- Wait for build before publishing to PyPI
- Do not run `meta_files` job if release is cancelled
- Customizable channel in release workflow
- Display badges above changelog

Authored by: bashonly, Grub4K
1 year ago
Simon Sawicki 44a79958f0
[build] Fix macOS target
Authored by: Grub4K
1 year ago
Simon Sawicki 665472a7de
[update] Implement `--update-to` repo
Authored by: Grub4K, pukkandan
1 year ago
Simon Sawicki d2e84d5eb0
[update] Better error handling
Authored by: pukkandan
1 year ago
coletdjnz 447afb9eaa
[extractor/youtube] Support podcasts and releases tabs
Closes https://github.com/yt-dlp/yt-dlp/issues/6893

Authored by: coletdjnz
1 year ago
pukkandan 6f2287cb18
[cleanup] Misc
Closes #7030, closes #6967
1 year ago
pukkandan 1d7656184c
[jsinterp] Handle `NaN` in bitwise operators
Closes #6131
1 year ago
pukkandan f7f7a877bf
[extractor/booyah] Remove extractor
Site shut down. Closes #6425
1 year ago
pukkandan c8bc203fbf
[docs] Misc improvements
Closes #6814, closes #6940, closes #6733, closes #6923, closes #6566, closes #6726, closes #6728
1 year ago
toomyzoom 21b9413cf7
[extractor/iwara] Implement login (#6721)
Authored by: toomyzoom
1 year ago
bashonly ef8fb7f029
[extractor/wrestleuniverse] Fix extraction, add login (#6982)
Closes #6975
Authored by: bashonly, Grub4K

Co-authored-by: Simon Sawicki <contact@grub4k.xyz>
1 year ago
ringus1 3b52a60688
[extractor/facebook] Fix metadata extraction (#6856)
Closes #3432
Authored by: ringus1
1 year ago
Lesmiscore c449c0655d
[extractor/abematv] Add fallback for title and description extraction and extract more metadata (#6994)
Authored by: Lesmiscore
1 year ago
lauren n. liberda 0c7ce146e4
[extractor/tvp] Use new API (#6989)
Authored by: selfisekai
Closes #6987
1 year ago
pukkandan ddae33754a
[extractor/youporn] Extract m3u8 formats
Closes #6977
1 year ago
Eveldee 45998b3e37
[utils] `locked_file`: Fix for virtiofs (#6840)
Authored by: brandon-dacrib
Closes #6823
1 year ago
bashonly 2f07c4c1da
[extractor/clipchamp] Add extractor (#6978)
Closes #6973
Authored by: bashonly
1 year ago
Nicholas Defranco b423b6a48e
[extractor/dlf] Add extractors (#6697)
Closes #6430
Authored by: nick-cd
1 year ago
bashonly 147e62fc58
[extractor/twitter] Default to GraphQL, handle auth errors (#6957)
Closes #6763
Authored by: bashonly
1 year ago
Simon Sawicki b079c26f0a
[utils] `traverse_obj`: More fixes (#6959)
- Fix result when branching with `traverse_string`
- Fix `slice` path on `dict`s
- Fix tests and docstrings from 21b5ec86c2
- Add `is_iterable_like` helper function

Authored by: Grub4K
1 year ago
bashonly 4d9280c9c8
[extractor/reddit] Add login support (#6950)
Closes #6949
Authored by: bashonly
1 year ago
pukkandan 17ba4343cf
Fix f005a35aa7
Printing inside `finally` causes the order of logging to change
when there is an error, which is undesirable. So this is reverted.

The issue of `--print` being blocked by pre-processors was an
unintentional side-effect of changing the operation orders in
170605840e, and this is also partially
reverted.
1 year ago
pukkandan f005a35aa7
Ensure pre-processor errors do not block `--print`
Closes #6937
1 year ago
makeworld 7a7b1376fb
[extractor/cbc] Fix live extractor, playlist `_VALID_URL` (#6625)
Authored by: makew0rld
1 year ago
pukkandan b5f61b69d4
Fix bug in 170605840e
and related refactor
1 year ago
pukkandan 7cf51f2191
[jsinterp] Handle negative numbers better
Closes #6131
1 year ago
pukkandan 170605840e
Populate `filename` and `urls` fields at all stages of `--print`
Closes https://github.com/yt-dlp/yt-dlp/issues/6920
1 year ago
garret 30647668a9
[extractor/globalplayer] Add extractors (#6903)
Authored by: garret1317
1 year ago
Alex Klapheke ed81b74802
[extractor/aeonco] Support Youtube embeds (#6591)
Authored by: alexklapheke
1 year ago
Noah 62beefa818
[extractor/pornhub] Set access cookies to fix extraction (#6685)
Closes #4299
Authored by: Schmoaaaaah, arobase-che

Co-authored-by: Noah <nkempers@outlook.de>
Co-authored-by: ache <ache@ache.one>
1 year ago
Neurognostic 0c4e0fbcad
[extractor/bitchute] Add more fallback subdomains (#6907)
Authored by: Neurognostic
1 year ago
sqrtNOT c86e433c35
[extractor/NiconicoSeries] Fix extraction (#6898)
Authored by: sqrtNOT
1 year ago
Elyse 9b30cd3dfc
[extractors/rtvc] Add extractors (#6578)
* Add `RTVCPlay` extractor
* Add `RTVCPlayEmbed` extractor
* Add `RTVCKaltura` extractor
* Add `SenalColombiaLive` extractor

Closes #6457
Authored by: elyse0
1 year ago
Simon Sawicki 21b5ec86c2
[utils] `traverse_obj`: Allow iterables in traversal (#6902)
Authored by: Grub4K
1 year ago
pukkandan c16644642b
Add option `--xff`
Deprecates `--geo-bypass`, `--no-geo-bypass, `--geo-bypass-country`, `--geo-bypass-ip-block`
1 year ago
pukkandan 04f8018a05
[extractor/hentaistigma] Remove extractor
Piracy site

Closes #6870
1 year ago
pukkandan d669772c65
Add `--no-quiet`
Closes #6796
1 year ago
pukkandan ec9311c41b
[outtmpl] Support `str.format` syntax inside replacements
Closes #6843
1 year ago
pukkandan 78fde6e339
[outtmpl] Allow `\n` in replacements and default.
Fixes: https://github.com/yt-dlp/yt-dlp/issues/6808#issuecomment-1510055357
Fixes: https://github.com/yt-dlp/yt-dlp/issues/6808#issuecomment-1510363645
1 year ago
JC-Chung 80b732b7a9
[extractor/twitch] Extract original size thumbnail (#6629)
Authored by: JC-Chung
1 year ago
truedread 1ea15603d8
[extractor/wevidi] Add extractor (#6868)
Closes #6129
Authored by: truedread
1 year ago
garret 8f0be90ecb
[extractor/nhk] Add `NhkRadiru` extractor (#6819)
* Add `NhkRadioNewsPage` extractor

Authored by: garret1317
1 year ago
vidiot720 6a765f135c
[extractor/sbs] Overhaul extractor for new API (#6839)
Closes #6543
Authored by: vidiot720, dirkf, bashonly
1 year ago
qbnu ab29e47029
[extractor/bilibili] Support festival videos (#6547)
Closes #6138
Authored by: qbnu
1 year ago
bashonly e5265dc651
[extractor/stageplus] Add extractor (#6838)
Closes #6806
Authored by: bashonly
1 year ago
zhgwn cbdf9408e6
[extractor/pornez] Support new URL formats (#6792)
Closes #6791, Closes #6298
Authored by: zhgwn
1 year ago
CoryTibbettsDev 2c566ed141
[extractor/whyp] Add extractor (#6803)
Authored by: CoryTibbettsDev
1 year ago
satan1st 9c92b803fa
[extractor/gronkh] Extract duration and chapters (#6817)
Authored by: satan1st
1 year ago
bashonly 7a6f6f2459
[extractor/reddit] Support cookies and short URLs (#6825)
Closes #6665, Closes #6753
Authored by: bashonly
1 year ago
bashonly ea05708203
[extractor/adobepass] Handle `Charter_Direct` MSO as `Spectrum` (#6824)
Authored by: bashonly
1 year ago
pukkandan 9874e82b5a
Do not translate newlines in `--print-to-file`
Fixes https://github.com/yt-dlp/yt-dlp/issues/6808#issuecomment-1509361107
1 year ago
pukkandan 84ffeb7d5e
[extractor] Do not warn for invalid chapter data in description
Fixes https://github.com/yt-dlp/yt-dlp/issues/6811#issuecomment-1509876209
1 year ago
coletdjnz 7666b93604
[extractor/youtube] Define strict uploader metadata mapping (#6384)
New mapping:
```
channel -> channel name
channel_id -> UCID
channel_url -> UCID channel url

uploader -> channel name (same as channel field)
uploader_id -> @handle
uploader_url -> @handle channel url 
```

Authored by: coletdjnz
1 year ago
bashonly 93e7c6995e
[extractor/generic] Attempt to detect live HLS (#6775)
* Extract duration for non-live generic HLS videos
* Add extractor-arg `is_live` to bypass live HLS check

Closes #6705
Authored by: bashonly
1 year ago
bashonly 3f7e2bd80e
[FFmpegFixupM3u8PP] Check audio codec before fixup (#6778)
Closes #6673
Authored by: bashonly
1 year ago
bashonly 925936908a
[extractor/tiktok] Fix and improve metadata extraction (#6777)
Authored by: bashonly
1 year ago
bashonly 90c1f51206
[extractor/zoom] Fix share URL extraction (#6789)
Authored by: bashonly
1 year ago
hasezoey 56793f74c3
[extractor/iwara] Fix format sorting (#6651)
Authored by: hasezoey
1 year ago
Lesmiscore d1483ec693 [extractor/iwara] Fix typo
Authored by: Lesmiscore

Closes #6795
1 year ago
MyNey 979568f26e
[extractor/BrainPOP] Add extractors (#6106)
Authored by: MinePlayersPE
Based on https://github.com/ytdl-org/youtube-dl/pull/10025
1 year ago
HobbyistDev b093c38cc9
[extractor/biliIntl] Add comment extraction (#6079)
Authored by: HobbyistDev
1 year ago
HobbyistDev 2d97d154fe
[extractor/gmanetwork] Add extractor (#5945)
Authored by: HobbyistDev
Partially fixes #5770
1 year ago
pukkandan c3f624ef0a
Relaxed validation for numeric format filters
Continued from f96bff99cb

Closes #6782
1 year ago
Lesmiscore 52ecc33e22
[extractor/niconico] Download comments from the new endpoint (#6773)
Authored by: Lesmiscore
1 year ago
pukkandan 26010b5cec
[postprocessor/FixupDuplicateMoov] Fix bug in triggering 1 year ago
pukkandan c6786ff3ba
[extractor/youtube] Revert default formats to `https` 1 year ago
Shreyas Minocha 79c77e85b7
[extractor/zoom] Fix extractor (#6741)
Authored by: shreyasminocha
Closes #6677
1 year ago
sian1468 faa0332ed6
[extractor/line] Remove extractors (#6734)
Service has shut down - https://archive.ph/txVKy
Authored by: sian1468
1 year ago
lauren n. liberda 7e35526d5b
[extractor/hrefli] Add extractor (#6762)
Authored by: selfisekai
1 year ago
Chris Caruso ef0848abd4
[extractor/youku] Improve error message (#6690)
Authored by: carusocr
Closes #6551
1 year ago
bashonly 0a6918a4a1
[extractor/kick] Make initial request non-fatal
Authored by: bashonly
1 year ago
coletdjnz 141a8dff98
[extractor/youtube] Fix comment loop detection for pinned comments (#6714)
Pinned comments may repeat a second time - this is expected.

Fixes https://github.com/yt-dlp/yt-dlp/issues/6712

Authored by: coletdjnz
1 year ago
Lesmiscore 68be95bd0c
[extractor/YahooGyaOIE,extactor/YahooGyaOPlayerIE] Delete extractors due to website close (#6218)
Authored by: Lesmiscore
1 year ago
Lesmiscore ab92d8651c
[extractor/iwara] Accept old URLs
Authored by: Lesmiscore

Closes #6669
1 year ago
Lesmiscore 0f0875ed55
[postprocessor/EmbedThumbnail,postprocessor/FFmpegMetadata] Fix error on attaching thumbnails and info json for mkv/mka (#6647)
Authored by: Lesmiscore

Current yt-dlp code never hit this bug, but would hit once filename sanitization gets better
1 year ago
Lesmiscore 95a383be1b
[extractor/iwara] Report private videos (#6641)
Authored by: Lesmiscore
1 year ago
bashonly 9be0fe1fd9
[extractor/nbc] Fix `NBCStations` direct mp4 formats (#6637)
Authored by: bashonly
1 year ago
bashonly 33b737bedf
[extractor/triller] Support short URLs, detect removed videos (#6636)
Authored by: bashonly
1 year ago
Simon Sawicki 0898c5c8cc
[utils] `js_to_json`: Implement template strings (#6623)
Authored by: Grub4K
1 year ago
pukkandan f68434cc74
[extractor] Extract more metadata from ISM
Fixes 81b6102d20 (r105892531)
1 year ago
pukkandan baa922b5c7
[extractor] Do not exit early for unsuitable `url_result` 1 year ago
bashonly 9bfe0d15bd
Fix 5cc0a8fd2e
Authored by: bashonly
1 year ago
bashonly 8ceb07e870
[extractor/tiktok] Fix mp3 formats (#6615)
Closes #6608
Authored by: bashonly
1 year ago
bashonly 6bdb64e2a2
[extractor/hollywoodreporter] Add extractors (#6614)
Closes #6525
Authored by: bashonly
1 year ago
bashonly 3ae182ad89
[extractor/pgatour] Add extractor (#6613)
Closes #6537
Authored by: bashonly
1 year ago
bashonly 5cc0a8fd2e
[extractor/generic] Accept values for `fragment_query`, `variant_query` (#6600)
Closes #6593
Authored by: bashonly
1 year ago
pukkandan 6994afc030
[extractor/rumble] Fix videos without quality selection
Closes #6612
1 year ago
pukkandan 78bc1868ff
[extractor/rumble] Detect timeline format
Closes #6607
1 year ago
bashonly 69b2f838d3
[extractor/telecaribe] Expand livestream support (#6601)
Closes #6598
Authored by: bashonly
1 year ago
bashonly 44369c9afa
[extractor/cbs] Add `ParamountPressExpress` extractor (#6604)
Closes #6597
Authored by: bashonly
1 year ago
bashonly c2e0fc40a7
[extractor/generic] Add extractor-args `hls_key`, `variant_query` (#6567)
Authored by: bashonly
1 year ago
bashonly 06966cb896
[extractor/bravotv] Fix extractor (#6568)
Closes #6562
Authored by: bashonly
1 year ago
bashonly e4cf7741f9
[extractor/rozhlas] Extract manifest formats (#6590)
Closes #6584
Authored by: bashonly
1 year ago
Lesmiscore c14af7a741
[extractor/iwara] Overhaul extractors (#6557)
Authored by: Lesmiscore
1 year ago
viktor-enzell 9a06b7b189
[extractor/drtv] Fix radio page extraction (#6552)
Authored by: viktor-enzell
1 year ago
bashonly 216bcb66d7
[extractor/tiktok] Improve `TikTokLive` extractor (#6520)
Closes #6459
Authored by: bashonly
1 year ago
bashonly 460da07439
[extractor/genius] Add support for articles (#6474)
Closes #6465
Authored by: bashonly
1 year ago
bashonly 03025b6e10
[extractor/mediastream] Improve `WinSports` and embed extraction (#6426)
Closes #6419, Closes #6527
Authored by: bashonly
1 year ago
Nicholas Defranco 071670cbea
[extractor/youtube] Fix parsing `comment_count` (#6523)
Closes #5849
Authored by: nick-cd
1 year ago
pukkandan 427a8fafbb
[build] Pin `pyinstaller` version for MacOS
Workaround for #6541
1 year ago
coletdjnz 607510b9f2
[extractor/youtube] Handle incomplete initial data from watch page (#6510)
Authored by: coletdjnz
1 year ago
pukkandan 98ac902c49
[dependencies/Cryptodome] Fix `__bool__`
Bug in 65f6e80780
1 year ago
unbeatable-101 cbfe2e5cbe
[extractor/nebula] Add `beta.nebula.tv` (#6516)
Authored by: unbeatable-101
1 year ago
Chris Caruso cf9fd52fab
[extractor/jwplatform] Update `_extract_embed_urls` (#6383)
Authored by: carusocr
1 year ago
JChris246 80ea6d3dea
[extractor/Parler] Rewrite extractor (#6446)
Authored by: JChris246
Closes #6068
1 year ago
Joshua Lochner 1e3c2b6ec2
[extractor/medaltv] Fix clips (#6502)
Closes #6489
Authored by: xenova
1 year ago
Ha Tien Loi 026435714c
[extractor/LastFM] Rewrite playlist extraction (#6379)
Authored by: hatienl0i261299, pukkandan
Closes #5975
1 year ago
Ha Tien Loi 0181b9a1b3
[extractor/thesun] Update `_VALID_URL` (#6522)
Authored by: hatienl0i261299
Closes #6479
1 year ago
pukkandan e389d172b6
Fix 2a23d92d9e
Closes #6517
1 year ago
pukkandan 2a23d92d9e
[extractor/youtube] Construct fragment list lazily
Building fragment list for all formats take significant time for large videos
1 year ago
pukkandan 86cb922118
[extractor/youtube] Add extractor-arg `include_duplicate_formats` 1 year ago
Lesmiscore c795c39f27
[extractor/youtube] Add client name to `format_note` when `-v` (#6254)
Authored by: Lesmiscore, pukkandan
1 year ago
vampirefrog 7a6c8a0807
[extractor/rokfin] Re-construct manifest url (#6507)
Authored by: vampirefrog
1 year ago
Daniel Vogt 89dbf08483
[extractor/opencast] Fix format bug (#6512)
Authored by: C0D3D3V
1 year ago
pukkandan e6ab678e36
[extractor/hidive] Fix login
Fixes https://github.com/yt-dlp/yt-dlp/issues/6493#issuecomment-1462906556
1 year ago
pukkandan ab1de9cb1e
Support loading info.json with a list at it's root 1 year ago
makeworld 871c907454
[extractor/cbc:gem] Update `_VALID_URL` (#6499)
Authored by: makeworld-the-better-one
Closes #6395
1 year ago
Elyse 0551511b45
[extractor/twitch] Fix `is_live` (#6500)
Closes #6494
Authored by: elyse0
1 year ago
pukkandan c9abebb851
[extractor/youtube] Bypass throttling for `-f17`
and related cleanup

Thanks @AudricV for the finding
1 year ago
pukkandan 66aeaac9aa
[downloader/curl] Fix progress reporting
Bug in 8c53322cda
Closes #6490
1 year ago
Daniel Vogt 3588be59ce
[extractor/opencast] Add ltitools to `_VALID_URL` (#6371)
Authored by: C0D3D3V
1 year ago
D0LLYNH0 2d5cae9636
[extractor/iq] Set more language codes (#6476)
Authored by: D0LLYNH0
1 year ago
Simon Sawicki 9b7a48abd1
[cookies] Defer extraction of v11 key from keyring
Closes #6082

Authored by: Grub4K
1 year ago
bashonly 01ddec7e66
[postprocessor] Fix chapters if duration is not extracted (#6037)
Authored by: bashonly
1 year ago
bashonly 6f4fc5660f
[extractor/chilloutzone] Fix extractor (#6445)
Closes #6029
Authored by: bashonly
1 year ago
Simon Sawicki 3b479100df
[utils] `write_string`: Fix noconsole behavior
Ref: https://github.com/pyinstaller/pyinstaller/pull/7217

Authored by: Grub4K
1 year ago
permunkle d4e6ef4077
[extractor/nubilesporn] Add extractor (#6231)
Authored by: permunkle
1 year ago
bashonly c459d45dd4
[extractor/teamcoco] Fix extractor (#6437)
Closes #6339
Authored by: bashonly
1 year ago
github-actions 8729e7b57c Release 2023.03.04
Created by: pukkandan

:ci skip all :ci run dl
1 year ago
pukkandan 392389b7df
[cleanup] Misc 1 year ago
Elyse eb8fd6d044
[extractor/lefigaro] Add extractors (#6309)
Authored by: elyse0
Closes #6197
1 year ago
Ferdinand Bachmann f44cb4e77b
[extractor/tubetugraz] Support `--twofactor` (#6424) (#6427)
Authored by: Ferdi265
Closes #6424
1 year ago
Elyse 46580ced56
[extractor/tunein] Fix extractors (#6310)
Authored by: elyse0
Closes #2973
1 year ago
Elyse b404712822
[extractor/telecaribe] Add extractor (#6311)
Authored by: elyse0
Closes #6001
1 year ago
Chris Caruso 1f8489cccb
[extractor/lumni] Add extractor (#6302)
Authored by: carusocr
Closes #6202
1 year ago
columndeeply ed4cc4ea79
[extractor/Prankcast] Fix tags (#6316)
Authored by: columndeeply
1 year ago
lauren n. liberda cf60522652
[extractor/twitter] Fix retweet extraction (#6422)
Authored by: selfisekai
1 year ago
pukkandan 45db357289
[extractor/SportDeutschland] Rewrite extractor
Note: `multi_video` live streams are untested

Closes #6417, closes #6418, closes #6420
1 year ago
LXYan2333 8a83baaf21
[extractor/bilibili] Fix for downloading wrong subtitles (#6358)
Closes #6357
Authored by: LXYan2333
1 year ago
pukkandan 7accdd9845
[devscripts] `make_changelog`: Stop at `Release ...` commit
Closes #6415
1 year ago
Yakabuff 283a0b5bc5
[xvideos:quickies] Add extractor (#6414)
Authored by: Yakabuff
Closes #6356
1 year ago
mushbite 22ccd5420b
[extractor/rutube] Extract chapters from description (#6345)
Authored by: mushbite
1 year ago
Simon Sawicki 08ff6d59f9
[build] Only archive if `vars.ARCHIVE_REPO` is set
Authored by: Grub4K
1 year ago
Elyse 4a6272c6d1
[extractor/twitch] Update for GraphQL API changes (#6318)
Authored by: elyse0
Closes #6308
1 year ago
Venkata Krishna S 640c934823
[extractor/ESPNcricinfo] Handle new URL pattern (#6321)
Authored by: venkata-krishnas
Closes #6164
1 year ago
bashonly 55676fe498
[build] Fix publishing to PyPI and homebrew
Closes #6411
Authored by: bashonly
1 year ago
github-actions 354d5fca7a Release 2023.03.03
Created by: Grub4K

:ci skip all :ci run dl
1 year ago
Simon Sawicki 9344964281
Fix d400e261cf
Authored by: Grub4K
1 year ago
pukkandan bfc861a91e
Fix bug in 29cb20bd56 1 year ago
pukkandan fe2ce85aff
Add option `--break-match-filters`
* Deprecates `--break-on-reject`

Closes #5962
1 year ago
pukkandan d21056f4cf
Fix `--break-on-existing` with `--lazy-playlist`
Closes #6399
1 year ago
pukkandan b2e0343ba0
[cleanup, jsinterp] Give functions names to help debugging 1 year ago
pukkandan 4815bbfc41
[cleanup] Misc 1 year ago
bashonly 776d1c3f0c
[build] Add `cffi` as a dependency for `yt_dlp_linux`
Closes #6394
Authored by: bashonly
1 year ago
Simon Sawicki 12647e03d4
[build] Sign SHA files and release public key
Closes #6344
Authored by: Grub4K
1 year ago
Simon Sawicki 77df20f14c
[update] Add option `--update-to`, including to nightly (#6220)
* By default, stable will only update to stable, and nightly to nightly

Authored by: Grub4K, bashonly, pukkandan

Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
1 year ago
Simon Sawicki 29cb20bd56
[build] Automated builds and nightly releases (#6220)
Closes #1839
Authored by: Grub4K, bashonly

Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
1 year ago
Simon Sawicki d400e261cf
[devscripts] Script to generate changelog (#6220)
Authored by: Grub4K
1 year ago
pukkandan 9acf1ee25f
[jsinterp] Handle `Date` at epoch 0
Closes #6400
1 year ago
bashonly 40d77d8902
[extractor/yle_areena] Extract non-Kaltura videos (#6402)
Closes #6066
Authored by: bashonly
1 year ago
bashonly 2d5a8c5db2
[extractor/mediastream] Improve WinSports support (#6401)
Closes #6360
Authored by: bashonly
1 year ago
bashonly 77d6d13646
[extractor/ntvru] Extract HLS and DASH formats (#6403)
Closes #5915
Authored by: bashonly
1 year ago
std-move 9fddc12ab0
[extractor/iprima] Fix extractor (#6291)
Authored by: std-move
Closes #6187
1 year ago
bashonly b38cae49e6
[extractor/generic] Detect manifest links via extension
Authored by: bashonly
1 year ago
coletdjnz 7f51861b18
[extractor/youtube] Detect and break on looping comments (#6301)
Fixes https://github.com/yt-dlp/yt-dlp/issues/6290

Authored by: coletdjnz
1 year ago
pukkandan 5b28cef72d
[cleanup] Misc 1 year ago
pukkandan 31e183557f
[extractor/youtube] Extract channel `view_count` when `/about` tab is passed 1 year ago
pukkandan f34804b2f9
[extractor/youtube] Fix 5038f6d713
* [fragment] Fix `request_data`
* [youtube] Don't use POST for now. It may be easier to break in future

Authored by: bashonly, coletdjnz
1 year ago
pukkandan 65f6e80780
[dependencies] Simplify `Cryptodome`
Closes #6292, closes #6272, closes #6338
1 year ago
pukkandan b059188383
[plugins] Don't look in `.egg` directories
Closes #6306
1 year ago
pukkandan 5038f6d713
[extractor/youtube] Construct dash formats with `range` query
Closes #6369
1 year ago
pukkandan 4d248e29d2
[extractor/GoogleDrive] Fix some audio
Only those with source url, but no confirmation page
1 year ago
pukkandan 8e9fe43cd3
[extractor/generic] Handle basic-auth when checking redirects
Closes #6352
1 year ago
pukkandan 43a3eaf963
[extractor] Fix DRM detection in m3u8
Fixes https://github.com/ytdl-org/youtube-dl/issues/31693#issuecomment-1445202857
1 year ago
pukkandan cc09083636
[utils] `LenientJSONDecoder`: Parse unclosed objects 1 year ago
Simon Sawicki da8e2912b1
[utils] `Popen`: Shim undocumented `text_mode` property
Fixes #6317

Authored by: Grub4K
1 year ago
Zhong Lufan 18d295c9e0
[extractor/tencent] Add more formats and info (#5950)
Authored by: Hill-98
1 year ago
pukkandan 17ca19ab60
[cleanup] Fix `Changelog` 1 year ago
github-actions 41bd0dc4d7 [version] update
Created by: pukkandan

:ci skip all :ci run dl
1 year ago
pukkandan a0a7c01542
Release 2023.02.17 1 year ago
pukkandan 45b2ee6f4f
Update to ytdl-commit-2dd6c6e
[YouTube] Avoid crash if uploader_id extraction fails
2dd6c6edd8

Except:
    * 295736c9cba714fb5de7d1c3dd31d86e50091cf8 [jsinterp] Improve parsing
    * 384f632e8a9b61e864a26678d85b2b39933b9bae [ITV] Overhaul ITV extractor
    * 33db85c571304bbd6863e3407ad8d08764c9e53b [feat]: Add support to external downloader aria2p
1 year ago
pukkandan a538772969
[cleanup] Misc
Closes #5897
1 year ago
HobbyistDev 30031be974
[extractor/tempo] Add IVXPlayer extractor (#5837)
Authored by: HobbyistDev
1 year ago
HobbyistDev 9acca71237
[extractor/boxcast] Add extractor (#5983)
Authored by: HobbyistDev
Closes #5769
1 year ago
Henrik Heimbuerger d50ea3ce5a
[extractor/nebula] Remove broken cookie support (#5979)
Authored by: hheimbuerger
Closes #4002
1 year ago
bashonly c61cf091a5
[extractor/youtube] `uploader_id` includes `@` with handle
Authored by: bashonly
1 year ago
Chris Caruso f737fb16d8
[ExtractAudio] Handle outtmpl without ext (#6005)
Authored by: carusocr
Closes #5968
1 year ago
Friedrich Rehren 5e1a54f63e
[extractor/SportDeutschland] Fix extractor (#6041)
Authored by: FriedrichRehren
Closes #3005
1 year ago
HobbyistDev 31c279a2a2
[extractor/hypergryph] Add extractor (#6094)
Authored by: HobbyistDev, bashonly
Closes #6052
1 year ago
HobbyistDev a4ad59ff2d
[extractor/anchorfm] Add episode extractor (#6092)
Authored by: HobbyistDev, bashonly
Closes #6081
1 year ago
Alex Ionescu b25d6cb963
[utils] Fix race condition in `make_dir` (#6089)
Authored by: aionescu
1 year ago
HobbyistDev 3616300155
[extractor/yappy] Add extractor (#6111)
Authored by: HobbyistDev
Closes #3522
1 year ago
qbnu e4a8b1769e
[extractor/vocaroo] Add extractor (#6117)
Authored by: qbnu, SuperSonicHub1
Closes #6152
1 year ago
JChris246 da880559a6
[extractor/ebay] Add extractor (#6170)
Closes #6134
Authored by: JChris246
1 year ago
Felix Yan 65e5c021e7
[utils] Don't use Content-length with encoding (#6176)
Authored by: felixonmars
Closes #3772, #6178
1 year ago
OIRNOIR a9189510ba
[extractor/nitter] Update instance list (#6236)
Authored by: OIRNOIR
1 year ago
HobbyistDev 10fd9e6ee8
[extractor/odkmedia] Add `OnDemandChinaEpisodeIE` (#6116)
Authored by: HobbyistDev, pukkandan
1 year ago
HobbyistDev 72671a212d
[extractor/viu] Add `ViuOTTIndonesiaIE` extractor (#6099)
Authored by: HobbyistDev
Closes #1757
1 year ago
Siddhartha Sahu 376aa24b15
Improve default subtitle language selection (#6240)
Authored by: sdht0
1 year ago
Simon Sawicki c9d14bd22a
[extractor/crunchyroll] Fix incorrect premium-only error
Closes #6234

Authored by: Grub4K
1 year ago
bashonly 149eb0bbf3
[extractor/youtube] Fix `uploader_id` extraction
Closes #6247
Authored by: bashonly
1 year ago
pukkandan 9ebac35577
Bugfix for 39f32f1715
when `--ignore-no-formats-error`
1 year ago
bashonly 8b37c58f8b
[extractor/nfl] Add `NFLPlus` extractors (#6222)
Closes #6165
Authored by: bashonly
1 year ago
Greg Sadetsky d3bb187f01
[extractor/NZOnScreen] Add extractor (#6208)
Authored by: gregsadetsky, pukkandan
Closes #6193
1 year ago
pukkandan 44699d10dc
[extractor/crunchyroll] Better message for premium videos
Closes #6227
1 year ago
Marenga a9c685453f
[extractor/vk] Fix playlists for new API (#6122)
Authored by: the-marenga
Closes #6219
1 year ago
pukkandan c154302c58
Bugfix for 39f32f1715 1 year ago
pukkandan 5712943b76
Imply `--no-progress` when `--print` 1 year ago
pukkandan 39f32f1715
Sanitize formats before sorting
Closes #4501
1 year ago
shirt 365b900605
[Build] Update pyinstaller 1 year ago
nixxo c6b657867a
[extractor/rcs] Fix extractors (#5700)
Authored by: nixxo, pukkandan
Closes #5683
1 year ago
Lesmiscore a4f1683221
[extractor/AbemaTV] Cache user token whenever appropriate (#6216)
Authored by: Lesmiscore
1 year ago
Simon Sawicki b6795fd310
[extractor/twitter] Fix `--no-playlist` and add media `view_count` when using GraphQL (#6211)
Authored by: Grub4K
1 year ago
pukkandan 2e269bd998
[pyinst] Fix for pyinstaller 5.8
Fixes comment https://github.com/yt-dlp/yt-dlp/issues/1839#issuecomment-1427002271
1 year ago
Bruno Guerreiro 78a78fa74d
[extractor/youtube] Add hyperpipe instances (#6020)
Authored by: Generator
1 year ago
HobbyistDev 0ba87dd279
[extractor/biliintl] Add intro and ending chapters (#6018)
Authored by: HobbyistDev
1 year ago
Roland Hieber 05799a48c7
[extractor/youtube] Update invidious and piped instances (#6030)
Authored by: rohieb
1 year ago
ByteDream 93abb7406b
[extractor/crunchyroll] Add intro chapter (#6023)
Authored by: ByteDream
1 year ago
LowSuggestion912 b23167e754
[extractor/common] Fix `_search_nuxt_data` (#6062)
Authored by: LowSuggestion912
1 year ago
Chris Caruso 417cdaae08
[extractor/ximalaya] Update album `_VALID_URL` (#6110)
Authored by: carusocr
Closes #6059
1 year ago
sepro b3eaab7ca2
[extractor/vlive] Replace with `VLiveWebArchiveIE` (#6196)
vlive has shut down: https://web.archive.org/web/20221031171019/https://www.vlive.tv/notice/4749

Authored by: seproDev
1 year ago
lauren n. liberda a31d0fa6c3
[extractor/tvp] Support `stream.tvp.pl` (#6139)
Authored by: selfisekai
1 year ago
sepro cc2389c8ac
[extractor/npo] Fix extractor and add HD support (#6155)
Authored by: seproDev
1 year ago
Chris Caruso 20266508dd
[extractor/bfmtv] Support `rmc` prefix (#6025)
Authored by: carusocr
Closes #6021
1 year ago
qulaz cc13293c28
[extractor/clyp] Support `wav` (#6102)
Authored by: qulaz
1 year ago
oxamun 989f47b631
[extractor/tnaflix] Fix extractor (#6086)
Closes #6085
Authored by: oxamun, bashonly
1 year ago
JChris246 7d5f919bad
[extractor/Stripchat] Fix extractor (#5985)
Authored by bashonly, JChris246
Closes #5963, closes #5866
1 year ago
panatexxa c62e64cf01
[extractor/moviepilot] Fix extractor (#5954)
Authored by: panatexxa
1 year ago
pmitchell86 c085cc2def
[extractor/91porn] Fix title and comment extraction (#5932)
Authored by: pmitchell86
Fixes #3256
1 year ago
Alex Berg 7708df8da0
[extractor/Hidive] Fix subtitles and age-restriction (#5828)
Authored by: chexxor
Closes #408
1 year ago
pukkandan b85faf6ffb
[devscripts/pyinstaller] Analyze sub-modules of `Cryptodome`
Ref: https://github.com/yt-dlp/yt-dlp/issues/6185#issuecomment-1423523986
1 year ago
Master 203a06f855
[extractor/radiko] Fix format sorting for Time Free (#6159)
Authored by: road-master
1 year ago
Simon Sawicki 6839ae1f6d
[utils] `traverse_obj`: Fix more bugs
and cleanup uses of `default=[]`

Continued from b1bde57bef
1 year ago
LeoniePhiline c0cd13fb1c
[extractor/vimeo] Fix `playerConfig` extraction (#6203)
Authored by: bashonly, LeoniePhiline
Closes #6149
1 year ago
Ha Tien Loi f14c233348
[extractor/DouyuTV]: Use new API (#6074)
Authored by: hatienl0i261299
1 year ago
pukkandan 768a001781
[compat_utils] Simplify `EnhancedModule` 1 year ago
pukkandan acb1042a9f
[devscripts] Provide pyinstaller hooks
Closes #6185
1 year ago
Stefan Lobbenmeier f40e32fb1a
[extractor/servus] Rewrite extractor (#6036)
Closes #1076, closes #4240, closes #2748, closes #1045, closes #1498
Authored by: FrankZ85, Ashish0804, StefanLobbenmeier

Co-authored-by: FrankZ85 <43293037+FrankZ85@users.noreply.github.com>
1 year ago
bashonly e61acb40b2
[extractor/wrestleuniverse] Add extractors (#6158)
Authored by bashonly, Grub4K
Closes #6120

Co-authored-by: Simon Sawicki <contact@grub4k.xyz>
1 year ago
bashonly 7e68567e50
[downloader/hls] Allow extractors to provide AES key (#6158)
and related cleanup

Authored by: bashonly, Grub4K

Co-authored-by: Simon Sawicki <contact@grub4k.xyz>
1 year ago
JChris246 f7efe6dc95
[extractor/pornez] Handle relative URLs in iframe (#6171)
Authored by: JChris246
Closes #6162
1 year ago
Simon Sawicki b1bde57bef
[utils] `traverse_obj`: Fix several behavioral problems
See #6180 for further info

Authored by: Grub4K
1 year ago
pukkandan 88426d9446
[compat_utils] Improve `passthrough_module` 1 year ago
pukkandan f6a765ceb5
[dependencies] Standardize `Cryptodome` imports 1 year ago
pukkandan 754c84e2e4
Support module level `__bool__` and `property` 1 year ago
pukkandan 7aefd19afe
Make `title` completely non-fatal
Ref: https://github.com/yt-dlp/yt-dlp/pull/6158#discussion_r1096984349
1 year ago
Felix Yan fbbb5508ea
[extractor/huya] Support HD streams (#6172)
Authored by: felixonmars
1 year ago
OMEGA_RAZER c77df98b1a
[extractor/reddit] Support user posts (#6173)
Authored by: OMEGARAZER
1 year ago
Jeroen Jacobs d27bde9883
[extractor/GoPlay] Use new API (#6151)
Authored by: jeroenj
Closes #6032
1 year ago
sepro 0fe87a8730
[extractor/zdf] Use android API endpoint for UHD downloads (#6150)
Authored by: seproDev
1 year ago
Matumo 3b161265ad
[extractor/niconico] Add support for like history (#5705)
Authored by: Matumo, pukkandan
1 year ago
chio0hai 389896df85
[extractor/txxx] Add extractors (#5240)
Authored by: chio0hai
Closes #5021
1 year ago
pukkandan b032ff0f03
[extractor/youtube] Handle `consent.youtube` 1 year ago
pukkandan dad2210c0c
[extractor/youtube] Support `/live/` URL 1 year ago
Jasper Rebane 9cfdbcbf3f
[extractor/freesound] Workaround invalid URL in webpage (#6147)
Authored by: rebane2001
Closes #6146
1 year ago
lauren n. liberda 7543c9c99b
[extractor/twitter] Fix graphql extraction on some tweets (#6075)
Authored by: selfisekai
1 year ago
Simon Sawicki acacb57c7e [extractor/rumble] Fix format sorting
Closes #6119
Authored by: pukkandan
1 year ago
Simon Sawicki 776995bc10
[utils] `traverse_obj`: Various improvements
- Add `set` key for transformations/filters
- Add `re.Match` group names
- Fix behavior for `expected_type` with `dict` key
- Raise for filter function signature mismatch in debug

Authored by: Grub4K
1 year ago
pukkandan 8b008d6254
[jsinterp] Support `if` statements
Closes #6131
1 year ago
Lesmiscore 83c4970e52
[utils] Fix `time_seconds` to use the provided TZ (#6118)
Authored by: Lesmiscore, Grub4K

Fixes https://github.com/yt-dlp/yt-dlp/pull/6056
1 year ago
bashonly 8aa0bd5d10
[extractor/generic] Avoid catastrophic backtracking in KVS regex
Authored by: bashonly
1 year ago
Simon Sawicki 37e325b92f [utils] Use local kernel32 for file locking on Windows
Ref: https://github.com/ytdl-org/youtube-dl/issues/21545

Authored by: Grub4K
1 year ago
pukkandan 59d7de0da5
Fix `--concat-playlist`
Closes #6080
1 year ago
pukkandan 88d8928bf7
[plugins] Fix zip search paths
Closes #6011
1 year ago
bashonly 176a068cde
[extractor/nbc] Fix XML parsing
Python 3.7 compat bug in cb73b8460c
Authored by: bashonly
1 year ago
bashonly 5ab3534d44
[extractor/slideslive] Fix slides and chapters/duration (#6024)
* Fix slides/thumbnails extraction
* Extract duration to fix issues w/ `--embed-chapters`, `--split-chapters`
* Add `InfoExtractor._extract_mpd_vod_duration` method
* Expand applicability of `InfoExtractor._parse_m3u8_vod_duration` method
Authored by: bashonly
1 year ago
bashonly cb73b8460c
[extractor/nbc] Fix `NBC` and `NBCStations` extractors (#6033)
Improve `InfoExtractor._parse_smil_formats` extension detection
Closes #6019
Authored by: bashonly
1 year ago
bashonly 7481998b16
[extractor/drtv] Fix bug in ab4cbef (#6034)
Fixes bug in ab4cbef ab4cbeff00
Closes #5993
Authored by: bashonly
1 year ago
pukkandan 87ebab0615
[extractor/embedly] Embedded links may be for other extractors
Bug in bfd973ece3
Closes #5987
1 year ago
Marek Hudik 355d781bed
[extractor/rozhlas] Add extractor RozhlasVltavaIE (#5951)
Authored by: amra
1 year ago
github-actions 7287ab92f6 [version] update
Created by: pukkandan

:ci skip all :ci run dl
1 year ago
pukkandan 6becd2508c
Release 2023.01.06 1 year ago
pukkandan edfc7725b1
[cleanup] Misc 1 year ago
JChris246 b382c1fc6a
[xanimu] Add extractor (#5969)
Authored by: JChris246
Closes #5810
1 year ago
Christoph Flathmann 8a6b167723
[extractor/crunchyroll:show] Add `language` to entries (#5687)
Authored by: Chrissi2812
1 year ago
mzhou 253ac4ba6a
[extractor/youtube] Retry manifest refresh for live-from-start (#5670)
Avoids ending download early when live stream is temporarily offline.
Best used with somewhat large `--retry-sleep extractor:` and `--extractor-retries`

Authored by: mzhou
1 year ago
George Schizas 84e0e33a19
[extractor/reddit] Add subreddit as `channel_id` (#5685)
Authored by: gschizas
Closes #5684
1 year ago
Frederik Nordahl Jul Sabroe ab4cbeff00
[extractor/drtv] Add series extractors (#5644)
Authored by: FrederikNS
Closes #3567
1 year ago
Simon Sawicki 773c272d66
Fix config locations (#5933)
Bug in 8e40b9d1ec
Closes #5953

Authored by: Grub4k, coletdjnz, pukkandan
1 year ago
Jacob Truman c3366fdfd0
[extractor/nbc] Update graphql query (#5952)
Closes #5918
Authored by: jacobtruman
1 year ago
Simon Sawicki 5be214abed
[update] Fix updater file removal on windows (#5970)
Reverts 2fb0f85868
Closes #5632
Authored by: Grub4K
1 year ago
HobbyistDev d37422f1db
[extractor/biliIntl] Add fallback to `video_data` (#5971)
Authored by: HobbyistDev
1 year ago
JC-Chung 933ed882e9
[extractor/tiktok] Add `TikTokLive` extractor (#5637)
Closes #3698
Authored by: JC-Chung
1 year ago
HobbyistDev a1d9aca338
[extractor/aitube] Add extractor (#5946)
Closes #5627
Authored by: HobbyistDev
1 year ago
HobbyistDev 91d54e9b99
[extractor/volejtv] Add extractor (#5943)
Authored by: HobbyistDev
Closes #5883
1 year ago
HobbyistDev 76c3ceccfb
[extractor/biliintl] Add `/media` to `VALID_URL` (#5939)
Authored by: HobbyistDev
1 year ago
pukkandan ad68b16a1e
[downloader/aria2c] Disable native progress
Closes #5931, closes #5928, Re-opens #2038
1 year ago
pukkandan f079514957
[utils] `windows_enable_vt_mode`: Better error handling
Closes #5927
1 year ago
pukkandan e9df3d42c4
[build] Add minimal `pyproject.toml` 1 year ago
pukkandan d80ca5deaa
[utils] `mimetype2ext`: weba is not standard
Fix bug in fbb7383306, 2647c933b8
Closes #5935
1 year ago
OndrejBakan 1a3cd8ec35
[extractor/joj] Fix extractor (#5934)
Authored by: OndrejBakan, pukkandan
1 year ago
github-actions 990dd7b00f [version] update
Created by: pukkandan

:ci skip all :ci run dl
1 year ago
pukkandan d83b0ad809
Release 2023.01.02 1 year ago
pukkandan 08e29b9f1f
[cleanup] Misc
Closes #5576, closes #5887
1 year ago
pukkandan 8e174ba7de
[docs] Improvements
Closes #5846, closes #5774
1 year ago
bashonly 05997b6e98
[extractor/generic] Decode unicode-escaped embed URLs (#5919)
Authored by: bashonly
Closes #5854
1 year ago
Simon Sawicki 32a84bcf4e
Update to ytdl-commit-195f22f6
[generic] Improve KVS (etc) extraction
195f22f679

Closes #3716
Authored by: Grub4k, pukkandan
1 year ago
Matthew 8300774c4a
Add `--enable-file-urls` (#5917)
Closes https://github.com/yt-dlp/yt-dlp/issues/3675

Authored by: coletdjnz
1 year ago
bashonly d7f9871469
[extractor/iqiyi] Fix `Iq` JS regex (#5922)
Closes #5702
Authored by: bashonly
1 year ago
bashonly 13f930abc0
[extractor/fifa] Fix Preplay extraction (#5921)
Closes #5839
Authored by: dirkf
1 year ago
bashonly b23b503e22
[extractor/odnoklassniki] Extract subtitles (#5920)
Closes #5744
Authored by: bashonly
1 year ago
Matthew e756f45ba0
Improve handling for overriding extractors with plugins (#5916)
* Extractors replaced with plugin extractors now show in debug output
* Better testcase handling
* Added documentation
Authored by: coletdjnz, pukkandan
1 year ago
Lesmiscore 8c53322cda
[downloader/aria2c] Native progress for aria2c via RPC (#3724)
Authored by: Lesmiscore, pukkandan

Closes #2038
1 year ago
pukkandan 193fb150b7
Fix bug in 119e40ef64 1 year ago
pukkandan 26fdfc3704
[extractor/biliintl:series] Make partial download of series faster 1 year ago
pukkandan 78d25e0b7c
[extractor/embedly] Handle vimeo embeds
Closes #3360
1 year ago
pukkandan 2a06bb4eb6
Add `--compat-options 2021,2022`
Use these to guard against future compat changes. This allows devs to
change defaults and make other potentially breaking changes more easily.
If you need everything to work exactly as-is, put this in your config
1 year ago
pukkandan 88fb942577
Add message when there are no subtitles/thumbnails
Closes #5551
1 year ago
pukkandan 1cdda32998
[utils] `get_exe_version`: Detect broken executables
Authored by: dirkf, pukkandan
Closes #5561
1 year ago
coletdjnz 3e01ce744a
[extractor/generic] Use `Accept-Encoding: identity` for initial request
The existing comment seems to imply this was the desired behavior from the beginning.

Partial fix for https://github.com/yt-dlp/yt-dlp/issues/5855, https://github.com/yt-dlp/yt-dlp/issues/5851, https://github.com/yt-dlp/yt-dlp/issues/4748
1 year ago
Matthew 8e40b9d1ec
Improve plugin architecture (#5553)
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>
1 year ago
pukkandan 2fb0f85868
[update] Workaround #5632 1 year ago
Stel Abrego a0e526ed4d
[extractor/bandcamp] Add `album_artist` (#5537)
Closes #5536 
Authored by: stelcodes
1 year ago
pukkandan 8d1ddb0805
[extractor/udemy] Fix lectures that have no URL and detect DRM
Closes #5662
1 year ago
pukkandan 9bb856998b
[extractor/youtube] Extract DRC formats 1 year ago
pukkandan fbb7383306
Add `weba` to known extensions 1 year ago
pukkandan ec54bd43f3
Fix bug in writing playlist info-json
Closes #4889
1 year ago
pukkandan f74371a97d
[extractor/bilibili] Fix `--no-playlist` for anthology
Closes #5797
1 year ago
ChillingPepper d5f043d127
[utils] js_to_json: Fix bug in f55523c (#5771)
Authored by: ChillingPepper, pukkandan
1 year ago
pukkandan fe74d5b592
Let `--parse/replace-in-metadata` run at any post-processing stage
Closes #5808, #456
1 year ago
pukkandan 119e40ef64
Add pre-processor stage `video`
Related: #456, #5808
1 year ago
pukkandan 4455918e7f
[extractor/stv] Detect DRM
Closes #5320
1 year ago
Anant Murmu efa944f4bc
[cleanup] Use `random.choices` (#5800)
Authored by: freezboltz
1 year ago
nosoop e107c2b8cf
[extractor/soundcloud] Support user permalink (#5842)
Closes #5841
Authored by: nosoop
1 year ago
Lesmiscore ca2f6e14e6
[extractor/BiliLive] Fix extractor
- Remove unnecessary group in `_VALID_URL`
- This extractor always returns livestreams
1 year ago
bashonly c1edb853b0
[extractor/kick] Add extractor (#5736)
Closes #5722
Authored by: bashonly
1 year ago
bashonly 2647c933b8
[extractor/wistia] Improve extension detection (#5415)
Closes #5053
Authored by: bashonly, Grub4k, pukkandan
1 year ago
bashonly 53006b35ea
[extractor/amazon] Add `AmazonReviews` extractor (#5857)
Closes #5766
Authored by: bashonly
1 year ago
bashonly 4b183d4962
[extractor/videoken] Add extractors (#5824)
Closes #5818
Authored by: bashonly
1 year ago
bashonly 3d667e0047
[extractor/slideslive] Support embeds and slides (#5784)
Authored by: bashonly, Grub4K, pukkandan
1 year ago
Sam 9a9006ba20
[extractor/twitcasting] Fix videos with password (#5894)
Closes #5888
Authored by: bashonly, Spicadox
1 year ago
HobbyistDev 153e88a751
[extractor/netverse] Add `NetverseSearch` extractor (#5838)
Authored by: HobbyistDev
1 year ago
JChris246 9fcd8ad1f2
[extractor/spankbang] Fix extractor (#5791)
Authored by: JChris246
Closes #5731
1 year ago
monnef 6b71d186dd
[extractor/curiositystream] Fix auth (#5730)
Authored by: mnn
1 year ago
lkw123 074b2fae90
[extractor/kankanews] Add extractor (#5729)
Authored by: synthpop123
1 year ago
Kurt Bestor 06a9d68eb8
[extractor/youku] Fix extractor (#5622)
Closes #4456
Authored by: KurtBestor
1 year ago
Damiano Amatruda a4d6ead30f
[extractor/ciscowebex] Support password-protected videos (#5601)
Authored by: damianoamatruda
1 year ago
lauren n. liberda d1b5f3d79c
[extractor/polskieradio] Adapt to next.js redesigns (#5416)
Authored by: selfisekai
1 year ago
lauren n. liberda da8d2de208
[extractor/cda] Support premium and misc improvements (#5529)
* Fix cache for non-ASCII key
* Improve error messages
* Better UA for fingerprint bypass

Authored by: selfisekai
1 year ago
chris 15e9e578c0
[extractor/ArteTV] Extract chapters (#5879)
Authored by: iw0nderhow, bashonly
1 year ago
Bobscorn 0ef3d47027
[extractor/beatbump] Add extractors (#5304)
Authored by: Bobscorn, pukkandan
Closes #4653
1 year ago
barsnick 247c8dd4f5
[extractor/urplay] Support for audio-only formats (#4606)
Closes #4605
Authored by: barsnick
1 year ago
HobbyistDev 032f22020c
[extractor/trtcocuk] Add extractor (#5009)
Closes #2635
Authored by: HobbyistDev
1 year ago
pukkandan 4af47a0003
Fix 9012d20b23 1 year ago
pukkandan 9012d20b23
[extractor/mixch] Support `--wait-for-video` 1 year ago
Giulio Muscarello d61ef7f343
[extractor/ARD] Add vtt subtitles (#5835)
Authored by: CapacitorSet
1 year ago
skbeh 1c226ccdd4
[extractor/bilibili] Improve `_VALID_URL` (#5820)
Authored by: skbeh
1 year ago
pukkandan 8791e78ccc
Fix `original_url` in playlists 1 year ago
pukkandan 69f5fe45b9
[FFmpegVideoConvertor] Add `gif` to `--recode-video` 1 year ago
pukkandan 0b5546c723
[extractor] Let `_extract_format` functions obey `--ignore-no-formats` 1 year ago
bashonly 1fc089143c
[extractor/reddit] Extract crossposted media (#5801)
Closes #5798
Authored by: bashonly
1 year ago
Lesmiscore 5424dbaf91
Deprioritize HEVC-over-FLV formats (#5823)
Authored by: Lesmiscore
1 year ago
Matthew c733555106
[extractor/youtube:tab] Extract metadata from channel items (#5569)
Authored by: coletdjnz
1 year ago
HobbyistDev 81388c0954
[extractor/oneplace] Add OnePlacePodcast extractor (#5549)
Closes #5543
Authored by: HobbyistDev
1 year ago
Denis df10bad267
[extractor/rutube] Support private videos (#5761)
Authored by: mexus
1 year ago
HobbyistDev f0f3fa028b
[extractor/netverse] Extract comments (#5568)
Authored by: HobbyistDev
1 year ago
HobbyistDev 22697a84f6
[extractor/europarl] Add EuroParlWebstream Extractor (#5547)
Authored by: HobbyistDev
Closes #4933
1 year ago
HobbyistDev 3ac5476430
[extractor/nosnl] Add support for /video (#5590)
Authored by: HobbyistDev
1 year ago
HobbyistDev e318b5b87a
[extractor/airtv] Add extractor (#5533)
Authored by: HobbyistDev
Closes #5132
1 year ago
bashonly f549b18512
[extractor/pinterest] Fix extractor (#5739)
Closes #1772
Authored by: bashonly
1 year ago
bashonly 7c5e1701f6
[extractor/foxsports] Fix extractor (#5719)
Closes #5714
Authored by: bashonly
1 year ago
bashonly 16bed382fd
[extractor/twitter] Heed `--no-playlist` for multi-video tweets (#5757)
Closes #5752
Authored by: bashonly, Grub4K
1 year ago
bashonly 3cf50fa8e9
[downloader/ffmpeg] Fix headers for video+audio formats (#5659)
Authored by: bashonly, Grub4K
1 year ago
bashonly f69b0554eb
[extractor/slideslive] Fix extractor (#5737)
Closes #1532
Authored by: bashonly, Grub4K
1 year ago
pukkandan e74a3c6dcc
[extractor/hotstar] Improve format metadata 1 year ago
pukkandan 7108221662
Add `ac4` to known codecs
Note: ffmpeg does not currently support this format

Related #5738
1 year ago
nixxo 10dc85924a
[extractor/mediaset] Better embed detection and error messages (#5664)
Authored by: nixxo
1 year ago
Vita b05f0a50e0
[extractor/yle_areena] Support restricted videos (#5735)
* and improve metadata

Closes #5734
Authored by: docbender
1 year ago
Elyse 3d79ebc8b7
[extractor/mediastream] Add extractor (#5640)
Closes #5532, closes #4431, closes #4425
Authored by: elyse0, HobbyistDev

Co-authored-by: HobbyistDev <tesutonihon4@gmail.com>
1 year ago
pukkandan b44cd29851
[jsinterp] Escape regex that looks like nested set
Closes #5749
1 year ago
milkknife 85a802969e
[extractor/webcamerapl] Add extractor (#5715)
Authored by: milkknife
1 year ago
nixxo 72f96c5566
[extractor/la7] Improve extractor (#5538)
Authored by: nixxo
Closes #5360
1 year ago
MMM 839e2a62ae
[extractor/rumble] Add RumbleIE extractor (#5515)
Closes #2846
Authored by: flashdagger
1 year ago
HobbyistDev 28b8f57b4b
[extractor/noice] Add NoicePodcast extractor (#5621)
Authored by: HobbyistDev
1 year ago
lkw123 dfc186d422
[extractor/xiami] Remove extractors (#5711)
Authored by: synthpop123
1 year ago
David Turner 42ec478fc4
[extractor/plutotv] Fix videos with non-zero start (#5745)
Authored by: digitall
1 year ago
pukkandan 7991ae57a8
[extractor/sibnet] Separate from VKIE
Fixes bfd973ece3 (commitcomment-91834251)
1 year ago
pukkandan 935bac1e4d
Fix `--cookies-from-browser` CLI parsing
Closes #5716
1 year ago
bashonly c4cbd3bebd
[extractor/tiktok] Update `_VALID_URL`, add `api_hostname` arg (#5708)
Closes #5706
Authored by: bashonly
1 year ago
pukkandan c53a18f016
[utils] windows_enable_vt_mode: Proper implementation
Authored by: Grub4K
1 year ago
pukkandan 71df9b7fd5
[cleanup] Misc 1 year ago
Benjamin Ryan c9f5ce5118
[extractor/tiktok] Update API hostname (#5690)
Closes #5688
Authored by: redraskal
1 year ago
bashonly ddf1e22d48
[extractor/swearnet] Fix description bug (#5681)
Bug in 049565df2e
Closes #5643
Authoried by: bashonly
1 year ago
bashonly 0e96b408b9
[extractor/reddit] Extract video embeds in text posts (#5677)
Closes #5612
Authored by: bashonly
1 year ago
bashonly ba72399723
[extractor/tiktok] Fix subs, `DouyinIE`, improve `_VALID_URL` (#5676)
Closes #5665, Closes #2267
Authored by: bashonly
1 year ago
pukkandan 9bcfe33be7
[utils] Make `ExtractorError` mutable 1 year ago
pukkandan 71eb82d1b2
[extractor/youtube] Subtitles cannot be translated to `und`
Closes #5674
1 year ago
pukkandan a9d069f5b8
[extractor/amazonminitv] Cleanup 48652590ec 1 year ago
alexia 48652590ec
[extractor/amazonminitv] Add extractors (#3628)
Authored by: nyuszika7h, GautamMKGarg
1 year ago
marieell 86f557b636
[extractor/youporn] Fix metadata (#2768)
Authored by: marieell
2 years ago
pukkandan c0caa80515
[extractor/naver] Treat fan subtitles as separate language
Closes #5467
2 years ago
Mudassir Chapra 0d95d8b00a
[extractor/gronkh] Fix `_VALID_URL` (#5628)
Closes #5531
Authored by: muddi900
2 years ago
Elan Ruusamäe 9d52bf65ff
[extractor/kanal2] Add extractor (#5575)
Authored by: glensc, pukkandan, bashonly
2 years ago
bashonly d761dfd059
[extractor/naver] Improve `_VALID_URL` for `NaverNowIE` (#5620)
Authored by: bashonly
2 years ago
bashonly 27c0f899c8
[extractor/screencastify] Add extractor (#5604)
Closes #5603
Authored by: bashonly
2 years ago
bashonly 7ff2fafe47
[extractor/vimeo] Add `VimeoProIE` (#5596)
* Add support for VimeoPro URLs not containing a Vimeo video ID
* Add support for password-protected VimeoPro pages
Closes #5594
Authored by: bashonly, pukkandan
2 years ago
bashonly 3b021eacef
[extractor/generic] Add `fragment_query` extractor arg for DASH and HLS (#5528)
* `fragment_query`: passthrough any query in generic mpd/m3u8 manifest URLs to their fragments
* Add support for `extra_param_to_segment_url` to DASH downloader
Authored by: bashonly, pukkandan
2 years ago
Marcel f352a09778
[webvtt] Handle premature EOF
Closes #2867, closes #5600
Authored by: flashdagger
2 years ago
chengzhicn 02b2f9fa7d
[extractor/reddit] Add vcodec to fallback format (#5591)
Authored by: chengzhicn
2 years ago
pukkandan 29ca408219
[FormatSort] Add `mov` to `vext`
Closes #5581
2 years ago
pukkandan 8486540257
[extractor/unsupported] Add more URLs
Closes #5557, Closes #2744, Closes #5578
2 years ago
bashonly ed027fd9d8
[extractor/generic] Fix JSON LD manifest extraction (#5577)
Closes #5572
Authored by: bashonly, pukkandan
2 years ago
bashonly 352e7d9873
[extractor/twitter] Refresh guest token when expired (#5560)
Closes #5548
Authored by: bashonly, Grub4K
2 years ago
nixxo 9a0416c6a5
[extractor/twitter:spaces] Add 'Referer' to m3u8 (#5580)
Closes #5565
Authored by: nixxo
2 years ago
bashonly f5a9e9df0d
[extractor/brightcove] Add `BrightcoveNewBaseIE` and fix embed extraction (#5558)
* Move Brightcove embed extraction and tests into the IEs
* Split `BrightcoveNewBaseIE` from `BrightcoveNewIE`
* Fix bug in ade1fa70cb with the "wrong" spelling of `referrer` being smuggled

Closes #5539
2 years ago
bashonly f96a3fb7d3
[extractor/redgifs] Fix bug in 8c188d5d09 (#5559) 2 years ago
Bnyro bc87dac75f
[extractor/youtube] Add `piped.video` (#5571)
Closes #5518
Authored by: Bnyro
2 years ago
pukkandan 9f14daf22b
[extractor] Deprecate `_sort_formats` 2 years ago
pukkandan 784320c98c
Implement universal format sorting
Closes #5566
2 years ago
pukkandan d0d74b7197
[utils] Move format sorting code into `utils` 2 years ago
pukkandan 64c464a144
[utils] Move `FileDownloader.parse_bytes` into utils 2 years ago
pukkandan 4de88a6a36
[extractor/generic] Don't report redirect to https 2 years ago
pukkandan 105bfd90f5
Add new field `aspect_ratio`
Closes #5402
2 years ago
pukkandan 6368e2e639
[cleanup] Misc
Closes #5541
2 years ago
pukkandan a4894d3e25
[extractor/youtube] Consider language in format de-duplication 2 years ago
pukkandan d7b460d0e5
Make early reject of `--match-filter` stricter
Closes #5509
2 years ago
pukkandan 171a31dbe8
[extractor] Add a way to distinguish IEs that returns only videos 2 years ago
pukkandan 83cc7b8aae
[utils] `classproperty`: Add cache support 2 years ago
Elyse 0a4b2f4180
[extractor/tencent] Fix geo-restricted video (#5505)
Closes #5230
Authored by: elyse0
2 years ago
pukkandan a8c754cc00
[extractor/youtube] Fix bug in handling of music URLs
Bug in bd7e919a75
Closes #5502
2 years ago
pukkandan bc5c2f8a2c
Fix bugs in `PlaylistEntries` 2 years ago
Audrey d965856235
[extractor/Veoh] Add user extractor (#5242)
Authored by: tntmod54321
2 years ago
pukkandan 08270da5c3
[extractor/youtube] Fix `ytuser:` 2 years ago
github-actions 5e39fb982e [version] update
Created by: pukkandan

:ci skip all :ci run dl
2 years ago
pukkandan 8b644025b1
Release 2022.11.11 2 years ago
Robert Geislinger 7aaf4cd2a8
[cleanup] Misc
Closes #5471, Closes #5312

Authored by: pukkandan, Alienmaster
2 years ago
pukkandan 8522226d2f
[ThumbnailsConvertor] Fix filename escaping
Closes #4604
Authored by: pukkandan, dirkf
2 years ago
Vitaly Khabarov f4b2c59cfe
[extractor/YleAreena] Add extractor (#5270)
Closes #2508
Authored by: vitkhab, pukkandan
2 years ago
Timendum 7c8c63529e
[extractor/cinetecamilano] Add extractor (#5279)
Closes #5031
Authored by: timendum
2 years ago
bashonly e4221b700f
Fix `--list` options not implying `-s` in some cases (#5296)
Authored by: bashonly, Grub4K
2 years ago
pukkandan bd7e919a75
[extractor/youtube:tab] Improvements to tab handling (#5487)
* Better handling of direct channel URLs - See https://github.com/yt-dlp/yt-dlp/pull/5439#issuecomment-1309322019
* Prioritize tab id from URL slug - Closes #5486
* Add metadata for the wrapping playlist
* Simplify redirect for music playlists
2 years ago
pukkandan f7fc8d39e9
[extractor] Fix `fatal=False` for `_search_nuxt_data`
Closes #5423
2 years ago
mlampe a6858cda29
[build] Make linux binary truly standalone using `conda` (#5423)
Authored by: mlampe
2 years ago
MrOctopus 17fc3dc48a
[build] Create armv7l and aarch64 releases (#5449)
Closes #5436
Authored by: MrOctopus, pukkandan
2 years ago
Matthew 3f5c216969
[extractor/nzherald] Support new video embed (#5493)
Authored by: coletdjnz
2 years ago
Matthew e72e48c53f
[extractor/youtube] Ignore incomplete data error for comment replies (#5490)
When --ignore-errors is used.
Closes https://github.com/yt-dlp/yt-dlp/issues/4669
Authored by: coletdjnz
2 years ago
Matthew 0cf643b234
[extractor/youtube] Differentiate between no and disabled comments (#5491)
`comments` and `comment_count` will be set to None, as opposed to 
an empty list and 0, respectively.

Fixes https://github.com/yt-dlp/yt-dlp/issues/5068

Authored by: coletdjnz, pukkandan
2 years ago
Sergey dc3028d233
[build] `py2exe`: Migrate to freeze API (#5149)
Closes #5135
Authored by: SG5, pukkandan
2 years ago
Matthew 4dc23a8051
[extractor/youtube:tab] Fix video metadata from tabs (#5489)
Closes #5488
Authored by: coletdjnz
2 years ago
pukkandan 495322b95b
[test] Allow `extract_flat` in download tests
Authored by: coletdjnz, pukkandan
2 years ago
Alex c789fb7787
[build, test] Harden workflows' security (#5410)
Authored by: sashashura
2 years ago
pukkandan ed6bec168d
[extractor/doodstream] Remove extractor
It was added in youtube-dlc, likely without sufficient scrutiny

Closes #3808, Closes #5251, Closes #5403
2 years ago
MMM 0d8affc17f
[extractor/rumble] Add HLS formats and extract more metadata (#5280)
Closes #5177, #5277 
Authored by: flashdagger
2 years ago
Matthew d9df9b4919
[extractor/unsupported] Raise error on known DRM-only sites (#5483)
Authored by: coletdjnz
2 years ago
MMM efdc45a6ea
[extractor/bitchute] Better error for geo-restricted videos (#5474)
Authored by: flashdagger
2 years ago
Matthew 86973308cd
[extractor/youtube:tab] Update tab handling for redesign (#5439)
Closes #5432, #5430, #5419
Authored by: coletdjnz, pukkandan
2 years ago
MMM c61473c1d6
[extractor/bitchute] Improve `BitChuteChannelIE` (#5066)
Authored by: flashdagger, pukkandan
2 years ago
zulaport 8fddc232bf
[extractor/camsoda] Add extractor (#5465)
Authored by: zulaport
2 years ago
pukkandan fad689c7b6
[extractor/hotstar] Refactor v1 API calls 2 years ago
m4tu4g db6fa6960c
[extractor/hotstar] Add season support (#5479)
Closes #5473
Authored by: m4tu4g
2 years ago
Anant Murmu 3b87f4d943
[extractor/stripchat] Improve error message (#5475)
Authored by: freezboltz
2 years ago
pukkandan 581e86b512
[extractor/uktvplay] Fix `_VALID_URL`
Closes #5472
2 years ago
megapro17 8196182a12
[extractor/odnoklassniki] Support boosty.to embeds (#5105)
Closes #4212
Authored by: megapro17, Lesmiscore, pukkandan
2 years ago
m4tu4g 9b383177c9
[extractor/mxplayer] Improve extractor (#5303)
Closes #5276
Authored by: m4tu4g
2 years ago
ClosedPort22 fbb0ee7747
[compat] Fix `shutils.move` in restricted ACL mode on BSD (#5309)
Authored by: ClosedPort22, pukkandan
2 years ago
Lesmiscore c7e4ab278a
[extractor/niconico] Always use HTTPS for requests
This prevents MITM attacks from malicious parties like insane ISPs

Closes #5469
2 years ago
pukkandan e9ce4e9250
[extractor/foxnews] Add `FoxNewsVideo` extractor
Closes #5133
2 years ago
pukkandan 5da08bde9e
[extractor/vlive] Extract `release_timestamp`
Closes #5424
2 years ago
pukkandan ff48fc04d0
[update] Use error code 100 for update errors
This error code was previously used for
"Exiting to finish update", but is no longer used

Closes #5198
2 years ago
pukkandan 46d09f8707
[cleanup] Lint and misc cleanup 2 years ago
pukkandan db4678e448
Update to ytdl-commit-de39d128
[extractor/ceskatelevize] Back-port extractor from yt-dlp
de39d1281c

Closes #5361, Closes #4634, Closes #5210
2 years ago
zulaport a349d4d641
[extractor/stripchat] Fix hostname for HLS stream (#5445)
Closes #5227 
Authored by: zulaport
2 years ago
Matthew ac8e69dd32
Do not backport Python 3.10 SSL configuration for LibreSSL (#5464)
Until further investigation.

Fixes regression in 5b9f253fa0

Authored by: coletdjnz
2 years ago
bashonly 96b9e9cf62
[extractor/telegram] Add playlist support and more metadata (#5358)
Authored by: bashonly, bsun0000
2 years ago
Jeff Huffman cb1553e966
[extractor/crunchyroll] Beta is now the only layout (#5294)
Closes #5292
Authored by: tejing1
2 years ago
Alex Karabanov 0d2a0ecac3
[extractor/listennotes] Add extractor (#5310)
Closes #5262
Authored by: lksj, pukkandan
2 years ago
changren-wcr c94df4d19d
[extractor/qingting] Add extractor (#5329)
Closes #5323
Authored by: changren-wcr, bashonly
2 years ago
lauren 728f4b5c2e
[extractor/tvp] Update extractors (#5346)
Closes #5328
Authored by: selfisekai
2 years ago
Kevin Wood 8c188d5d09
[extractor/redgifs] Refresh auth token for 401 (#5352)
Closes #5351
Authored by: endotronic, pukkandan
2 years ago
Bruno Guerreiro e14ea7fbd9
[extractor/youtube] Update piped instances (#5441)
Closes #5286
Authored by: Generator
2 years ago
Richard Gibson 7053aa3a48
[extractor/epoch] Support videos without data-trailer (#5387)
Closes #5359
Authored by: gibson042, pukkandan
2 years ago
HobbyistDev 049565df2e
[extractor/swearnet] Add extractor (#5371)
Authored by: HobbyistDev
2 years ago
CrankDatSouljaBoy cc1d3bf96b
[extractor/deuxm] Add extractors (#5388)
Authored by: CrankDatSouljaBoy
2 years ago
Matthew 5b9f253fa0
Backport SSL configuration from Python 3.10 (#5437)
Partial fix for https://github.com/yt-dlp/yt-dlp/pull/5294#issuecomment-1289363572, https://github.com/yt-dlp/yt-dlp/issues/4627

Authored by: coletdjnz
2 years ago
nixxo d715b0e413
[extractor/skyit] Fix extractors (#5442)
Closes #5392
Authored by: nixxo
2 years ago
Matthew 6141346d18
[extractor/youtube] Update playlist metadata extraction for new layout (#5376)
Fixes https://github.com/yt-dlp/yt-dlp/issues/5373

Authored by: coletdjnz
2 years ago
MMM 59a0c35865
[extractor/lbry] Authenticate with cookies (#5435)
Closes #5431
Authored by: flashdagger
2 years ago
Lesmiscore da9a60ca0d
[extractor/twitcasting] Fix `data-movie-playlist` extraction (#5453)
Authored by: Lesmiscore
2 years ago
sam 0d113603ac
[extractor/oftv] Add extractors (#5134)
Closes #5017
Authored by: DoubleCouponDay
2 years ago
pukkandan 2e30b46fe4
[extractor/youtube] Improve chapter parsing from description
Closes #5448
2 years ago
bashonly 68a9a450d4
[extractor/genius] Add extractors (#5221)
Closes #5209
Authored by: bashonly
2 years ago
sam ed13a772d7
[extractor/bbc] Support onion domains (#5211)
Authored by: DoubleCouponDay
2 years ago
lauren 78545664bf
[extractor/agora] Add extractors (#5101)
Authored by: selfisekai
2 years ago
pukkandan f72218c199
[extractor/bitchute] Simplify extractor (#5066)
* Check alternate domains when a URL does not work
* Obey `--no-check-formats`
* Remove webseeds (doesnt seem to exist anymore)

Authored by: flashdagger, pukkandan

Co-authored-by: Marcel <flashdagger@googlemail.com>
2 years ago
James Woglom 58fb927ebd
[kaltura] Support playlists (#4986)
Authored by: jwoglom, pukkandan
2 years ago
pukkandan 62b8dac490
[extractor] Improve `_generic_title` 2 years ago
Lesmiscore 682b4524bf
[extractor/japandiet] Add extractors (#5368)
Authored by: Lesmiscore
2 years ago
nosoop 9da6612b0f
[extractor/youtube] Fix `duration` for premieres (#5382)
Closes #5378
Authored by: nosoop
2 years ago
coletdjnz e63faa101c
[extractor/youtube] Fix `live_status` extraction for playlist videos
Regression in 867c66ff97

Authored by: coletdjnz
2 years ago
pukkandan 497074f044
Write API params in debug head 2 years ago
pukkandan c90c5b9bdd
[extractor/bilibili] Add chapters and misc cleanup (#4221)
Authored by: lockmatrix, pukkandan
2 years ago
Locke ad97487606
[extractor/bilibili] Fix BilibiliIE and Bangumi extractors (#4945)
Closes #1878, #4071, #4397
Authored by: lockmatrix, pukkandan
2 years ago
HobbyistDev e091fb92da
[extractor/mlb] Add `MLBArticle` extractor (#4832)
Closes #3475
Authored by: HobbyistDev
2 years ago
Alex Karabanov c9bd65185c
[extractor/zenyandex] Fix extractors (#3750, #5268)
Closes #3736
Authored by:  lksj, puc9, pukkandan

Co-authored-by: puc9 <51006296+puc9@users.noreply.github.com>
2 years ago
bashonly c66ed4e2e5
[extractor/americastestkitchen] Fix extractor (#5343)
Fix `_VALID_URL` and season extraction

Closes #5343
Authored by: bashonly
2 years ago
pukkandan 2530b68d44
[extractor/iprima] Make json+ld non-fatal
Closes #5318

Authored by: bashonly
2 years ago
Lesmiscore 7d61d2306e
[build] Replace `set-output` with `GITHUB_OUTPUT` (#5315)
https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/

Authored by: Lesmiscore
2 years ago
m4tu4g 385adffcf5
[extractor/zee5] Improve `_VALID_URL` (#5316)
Authored by: m4tu4g
2 years ago
pukkandan 0c908911f9
[extractor/redgifs] Fix extractors
Superseeds f47cf86eff

Closes #5311

Authored by: bashonly
2 years ago
m4tu4g c13a301a94
[extractor/zeenews] Add extractor (#5289)
Closes #4967 
Authored by: m4tu4g, pukkandan
2 years ago
pukkandan f47cf86eff
[extractor/redgifs] Fix extractors
Closes #5202, closes #5216
2 years ago
Simon Sawicki 7a26ce2641
[extractor/twitter] Add Spaces extractor and GraphQL API (#5247, #4864)
Closes #1605, Closes #5233, Closes #1249

Authored by: Grub4K, nixxo, bashonly, pukkandan

Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
Co-authored-by: nixxo <nixxo@protonmail.com>
2 years ago
bashonly 3639df54c3
[extractor/paramountplus] Update API token (#5285)
Closes #5273
Authored by: bashonly
2 years ago
Anant Murmu a4713ba96d
[extractor/voot] Improve `_VALID_URL` (#5283)
Authored by: freezboltz
2 years ago
bsun0000 5318156f1c
[extractor/youtube] Mark videos as fully watched
Closes #2555
Authored by: bsun0000
2 years ago
pukkandan d5d1df8afd
[cleanup Misc
Closes #5162
2 years ago
pukkandan cd5df121f3
[SponsorBlock] Relax duration check for large segments 2 years ago
jahway603 73ac0e6b85
[docs, devscripts] Document `pyinst`'s argument passthrough (#5235)
Closes #4631
Authored by: jahway603
2 years ago
pukkandan a7ddbc0475
[ModifyChapters] Handle the entire video being marked for removal
Closes #5238
2 years ago
pukkandan 8fab23301c
[SponsorBlock] Obey `--retry-sleep extractor` 2 years ago
pukkandan 1338ae3ba3
[SponsorBlock] Add `type` field 2 years ago
Ajay Ramachandran 63c547d71c
[SponsorBlock] Support `chapter` category (#5260)
Authored by: ajayyy, pukkandan
2 years ago
pukkandan 814bba3933
[downloader/fragment] HLS download can continue without first fragment
Closes #5274
2 years ago
cruel-efficiency 2576d53a31
Fix end time of clips (#5255)
Closes #5256
Authored by: cruel-efficiency
2 years ago
Matthew 217753f4aa
[extractor/YoutubeWebArchive] Improve metadata extraction (#4968)
Closes https://github.com/yt-dlp/yt-dlp/issues/4574

Authored by: coletdjnz
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
2 years ago
Vitaly Khabarov 42a44f01c3
[extractor/Fox] Extract thumbnail (#5243)
Closes #1679
Authored by: vitkhab
2 years ago
pukkandan 9b9dad119a
[outtmpl] Ensure ASCII in json and add option for Unicode
Closes #5236
2 years ago
Matthew 6dca2aa66d
[extractor/generic:quoted-html] Add extractor (#5213)
Extracts embeds from escaped HTML within `data-html` attribute.
Related: https://github.com/ytdl-org/youtube-dl/issues/21294, https://github.com/yt-dlp/yt-dlp/pull/5121

Authored by: coletdjnz
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
2 years ago
pukkandan 6678a4f0b3
[extractor/youtube] Fix live_status
Bug in 4d37720a0c
2 years ago
pukkandan d51b2816e3
[extractor/iq] Increase phantomjs timeout
Closes #5161
2 years ago
lauren 34f00179db
[extractor/cda]: Support login through API (#5100)
Authored by: selfisekai
2 years ago
pukkandan 5225df50cf
[extractor/youtube:tab] Let `approximate_date` return timestamp 2 years ago
pukkandan 94dc8604dd
Do more processing in `--flat-playlist` 2 years ago
Simon Sawicki a71b812f53
[utils] `js_to_json`: Improve escape handling (#5217)
Authored by: Grub4K
2 years ago
sam c6989aa3ae
[extractor/aeon] Add extractor (#5205)
Closes #1653
Authored by: DoubleCouponDay
2 years ago
pukkandan a79bf78397
[extractor/tnaflix] Fix 09c127ff83
Closes #5188
2 years ago
sam 82fb2357d9
[extractor/twitter] Add onion site to `_VALID_URL` (#5208)
See #3053
Authored by: DoubleCouponDay
2 years ago
Simon Sawicki 13b2ae29c2
[extractor/twitter] Support multi-video posts (#5183)
Closes #5157, Closes #5147
Authored by: Grub4K
2 years ago
Simon Sawicki 36069409ec
[cookies] Improve `LenientSimpleCookie` (#5195)
Closes #5186 
Authored by: Grub4K
2 years ago
pukkandan 0468a3b325
[jsinterp] Improve separating regex
Fixes https://github.com/yt-dlp/yt-dlp/issues/4635#issuecomment-1273974909
2 years ago
pukkandan d509c1f5a3
[utils] `strftime_or_none`: Workaround Python bug on Windows
CLoses #5185
2 years ago
schnusch 2c98d99818
[extractors/podbayfm] Add extractor (#4971)
Authored by: schnusch
2 years ago
bashonly 226c0f3a54
[extractor/sbs] Improve `_VALID_URL` (#5193)
Closes #5045
Authored by: bashonly
2 years ago
pukkandan ade1fa70cb
[extractor/generic] Separate embed extraction into own function (#5176) 2 years ago
Matthew 4c9a1a3ba5
[extractor/wordpress:mb.miniAudioPlayer] Add embed extractor (#5087)
Closes https://github.com/yt-dlp/yt-dlp/issues/4994

Authored by: coletdjnz
2 years ago
Simon Sawicki 1d55ebabc9
[extractor/common] Fix `json_ld` type checks (#5145)
Closes #5144, #5143
Authored by: Grub4K
2 years ago
tkgmomosheep f324fe8c59
[extractor/viu] Support subtitles of on-screen text (#5173)
Authored by: tkgmomosheep
2 years ago
HobbyistDev 866f037344
[extractor/nos.nl] Add extractor (#4822)
Closes #4649
Authored by: HobbyistDev
2 years ago
Marenga 5d14b73491
[VK] Fix playlist URLs (#4930)
Closes #2825
Authored by: the-marenga
2 years ago
Teemu Ikonen 540236ce11
[extractor/screen9] Add extractor (#5137)
Authored by: tpikonen
2 years ago
Simon Sawicki 7b0127e1e1
[utils] `traverse_obj`: Allow `re.Match` objects (#5174)
Authored by: Grub4K
2 years ago
Simon Sawicki f99bbfc983
[utils] `traverse_obj`: Always return list when branching (#5170)
Fixes #5162
Authored by: Grub4K
2 years ago
bashonly 3b55aaac59
[extractor/tubitv] Better DRM detection (#5171)
Closes #5128
Authored by: bashonly
2 years ago
bashonly 2e565f5bca
[extractor/reddit] Add fallback format (#5165)
Closes #5160
Authored by: bashonly
2 years ago
Noah e02e6d86db
[embedthumbnail] Fix thumbnail name in mp3 (#5163)
Authored by: How-Bout-No
2 years ago
Matthew 867c66ff97
[extractor/youtube] Extract concurrent view count for livestreams (#5152)
Adds new field `concurrent_view_count`
Closes https://github.com/yt-dlp/yt-dlp/issues/4843

Authored by: coletdjnz
2 years ago
bashonly f03940963e
[extractor/dplay] Add MotorTrendOnDemand extractor (#5151)
Closes #5141
Authored by: bashonly
2 years ago
Sergey 09c127ff83
[extractor/Tnaflix] Fix for HTTP 500 (#5150)
Closes #5107
Authored by: SG5
2 years ago
pukkandan aebb4f4ba7
Fix for formats=None
Fixes: https://github.com/yt-dlp/yt-dlp/pull/4965#issuecomment-1267682512
2 years ago
invertico bf2e1ec67a
[extractor/livestreamfails] Support posts (#5139)
Authored by: invertico
2 years ago
pukkandan 98d4ec1ef2
[build] Pin `py2exe` version
Workaround for #5135
2 years ago
pukkandan 1305b659ef
[extractor/detik] Avoid unnecessary extraction 2 years ago
github-actions 57fb88093e [version] update
Created by: pukkandan

:ci skip all :ci run dl
2 years ago
pukkandan 4e0511f27d
Release 2022.10.04 2 years ago
gamer191 304ad45a9b
[cleanup] Misc (#5044)
Authored by: gamer191, pukkandan
2 years ago
pukkandan 878eac3e2e
[docs] Separate notes about environment variables 2 years ago
coletdjnz 34859e4b32
[extractor/onenewsnz] Add extractor (#5088)
Authored by: coletdjnz
2 years ago
columndeeply 143a2ccab3
[extractor/prankcast] Add extractor (#4774)
Authored by: columndeeply, HobbyistDev
2 years ago
coletdjnz 1e0daeb314
[extractor/24tv.ua] Add extractors (#5121)
Closes #4287
Authored by: coletdjnz
2 years ago
HobbyistDev 7f5b3cb8b3
[extractor/booyah] Add extractor (#4834)
Closes #4583
Authored by: HobbyistDev, elyse0
2 years ago
jhwgh1968 c53e5cf59f
[extractor/redgifs] Fix extractor (#4892)
Closes #4805
Authored by: jhwgh1968
2 years ago
HobbyistDev c7f540ea1e
[extractor/detik] Generalize extractors (#4899)
Authored by: HobbyistDev, coletdjnz
2 years ago
Locke 12f153a827
[extractor/BilibiliSpace] Fix extractor, better error message (#5043)
Closes #5038
Authored by: lockmatrix
2 years ago
Bobscorn 0d887f273a
[extractor/IsraelNationalNews] Add extractor (#5089)
Closes #4019
Authored by: Bobscorn
2 years ago
Lesmiscore 4d37720a0c
[extractor/youtube] Download `post_live` videos from start (#5091)
* The fragments are generated as a `LazyList`. So only the required formats are expanded during download, but all fragment lists are printed/written in infojson.
* The m3u8 formats which cannot be downloaded from start are not extracted by default, but can be enabled with an extractor-arg. The extractor-arg `include_live_dash` is renamed to `include_incomplete_formats` to account for this new use-case.

Closes #1564
Authored by: Lesmiscore, pukkandan
2 years ago
bashonly dd4411aac2
[extractor/nfl] Fix extractor (#5130)
Closes #1708
Authored by: bashonly
2 years ago
Livia Medeiros 1d77d8ce07
[extractor/holodex] Fix `_VALID_URL` (#4948)
Authored by: LiviaMedeiros
2 years ago
pukkandan a057779d5e
[cleanup] Minor fixes
Closes #5129, Closes #4982
2 years ago
coletdjnz 7474e4531e
[extractor/AmazonStore] Fix JSON extraction (#5111)
Fixes https://github.com/yt-dlp/yt-dlp/issues/5110

Authored by: coletdjnz
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
2 years ago
coletdjnz d3a3d7f0cc
[extractor/JWPlatform] Fix extractor (#5112)
Fix bitrate and filesize extraction and support embeds with unquoted urls.

Related: #5106 

Authored by: coletdjnz
2 years ago
bashonly 8671f995cc
[extractor/paramountplus] Better DRM detection (#5126)
Closes #5119
Authored by: bashonly
2 years ago
bashonly 4a61501db9
[extractor/anvato] Fix extractor and refactor (#5074)
Authored by: bashonly
2 years ago
m4tu4g 7244895bde
[extractor/zee5] Fix `_VALID_URL` (#5124)
Closes #4612
Authored by: m4tu4g
2 years ago
sam 177662e0f2
[extractor/MicrosoftEmbed] Add extractor (#5082)
Closes #2638
Authored by: DoubleCouponDay
2 years ago
Fabi019 f48ab881f6
[extractor/bundesliga] Add extractor (#5094)
Closes #2339
Authored by: Fabi019
2 years ago
zenerdi0de eb2d9504b9
[extractor/tennistv] Fix timestamp (#5085)
Authored by: zenerdi0de
2 years ago
Nitish Kumar 8a04054647
[extractor/hrfensehen] Fix extractor (#5096)
Authored by: snapdgn
2 years ago
pukkandan 8b7fb8b60d
[extractor] Make search_json able to parse lists
Now `contains_pattern` can be set to `\[.+\]`
2 years ago
Teemu Ikonen a83333c432
[extractor/iltalehti] Add extractor (#5117)
Authored by: tpikonen
2 years ago
Dhruv 573a98d6f0
[extractor/bongacams] Update `_VALID_URL` (#5104)
Closes #5075
Authored by: 0xGodspeed
2 years ago
std-move af7a5eef2f
[downloader/aria2c] Fix filename containing leading whitespace (#5099)
Similar to eb55bad5a0, but for fragmented downloads
Authored by: std-move
2 years ago
Itachi 576faf00b2
[extractor/Mxplayer] Fix extractor (#4966)
Closes #4946
Authored by: itachi-19
2 years ago
nixxo 81b6102d20
[downloader/ism] Support ec-3 codec (#5004)
Closes #296
Authored by: nixxo
2 years ago
tobi1805 acf306d1f9
[extractor/tv2] Support new url format (#5063)
Closes #4973
Authored by: tobi1805
2 years ago
HobbyistDev 20a7304e4c
[extractor/unscripted] Add extractor (#5008)
Closes #4903
Authored by: HobbyistDev
2 years ago
Simon Sawicki 2e0f8d4f6e
[extractor/yandexvideopreview] Update _VALID_URL (#5084)
Closes #5065
Authored by: Grub4K
2 years ago
HobbyistDev 7e378287c4
[extractor/malltv] Fix video_id extraction (#4883)
Closes #4870
Authored by: HobbyistDev
2 years ago
Mehavoid 9cc5aed990
[extractor/trovo] Fix extractors (#4880)
Authored by: Mehavoid
Closes #4878
2 years ago
Elyse 48f535f5f8
[extractor/tencent] Add Iflix extractor (#4829)
Closes #4823
Authored by: elyse0
2 years ago
Teemu Ikonen 8dbad2a439
[extractor/audioboom] Support direct URLs and refactor (#4803)
Authored by: tpikonen, pukkandan
2 years ago
bashonly 11398b922c
[extractor/nbc] Add NBCStations extractor (#5077)
Closes #4571
Authored by: bashonly
2 years ago
Simon Sawicki dfea94f8f6
[extractor/crunchyroll:beta] Improve handling of hardsubs (#5041)
Closes #3397
Authored by: Grub4K
2 years ago
coletdjnz f1aae71568
[extractor/rcs] Fix embed extraction
Fixes https://github.com/yt-dlp/yt-dlp/issues/5076

Authored by: coletdjnz
2 years ago
Anant Murmu a5642f2c4a
[extractor/zee5] Generate device ids (#5062)
Closes #4937
Authored by: freezboltz
2 years ago
Julien Hadley Jack 10e2eb4f81
[extractor/ondemandkorea] Update `jw_config` regex (#5040)
Authored by: julien-hadleyjack
2 years ago
coletdjnz c9eba8075f
[extractor/wordpress:playlist] Add generic embed extractor (#5012)
Fixes https://github.com/yt-dlp/yt-dlp/issues/4955

Authored by: coletdjnz
2 years ago
Fabi019 9d69c4e4b4
[extractor/BerufeTV] Add extractor (#4921)
Closes #4632
Authored by: Fabi019
2 years ago
Timendum 292fdad297
[extractor/dplay:italy] Add default authentication (#5056)
Closes #2950

Authored by: Timendum
2 years ago
Kyle Anthony Williams c04cc2e28e
[extractor/soundcloud:search] More metadata in `--flat-playlist` (#4965)
Authored by: SuperSonicHub1
2 years ago
pukkandan 7a32c70d13
[cleanup] Fix flake8 and minor refactor
Issues from ab029d7e92, 1fb53b946c
2 years ago
pukkandan 709ee21417
[extractor/youtube] Do not warn on duplicate chapters
Eg: vYbaM8w8yzw
2 years ago
pukkandan 1fb53b946c
[extractor/youtube:tab] Improve continuation items extraction 2 years ago
pukkandan 1dd18a8808
[extractor/YoutubeShortsAudioPivot] Support `source` URLs
`ytshortsap:` is no longer needed
2 years ago
pukkandan 0a5095fe8d
[extractor/youtube:tab] Support `reporthistory` page
Closes #4929
2 years ago
pukkandan 0f60ba6e65
[extractor] Improve json+ld extraction
Related #5035
2 years ago
Simon Sawicki 1534aba865
[extractor/artetv] Remove duplicate stream urls (#5047)
Closes #4510
Authored by: Grub4K
2 years ago
coletdjnz 0ca0f88121
[extractor/heise] Fix extractor (#5029)
Fixes https://github.com/yt-dlp/yt-dlp/issues/1520
Authored by: coletdjnz
2 years ago
pukkandan 0500ee3d81
Don't download entire video when no matching `--download-sections` 2 years ago
pukkandan 46a5b335e7
[cookies] Let `_get_mac_keyring_password` fail gracefully
Closes #4915
2 years ago
pukkandan 914491b8e0
[utils] `Popen.run`: Fix default return in binary mode 2 years ago
Simon Sawicki ab029d7e92
[utils] `traverse_obj`: Rewrite, document and add tests (#5024)
Authored by: Grub4K
2 years ago
pukkandan 0bd5a039ea
Playlists maynot always have webpage_url 2 years ago
Lesmiscore 5c8b2ee9ec
[extractor/RUTV] Fix warnings for livestreams (#5016)
Authored by: Lesmiscore
2 years ago
Lesmiscore faf7863bb0
[extractor/Smotrim] Add extractor (#5015)
Authored by: nikita-moor, Lesmiscore
2 years ago
coletdjnz d42763a443
[extractor/rutube] Fix `_EMBED_REGEX`
Closes https://github.com/yt-dlp/yt-dlp/issues/4797

Authored by: coletdjnz
2 years ago
coletdjnz 3c757d5ed2
[extractor/wistia] Add support for channels (#4819)
Fixes https://github.com/yt-dlp/yt-dlp/issues/4748
Related: https://github.com/yt-dlp/yt-dlp/issues/4985

Authored by: coletdjnz
2 years ago
pukkandan f55523cfdd
[utils] `js_to_json`: Improve
Closes #4900
2 years ago
coletdjnz 32972518da
[extractor/telegraaf] Use mobile GraphQL API endpoint
Workaround for Cloudflare 403
Fixes https://github.com/yt-dlp/yt-dlp/issues/5000
Authored by: coletdjnz
2 years ago
Pritam Das 2e7675489f
[extractor/instagram] Extract more metadata (#4708)
Authored by: pritam20ps05
2 years ago
coletdjnz 80eb0bd9b9
[extractor/youtube] Add support for Shorts audio pivot feed (#4932)
This feed shows Shorts using the audio of a given video. 

ytshortsap: prefix can be used as a shortcut until YouTube
implements an official view. 

Closes #4911
Authored by: coletdjnz
2 years ago
Tanner Anderson 4cca2eb1bf
[extractor/nebula] Add nebula.tv (#4918)
Closes #4917
Authored by: tannertechnology
2 years ago
GautamMKGarg 1c09783f7a
[extractor/hungama] Add subtitle (#4856)
Authored by: GautamMKGarg, pukkandan
2 years ago
bashonly 163281178a
[extractor/wistia] Match IDs in embed URLs (#4990)
Closes #4985
Authored by: bashonly
2 years ago
pukkandan 2fa669f759
[docs] Misc improvements
Closes #4987, Closes #4906, Closes #4919, Closes #4977, Closes #4979
2 years ago
pukkandan 8ca48a1a54
[extractor] Fix `fatal=False` in `RetryManager` 2 years ago
pukkandan b27bc13af6
[extractor/patreon] Sort formats 2 years ago
bashonly f7c5a5e967
[extractor/tiktok] Fix TikTokIE (#4984)
Authored by: bashonly
2 years ago
Jeroen Jacobs fada8272b6
[extractor/GoPlay] Add extractor (#3412)
Replaces old Vier extractors

Closes https://github.com/yt-dlp/yt-dlp/issues/1546
Based on: https://github.com/ytdl-org/youtube-dl/pull/27815
Authored by: jeroenj, CNugteren, basrieter
2 years ago
josanabr 46d72cd2c7
[devscripts] make_lazy_extractors: Fix for Docker (#4958)
Authored by: josanabr
2 years ago
pukkandan 19b4e59a1e
[extractor/web.archive:youtube] Fix _YT_INITIAL_PLAYER_RESPONSE_RE 2 years ago
pukkandan dab284f80f
Workaround `libc_ver` not be available on Windows Store version of Python 2 years ago
pukkandan 9665f15a96
[outtmpl] Make `%s` work in strfformat for all systems 2 years ago
pukkandan 2b24afa6d7
Improve 5736d79172 2 years ago
pukkandan 3166e6840c
[extractor/generic] Pass through referer from json-ld
Closes #4941
2 years ago
Simon Sawicki 8817a80d3a
[cookies] Parse cookies leniently (#4780)
Closes #4776, #3778
Authored by: Grub4K
2 years ago
pukkandan 5736d79172
Support environment variables in `--ffmpeg-location`
Closes #4938
2 years ago
Lesmiscore fc2ba496fd
Allow open ranges for time ranges (#4940)
Authored by: Lesmiscore
2 years ago
Locke 2b9d02167f
[extractor/bilibili] Add space.bilibili extractors (#4468)
Authored by: lockmatrix
2 years ago
pukkandan 2314b4d89f
Allow plugin extractors to replace the built-in ones
This allows easier plugin chaining; e.g.
- https://gist.github.com/pukkandan/24f13ff1ed385c5a390c1d7bd130d8f7
- https://gist.github.com/pukkandan/fcf5ca1785c80f64e471f0ee14f990fb
2 years ago
pukkandan 1060f82f89
Fix `--config-location -` 2 years ago
bashonly 22df97f9c5
Fix bug in 941e881e1f (#4893)
Authored by: bashonly
2 years ago
pukkandan 9c935fbc72
Fix bug in ae1035646a
Closes #4890
2 years ago
pukkandan deae7c1711
[cleanup] Misc 2 years ago
pukkandan 941e881e1f
Fix bug in ae1035646a
Closes #4881
2 years ago
pukkandan 0cb0fdbbfe
[extractor/common] Escape `%` in `representation_id` of m3u8
Closes #4877
2 years ago
coletdjnz 0831d95c46
[extractor/BiliIntl] Support uppercase lang in `_VALID_URL`
Seen in some rare cases
Authored by: coletdjnz
2 years ago
coletdjnz c26f9b991a
[extractor/youtube] Support changing extraction language (#4470)
Adds `--extractor-args youtube:lang=<supported lang code>` extractor arg to prefer translated fields (e.g. title and description) of that language, if available, for all YouTube extractors. See README or error message for list of supported language codes.

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

Authored by: coletdjnz
2 years ago
CplPwnies 0c0b78b273
[extractor/adobepass] Add MSO AlticeOne (Optimum TV) (#4875)
* Suddenlink rebrand to Optimum. Fixes #4874

Authored by: CplPwnies
2 years ago
coletdjnz 3ffb2f5bea
[extractor/youtube] Fix video like count extraction
Support new combined button layout
Authored by: coletdjnz
2 years ago
pukkandan ae1035646a
Allow a `set` to be passed as `download_archive` 2 years ago
pukkandan 1015ceeeaf
[extractor/MLBTV] Detect live streams 2 years ago
pukkandan 17ffed1842
[docs] Improvements
* Move detailed installation instructions to https://github.com/yt-dlp/yt-dlp/wiki/Installation
* Link to wiki where applicable
* Fix some mistakes. Closes #4853, Closes #4855, Closes #4852
* Improve some error messages
2 years ago
pukkandan be9c0884d7
[extractor/BiliIntlSeries] Fix `_VALID_URL`
Closes #4825
2 years ago
pukkandan 48c8424bd9
Fix bug in 07a1250e0e 2 years ago
Elyse 7657ec7ed6
[utils] `base_url`: URL paths can contain `&` (#4841)
Authored by: elyse0
Closes #4187
2 years ago
pukkandan 07a1250e0e
[outtmpl] Curly braces to filter keys 2 years ago
Elyse 69082b38dc
[phantomjs] Fix bug in 587021cd9f (#4833)
Authored by: elyse0
2 years ago
coletdjnz aa824dd10b
[extractor/mediaworksnzvod] Add extractor (#4817)
Authored by: coletdjnz
2 years ago
TokyoBlackHole a12d03e15d
[extractor/animeondemand] Remove extractor (#4830)
Authored by: TokyoBlackHole
2 years ago
pukkandan 1a7c9fad9f
[jsinterp] Workaround operator associativity issue
https://github.com/yt-dlp/yt-dlp/issues/4635#issuecomment-1235384480
2 years ago
Lesmiscore 3c7a276234
[extractor/amazonstore] Retry to avoid captcha page (#4811)
Authored by: Lesmiscore
2 years ago
bashonly d6f8871964
[extractor/triller] Fix auth token (#4813)
Authored by: bashonly
2 years ago
pukkandan 5469a4ab11
[extractor/motorsport] Support native embeds
Closes #4749
2 years ago
pukkandan 2c475e48b5
[extractor/bandcamp] Extract `uploader_url`
Closes #4755
2 years ago
pukkandan 7c6eb424d3
[extractor/youtube] Detect `lazy-load-for-videos` embeds
Closes #4812
2 years ago
github-actions adba24d207 [version] update
Created by: pukkandan

:ci skip all :ci run dl
2 years ago
pukkandan 5d7c7d6569
Release 2022.09.01 2 years ago
pukkandan d2c8aadf79
[cleanup] Misc
Closes #4710, Closes #4754, Closes #4723
Authored by: pukkandan, MrRawes, DavidH-2022
2 years ago
pukkandan 1ac7f46184
Update to ytdl-commit-ed5c44e7
[compat] Replace deficient ChainMap class in Py3.3 and earlier
ed5c44e7b7
2 years ago
pukkandan 05deb747bb
[jsinterp] Fix escape in regex 2 years ago
pukkandan b505e8517a
[extractor/youtube] Fallback regex for nsig code extraction 2 years ago
pukkandan f2e9fa3ef7
[FormatSort] Fix `aext` for `--prefer-free-formats`
Closes #4735
2 years ago
satan1st 50a399326f
[build] `make tar' should not follow `DESTDIR` (#4790)
Ref: https://www.gnu.org/prep/standards/html_node/DESTDIR.html
Authored by: satan1st
2 years ago
coletdjnz 1ff88b7aec
[extractor/youtube] Add `no-youtube-prefer-utc-upload-date` compat option (#4771)
This option reverts 992f9a730b and 17322130a9 to prefer the non-UTC upload date in microformats.

Authored by: coletdjnz, pukkandan
2 years ago
bashonly 825d3ce386
[cookies] Improve container support (#4806)
Closes #4800
Authored by: bashonly, pukkandan, coletdjnz
2 years ago
bashonly 92aa6d6883
[extractor/triller] Add extractor (#4712)
Closes #4703
Authored by: bashonly
2 years ago
Elyse b2a4db425b
[VQQ] Add extractors (#4706)
Closes #1666
Authored by: elyse0
2 years ago
Yifu Yu de49cdbe9d
[extractor/bilibili] Extract `flac` with premium account (#4759)
Authored by: jackyyf
2 years ago
shirt 9f9c85dda4
[Build] Update pyinstaller 2 years ago
HobbyistDev 11734714c2
[extractor/eurosport] Add extractor (#4613)
Closes #2487
Authored by: HobbyistDev
2 years ago
pukkandan b86ca447ce
[extractor/mediaset] Fix embed extraction
Closes #4804
2 years ago
Tejas Arlimatti f8c7ba9984
[extractor/epoch] Add extractor (#4772)
Closes #4714
Authored by: tejasa97
2 years ago
DepFA 76f2bb175d
[extractor/stripchat] Don't modify input URL (#4781)
Authored by: dfaker
2 years ago
Elyse f26af78a8a
[jsinterp] Add `charcodeAt` and bitwise overflow (#4706)
Authored by: elyse0
2 years ago
Lesmiscore bfbecd1174
[extractor/newspicks] Add extractor (#4725)
Authored by: Lesmiscore
2 years ago
bashonly 9bd13fe5bb
[cookies] Support firefox container in `--cookies-from-browser` (#4753)
Authored by: bashonly
2 years ago
Jeff Huffman 459262ac97
[extractor/crunchyroll:beta] Use anonymous access (#4704)
Closes #4692
Authored by: tejing1
2 years ago
Lesmiscore 82ea226c61
Restore LD_LIBRARY_PATH when using PyInstaller (#4666)
Authored by: Lesmiscore
2 years ago
pukkandan da4db748fa
[utils] Add `deprecation_warning`
See https://github.com/yt-dlp/yt-dlp/pull/2173#issuecomment-1097021515
2 years ago
pukkandan e1eabd7beb
[downloader/external] Smarter detection of executable
Closes #4778
2 years ago
pukkandan d81ba7d491
[jsinterp, extractor/youtube] Minor fixes 2 years ago
OHaiiBuzzle 5135ed3d4a
[extractor/huya] Fix stream extraction (#4798)
Closes #4658
Authored by: ohaiibuzzle
2 years ago
pukkandan c4b2df872d
[jsinterp] Fix `_separate`
Ref: https://github.com/yt-dlp/yt-dlp/issues/4635#issuecomment-1231126941
2 years ago
Samantaz Fox 224b5a35f7
[extractor/youtube] Update iOS Innertube clients (#4792)
Authored by: SamantazFox
2 years ago
coletdjnz 50ac0e5416
[extractor/youtube] Use device-specific user agent (#4770)
Thwart latest fingerprinting attempt (see https://github.com/iv-org/invidious/issues/3230#issuecomment-1226887639)

Authored by: coletdjnz
2 years ago
Lesmiscore e0992d5558
[extractor/IslamChannel] Add extractors (#4779)
Authored by: Lesmiscore
2 years ago
pukkandan 5e01315aa1
[cache, extractor/youtube] Invalidate old cache 2 years ago
pukkandan 4e4982ab5b
[extractor/generic] Don't return JW player without formats
CLoses #4765
2 years ago
cgrigis 89e4d86171
[extractor/arte] Bug fix (#4769)
Closes #4768
Authored by: cgrigis
2 years ago
Shreyas Minocha a1af516259
[extractor/screencastomatic] Support `--video-password` (#4761)
Authored by: shreyasminocha
2 years ago
pukkandan 1d64a59547
[extractor/vimeo:user] Fix _VALID_URL
Closes #4758
2 years ago
pukkandan ca7f8b8f31
Bugfix for 822d66e591
Closes #4760
2 years ago
pukkandan 164b03c486
[jsinterp] Fix bug in operator precedence
Fixes https://github.com/yt-dlp/yt-dlp/issues/4635#issuecomment-1226659543
2 years ago
pukkandan e5458d1d88
Fix lazy extractor bug in fe7866d0ed
and add test

Fixes https://github.com/yt-dlp/yt-dlp/pull/3234#issuecomment-1225347071
2 years ago
pukkandan b5e7a2e69d
Add version to infojson 2 years ago
pukkandan 2516cafb28
Fix bug in fe7866d0ed 2 years ago
pukkandan fd404bec7e
Fix `--break-per-url --max-downloads` 2 years ago
pukkandan fe7866d0ed
Add option `--use-extractors`
Deprecates `--force-generic-extractor`

Closes #3234, Closes #2044

Related: #4307, #1791
2 years ago
pukkandan 5314b52192
[utils] Add orderedSet_from_options 2 years ago
pukkandan 13db4e7b9e
[extractor/mixcloud] All formats are audio-only
Closes #4740
2 years ago
Joshua Lochner 07275b708b
[extractor/medaltv] Fix extraction (#4739)
Authored by: xenova
2 years ago
Elyse b85703d11a
[extractor/rtbf] Fix jwt extraction (#4738)
Closes #4683
Authored by: elyse0
2 years ago
pukkandan 992dc6b486
[jsinterp] Implement timeout
Workaround for #4716
2 years ago
pukkandan 822d66e591
Fix bug in `--alias` 2 years ago
pukkandan 8d1ad6378f
[extractor/BiliBiliSearch] Don't sort by date
Related #4682
2 years ago
pukkandan 2d1019542a
[extractor/BiliBiliSearch] Fix infinite loop
Closes #4682
2 years ago
pukkandan b25cac650f
[extractor/youtube] Fix bug in format sorting 2 years ago
pukkandan 90a1df305b
[test] Fix test_youtube_signature 2 years ago
pukkandan 0a6b4b82e9
[extractor/uktv] Improve _VALID_URL
Closes #4707
Authored by: dirkf
2 years ago
pukkandan 1704c47ba8
[extractor/bitchute] Mark errors as expected
Closes #4685
2 years ago
github-actions b76e9cedb3 [version] update
Created by: pukkandan

:ci skip all :ci run dl
2 years ago
pukkandan 48c88e088c
Release 2022.08.19 2 years ago
pukkandan a831c2ea90
[cleanup] Misc 2 years ago
pukkandan be13a6e525
[jsinterp] Bring on-par with youtube-dl
Code from: https://github.com/ytdl-org/youtube-dl/pull/31175, https://github.com/ytdl-org/youtube-dl/pull/31182

Authored by pukkandan, dirkf
2 years ago
bashonly 8a3da4c68c
[extractor/instagram] Fix bugs in 7d3b98be4c (#4701)
Authored by: bashonly
2 years ago
nixxo 4d37d4a77c
[extractor/rai] Minor fix (#4700)
Closes #4691, #4690
2 years ago
bashonly 7d3b98be4c
[extractor/instagram] Fix extraction (#4696)
Closes #4657, #4532, #4475
Authored by: bashonly, pritam20ps05
2 years ago
Elyse 2b3e43e247
[extractor/rtbf] Fix stream extractor (#4671)
Closes #4656
Authored by: elyse0
2 years ago
Alexander Seiler f60ef66371
[extractor/zattoo] Fix Zattoo resellers (#4675)
Closes #4630
Authored by: goggle
2 years ago
pukkandan 25836db6be
[extractor/youtube] Add fallback to phantomjs
Related #4635
2 years ago
pukkandan 587021cd9f
[phantomjs] Add function to execute JS without a DOM
Authored by: MinePlayersPE, pukkandan
2 years ago
pukkandan 580ce00782
[youtube] Improve signature caching
and refactor related functions
2 years ago
ChillingPepper 2f1a299c50
[extractor/SovietsCloset] Fix extractor (#4688)
Closes #4200 
Authored by: ChillingPepper
2 years ago
pukkandan f6ca640b12
[jsinterp] Fix for youtube player 1f7d5369
Closes #4635 again
2 years ago
pukkandan 3ce2933693
[youtube] Fix error reporting of "Incomplete data"
Related: #4669
2 years ago
pukkandan c200096c03
Fix bug in --download-archive
Closes #4668
2 years ago
pukkandan 6d3e7424bf
[jsinterp] Fix for youtube player c81bbb4a 2 years ago
pukkandan 5c6d2ef9d1
[youtube] Improve format sorting for IOS formats
When no itag/resolution is available for reference, use the closest resolution
2 years ago
Lesmiscore 460eb9c50e
[build] Exclude devscripts from installs
Closes #4667
2 years ago
github-actions 9fd03a1696 [version] update
Created by: pukkandan

:ci skip all :ci run dl
2 years ago
pukkandan 55937202b7
Release 2022.08.14 2 years ago
pukkandan 1e4fca9a87
[cleanup] Misc 2 years ago
pukkandan 49b4ceaedf
[jsinterp] Bring or-par with youtube-dl
Partially cherry-picked from: d231b56717

Authored by pukkandan, dirkf
2 years ago
pukkandan d711839760
Update to ytdl-commit-e6a836d
[core] Make `--max-downloads ...` stop immediately on reaching the limit
e6a836d54c
2 years ago
pukkandan 48732becfe
Fix bug in 1155ecef29 2 years ago
pukkandan 6440c45ff3
[update] Copy bitmask from old binary
Improves a6125983ab

Authored by: Lesmiscore
2 years ago
masta79 ef6342bd07
[extractor/toggo] Improve `_VALID_URL` (#4663)
Authored by: masta79
2 years ago
ischmidt20 e183bb8c9b
[extractor/MLB] New extractor (#4586)
Authored by: ischmidt20
2 years ago
HobbyistDev 7695f5a0a7
[extractor/moview] Add extractor (#4607)
Authored by: HobbyistDev
2 years ago
Ben Welsh cb7cc448c0
[extractor/truth] Add extractor (#4609)
Closes #3865
Authored by: palewire
2 years ago
bashonly 63be30e3e0
[extractor/facebook] Add reel support (#4660)
Closes #4039 
Authored by: bashonly
2 years ago
Ben Welsh 43cf982ac3
[extractor/parler] Add extractor (#4616)
Authored by: palewire
2 years ago
nixxo 7e82397441
[extractor/rai] Misc fixes (#4600)
Authored by: nixxo
2 years ago
Aldo Ridhoni 66c4afd828
[extractor/doodstream] Add `wf` domain (#4648)
Authored by: aldoridhoni
2 years ago
pukkandan 0e0ce898f6
[ThumbnailsConvertor] Fix conversion after fixup_webp
Closes #4565
2 years ago
pukkandan a6125983ab
[update] Set executable bit-mask
Closes #4621
2 years ago
pukkandan 8f84770acd
[utils] Fix `get_compatible_ext`
Closes #4647
2 years ago
Lesmiscore 62b58c0936
[docs] Consistent use of `e.g.` (#4643)
Authored by: Lesmiscore
2 years ago
pukkandan 8f53dc44a0
[jsinterp] Handle new youtube signature functions
Closes #4635
2 years ago
Jacob Truman 1cddfdc52b
[extractor/aenetworks] Add formats parameter (#4645)
Closes #4047
Authored by: jacobtruman
2 years ago
coletdjnz cea4b857f0
[patreon] Ignore erroneous media attachments (#4638)
Fixes https://github.com/yt-dlp/yt-dlp/issues/4608
Authored by: coletdjnz
2 years ago
shirt ffcd62c289
[extractor/tubitv] Extract additional formats (#4646)
Authored by: shirt-dev
2 years ago
pukkandan a1c5bd82ec
[jsinterp] Truncate error messages
Related: #4635
2 years ago
pukkandan 5da42f2b9b
[extractor/crunchyroll] Improve `_VALID_URL`s
Closes #4633
2 years ago
pukkandan 1155ecef29
[extractor/zattoo] Fix resellers
Fixes #4630
2 years ago
pukkandan 96623ab5c6
[devscripts] Fix import
Closes #4603
2 years ago
pukkandan 7e798d725e
[extractor] Fix format sorting of `channels` 2 years ago
pukkandan 8420a4d063
[ffmpeg] Smarter detection of ffprobe filename 2 years ago
pukkandan b5e9a641f5
[postprocessor/embedthumbnail] Detect libatomicparsley.so 2 years ago
pukkandan c220d9efc8
[ffmpeg] Disable avconv unless `--prefer-avconv` 2 years ago
pukkandan 81e0195998
[build] Fix changelog
Bug in c4b6c5c7c9
2 years ago
github-actions f1e2d4a9a2 [version] update
Created by: pukkandan

:ci skip all :ci run dl
2 years ago
pukkandan 3157158f76
Release 2022.08.08 2 years ago
pukkandan 16d4535abc
Update to ytdl-commit-adb5294
[aenetworks] Update _THEPLATFORM_KEY and _THEPLATFORM_SECRET
adb5294177
2 years ago
Elyse 2a5e5477bc
[extractor/redbee] Unify and update extractors (#4479)
Closes #4443
Authored by: elyse0
2 years ago
Eren Kemer e251986cbe
[extractor/harpodeon] Add extractor (#4540)
Closes #4450
Authored by: eren-kemer
2 years ago
pukkandan f0ad6f8c51
Remove filtered entries from `-J`
Closes #4369
2 years ago
pukkandan 70b2340909
[build, devscripts] Add devscript to set a build variant
Closes #4471
2 years ago
pukkandan 115add4387
[devscripts] Create `utils` and refactor 2 years ago
shirt c4b6c5c7c9
[build] Improve build process (#4513)
Authored by: shirt-dev
2 years ago
coletdjnz c7dcf0b31e
[extractor/youtube] Add `androidSdkVersion` parameter to Android Innertube clients
Required to prevent YouTube returning a bad player response in some cases.

See: https://github.com/yt-dlp/yt-dlp/pull/4593, https://github.com/TeamNewPipe/NewPipe/issues/8713, https://github.com/iv-org/invidious/issues/3230, https://github.com/Tyrrrz/YoutubeExplode/issues/647

Authored by: coletdjnz
2 years ago
Djeson 298d9c0e89
[extractor/ninegag] Extract uploader (#4597)
Closes #4587
Authored by: DjesonPV
2 years ago
pukkandan a416623436
[extractor/youtube] Extract more format info 2 years ago
pukkandan b8ed0f15d4
[extractor] Add field `audio_channels` 2 years ago
pukkandan 22b22b7d5c
[extractor/WASDTV:record] Fix `_VALID_URL` 2 years ago
HobbyistDev 1f6b90ed8d
[extractor/tviplayer] Improve `_VALID_URL` (#4585)
Closes #4578
Authored by: HobbyistDev
2 years ago
coletdjnz a3e9642116
[extractor/youtube] Prevent redirect to unwanted videos (#4593)
Example: https://www.youtube.com/watch?v=aQvGIIdgFDM

Authored by: coletdjnz
2 years ago
pukkandan 43aebb7db4
Bugfix for bfd973ece3
`_extract_embed_urls` is not a list

Closes #4581
2 years ago
Yash Kumar 061a17abd3
[extractor/FIFA] Change API endpoint (#4577)
Closes #4566
Authored by: yashkc2025, Bricio
2 years ago
HobbyistDev d380fc1614
[extractor/kompas] Add extractor (#4562)
Authored by: HobbyistDev
2 years ago
HobbyistDev ad26f15a06
[extractor/vidio] Support embed link (#4564)
Authored by: HobbyistDev
2 years ago
Bojidar Qnkov aeaf905e22
[extractor/NovaPlay] Fix extractor (#4415)
Closes #4439
Authored by: Bojidarist
2 years ago
pukkandan 97d9c79e92
Fix tests for 989a01c261 2 years ago
Jeff Huffman f62f553d46
[extractor/crunchyroll:beta] Use streams API (#4555)
Closes #4452
Authored by: tejing1
2 years ago
pukkandan 989a01c261
[outtmpl] Smarter replacing of unsupported characters
Closes #1330
2 years ago
pukkandan 05e2243e80
Fix bug in be5c1ae862 2 years ago
pukkandan 4080efeb01
[extractor/vimeo] Bugfix in bfd973ece3 2 years ago
Lauren N. Liberda fc61aff41b
Determine merge container better (See desc) (#1482)
* Determine the container early. Closes #4069
* Use codecs instead of just file extensions
* Obey `--prefer-free-formats`
* Allow fallbacks in `--merge-output`

Authored by: pukkandan, selfisekai
2 years ago
pukkandan fe0918bb65
Import ctypes only when necessary
Closes #4541
2 years ago
Jeff Huffman b99ba3df09
[extractor/crunchyroll:beta] Extract timestamp and fix tests (#4535)
Closes #4533
Authored by: tejing1
2 years ago
pukkandan 7356a44443
Fix misleading DRM message
Closes #4534
2 years ago
coletdjnz a0c830f488
[extractor/youtube] Bump Innertube client versions
YouTube may be requiring new versions soon. See https://github.com/iv-org/invidious/issues/3230, https://github.com/TeamNewPipe/NewPipe/issues/8713

Authored by: coletdjnz
2 years ago
pukkandan a6ca61d427
Fix bug in 0647d9251f 2 years ago
Galiley d8657ff76f
[extractor/xfileshare] Add Referer (#4494)
Authored by: Galiley
2 years ago
pukkandan 5770293d25
[extractor/orf:radio] Rewrite extractors
Closes #4522
2 years ago
pukkandan 0647d9251f
Minor bugfixes 2 years ago
pukkandan be5c1ae862
Standardize retry mechanism (#1649)
* [utils] Create `RetryManager`
* Migrate all retries to use the manager
* [extractor] Add wrapper methods for convenience
* Standardize console messages for retries
* Add `--retry-sleep` for extractors
2 years ago
pukkandan bfd973ece3 [extractors] Use new framework for existing embeds (#4307)
`Brightcove` is difficult to migrate because it's subclasses may depend
on the signature of the current functions. So it is left as-is for now

Note: Tests have not been migrated
2 years ago
pukkandan 1e8fe57e5c [extractor] Support multiple archive ids for one video (#4307)
Closes #4352
2 years ago
pukkandan f14a2d8382 [extractor/html5] Separate into own extractor (#4307)
Closes #4291

Authored by: coletdjnz, pukkandan
2 years ago
pukkandan 5fff2e576f [extractor/camtasia] Separate into own extractor (#4307)
Authored by: coletdjnz
2 years ago
pukkandan f2e8dbcc00 [extractor, test] Basic framework for embed tests (#4307)
and split download tests so they can be more easily run in CI

Authored by: coletdjnz
2 years ago
pukkandan 8f97a15d1c [extractor] Framework for embed detection (#4307) 2 years ago
nixxo 47304e07dc
[extractor/rai] Add raisudtirol extractor (#4524)
Closes #4206
Authored by: nixxo
2 years ago
Lesmiscore 565a4c5944
[extractor/YahooJapanNews] Fix extractor (#4480)
Authored by: Lesmiscore
2 years ago
pukkandan 2ebe6fefbe
[extractor/yandexmusic] Extract higher quality format
Closes #4512
2 years ago
pukkandan 5f2a7f7c4a
[FFmpegThumbnailsConvertor] Fix conversion from GIF
Closes #2988
2 years ago
pukkandan 30389593c2
[docs] Clarify `best*`
Closes #4373
2 years ago
christoph-heinrich d4ada3574e
[docs] Fix capitalization in references (#4515)
Authored by: christoph-heinrich
2 years ago
Juhmer Tena e1bd953f45
[extractor/angel] Add extractor (#4410)
Closes #1243
Authored by: AxiosDeminence
2 years ago
sqrtNOT 98a60600b2
[extractors/holodex] Add extractor (#4434)
Closes #726 
Authored by: sqrtNOT, pukkandan
2 years ago
lazypete365 e325a21a1f
[extractor/youtube] Add `live_status=post_live` (#4495)
Related: https://github.com/yt-dlp/yt-dlp/issues/1564
Authored by: lazypete365
2 years ago
pukkandan 3df4f81dfe
[downloader] Add average speed to final progress line
Fixes: https://github.com/ytdl-org/youtube-dl/issues/31122
2 years ago
pukkandan 31b532a1f2
[cleanup] Misc 2 years ago
pukkandan daef791100
[utils] sanitize_open: Allow any IO stream as stdout
Fixes: https://github.com/yt-dlp/yt-dlp/issues/3298#issuecomment-1181754989
2 years ago
pukkandan a6bcaf71fc
[outtmpl] Treat empty values as None in filenames
Workaround for #4485
2 years ago
pukkandan 4f04be6add
Validate `--merge-output-format`
Closes #4489
2 years ago
pukkandan 8dc5930511
[utils, cleanup] Consolidate known media extensions 2 years ago
pukkandan b4daacb4ec
[mhtml, cleanup] Use imghdr 2 years ago
pukkandan 6a7d3a0a09
[ffmpeg] Set `ffmpeg_location` in a contextvar
Fixes #2191 for the CLI, but not when used through the API
2 years ago
pukkandan c646d76f67
[webvtt, extractor/youtube] Extract auto-subs from livestream VODs
Closes #4130

Authored by: pukkandan, fstirlitz
2 years ago
pukkandan 07b47084ba
[extractor/youtube] Parse translated subtitles only when requested
Closes #4274
2 years ago
pukkandan 4f547d6d2c
[metadataparser] Don't set `None` when the field didn't match
Fixes: https://github.com/ytdl-org/youtube-dl/issues/31118#issuecomment-1198254512
2 years ago
ischmidt20 2eae7d507c
[extractor/ESPN] Extract duration (#4499)
Authored by: ischmidt20
2 years ago
mpeter50 1cdf69c57e
[extractor/twitch] Extract chapters for single chapter VODs (#4453)
Closes #4421 
Authored by: mpeter50
2 years ago
Galiley b6cd135ac2
[extractor/doodstream] Support more domains (#4493)
Authored by: Galiley
2 years ago
Anant Murmu befcac11a0
[extractor/stripchat] Fix _VALID_URL (#4491)
Closes https://github.com/yt-dlp/yt-dlp/issues/4486

Authored by: freezboltz
2 years ago
haobinliang 7f71cee020
[extractor/cloudflarestream] Fix video_id padding (#4384)
Fixes https://github.com/ytdl-org/youtube-dl/issues/26640

Authored by: haobinliang
2 years ago
Elyse db5f248204
[extractor/ina] Improve extractor (#4487)
Closes #4419
Authored by: elyse0
2 years ago
coletdjnz 871a8929bc
[extractor/archiveorg] Improve handling of formats (#4461)
* Ignore private formats if not logged in (fixes https://github.com/yt-dlp/yt-dlp/issues/3832)
* Prefer original formats
* Support mpg formats

Authored by: coletdjnz, pukkandan
2 years ago
ajj8 edebb65170
[extractor/bbc] Fix news articles (#4472)
Authored by: ajj8
2 years ago
pukkandan f640e42ffa
[extractor/arte] Fix title extraction
Fixes: https://github.com/yt-dlp/yt-dlp/pull/3302#issuecomment-1197568420
2 years ago
Mehavoid 59f63c8f0f
[extractor/vk] Fix extractor (#4128)
Closes #4437
Authored by: Mehavoid
2 years ago
ping bfbb5a1bb1
[extractor/NaverNow] Change endpoint (#4457)
Authored by: ping
2 years ago
Felix S 051d6b450c
[extractor/arte] Move to v2 API (#3302)
Closes #3622, #3502, #3086

Authored by: fstirlitz, pukkandan
2 years ago
HobbyistDev 67685a541d
[extractor/tempo] Add extractor (#4463)
Authored by: HobbyistDev
2 years ago
pukkandan 964b5493a4
Bugfix for f1042989c1 2 years ago
pukkandan 3955b20703
Fix bugs in 3bec830a59
Closes #4454
2 years ago
pukkandan f1042989c1
[crunchyroll] Fix language code in _VALID_URLs
Closes #4451
2 years ago
ischmidt20 e2884db36a
[extractor/Go] Extract timestamp (#4186)
Authored by: ischmidt20
2 years ago
winterbird-code 2c646fe42c
[extractor/hidive] Fix cookie login when netrc is also given (#4447)
Closes #3336

Authored by: winterbird-code
2 years ago
pukkandan 693f060040
[youtube,twitch] Allow waiting for channels to become live
Closes #2597
2 years ago
pukkandan 3bec830a59
Reject entire playlists faster with `--match-filter`
Rejected based on `playlist_id` etc can be checked before any entries are extracted

Related: #4383
2 years ago
Burve 7d0f6f0c45
[extractor/Crunchyroll] Handle missing metadata correctly (#4405)
Closes #4399

Authored by pukkandan, Burve
2 years ago
Sipherdrakon 26bafe7028
[extractor/dplay] Add MotorTrend extractor (#4446)
Authored by: Sipherdrakon
2 years ago
nixxo 0cd2810379
[extractor/rai] Fix RaiNews extraction (#4380)
Authored by: nixxo

Closes #3911
2 years ago
m4tu4g 0f7247f88e
[extractor/zee5] Update Device ID (#4423)
Closes #4378

Authored by: m4tu4g
2 years ago
sqrtNOT 2dc4970e08
[extractor/tubi] Exclude playlists from playlist entries (#4416)
Closes #4409 

Authored by: sqrtNOT
2 years ago
coletdev 4f08e58655
[extractor/patreon] Fix and improve extractors (#4398)
* Add workaround for 403s - Fixes https://github.com/yt-dlp/yt-dlp/issues/3631
* Support m3u8 post file videos - Fixes https://github.com/yt-dlp/yt-dlp/issues/2277
* Raise useful error messages - Fixes https://github.com/yt-dlp/yt-dlp/issues/2914
* `--write-comments` support

Authored by: coletdjnz, pukkandan
2 years ago
sqrtNOT dcbf7394ab
[vgtv] Support tv.vg.no (#4404)
Closes #4400 
Authored by: sqrtNOT
2 years ago
Bricio c40f327a16
[extractor/globo:article] Remove false positives (#4396)
Authored by: Bricio
2 years ago
pukkandan 81bf0943ea
[docs] Fix bug report issue template
Closes #4393
2 years ago
pukkandan b79f9e302d
`--compat-option no-live-chat` should disable danmaku
Closes #4387
2 years ago
Lesmiscore bc83b4b06c
[extractor/AbemaTVTitle] Implement paging (#4376)
Authored by: Lesmiscore
2 years ago
shirt 8ef5af1942
[build] Update pyinstaller 2 years ago
pukkandan 6929b41a21
Remove Python 3.6 support
Closes #3764
2 years ago
github-actions 0b5583b112 [version] update
Created by: pukkandan

:ci skip all :ci run dl
2 years ago
pukkandan 135f05ef66
Release 2022.07.18 2 years ago
pukkandan c6e07cf1e1
[cleanup] Misc 2 years ago
pukkandan ce7f6aa660
Fix bug in 2aab569f1c
Closes #4371
2 years ago
pukkandan 1765c6039e
[extractor/MangoTV] Fix subtitle languages
Closes #4315
2 years ago
pukkandan fbb888a3d5
[extractor/BiliIntl] Fix subtitle extraction
Closes #4359
Authored by: MinePlayersPE
2 years ago
Elyse 2aab569f1c
[extractor/wetv] Add extractors (#4330)
Closes #1115
Authored by: elyse0
2 years ago
Ehtisham Sabir 2e2c60c4ba
[extractor/wikimedia] Add extractor (#4314)
Based on https://github.com/ytdl-org/youtube-dl/pull/30796
Authored by: EhtishamSabir, pukkandan
2 years ago
HobbyistDev 306770819e
[extractor/Netverse] Improve playlist extractor (#3854)
Authored by: HobbyistDev
2 years ago
chris dfa6661e0f
[extractor/rtvsl] Add extractor (#2586)
Authored by: iw0nderhow, pukkandan
2 years ago
pukkandan 24093d52a7
[update] Prepare to remove Python 3.6 support 2 years ago
pukkandan f5e438a976
[compat] Let PyInstaller detect _legacy module 2 years ago
pukkandan d08e1e6875
Fix bug in 5200976949 2 years ago
sqrtNOT 956f1cf805
[extractor/philharmoniedeparis] Fix extractor (#4367)
Closes #4297
Authored by: sqrtNOT
2 years ago
sqrtNOT 129dfa5f45
[extractor/WSJArticle] Fix video id extraction (#4268)
Closes #4249
Authored by: sqrtNOT
2 years ago
pukkandan 3df6a603e4
[extractor/WatchESPN] Improve _VALID_URL
Closes #4362
Authored by: dirkf, IONECarter
2 years ago
pukkandan a7dc6a89f6
Support `--no-progress` for `--wait-for-video`
Closes #4365
2 years ago
odo2063 5200976949
[build] Fix architecture suffix of executables (#4355)
Authored by: odo2063
2 years ago
Pritam Das e3e606de12
[extractor/instagram] Fix post/story extractors (#4074)
Closes #4343, #3077, #2736, #3002
Authored by: pritam20ps05, pukkandan
2 years ago
pukkandan 88f60feb32
Fix a904a7f8c6 2 years ago
Lesmiscore a904a7f8c6
Allow users to specify encoding in each config files (#4357)
Authored by: Lesmiscore
2 years ago
Ferdinand Bachmann 49afc1d84a
[extractor/TubeTuGraz] Add extractor (#2397)
Based on https://github.com/ytdl-org/youtube-dl/pull/26778
Authored by: Ferdi265, pukkandan
2 years ago
pukkandan 6edf28081f
[extractor] Passthrough `errnote=False` to parsing 2 years ago
HobbyistDev 5f2da312fa
[extractor/rtl.lu] Add extractor (#4222)
Closes #1721
Authored by: HobbyistDev
2 years ago
Tim Weber eb2333bce1
[extractor/StarTrek] Add extractor (#4191)
Authored by: scy
2 years ago
u-spec-png 660c0c4efd
[extractor/Trovo] Fix extractor (#4208)
Authored by: u-spec-png
2 years ago
Locke fe588ce8ef
[extractor/acfun] Add extractors (#4228)
Closes #3545
Authored by: lockmatrix
2 years ago
HobbyistDev 26b92a919d
[extractor/tviplayer] Add extractor (#4281)
Closes #2134
Authored by: HobbyistDev
2 years ago
HobbyistDev 8f47b39b27
[extractor/detik] Add extractor (#4284)
Closes #4283
Authored by: HobbyistDev
2 years ago
llamasblade 2f1b7afe32
[extractor/hytale] Add extractor (#4326)
Authored by: llamasblade, pukkandan
2 years ago
Locke dd634acd71
[extractor/Ximalaya] Fix extractors (#4339)
Authored by: lockmatrix
2 years ago
pukkandan ebf99aaf70
[utils] Fix `get_domain`
Bug in ae61d108dd

Closes #4344
2 years ago
HobbyistDev cbd4f237b4
[extractor/cellebrite] Add extractor (#4333)
Closes #4014
Authored by: HobbyistDev
2 years ago
ftk 418bbfd722
[extractor/twitch] Support storyboards for VODs (#4342)
Authored by: ftk
2 years ago
ftk 45e8a04e48
[extractor/youtube] More metadata for storyboards (#4334)
Authored by: ftk
2 years ago
Sebastian Wallkötter 0f44636597
[docs] Improve docstring of `download_ranges` (#4340)
Authored by: FirefoxMetzger
2 years ago
Elyse 7a7eeb1005
[aes] Add multiple padding modes in CBC
Authored by: elyse0
2 years ago
Dosychev Peter 4e7f375c94
[extractor/theholetv] Add extractor (#4325)
Authored by: dosy4ev
2 years ago
pukkandan f5ea47488a
[cleanup] Minor fixes 2 years ago
pukkandan 134c913cca
Discard info_dict from memory if no longer needed
Closes #1399
2 years ago
pukkandan 56b5b832bf
[extractor/crunchyroll] Improve _VALID_URL
<http://www.crunchyroll.com/series/GR24PVM76/nichijou-my-ordinary-life>
should be handled by Generic

Closes #4322
2 years ago
pukkandan cb794ee010
Do not allow extractors to return `None` 2 years ago
pukkandan 6d645b5577
[http] Ensure the file handle is always closed
Closes #4323
2 years ago
pukkandan 563e0bf82a
Fix rounding of integers in format table 2 years ago
pukkandan d816f61fbf
[utils, cleanup] Refactor parse_codecs 2 years ago
pukkandan 4019bf0525
[ModifyChapters] Modify duration in infodict 2 years ago
HobbyistDev 65ea4cba29
[extractor/mocha] Add extractor (#4213)
Closes https://github.com/yt-dlp/yt-dlp/issues/3752
Authored by: HobbyistDev
2 years ago
Misael Aguayo 17a23f0930
[extractor/syvdk] Add extractor (#4250)
Closes https://github.com/yt-dlp/yt-dlp/issues/4077
Authored by: misaelaguayo
2 years ago
pukkandan 258d88f301
[test] Split download tests so they can be more easily run in CI 2 years ago
pukkandan a3fb1ca5ab
[extractor/youtube] Fix duration check for post-live manifestless mode 2 years ago
Lesmiscore (Naoya Ozaki) 1275aeb955
[extractor/bigo] Fix extractor (#4312)
Closes #4139

Authored by: Lesmiscore
2 years ago
ischmidt20 170a031386
[extractor/fifa] Fix extractor (#4272)
Authored by: ischmidt20
2 years ago
Felix S 65493f64e1
[extractor/Audiodraft] Add extractors (#4288)
Based on https://github.com/yt-dlp/yt-dlp/pull/4259
Closes https://github.com/yt-dlp/yt-dlp/issues/4028

Authored by: fstirlitz, Ashish0804
2 years ago
HobbyistDev 63e66cd0ad
[extractor/liputan6] Add extractor (#4304)
Closes #4303

Authored by: HobbyistDev
2 years ago
pukkandan f2df407165
[cleanup] Misc cleanup 2 years ago
Lesmiscore (Naoya Ozaki) ca9def714a
Skip some fixup if remux/recode is needed (#4266)
Authored by: Lesmiscore
2 years ago
pukkandan 47cdc68e03
[outtmpl] Add alternate form `h` for HTML escaping
Related: https://github.com/yt-dlp/yt-dlp/issues/3292
2 years ago
pukkandan 7b84d6f9b3
[build] Improve `setup.py`
Closes #4296
2 years ago
Andrew 12a1b2254d
[extractor/youtube, cleanup] Fix tests (#4293)
Authored by: sheerluck
2 years ago
pukkandan 6154438178
[extractor/generic] Remove HEAD request 2 years ago
pukkandan 168bbc4f38
Do not load system certificates when `certifi` is used
This causes `CERTIFICATE_VERIFY_FAILED` if there is an
expired/bad certificate in the system store

Partially reverts 8a82af3511

Related: #4145
2 years ago
pukkandan a3976e0760
Improve chapter sanitization 2 years ago
pukkandan 385f7f3895
[extractor/iq] Set language correctly for Korean subtitles
Closes #3500
2 years ago
Lesmiscore 5c0dc6e603
[devscripts/update-formulae] Do not change dependency section
Closes #4223
2 years ago
pukkandan 284a60c516
[options] Fix aliases to `--config-location` 2 years ago
Lesmiscore 44f14eb43e
Fix bug in 612f2be5d3 2 years ago
pukkandan ca9f1df253
[docs] Improve issue templates 2 years ago
pukkandan a63b35a60c
[update] Do not check `_update_spec` when up to date 2 years ago
pukkandan 28cdb605aa
[build] Fix bug in 6d916fe709 2 years ago
Chris Lamb 5b836d4739
[build] Consistent order for lazy extractors (#4220)
Authored by: lamby
2 years ago
github-actions 84a251e1f5 [version] update
Created by: pukkandan

:ci skip all :ci run dl
2 years ago
pukkandan 9d339c41e2
Release 2022.06.29 2 years ago
pukkandan ae61d108dd
[cleanup] Misc cleanup 2 years ago
pukkandan 47046464fa
[extractor] Fix empty `BaseURL` in MPD
Closes #4113
2 years ago
pukkandan b1f94422cc
[update] Ability to set a maximum version for specific variants 2 years ago
pukkandan c2c8921b41
[build] Draft release until complete
Related: #4133

:ci skip
2 years ago
nomevi 844086505f
[extractor/livestreamfails] Add extractor (#4204)
Authored by: nomevi
2 years ago
Stefan Lobbenmeier 63da2d0911
Fix bug in 6d916fe709 (#4219)
Update only to legacy version on old MacOS

Authored by: StefanLobbenmeier
2 years ago
FestplattenSchnitzel 1db1461272
[extractor/ViMP] Add playlist extractor (#4147)
Authored by: FestplattenSchnitzel
2 years ago
HobbyistDev 5fb450a64c
[extractor/steam] Add broadcast extractor (#4137)
Closes #4083

Authored by: HobbyistDev
2 years ago
Stefan Lobbenmeier 6d916fe709
[build] Standalone x64 builds for MacOS 10.9 (#4106)
Authored by: StefanLobbenmeier
2 years ago
Abubukker Chaudhary 2c60eae899
[extractor/Scrolller] Add extractor (#4010)
Closes #3635
Authored by: LunarFang416
2 years ago
crazymoose77756 962ffcf89c
[cleanup] Fix some typos (#4194)
Authored by: crazymoose77756
2 years ago
MMM 8a40bffaf9
[exractor/lbry] Use HEAD request for redirect URL (#4181)
and misc cleanup 

Authored by: flashdagger
2 years ago
pukkandan e08f72e675
[extractor/mediaset] Improve `_VALID_URL`
Fixes https://github.com/yt-dlp/yt-dlp/issues/4141#issuecomment-1166521057
2 years ago
pukkandan 1685d46007
[extractor/ertflix] Improve `_VALID_URL`
Closes #4180
2 years ago
ischmidt20 8d214c484c
[extractor/CWTV] Extract thumbnail (#4185)
Authored by: ischmidt20
2 years ago
pukkandan 9eef7c4e55
Sanitize `chapters`
Closes #4182
2 years ago
pukkandan bbae437723
[hls] Warn user when trying to download live HLS
We do not automatically switch to ffmpeg because the detection is not 100% accurate
2 years ago
HobbyistDev 30d22d775b
[extractor/premiershiprugby] Add extractor (#4129)
Closes #2980
Authored by: HobbyistDev
2 years ago
pukkandan c043c24625
[extractor] Fix `_create_request` when headers is None
Closes #4164
2 years ago
FestplattenSchnitzel 74900105be
[extractor/ViMP] Add thumbnail and support more sites (#4147)
Authored by: FestplattenSchnitzel
2 years ago
HobbyistDev d1bf2e199c
[extractor/fuyin] Add extractor (#4151)
Closes #2871

Authored by: HobbyistDev
2 years ago
pukkandan c800598cd1
[options] Fix `parse_known_args` for `--`
Closes #4167
2 years ago
pukkandan 14f25df2b6
[compat] Remove deprecated functions from core code 2 years ago
pukkandan 54007a45f1
[cleanup] Consistent style for file heads 2 years ago
pukkandan ac66811112
[compat] Remove more functions
Removing any more will require changes to a large number of extractors
2 years ago
pukkandan 3c5386cd71
[compat] Fix `compat.WINDOWS_VT_MODE` 2 years ago
pukkandan bc40160883
Fix `section_end` of clips
Closes #4165
2 years ago
coletdev 379a4f161d
[utils] Fix inconsistent default handling between HTTP and HTTPS requests (#4158)
Default headers such as `Content-Type` were only being added for HTTPS requests among other handling.

Fixes bug in be4a824d74

Authored-by: coletdjnz
2 years ago
Brett824 06cc8f103b
[extractor/youtube] Mark videos as fully watched (#4146)
* Also fixes videos appearing as shorts in watch history

Closes #2555
Authored by: Brett824
2 years ago
Jelle Besseling 34baaced11
[extractor/dropout] Support cookies and login only as needed (#4075)
Closes #4035
Authored by: pingiun, pukkandan
2 years ago
pukkandan 9809740ba5
[extractor, cleanup] Reduce direct use of `_downloader` 2 years ago
pukkandan f67baae17e
[ffmpeg] Write full output to debug on error
Bug in f0c9fb9682
2 years ago
zenerdi0de 37e40d693b
[extractor/tennistv] Rewrite extractor (#2324)
Closes #2177
Authored by: zenerdi0de, pukkandan
2 years ago
pukkandan 0c36dc00d7
[extractor/npr] Implement e50c3500b4 differently
Closes #4141
2 years ago
pukkandan 28163422a6
Fix `--downloader native`
Bug in 7b2c3f47c6
2 years ago
pukkandan 1ac4fd80c8
Fix playlist error handling
Bug in 7e88d7d78f
2 years ago
pukkandan 885fe351fb
[build] Fix release tag commit
bug in b5899f4f19
2 years ago
github-actions f92347c312 [version] update
Created by: pukkandan

:ci skip all :ci run dl
2 years ago
pukkandan a86e01e743
Release 2022.06.22.1 2 years ago
pukkandan 1ed70fd0b7
[build] Fix updating homebrew formula
bug in b5899f4f19
2 years ago
github-actions def4973ae7 [version] update
Created by: pukkandan

:ci skip all :ci run dl
2 years ago
pukkandan 0af80bcf70
Release 2022.06.22 2 years ago
pukkandan eff4275925
Add deprecation warning for Py3.6
See: https://github.com/yt-dlp/yt-dlp/issues/3764
2 years ago
pukkandan 998a3cae0c
[cleanup] Misc fixes 2 years ago
pukkandan 471d0367c7
[youtube:clips] Support downloading clips
Closes #2543
2 years ago
pukkandan 3975b4d2e8
Allow extractors to specify section_start/end for clips 2 years ago
pukkandan 230d5c8239
[jsinterp] Some optimizations and refactoring
Motivated by: https://github.com/ytdl-org/youtube-dl/issues/30641#issuecomment-1041904912

Authored by: dirkf, pukkandan
2 years ago
pukkandan e4afcfde08
[build] Add Linux standalone builds 2 years ago
pukkandan 8372be7469
[update] Self-restart after update 2 years ago
pukkandan 57e0f077a6
[update] Expose more functionality to API 2 years ago
pukkandan f0500bd1e4
[test] Fix `FakeYDL` signatures
Authored by: coletdjnz
2 years ago
pukkandan 95032f302c
[f4m] Bugfix 2 years ago
pukkandan 8102a5991b
[extractor/mediaset] Improve `_VALID_URL` 2 years ago
HobbyistDev c27eaf8920
[extractor/kicker.de] Add extractor (#4073)
Closes #3670
Authored by: HobbyistDev
2 years ago
pukkandan dfb855b42d
[extractor/BiliIntl] Fix subtitle extraction
Closes #3123

Authored by: HobbyistDev
2 years ago
pukkandan 5df1444255
[utils] `ExtractorError`: Fix `exc_info` 2 years ago
pukkandan 612f2be5d3
Bugfix for 7b2c3f47c6 2 years ago
pukkandan 6d1b34896e
Update to ytdl-commit-8a158a9
[NHK] Use new API URL
6508688e88

Closes #2337, Closes #4063
2 years ago
pukkandan 7b2c3f47c6
[cleanup] Misc 2 years ago
pukkandan 8aa0e7cd96
[docs] Improvements 2 years ago
HobbyistDev 695b28afaa
[DailyWire] Add extractors (#4084)
Closes #3139
Authored by: HobbyistDev, pukkandan
2 years ago
ischmidt20 0a4fb0d3fe
[WatchESPN] Support free videos and BAM_DTC (#4118)
Authored by: ischmidt20
2 years ago
pukkandan 8072ef2bbd
[extractor/BiliIntl] Fix metadata extraction
Closes #4116
2 years ago
Elyse 40268a7974
[extractor/foxnews] Update embed extraction (#4043)
Authored by: elyse0
2 years ago
HobbyistDev 697ebe4d31
[extractor/ixigua] Add Extractor (#3953)
Closes #2840
Authored by: HobbyistDev
2 years ago
bubbleguuum 38d86f4d45
[extractor/radiofrance] Add more radios (#4065)
Closes #4087 
Authored by: bubbleguuum
2 years ago
pukkandan f254d6ccd9
[extractor/dropbox] Extract the correct `mountComponent` 2 years ago
coletdev f0bc6e2019
[extractor] Add `default` parameter to `_search_json` (#4057)
Authored by: pukkandan, coletdjnz
2 years ago
MMM 9fde8a6b12
[extractor/lbry] Update livestream API (#4042)
Authored by: flashdagger
2 years ago
Elyse 612e31f5ea
[extractor/substack] Add extractor (#4011)
Closes #3722
Authored by: elyse0
2 years ago
Abubukker Chaudhary 7a2e40dd48
[extractor/MirrorCoUK] Add extractor (#3999)
Authored by: LunarFang416, pukkandan
2 years ago
HobbyistDev 60ba603ab5
[extractor/netverse] Add extractors (#3854)
Authored by: HobbyistDev, pukkandan
2 years ago
Zhymabek Roman a79cba0c95
[exctractor/digitalconcerthall] Fix extractor (#4105)
Authored by: ZhymabekRoman
2 years ago
Lesmiscore 4f2a58c9c5
[extractor/pornhub] Extract `uploader_id` field (#4104)
Authored by: Lesmiscore
2 years ago
pukkandan 44a6fcff39
Improve error handling of bad config files
Related: #824
2 years ago
pukkandan bf1824b391
[cleanup] Deprecate `YoutubeDL.parse_outtmpl` 2 years ago
pukkandan a70635b8a1
[cleanup, utils] Don't use kwargs for `format_field` 2 years ago
christoph-heinrich e121e3cee7
[cleanup] Minor fixes (#4096)
Authored by: christoph-heinrich
2 years ago
pukkandan 7e9a612585
Add option `--lazy-playlist` to process entries as they are received 2 years ago
pukkandan 0df111a371
[youtube] Extract `comment_count` from webpage
Closes #4091
2 years ago
pukkandan a39a7ba8d6
[extractor/tiktok] Extract `SIGI_STATE`
Based on #3624, https://github.com/ytdl-org/youtube-dl/pull/30479

Closes #3551

Authored by dirkf, sulyi, pukkandan
2 years ago
pukkandan 7e88d7d78f
Add slicing notation to `--playlist-items`
* Adds support for negative indices and step
* Add `-I` as alias for `--playlist-index`
* Deprecates `--playlist-start`, `--playlist-end`, `--playlist-reverse`, `--no-playlist-reverse`

Closes #2951, Closes #2853
2 years ago
pukkandan f0c9fb9682
[utils] `Popen`: Refactor to use contextmanager
Fixes https://github.com/yt-dlp/yt-dlp/issues/3531#issuecomment-1156223597
2 years ago
pukkandan 560738f34d
[extractor] Import `_ALL_CLASSES` lazily
This significantly speeds up `import yt_dlp` in the absence of `lazy_extractors`
2 years ago
pukkandan 99d10bf607
[cleanup, extractor] Rename `extractors.py` to `_extractors.py`
This should be considered part of the next commit,
but is separated so that `git` can detect the renaming better
2 years ago
Evan Spensley 145c5a83a8
[extractor/GoogleDrive] Add folder extractor (#4009)
Closes #3388
Authored by: evansp, pukkandan
2 years ago
pukkandan 2cb1982043
[utils] `locked_file`: Fix for PyPy on Windows 2 years ago
pukkandan fccf90e7f3
Fix bug in 56ba69e4c9 2 years ago
pukkandan d32f30ac48
Add `--no-update`
Closes #4060
2 years ago
pukkandan e3aae45a6f
[extractor/zdf] Fix bug in 62b2b736e7
Closes #4061
2 years ago
pukkandan f3c0c77304
[extractor] Handle `json_ld` with multiple `@type`s
Closes: #4022
2 years ago
pukkandan 79e591b59b
[extractor/rumble] Detect JS embed
Closes #4064
2 years ago
pukkandan 21a73e9f39
[extractor/generic] Revert e6ae51c123
85553414ae made it unnecessary
2 years ago
coletdjnz 4ce05f5759
[extractor/youtube] Fix live chat for videos with content warning
Fixes #4051
Authored by: coletdjnz
2 years ago
Lesmiscore 2523702718
[extractor/tver] Fix bug in 6837633a4a
This corrects a mistake in 64fa820ccf
Authored by: Lesmiscore
Closes #4054
2 years ago
pukkandan 55baa67c7c
[extractor/jwplatform] Look for `data-video-jw-id`
Closes #3821
2 years ago
pukkandan 64fa820ccf
[cleanup] Misc fixes (see desc)
* [tvver] Fix bug in 6837633a4a - Closes #4054
* [rumble] Fix tests - Closes #3976
* [make] Remove `cat` abuse - Closes #3989
* [make] Revert #3684 - Closes #3814
* [utils] Improve `get_elements_by_class` - Closes #3993
* [utils] Inherit `Namespace` from `types.SimpleNamespace`
* [utils] Use `re.fullmatch` for matching filters
* [jsinterp] Handle quotes in `_separate`
* [make_readme] Allow overshooting last line

Authored by: pukkandan, kwconder, MrRawes, Lesmiscore
2 years ago
pukkandan 56ba69e4c9
[cleanup] Misc fixes
Closes #4027
2 years ago
Aurélien Grosdidier d05460e5fe
[extractor/FranceCulture] Fix extractor (#3874)
Closes #3742
Authored by: aurelg, pukkandan
2 years ago
ping 14c3a98049
[extractor/naver] Add `navernow` extractor (#3866)
Authored by: ping
2 years ago
Elyse e0a4a3d5bf
[extractor/freetv] Add extractor (#3587)
Closes #3486
Authored by: elyse0
2 years ago
Elyse 62b2b736e7
[extractor/zdf] Improve format sorting (#4040)
Closes #4020

Authored by: elyse0
2 years ago
Lesmiscore 6837633a4a
[extractor/tver] Fix extractor (#4033)
Authored by: Lesmiscore
2 years ago
coletdev 2ae778b8fc
[extractor/youtube] Add `innertube_host` and `innertube_key` extractor args (#3916)
Allows user to override Innertube API host or key for all requests
Authored by: coletdjnz
2 years ago
Ashish Gupta c82a4a8fce
[extractor/atscaleconfevent] Add extractor (#3971)
Closes #3961
Authored by: Ashish0804
2 years ago
vkorablin 6e7c9201cd
[extractor/ccc] Extract view_count (#3939)
Authored by: vkorablin
2 years ago
Angel Toloza bde0132e15
[extractor/southpark] Add `southpark.lat` extractor (#4008)
Authored by: darkxex
2 years ago
pukkandan 233ad894d3
[update] Use `.git` folder to distinguish `source`/`unknown`
This is not perfect, but is good enough for how we use this information

Closes #3994
2 years ago
Daniel Lindholm 0d6bafbfa7
[expressen] Fix extractor (#4006)
Authored by: aejdl
2 years ago
MMM 36195c4461
[dash] Show fragment count with `--live-from-start` (#3493)
Authored by: flashdagger
2 years ago
coletdjnz 65141660ab
[extractor/youtube] Fix bug in b7c47b7438
Closes #3997

Authored by: coletdjnz
2 years ago
Christoph Moench-Tegeder dec30912a7
[cookies] Detect profiles for cygwin/BSD (#3975)
Closes #3370
Authored by: moench-tegeder
2 years ago
pukkandan 5ec1b6b716
Add option `--download-sections` to download video partially
Closes #52, Closes #3932
2 years ago
pukkandan e0ab98541c
[ExtractAudio] Allow conditional conversion
Closes #1715
2 years ago
pukkandan 35faefee5d
[ExtractAudio, cleanup] Refactor 2 years ago
pukkandan b7c47b7438
[extractor] Add `_search_json`
All fetching of JSON objects should eventually be done with this function
but only `youtube` is being refactored for now
2 years ago
pukkandan 00bbc5f177
[ThumbnailsConvertor] Allow conditional conversion
Closes #3970
2 years ago
Lesmiscore 0bea4fd807
[extractor/0000studio] Add extractors (#3959)
Authored by: Lesmiscore
2 years ago
ischmidt20 b5770743fe
[extractor/espn] Add `WatchESPN` extractor (#2283)
Authored by: ischmidt20, pukkandan
2 years ago
pukkandan 1890fc6389
[cleanup] Misc fixes
Cherry-picks from: #3498, #3947
Related: #3949, https://github.com/yt-dlp/yt-dlp/issues/1839#issuecomment-1140313836
Authored by: pukkandan, flashdagger, gamer191
2 years ago
pukkandan c4910024f3
[extractor] Fix bug in 617f658b7e
While the function signature don't enforce it, some IEs that override
`_download_webpage_handle` assume all optional arguments to be keyword-only

Closes #3954
2 years ago
coletdev c7a7baaa13
[extractor/youtube] Fix `:ytnotifications` extractor (#3775)
Still some issues, see https://github.com/yt-dlp/yt-dlp/pull/3775

Authored by: coletdjnz
2 years ago
siddharth ravikumar e50c3500b4
[extractor/npr] Use stream url from json-ld (#3455)
Closes #1934
Authored by: r5d
2 years ago
pukkandan 09d02ea429
[extractor] Fix bug in f95b9dee45
Closes #3951
2 years ago
sqrtNOT ac05fb9338
[extractor/niconico:series] Fix extractor (#3935)
Authored by: sqrtNOT
2 years ago
pukkandan 28786529dc
[extractor/dropout] Login is not mandatory
Workaround for #3931
2 years ago
pukkandan 6b0b0a289a
[extractor/youtube:tab] Detect `videoRenderer` in `_post_thread_continuation_entries` 2 years ago
pukkandan f95b9dee45
[extractor] Add dev option `--load-pages` 2 years ago
pukkandan 617f658b7e
[extractor, cleanup] Refactor `_download_...` methods 2 years ago
pukkandan 8a7f6d7a15
Do not print progress to `stderr` with `-q`
It is arguable how this "should" behave, but since progress is always
written to stdout in older yt-dl/p, we should keep it as-is

Bug in cf4f42cb97
Closes #3844
2 years ago
Lesmiscore 9c0412cf6b
[extractor/vevo] Fix extractor (#3921)
Authored by: Lesmiscore
2 years ago
gamer191 84131d0351
[extractor/animelab] Remove extractor (#3922)
https://www.animelab.com/sunset

Authored by: gamer191
2 years ago
Lesmiscore 1cd6cba306
[extractor/PokemonSoundLibrary] Remove extractor (#3918)
Authored by: Lesmiscore
2 years ago
Lesmiscore 661e7253a2
[extractor/iwara:user] Make paging better (#3901)
Authored by: Lesmiscore
2 years ago
Lesmiscore 222a230871
[extractor/common] Recognize `src` attribute from HTML5 media elements (#3899)
Authored by: Lesmiscore
2 years ago
coletdjnz ee27297f82
[extractor/youtube] Fix initial player response extraction
Authored by: pukkandan, coletdjnz
2 years ago
Stefan Borer ee164987c7
[extractor/playsuisse] Add extractor (#845)
Authored by: sbor23, pukkandan
2 years ago
pukkandan 0fe51254cb
[extractor/youtube] Bring back `_extract_chapters_from_description`
Closes #3886
2 years ago
pukkandan 52023f1291
[extractor/youtube] Make signature extraction non-fatal
and reduce verbosity of it's warning

Closes #3882
2 years ago
mozbugbox 5bbe631e04
[extractor/duboku] Fix for hostname change (#3891)
Authored by: mozbugbox
2 years ago
coletdev 2c6dcb65fb
[utils] Send HTTP/1.1 ALPN extension (#3889)
Some servers may reject requests if not sent (e.g. fingerprinting)

Fixes #3878

Authored by: coletdjnz
2 years ago
miseran 520876fa09
[extractor/zattoo] Fix live streams (#3812)
Authored by: miseran
2 years ago
pukkandan 0bf9dc1e35
Fix bug in 8a82af3511 2 years ago
pukkandan 829bbd1d05
[youtube] Add warning for PostLiveDvr
Closes #3746, Related #1564
2 years ago
pukkandan 8a82af3511
[cleanup] Misc fixes and cleanup
Closes #3780, Closes #3853, Closes #3850
2 years ago
pukkandan 8246f8402b
[spotify:show] Fix extractor
Closes #3768
2 years ago
pukkandan 6b9e832db7
`--config-location -` to provide options interactively 2 years ago
monnef d2ff2c91bb
[curiositystream] Get `auth_token` from cookie (#3836)
Closes #3753
Authored by: mnn
2 years ago
m4tu4g 7879e79d11
[bloomberg] Change playback endpoint (#3857)
Closes #3787
Authored by: m4tu4g
2 years ago
Lesmiscore 8a3e7b1c95
[yahoo:gyao] Fix extractor
This fixes 400 error for /title/ URLs.
2 years ago
pukkandan d9473db78a
[ModifyChapters] Fix repeated removal of small segments
Closes #3846
2 years ago
pukkandan 11233f2afd
[downloader, cleanup] Refactor `report_progress`
Closes #3790
2 years ago
pukkandan 3a85e9cee9
[ffmpeg] Check version lazily
Closes #3830
2 years ago
pukkandan c4a62b99f6
Fix bug in 23326151c4 2 years ago
pukkandan b5899f4f19
[build, cleanup] Refactor
Closes #3835, #3837
2 years ago
Felix S 92922fe7f9
[rumble] Extract subtitles (#3823)
Closes #3132
Authored by: fstirlitz
2 years ago
pukkandan c487cf0010
[cleanup] Misc 2 years ago
pukkandan 415f8d51a8
Ensure pre-processor errors do not block video download
Closes #2875
2 years ago
pukkandan ca6d59d2c1
Fix `--simulate --max-downloads`
Bug in c3e6ffba53
Closes #3815
2 years ago
pukkandan 1a8cc83735
Bugfix for 3a408f9d19 2 years ago
pukkandan 2762dbb17e
[compat] Add `functools.cached_property` 2 years ago
pukkandan 666c36d58d
Bugfix for 23326151c4 2 years ago
adamanldo 854b0d325e
[StreamCZ] Fix extractor (#3789)
Closes #3579
Authored by: dirkf, adamanldo
2 years ago
Elyse 79c318937b
[ina] Fix extractor (#3807)
Closes #2463
Authored by: elyse0
2 years ago
Jeff Huffman 88d62206b4
[crunchyroll:beta] Fix extractor after API change (#3801)
Closes #2052
Authored by: Burve, tejing1
2 years ago
pukkandan e79969b242
Return an error code if update fails
Closes #3802
2 years ago
pukkandan 53973b4d2c
[utils] Fix bug in 0b9c08b47b
* Cache of `supports_terminal_sequences` must be reset after enabling VT mode
* and move `windows_enable_vt_mode` to utils to avoid cyclic imports
2 years ago
pukkandan b801cd7179
[tiktok] Detect embeds
Closes #3799
2 years ago
pukkandan 0b9c08b47b
[utils] Improve performance using `functools.cache`
Closes #3786
2 years ago
pukkandan 2f97cc615b
[utils] `ISO3166Utils`: Add `EU` and `AP`
Fixes https://github.com/yt-dlp/yt-dlp/pull/3302#discussion_r875528517
2 years ago
pukkandan 2dd5a2e3a1
[doc, cleanup] Re-indent "Usage and Options" section 2 years ago
pukkandan 23326151c4
Add option --retry-sleep (#3059)
Closes #2852
2 years ago
pukkandan 9e49146352
Add option `--alias` 2 years ago
github-actions 926ccc84ef [version] update
Created by: pukkandan

:ci skip all
2 years ago
pukkandan b14d523558
Release 2022.05.18 2 years ago
pukkandan 21633673c3
[cleanup] Minor fixes 2 years ago
pukkandan 80e8493ee7
[utils] `is_html`: Handle double BOM
Closes #2885
2 years ago
pukkandan aedaa455d9
[vimeo] Fix extractors
Closes #3037, Closes #2858, Closes #2880, Closes #3712
May also fix #3602, #3360
2 years ago
pukkandan d6bf1161db
[generic] Refactor `_extract_rss`
Closes #3738
2 years ago
pukkandan 7896214c42
Bugfix for 591bb9d355
Closes #3769
2 years ago
pukkandan 5792c950bf
[compat] Implement `compat.imghdr`
Python 3.11 deprecates `imghdr` module
2 years ago
pukkandan 7a96d0b39c
[build] More test-runners
* GHA does not cache python 3.6 for Windows, so use 3.8 instead
* Add tests for 3.11, PyPy3.8/3.9
* CPython 3.10 is now stable
* Do not pin Ubuntu to 18.04
2 years ago
pukkandan 591bb9d355
Fix color in `-q -F`
and convert `ydl._out_files`/`ydl._allow_colors` to `Namespace`

Closes #3761
2 years ago
coletdjnz 5faf6528fb
[http] Fix bug in retrying on read timeout in py < 3.10
socket.timeout is not an alias of TimeoutError in py < 3.10
Fixes bug in a2e77303e3
Authored-by: coletdjnz
2 years ago
pukkandan 0fa7d2c8e4
Bugfix for 2414649192 2 years ago
pukkandan b2a2d91310
[adobepass] Allow cookies for authenticating MSO
Possible workaround for #1034
2 years ago
pukkandan 490110c543
`--max-downloads` should obey `--break-per-input` 2 years ago
pukkandan 2414649192
[cleanup] Misc cleanup 2 years ago
pukkandan 5d5c0f7e99
[Hotstar] Bugfix for a1ddaa899c
Closes #3595
2 years ago
MrRawes b4d3738338
[build] Add `make uninstall` (#3747)
Authored by: MrRawes
2 years ago
Dzmitry Neviadomski 3ac7b66047
[goodgame] Add extractor (#3686)
Authored by: nevack
2 years ago
P-reducible c9b2b368b3
[rokfin:search] Add extractor (#2992)
Authored by: P-reducible, pukkandan
2 years ago
pukkandan e037c405ad
[rokfin] Implement login (#2992)
Authored by: P-reducible, pukkandan
2 years ago
Conner 4bf72cc1c9
[Podchaser] Add extractors (#3665)
Authored by; connercsbn
2 years ago
Elyse 25f0e68f97
[wat] Fix extraction of multi-language videos and subtitles (#3739)
Closes #982, closes #1683
Authored by: elyse0
2 years ago
Elyse 3358f89361
[adn] Update AES key (#3743)
Closes #2002
Authored by: elyse0
2 years ago
Henrik Heimbuerger f3b3fe16af
[nebula] Add support for subscriptions (#3719)
Closes #3609 
Authored by: hheimbuerger
2 years ago
Jordan Weatherby d1c4f6d4da
[youtube] Added piped instance urls (#3714)
Closes #3661
Authored by: JordanWeatherby
2 years ago
pukkandan 82d020804d
[extractor] Use classmethod/property where possible
and refactor lazy extractors accordingly.

This reduces the need to create extractor instances
2 years ago
Filip Hedman 7ddbf09c25
[DRTV] Improve `_VALID_URL` (#3708)
Authored by: vertan
2 years ago
pukkandan 2e4585da92
[cookies] Throttle progress-bar
Closes #3710
2 years ago
pukkandan 8dcce6a89c
[extractor] Document netrc machines
Closes #3169
2 years ago
pukkandan 494f52308b
[FixupM3u8] Obey `--hls-prefer-mpegts`
Closes #3697
2 years ago
pukkandan 3d38b2d6d0
Fix `--date today`
Closes #3704
2 years ago
pukkandan 3a408f9d19
Show name of downloader in verbose log
Closes #3703
2 years ago
pukkandan d76fa1f3d4
[cookies] Allow `cookiefile` to be a text stream
Closes #3674
2 years ago
pukkandan fe1daad3cb
Bugfix for 59f943cd50
Fixes: 59f943cd50 (commitcomment-73251597)
2 years ago
pukkandan 0f06bcd759
[cleanup] Minor fixes (See desc)
* [youtube] Fix `--youtube-skip-dash-manifest`
* [build] Use `$()` in `Makefile`. Closes #3684
* Fix bug in 385ffb467b
* Fix bug in 43d7f5a5d0
* [cleanup] Remove unnecessary `utf-8` from `str.encode`/`bytes.decode`
* [utils] LazyList: Expose unnecessarily "protected" attributes
and other minor cleanup
2 years ago
ca-za d239db0306
[toggo] Improve `_VALID_URL` (#3689)
Authored by: ca-za
2 years ago
pukkandan 385ffb467b
[wistia] Fix `_VALID_URL`
Closes #2866
Authored by: dirkf
2 years ago
Evan Spensley 5f8ea7e0d8
[Jamendo] Extract more metadata (#3672)
Authored by: evansp
2 years ago
pukkandan d7a1aa00c6
Run `FFmpegFixupM3u8PP` for live-streams if needed
Closes #3669
2 years ago
MMM 5747d4f4e8
[kaltura] Update API calls (#3657)
Authored by: flashdagger
2 years ago
Lesmiscore 1f8b4ab733
[radiko] Fix extractor (#3655)
Authored by: Lesmiscore
2 years ago
pukkandan d4736fdb43
Remove warning for videos with an empty title 2 years ago
pukkandan 895aeb71d7
[toggo] Fix `_VALID_URL`
Closes #2610
2 years ago
pukkandan 4f28b537d9
Allow use of weaker ciphers with `--legacy-server-connect`
Closes #2043
2 years ago
pukkandan 6b70527f9d
[cleanup, zingmp3] Refactor extractors 2 years ago
Teemu Ikonen a0fe51d562
[ruutu] Support hs.fi embeds (#3547)
Authored by: tpikonen, pukkandan
2 years ago
diegorodriguezv bd18c5d170
[cleanup, tmz] Update tests (#3654)
Authored by: diegorodriguezv
2 years ago
Ha Tien Loi 54044decd0
[ZingMp3] Add chart and user extractors (#3423)
Authored by: hatienl0i261299
2 years ago
Ha Tien Loi 89f383c4ee
[gronkh] Add playlist extractors (#3337)
Closes #3300
Authored by: hatienl0i261299
2 years ago
pukkandan 91e5e839d3
[youtube] Deprioritize format 22
Reduces chance of encountering #3372
2 years ago
FestplattenSchnitzel 10fa2471fc
[VideocampusSachsen] Improve extractor (#3604)
Authored by: FestplattenSchnitzel
2 years ago
i6t ff4d7860d5
[iwara] Add playlist extractors (#3639)
Authored by: i6t
2 years ago
rand-net 4f7a98c565
[KhanAcademy] Fix extractor (#3462)
Authored by: rand-net
2 years ago
Lesmiscore b58f8d8f2c
[TVer] Improve extraction (#3634)
Authored by: Lesmiscore
2 years ago
Ha Tien Loi f963b7ab18
[Likee] Add extractor (#3625)
Closes #3603
Authored by: hatienl0i261299
2 years ago
pukkandan 86925f6334
[Fifa] Sort formats
Closes #3632
2 years ago
m4tu4g 468f104ce7
[masters] Add extractor (#3358)
Closes #3240
Authored by: m4tu4g
2 years ago
Bricio cbc6ee10da
[Fifa] Add Extractor (#3414)
Closes #3408
Authored by: Bricio
2 years ago
nyuszika7h 6ef5ad9e29
[trovo] Update to new API (#3509)
Closes #3457
Authored by: nyuszika7h
2 years ago
coletdev bb58c9ed5c
Add support for SSL client certificate authentication (#3435)
Adds `--client-certificate`, `--client-certificate-key`, `--client-certificate-password`

Authored-by: coletdjnz
Co-authored-by: df <fieldhouse@gmx.net>
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
2 years ago
coletdev afac4caa7d
Fix redirect HTTP method handling (#3577)
Authored by: coletdjnz
2 years ago
HE7086 b4f536626a
[BilibiliLive] Add extractor (#3406)
Authored by: HE7086, pukkandan
2 years ago
felix e4fa34a13e
[hls] Fix unapplied byte_range for EXT-X-MAP fragment
Cherry-picked from #3302
Authored by: fstirlitz
2 years ago
Marwen Dallel 1a7cd9c487
[LCI] Fix extractor (#3534)
Authored by: MarwenDallel
2 years ago
Justin Keogh 131e14dc66
[utils] `locked_file`: Ignore illegal seek on `truncate` (#3610)
Closes #3557

Authored by: jakeogh
2 years ago
coletdev 6e634cbe42
[youtube] Add YoutubeStoriesIE (#3362)
Get channel stories with `ytstories:<channel UCID>`

Authored-by: coletdjnz
2 years ago
pukkandan 3fe75fdc80
[cleanup] Misc fixes (see desc)
* Do not warn when fixup is skipped for existing file
* [fragment] Fix `--skip-unavailable-fragments` for HTTP Errors
* [utils] write_string: Fix bug in 59f943cd50
* [utils] parse_codecs: Subtitle codec is generally referred to as `scodec`. https://github.com/yt-dlp/yt-dlp/pull/2174#discussion_r790156048
* [docs] Remove note about permissions. Closes #3597
2 years ago
pukkandan 6f7563beb7
[XAttrMetadata] Refactor and document dependencies 2 years ago
pukkandan 43d7f5a5d0
[EmbedThumbnail] Do not obey `-k` 2 years ago
Lesmiscore 94aa064497
[utils] YoutubeDLCookieJar: Detect and reject JSON file (#3599)
Authored by: Lesmiscore
2 years ago
pukkandan 07689fc149
[reddit] Prevent infinite loop
Closes #3588
2 years ago
pukkandan bfec31bec8
[youtube] De-prioritize auto-generated thumbnails
Closes #3112
2 years ago
pukkandan 1d485a1a79
[cleanup] Misc fixes
Closes #3565, https://github.com/yt-dlp/yt-dlp/issues/3514#issuecomment-1105944364
2 years ago
pukkandan 0a41f331cc
[doc] Minor improvements
Closes #3518, Closes #3560
2 years ago
pukkandan e1e1ea54ae
[build] Fix `--onedir` on macOS
Closes #3584
2 years ago
pukkandan 492272fed6
`--match-filter -` to interactively ask for each video 2 years ago
pukkandan 59f943cd50
[utils] `write_string`: Workaround newline issue in `conhost`
On windows `conhost`, when `WINDOWS_VT_MODE` is enabled, `\n` is not
actually sent if the window is exactly the length of printed line,
and the line does not end with a white-space character. So the
line-break disappears when resizing the window.

Fixes #1863
2 years ago
pukkandan 0a5a191a2a
Improve `--clean-infojson`
It should not removes fields that may be needed for `--load-infojson`.
Eg: `_ffmpeg_args`, `_has_drm`
2 years ago
Giedrius Statkevičius 4877f9055c
[lrt] Support livestreams (#3555)
Authored by: GiedriusS
2 years ago
Elyse a076c1f97a
[extractor] Update `manifest_url`s after redirect (#3575)
Authored by: elyse0
2 years ago
Evan Spensley b3602f6824
[InfoQ] Don't fail on missing audio format (#3573)
Closes #3441 
Authored by: evansp
2 years ago
Elyse 779da8e31b
[extractor] Update dash `manifest_url` after redirects (#3563)
Closes #2696 
Authored by: elyse0
2 years ago
Lesmiscore 997378f9df
[twitcasting] Pass headers for each formats (#3568)
Authored by: Lesmiscore
2 years ago
ekangmonyet 83bfb5e290
[Niconico] Support 2FA (#3559)
Authored by: ekangmonyet
2 years ago
pukkandan c171445431
[cleanup,build] Cleanup some build-related code
Fixes an issue in 7ab56be2c7
2 years ago
pukkandan 4f80952353
[cleanup] Delete unused extractors 2 years ago
pukkandan e13945a2fe
[ffmpeg] Fix features detection 2 years ago
pukkandan ca04e1bf49
[Metadata] Remove filename from attached info-json 2 years ago
Elyse 00828e2c93
[downloader/ffmpeg] Specify headers for each URL (#3553)
Closes #2696
Authored by: elyse0
2 years ago
pukkandan 7ab56be2c7
[build] Ensure `compat._legacy` is packed in executables
Fixes 9196cbfe8b (commitcomment-72192406)
2 years ago
pukkandan 059bc4db19
[compat/asyncio] Use `asyncio.all_tasks` 2 years ago
pukkandan 9196cbfe8b
[compat] Ensure submodules are correctly wrapped 2 years ago
pukkandan 9cd080508d
Revert acbc642250
Reverts "[utils] WebSocketsWrapper: Ignore warnings at websockets instantiation"

The warning should not be suppressed. We need to address it
2 years ago
Lesmiscore 69b59b4b4b
[downloader/fc2] Stop heatbeating once FFmpeg finishes
Authored by: Lesmiscore
2 years ago
Lesmiscore acbc642250
[utils] WebSocketsWrapper: Ignore warnings at websockets instantiation
This also fixes crash caused by moving asyncio to .compat.

Authored by: Lesmiscore
Thanks: J.Chung at Discord (581418557871620106)
2 years ago
Yipten 96b49af01c
[bandcamp] Exclude merch links (#3368)
Closes #3318
Authored by: Yipten
2 years ago
Teemu Ikonen 52c2af8298
[icareus] Add extractor (#3320)
Authored by: tpikonen, pukkandan
2 years ago
pukkandan a1ddaa899c
[hotstar] Refactor extractors
Closes #3517
2 years ago
pukkandan 6534298b12
[build] Avoid use of `install -D`
Closes #3429
2 years ago
pukkandan 90f4229409
[telegram] Fix metadata extraction
Closes #3528
2 years ago
pukkandan b0f636beb4
[Sponsorblock] Don't crash when duration is unknown
CLoses #3529
2 years ago
Ha Tien Loi d14b920c33
[PearVideo] Add fallback for formats (#3438)
Closes #3425
Authored by: hatienl0i261299
2 years ago
Evan Spensley 7774db5bf9
[EmbedThumbnail] Disable thumbnail conversion for mkv (#3512)
Closes #3209
Authored by: evansp
2 years ago
pukkandan 9b8ee23b99
[dependencies] Create module with all dependency imports 2 years ago
pukkandan 62f6f1cbf2
Don't imply `-s` for later stages of `-O` 2 years ago
mehq e08585b0f8
[Gofile] Support password-protected links (#3488)
Closes #3465
Authored by: mehq
2 years ago
pukkandan 2d3b3feb7e
[Olympics] Fix format extension
Closes #3481
2 years ago
pukkandan 6f638d325e
Fix `Makefile`
Closes #3467, #35

Authored by: putnam
2 years ago
Lesmiscore fdfc8149e1
[openrec:movie] Enable fallback for /movie/ URLs
Closes #3474
2 years ago
pukkandan 1e9969f4f5
bugfix for a44ca5a470, 19a0394044, 77f9033095
Closes #3472
2 years ago
pukkandan 43cc91ad75
bugfix for 19a0394044, 3d3bb1688b 2 years ago
felix 77f9033095
[compat] Split into sub-modules (#2173)
Authored by: fstirlitz, pukkandan
2 years ago
pukkandan 19a0394044
[cleanup] Misc cleanup and refactor (#2173) 2 years ago
pukkandan b6dc37fe2a
[test] Convert warnings into errors
* And fix some existing warnings

Authored by: fstirlitz
2 years ago
pukkandan 3d3bb1688b
[docs] Improve embedding docs and other minor fixes 2 years ago
pukkandan 2e25ce3a05
[niconico] Set `expected_protocol` to a public field
Closes #3440
2 years ago
Lesmiscore (Naoya Ozaki) c854208ccf
[downloader/fragment] Make single thread download work for --live-from-start (#3446)
Authored by: Lesmiscore
2 years ago
pukkandan e06bd8800f
Fix `--skip-unavailable-fragments`
Bug in d71fd41249
Closes #3437
2 years ago
pukkandan abfecb7bc1
[utils] Fix WebSocketsWrapper
Bug in 3cea3edd1a
Closes #3422
2 years ago
pukkandan 3b9d9f4374
Do not change fragment chunk-size when `--test`
Closes #3434
2 years ago
coletdjnz affc4fefea
[youtube] Fix episode metadata extraction 2 years ago
pukkandan 583910682f
[chingari] Fix archiving and tests 2 years ago
Felix S a49e777d59
[spotify] Detect iframe embeds (#3430)
Authored by: fstirlitz
2 years ago
Akmal cda1bc5197
[facebook] Improve thumbnail extraction (#3392)
Authored by: Wikidepia
2 years ago
pukkandan 743f39750c
Fix bug in 66cf3e1001 2 years ago
pukkandan 66cf3e1001
[EmbedSubtitle] Enable for more video extensions
Closes #3382
2 years ago
pukkandan b07897ef5b
[utils] certifi: Make sure the pem file exists
Closes #3353
2 years ago
pukkandan e5a998f368
[cleanup] Misc cleanup (#2173)
Authored by: fstirlitz, pukkandan
2 years ago
pukkandan f82711587c
[cleanup] Sort imports
Using https://github.com/PyCQA/isort

    isort -m VERTICAL_HANGING_INDENT --py 36 -l 80 --rr -n --tc .
2 years ago
pukkandan 86e5f3ed2e
[cleanup] Upgrade syntax
Using https://github.com/asottile/pyupgrade

1. `__future__` imports and `coding: utf-8` were removed
2. Files were rewritten with `pyupgrade --py36-plus --keep-percent-format`
3. f-strings were cherry-picked from `pyupgrade --py36-plus`

Extractors are left untouched (except removing header) to avoid unnecessary merge conflicts
2 years ago
pukkandan f9934b9614
[cleanup] Mark some compat variables for removal (#2173)
Authored by fstirlitz, pukkandan
2 years ago
felix cfb0511d82
[cleanup] Remove unused code paths (#2173)
Notes:

* `_windows_write_string`: Fixed in 3.6
  * https://bugs.python.org/issue1602
  * PEP: https://www.python.org/dev/peps/pep-0528

* Windows UTF-8 fix: Fixed in 3.3
  * https://bugs.python.org/issue13216

* `__loader__`: is always present in 3.3+
  * https://bugs.python.org/issue14646

* `workaround_optparse_bug9161`: Fixed in 2.7
  * https://bugs.python.org/issue9161

Authored by: fstirlitz
2 years ago
felix ab96d1ad1b
[cleanup] Remove unused scripts/tests (#2173)
Authored by fstirlitz, pukkandan
2 years ago
pukkandan 5a727063c5
[FFmpegMetadataPP] Remove `\0` from metadata 2 years ago
mehq fcdb8d6e88
[Gofile] Fix extraction (#3386)
Closes #3380
Authored by: mehq
2 years ago
krichbanana ca5300c7ed
[youtube] Add `:ytnotifications` extractor (#3347)
Authored by: krichbanana
2 years ago
pukkandan 97ec5bc550
[cookies] Report progress when importing cookies 2 years ago
pukkandan a25bca9f89
[youtube, cleanup] Minor refactoring
Authored by: coletdjnz, pukkandan
2 years ago
pukkandan f894294636
[EmbedThumbnail] Do not remove id3v1 tags 2 years ago
Lesmiscore 98804d034d
[utils] locked_file: Do not give executable bits for newly created files
Authored by: Lesmiscore
2 years ago
pukkandan 4abea8ca0a
[utils] `sanitize_path`: Fix when path is empty string 2 years ago
pukkandan d46a3e7a12
[rai] Add `release_year`
Closes #2319
2 years ago
Ashish Gupta 2d2b5493ee [ZEE5] Fix extractor.
Authored by: Ashish0804
Closes: https://github.com/yt-dlp/yt-dlp/issues/3105
2 years ago
github-actions dee1d65dc3 [version] update
Created by: pukkandan

:ci skip all
2 years ago
pukkandan 7884ade65e
Release 2022.04.08 2 years ago
Jacek Nowacki 89fabf1125
[bilibili] Fix extraction of title with quotes (#3350)
Closes #3289
Authored by: dzek69
2 years ago
pukkandan 11e1c2e3f8
[TikTokVM] Fix redirect to user URL
Closes #3349, Closes #3351
2 years ago
pukkandan ebc7d3ff1f
[docs] Minor improvements (#3309, #3343)
Authored by: cffswb, danielyli


Co-authored-by: Daniel Li <dan@danielyli.com>
Co-authored-by: cffswb <karte577@gmail.com>
2 years ago
pukkandan d8a58ddce7
De-prioritize automatic-subtitles when no `--sub-lang` is given
Closes #3314
2 years ago
mehq 4d57133095
[Jable] Add extractor (#3341)
Closes #3284
Authored by: mehq
2 years ago
Alexander Seiler 9b8b7a7b5e
[Zattoo] Fix extractors (#2288)
Closes: #1244
Authored by: goggle
2 years ago
Ha Tien Loi ab0970b233
[NRK] Extract timestamp (#3231)
Closes #3211
Authored by: hatienl0i261299
2 years ago
Lesmiscore b52e788eb2
[Piapro] Extract description with break lines
Authored by: Lesmiscore
Closes #3334
2 years ago
pukkandan 316f2650f8
Ignore `mhtml` formats from `-f mergeall`
Closes #3324
2 years ago
Ha Tien Loi bd4073c535
[AfreecaTV] Add `AfreecaTVUserIE` (#3286)
Closes #3257
Authored by: hatienl0i261299
2 years ago
pukkandan 22fba53fbd
[FfmpegMetadata] Write id3v1 tags 2 years ago
coletdev 61d3665d9d
[youtube] Fix uploader for collaborative playlists (#3332)
Authored by: coletdjnz
2 years ago
Lesmiscore (Naoya Ozaki) 870efdee28
[TVer] Fix extractor (#3268)
Authored by: Lesmiscore
2 years ago
pukkandan b506289fe2
[test] Add `test_locked_file` 2 years ago
pukkandan b63837bce0
[utils] locked_file: Fix non-blocking non-exclusive lock 2 years ago
Justin Keogh fcfa8853e4
[utils] locked_file: Do not truncate files before locking (#2994)
Authored by: jakeogh, pukkandan
2 years ago
Lesmiscore (Naoya Ozaki) 06b1628d3e
[twitcasting] Don't return multi_video for archive with single hls manifest (#3319)
Authored by: Lesmiscore
2 years ago
panatexxa da1ffde15d
[Moviepilot] Add extractor (#3282)
Authored by: panatexxa
2 years ago
Ha Tien Loi 42a4f21a03
[fptplay] Fix metadata extraction (#3218)
Authored by: hatienl0i261299
2 years ago
pukkandan 8973767198
Do not lock downloading file on Windows
Closes #3124
2 years ago
pukkandan 0edb3e336c
Do not prevent download if locking is unsupported
Closes #3022

Failure to lock download-archive is still fatal.
This is consistent with youtube-dl's behavior
2 years ago
pukkandan ce0593ef61
[http] Fix #3215 2 years ago
pukkandan a44ca5a470
[cleanup] Misc fixes
Closes https://github.com/yt-dlp/yt-dlp/pull/3213, Closes https://github.com/yt-dlp/yt-dlp/pull/3117

Related: https://github.com/yt-dlp/yt-dlp/issues/3146#issuecomment-1077323114, https://github.com/yt-dlp/yt-dlp/pull/3277#discussion_r841019671, a825ffbffa (commitcomment-68538986), https://github.com/yt-dlp/yt-dlp/issues/2360, 5fa3c9a88f (r70393519), 5fa3c9a88f (r70393254)
2 years ago
Teemu Ikonen 0a8a7e68fa
[ruutu] Detect embeds (#3294)
Authored by: tpikonen
2 years ago
Jeff Huffman f4d706a931
[crunchyroll:playlist] Implement beta API (#2955)
Closes #3121, #2930

Authored by: tejing1
2 years ago
Ha Tien Loi 5fa3c9a88f
[TikTok] Fix URLs with user id (#3295)
Closes #3243
Authored by: hatienl0i261299
2 years ago
pukkandan 04f3fd2c89
[cleanup] Use `_html_extract_title` 2 years ago
pukkandan 85e801a9db
Fallback to video-only format when selecting by extension
Closes #3296
2 years ago
pukkandan 5127e92a94
Fix filepath sanitization in `--print-to-file` 2 years ago
Ha Tien Loi 18eac302a2
[Imdb] Improve extractor (#3291)
Closes #3283
Authored by: hatienl0i261299
2 years ago
Tim Schindler 12e022d074
[Cybrary] Add extractor (#3264)
Authored by: aaearon
2 years ago
Lesmiscore (Naoya Ozaki) 265e586d96
[openrec] Download archived livestreams (#3267)
Authored by: Lesmiscore
2 years ago
Fam0r fbfde1c3e6
[elonet] Rewrite extractor (#3277)
Closes #2911
Authored by: Fam0r, pukkandan
2 years ago
aarubui dc57e74a7f
[tenplay] Improve extractor (#3280)
Authored by: aarubui
2 years ago
pukkandan a17526e427
[youtube:tab] Minor improvements (See desc)
* Support shorts on channel homepage
* Extract thumbnail of OLAK playlists
2 years ago
coletdev ad210f4fd4
[youtube:search] Support hashtag entries (#3265)
Authored-by: coletdjnz
2 years ago
coletdjnz c8e856a551
[web.archive:youtube] Make CDX API requests non-fatal
Partial fix for https://github.com/yt-dlp/yt-dlp/issues/3278
Authored-by: coletdjnz
2 years ago
nixxo c085e4ec47
[rai] Fix extraction of http formats (#3272)
Closes #3270
Authored by: nixxo
2 years ago
pukkandan 4c268f9cb7
[Nebula] Fix bug in 52efa4b312 2 years ago
Lesmiscore (Naoya Ozaki) 5d45484cc7
[niconico] Fix extraction of thumbnails and uploader (#3266) 2 years ago
pukkandan e6f868a63c
[utils] `traverse_obj`: Allow filtering by value 2 years ago
pukkandan c4f60dd7cd
[utils] Add `try_call` 2 years ago
pukkandan f189faf1ce
[BRMediathek] Fix VALID_URL
Closes #2466
2 years ago
Alexander Seiler 504f789ad5
[AZMedien] Support `tv.telezueri.ch` (#3251)
Authored by: goggle
2 years ago
Bricio bb5a7cb8ad
[Craftsy] Add extractor (#3208)
Authored by: Bricio
2 years ago
zackmark29 c418e6b5a6
[viu] Fix bypass for preview (#3247)
Authored by: zackmark29
2 years ago
pukkandan 11078c6d57
[crunhyroll] Fix inheritance
https://github.com/yt-dlp/yt-dlp/pull/2955#issuecomment-1083060465
2 years ago
MrRawes 5d0aeac0e9
[docs] Clarify the exact `BSD` license of dependencies (#3197)
Authored by: MrRawes
2 years ago
Felix S 180c81509f
[docs] Add an `.editorconfig` file (#3220)
Authored by: fstirlitz
2 years ago
Daniel ab2579bb45
[xnxx] Add `xnxx3.com` (#3188)
Authored by: rozari0
2 years ago
Ha Tien Loi 48e15bb6b1
[dailymotion] Support `geo.dailymotion.com` (#3230)
Closes #3229
Authored by: hatienl0i261299
2 years ago
pukkandan af4944d84b
Fix bug in 8a7f68d0b1
Closes #3241
2 years ago
David e7870111e8
[YouTube] Add new age-gate bypass (#3233)
Closes #3182
Authored by: zerodytrash, pukkandan
2 years ago
pukkandan 8a7f68d0b1
[ffmpeg] Cache version data
Related: https://github.com/dasl-/pifi/issues/9
2 years ago
Ha Tien Loi 9139d2fae0
[WasdTV] Add extractor (#3045)
Closes #3041
Authored by: un-def, hatienl0i261299
2 years ago
nyuszika7h bdd60588b0
[viki] Don't attempt to modify URLs with signature (#3222)
Closes #1379
Authored by: nyuszika7h
2 years ago
Luc Ritchie f5f15c9993
[BiliIntl] Support user-generated videos (#3203)
Authored by: wlritchi
2 years ago
pukkandan cb96c5be70
Fix `--no-overwrite` for playlist infojson
Fixes: https://github.com/yt-dlp/yt-dlp/issues/1467#issuecomment-1079922971
2 years ago
pukkandan 90137ca4be
[utils] Add `filter_dict` 2 years ago
coletdev 1c1b2f96ae
[youtube:tab] Fix duration extraction for shorts (#3171)
Related: https://github.com/TeamNewPipe/NewPipe/issues/8034
Authored-by: coletdjnz
2 years ago
Felix S 47b8bf207b
[go,viu] Extract subtitles from the m3u8 manifest (#3219)
Authored by: fstirlitz
2 years ago
Tim Schindler 4628a3aa75
[ITProTV] Add extractor (#3196)
Authored by: aaearon
2 years ago
mehq 5b4bb715e6
[BanBye] Add extractor (#3177)
Closes #3175
Authored by: mehq
2 years ago
pukkandan 1235d333ab
[youtube] Fix auto-translated automatic captions
d49669acad only covered ASR

Closes #2956
2 years ago
pukkandan 18e4940825
[youtube] Add extractor-arg to skip auto-translated subs 2 years ago
pukkandan c0b6e5c74d
Show warning when all media formats have DRM
Related: #1379
2 years ago
shirt 727029c508
[youtube] Detect DRM better
Authored by: shirt-dev
2 years ago
pukkandan 5c3895fff1
[outtmpl] Limit changes during sanitization
Closes #2761
2 years ago
coletdev fd2ad7cb24
[youtube:tab] Return shorts url if video is a short (#3168)
Allows filtering out shorts from feeds with `--match-filter`
Closes #3165
Authored-by: coletdjnz
2 years ago
pukkandan 4a3175fc4c
[VideoConvertor] Ensure all streams are copied
Closes #3200
2 years ago
pukkandan 5cf34021f5
[Concat] Ensure final directory exists
Fixes https://github.com/yt-dlp/yt-dlp/issues/3181#issuecomment-1079622589
2 years ago
pukkandan 34baa9fdf0
[outtmpl] Fix replacement/default when used with alternate 2 years ago
pukkandan 6db9c4d57d
Ignore format-specific fields in initial pass of `--match-filter`
Closes #3074
2 years ago
Lesmiscore (Naoya Ozaki) 3cea3edd1a
[utils] WebSocketsWrapper: Allow omitting `__enter__` invocation (#3187)
Authored by: Lesmiscore
2 years ago
pukkandan b1a7cd056a
Treat multiple `--match-filters` as OR
Closes #3144
2 years ago
pukkandan 28787f16c6
[downloader] Fix invocation of `HttpieFD`
Closes #3154
2 years ago
zackmark29 1fb707badb
[viu] Fixed extractor (#3136)
Closes #3133
Authored by: zackmark29, pukkandan
2 years ago
pukkandan a3f2445e29
[postprocessor,cleanup] Create `_download_json` 2 years ago
pukkandan ae72962643
[youtube] Try embedded client variants before agegate
agegate variants appears to be broken, but don't remove them for the time-being
2 years ago
pukkandan ae6a1b9585
[docs] Minor improvements
Closes #3127, Closes #3081, Closes #3177
2 years ago
pukkandan 231025c463
Fix bug in 52efa4b312
Closes #3173
2 years ago
pukkandan 700ccbe3f1
[extractor] Allow control characters inside json
Closes #3174
2 years ago
vvto33 12a64f2777
[TVer] Support landing page (#3075)
Authored by: vvto33
2 years ago
mehq b8f2f8f6b3
[LastFM] Add extractors (#3141)
Closes #2967
Authored by: mehq
2 years ago
coletdev af14914baa
Remove `Accept-Encoding` header from `std_headers` (#3153)
This should be set by each downloader to what it supports.
Fixes https://github.com/yt-dlp/yt-dlp/issues/3142
Authored-by: coletdjnz
2 years ago
pukkandan ea5ca8e7fc
[ellentube] Extract subtitles from manifest
Fixes https://github.com/ytdl-org/youtube-dl/issues/30761
2 years ago
Lesmiscore (Naoya Ozaki) c2d2ee40eb
[generic] Extract subtitles from video.js (#3156)
Authored by: Lesmiscore
2 years ago
pukkandan c70c418d33
Fix `--abort-on-error` for subtitles
Closes #3163
2 years ago
pukkandan b9c7b1e9b4
[cleanup, vimeo] Fix tests 2 years ago
coletdev d5820461e8
Use certificates from `certifi` if installed (#3115)
Fixes #3102 and most `CERTIFICATE_VERIFY_FAILED` issues

Authored by: coletdjnz
2 years ago
coletdev 8a23db9519
[wget] Fix proxy (#3152)
Upstream PR: https://github.com/ytdl-org/youtube-dl/pull/29343
Authored-by: kikuyan, coletdjnz
2 years ago
CplPwnies 1f1df1251e
[adobepass] Fix Suddenlink MSO (#3148)
Authored by: CplPwnies
2 years ago
1-Byte 84842aee2b
[azmedien] Add TVO Online to supported hosts (#3125)
Authored by: 1-Byte
2 years ago
Lesmiscore (Naoya Ozaki) be4685ab7b
[http] Reject broken range before request (#3079)
* And fix filesize estimate for byterange downloads

Closes #2001
Authored by: Lesmiscore, Jules-A, pukkandan
2 years ago
coletdev e6552207da
[panopto] Improve subtitle extraction and support slides (#3009)
Related: #1946, #2908
Authored-by: coletdjnz
2 years ago
coletdev a2e77303e3
[downloader/http] Retry on more errors (#3065)
Closes #3056, #2071
Related: #3034, #2969
Authored-by: coletdjnz
2 years ago
foghawk 510809f1aa
[nitter] Minor fixes and update instance list (#3099)
Authored by: foghawk
2 years ago
i6t f4ad919298
[Veo] Fix extractor (#3101)
Authored by: i6t
2 years ago
s0u1h eeb2a770f3
[utils] `format_decimal_suffix`: Fix for very large numbers (#3109)
Authored by: s0u1h
2 years ago
pukkandan 0c14d66ad9
Fix `autonumber`
Bug in 09b49e1f68
2 years ago
pukkandan 52efa4b312
[extractor] Add `_perform_login` function (#2943)
* Adds new functions `_initialize_pre_login` and `_perform_login` as part of the extractor API
* Adds `ie.supports_login` to the public API
2 years ago
Luc Ritchie 028f6437f1
[afreecatv] Match new vod url (#3097)
Authored by: wlritchi
2 years ago
Sipherdrakon 43c38abd1f
[ParamountPlus,CBS] Change VALID_URL (#3098)
Closes #3096

Authored by: Sipherdrakon
2 years ago
pukkandan e4b98809cf
[youtube] Fix pagination of `membership` tab 2 years ago
pukkandan 16c620bc55
Handle float in `--wait-for-video`
Closes #3082
2 years ago
pukkandan 5a373d9768
[veo] Fix `_VALID_URL`
Closes #3095
2 years ago
Ha Tien Loi 7e6a187096
[Huya] Add extractor (#3035)
Closes #3033
Authored by: hatienl0i261299
2 years ago
Lesmiscore (Naoya Ozaki) 3f168f0e45
[RUTV] Fix format sorting (#3085)
Closes #3084
Authored by: Lesmiscore
2 years ago
Lesmiscore (Naoya Ozaki) 7bdcb4a40e
[niconico] Rewrite NiconicoIE (#3018)
Closes https://github.com/yt-dlp/yt-dlp/issues/2636, partially fixes https://github.com/yt-dlp/yt-dlp/issues/367
Authored by: Lesmiscore
2 years ago
Soebb 497a6c5f57
[daftsex] Fix extractor (#2757)
Closes #2637

Authored by: Soebb
2 years ago
BohwaZ 4b3c5d1b81
[FranceCulture] Support playlists (#1872)
Authored by: bohwaz
2 years ago
Dorian Westacott ec47c12f69
[ParamountPlusSeries] Support multiple pages (#3026)
Authored by: dodrian
2 years ago
pukkandan 25791435b7
[arte] Add `format_note` to m3u8 formats
Related: #3086
2 years ago
pukkandan 4e34889f1c
[rumble] unescape title 2 years ago
pukkandan a1b2d84360
[youtube] Avoid false positives when detecting damaged formats
Closes #3083
2 years ago
coletdjnz 5dbc77df26
[youtube:api] Prefer minified JSON response
Authored-by: coletdjnz
2 years ago
Lesmiscore (Naoya Ozaki) d71fd41249
[fragment] Read downloaded fragments only when needed (#3069)
Authored by: Lesmiscore
2 years ago
shirt d69e55c1d8
[cleanup] Remove readthedocs from README.md 2 years ago
shirt 9f2a6352ea
[docs] Remove readthedocs 2 years ago
pukkandan aeb21b98f1
[phantomjs] Fix bug in 8b7539d27c
Closes #3066
2 years ago
coletdev b3edc8068e
[downloader/mhtml] Fix fragments with absolute urls (#3044)
Authored-by: coletdjnz
2 years ago
coletdev 17322130a9
[youtube] Improve video upload date handling (#3029)
* Don't prefer UTC upload date for past live streams/premieres
* Improve regex (fixes a regression)

Authored-by: coletdjnz
2 years ago
pukkandan 5ca764c506
[FFmpegVideoConvertor] Add more formats to `--remux-video` 2 years ago
pukkandan e880c92c65
Exit after `--dump-user-agent`
Bug in d1b5f70bc9

Closes #3055
2 years ago
coletdjnz a825ffbffa
[extractor] Support merging subtitles with data
Authored-by: coletdjnz
2 years ago
pukkandan 592b748582
[cleanup] Minor cleanup
Closes #3006
2 years ago
pukkandan cf4f42cb97
Protect stdout from unexpected progress and console-title
Closes #3023
2 years ago
pukkandan da1d734fbe
Remove incorrect warning for `--dateafter`
Closes #3030
2 years ago
pukkandan 2b38f7b2bc
[MetadataParser] Validate outtmpl early 2 years ago
pukkandan 76aa991374
Fix case of `http_headers`
Bug in 8b7539d27c

Fixes https://github.com/yt-dlp/yt-dlp/issues/1346#issuecomment-1064527765
2 years ago
Lesmiscore (Naoya Ozaki) 24e3d87431
[PokemonSoundLibrary] Add extractor (#3001)
Authored by: Lesmiscore
2 years ago
Ha Tien Loi 63b2f88bc7
[Zingmp3] Fix signature (#3004)
Authored by: hatienl0i261299
2 years ago
pukkandan 07ff290dce
Fix `--sleep-interval`
Bug in d1b5f70bc9

Closes #3012
2 years ago
pukkandan 51c22ef4e2
Fix `--throttled-rate`
Typo in d1b5f70bc9

Closes #2996
2 years ago
Ha Tien Loi 33b8c411bc
[MangoTV] Improve extractor (#2971)
Authored by: hatienl0i261299
2 years ago
MMM 10331a2672
Fix `--print` with `--ignore-no-formats` when url is `None` (#3000)
Authored by: flashdagger
2 years ago
Lesmiscore (Naoya Ozaki) 6e6beffd04
[openrec] Refactor extractors (#2941)
Authored by: Lesmiscore
2 years ago
pukkandan e491d06d34
[utils] ExtractorError: Fix for older python versions
Closes #2993
2 years ago
pukkandan 7a0ba75857
[build] Add `requirements.txt` to pip distributions
Closes #2995
2 years ago
coletdev e248be3319
[panopto] Add extractors (#2908)
Based on https://github.com/ytdl-org/youtube-dl/pull/13449
Closes #1946
Authored by: coletdjnz, kmark
2 years ago
pukkandan ff91cf7483
[utils] Add `get_first` 2 years ago
github-actions a3b7dff015 [version] update
Created by: pukkandan

:ci skip all
2 years ago
pukkandan c0c2c57d35
Release 2022.03.08.1 2 years ago
pukkandan aee6ce5867
[build] Fix bug in 08d30158ec 2 years ago
pukkandan d1b5f70bc9
[cleanup] Refactor `__init__.py` (#2570)
* Split `__init__` code into multiple functions
* Clean up validation code by grouping similar types of options
* Expose `parse_options` to third parties
2 years ago
github-actions 1eae7f94c1
[version] update
Created by: pukkandan

:ci skip all
2 years ago
pukkandan 535eb16a44
Release 2022.03.08 2 years ago
P-reducible 9461cb586a
[Rokfin] Fix `availability` (#1534)
Authored by: P-reducible
2 years ago
pukkandan a405b38f20
[youtube] Further de-prioritize 3gp format 2 years ago
pukkandan 08d30158ec
[cleanup, docs] Misc cleanup
Closes #2828, closes #2734, closes #2802, closes #2937
2 years ago
Ha Tien Loi c89bec262c
[xinpianchang] Add extractor (#2963)
Authored by: hatienl0i261299
2 years ago
Ha Tien Loi 151f8f1c02
[fptplay] Add extractor (#2949)
Closes #2857
Authored by: hatienl0i261299
2 years ago
Max Mehl a35155be17
[peertube] Add media.fsfe.org (#2986)
Authored by: mxmehl
2 years ago
nyuszika7h e66662b1e0
[ccma] Fix timestamp parsing (#2989)
Authored by: nyuszika7h
2 years ago
coletdev 4390d5ec12
Add brotli content-encoding support (#2433)
Authored by: coletdjnz
2 years ago
CplPwnies 9e0e6adb2d
[adobepass] Add Suddenlink MSO (#2977)
Closes #2704
Authored by: CplPwnies
2 years ago
Lesmiscore b637c4e22e
[mildom] Fix linter 2 years ago
Lesmiscore (Naoya Ozaki) fb6e3f4389
[mildom] Rework extractors (#2940)
Authored by: Lesmiscore
2 years ago
pukkandan 409cdd1ec9
[ard] Fix valid URL
Partial fix for #2975
2 years ago
coletdev 992f9a730b
[youtube] Prefer UTC upload date for videos (#2223)
Except for live/scheduled streams/premieres. 
Closes #1881
Related: #2402 
Authored-by: coletdjnz
2 years ago
pukkandan 497d2fab6c
[utils] Better traceback for `ExtractorError` 2 years ago
pukkandan 2807d1709b
[nrk] Add fallback API
Closes #1891
2 years ago
shirt b46ccbc6d4
[build] Update pyinstaller to 4.10 2 years ago
Lesmiscore 1ed7953a74
[utils] render_table: Fix character calculation for removing extra gap
without this fix, the column next to delimiter will lack leading spaces on terminal (see https://github.com/yt-dlp/yt-dlp/pull/920#issuecomment-1059914615 for the situation)
2 years ago
pukkandan d49669acad
[youtube] Fix automatic captions
Closes #2956
2 years ago
foghawk bed30106f5
[tumblr] Fix extractor (#2883)
Authored by: foghawk
2 years ago
Zenon Mousmoulas 27231526ae
[ant1newsgr] Add extractor (#1982)
Authored by: zmousm
2 years ago
pukkandan 50e93e03a7
Update to ytdl-commit-6508688
Make default upload_/release_date a compat_str
6508688e88

Except:
* "[NDR] Overhaul NDR and NJoy extractors" https://github.com/ytdl-org/youtube-dl/pull/30531
    - 01824d275b
    - 39a98b09a2
    - f0a05a55c2
    - 4186e81777
2 years ago
FestplattenSchnitzel 72e995f122
[VideocampusSachsen] Add extractors (#2787)
Authored by: FestplattenSchnitzel
2 years ago
pukkandan 8b7539d27c
Implement `--add-header` without modifying `std_headers`
Closes #2526, #1614
2 years ago
pukkandan e48b3875ec
Revert 2e4cacd038
Closes #2923
2 years ago
pukkandan 2a938746f3
Fix verbose log when stdout/stderr encoding is `None`
See: 5c10453827
2 years ago
pukkandan 933dbf5a55
[bandcamp] Detect acodec 2 years ago
pukkandan a10aa588b0
[FormatSort] Consider `acodec`=`ogg` as `vorbis` 2 years ago
pukkandan be8cd3cb1d
[twitch] Fix field name of `view_count` 2 years ago
pukkandan 319b6059d2
Better error message when no --live-from-start format 2 years ago
pukkandan 4c3f8c3fb6
Handle negative duration from extractor
Closes #2921
2 years ago
pukkandan 7265a2190c
Fix doubling of `video_id` in `ExtractorError` 2 years ago
pukkandan 3a4bb9f751
[lbry] Fix `--ignore-no-formats-error`
Closes #2942
2 years ago
i6t b90dbe6c19
[Gettr] Improve extractor (#2920)
Authored by: i6t
2 years ago
Jeff Huffman 97bef011ee
[crunchyroll] Better error reporting on login failure (#2938)
Authored by: tejing1
2 years ago
Ha Tien Loi ecca4519b7
[zingmp3] Fix extractor (#2889)
Authored by: hatienl0i261299
2 years ago
Ha Tien Loi 761fba6d22
[daystar] Add extractor (#2924)
Closes #2887
Authored by; hatienl0i261299
2 years ago
Ha Tien Loi 5bcccbfec3
[telegram] Add extractor (#2922)
Closes #2910

Authored by: hatienl0i261299
2 years ago
coletdev ded9f32667
[extractor] Support `--mark-watched` without `_NETRC_MACHINE` (#2939)
Authored by: coletdjnz
2 years ago
Emanuel Hoogeveen 45806d44a7
[downloader] Obey `--file-access-retries` when deleting/renaming (#2224)
Authored by: ehoogeveen-medweb
2 years ago
pukkandan 747c0bd127
[utils] Improve file locking
* Implement non-blocking locks for windows
* Don't raise error when closing a closed file
2 years ago
Justin Keogh acea8d7cfb
[utils] Fix file locking for AOSP (#2714)
Closes #2080, #2670

Authored by: jakeogh
2 years ago
pukkandan f1d130902b
[utils] OnDemandPagedList: Do not download pages after error 2 years ago
pukkandan c2ae48dbd5
[manyvids] Extract `uploader` (#2913)
Authored by: regarten
2 years ago
pukkandan a5c0c20252
[cleanup] Don't pass protocol to `_extract_m3u8_formats` for live videos
`live` parameter already handles changing the protocol
2 years ago
Lesmiscore (Naoya Ozaki) f494ddada8
[niconico] Add playlist extractors and refactor (#2915)
Authored by: Lesmiscore
2 years ago
Lesmiscore (Naoya Ozaki) 02fc6feb6e
[mirrativ] Cleanup extractor code (#2925)
Authored by: Lesmiscore
2 years ago
pukkandan 7eaf7f9aba
[rokfin] Add stack and channel extractors (#1534)
Authored by: P-reducible, pukkandan
2 years ago
pukkandan 334b1c4800
[rokfin] Add extractor (#1534)
Authored by: P-reducible, pukkandan
2 years ago
coletdev 7c219ea601
[youtube:tab] Follow redirect to regional channel (#2884)
Closes #2694
Authored by: coletdjnz
2 years ago
Lesmiscore (Naoya Ozaki) 93c8410d33
[downloader/fragment] Fix bugs around resuming with Range (#2901)
Authored by: Lesmiscore
2 years ago
Lesmiscore 195c22840c
[downloader/fragment] Ignore `FileNotFoundError` when downloading livestreams
when `--live-from-start` is used for YouTube and the live ends, request for the last segment prematurely ends (or 404, 403).
this is causing lack of the file and `FileNotFoundError`
lacking segment doesn't have any data, so it's safe to ignore
2 years ago
Lesmiscore f0734e1190
[downloader/fragment] Fix problem where multiple threads can share one iterator
which causes "ValueError: generator already executing" error

Closes #2881
2 years ago
Lesmiscore (Naoya Ozaki) 15dfb3929c
[fc2:live] Add extractor (#2418)
Authored by: Lesmiscore
2 years ago
Lesmiscore (Naoya Ozaki) 3e9b66d761
[AbemaTV] Add extractors (#1688)
Authored by: Lesmiscore
2 years ago
Lesmiscore (Naoya Ozaki) a539f06570
[downloader/fragment] Improve `--live-from-start` for YouTube livestreams (#2870) 2 years ago
pukkandan b440e1bb22
[devscripts] Improve `prepare_manpage`
Closes #2873
2 years ago
Lesmiscore (Naoya Ozaki) 03f830040a
[YoutubeDL] Fill more fields for playlists (#2824) 2 years ago
pukkandan 09b49e1f68
Add pre-processor stage `after_filter`
* Move `_match_entry` and `post_extract` to `process_video_result`. It is also left in `process_info` for API compat
* `--list-...` options and `--force-write-archive` now obey filtering options
* Move `SponsorBlockPP` to `after_filter`. Closes https://github.com/yt-dlp/yt-dlp/issues/2536
* Reverts 4ec82a72bb since this commit addresses the issue it was solving
2 years ago
pukkandan 1108613f02
[youtube:tab] Reject webpage data if redirected to home page
Closes #2660
2 years ago
pukkandan a30a6ed3e4
[youtube:tab] Add `approximate_date` extractor-arg 2 years ago
pukkandan 65d151d58f
[spiegel] Fix `_VALID_URL`
Closes #2842
2 years ago
pukkandan 72073451be
[ThumbnailsConvertor] Support `webp`
Closes #2226
2 years ago
Lesmiscore (Naoya Ozaki) 77cc7c6e60
[nhk] Add support for NHK for School (#2850)
Authored by: Lesmiscore
2 years ago
i6t 971c4847d7
[Gettr] Fix formats order (#2832)
Closes #2557

Authored by: i6t
2 years ago
Nil Admirari 7a34b5d628
[SponsorBlock] Fixes for highlight and "full video labels" (#2849)
Authored by: nihil-admirari
2 years ago
Aniruddh Joshi 4d4f9a029f
[zee5] Support web-series (#2827)
Authored by: Aniruddh-J
2 years ago
Lesmiscore (Naoya Ozaki) f099df1463
[TwitCasting] Check for password protection (#2838)
Authored by: Lesmiscore
2 years ago
pukkandan 3f4faff748
[generic] Pass referer to extracted formats
Closes #2839
2 years ago
Daniel.Zeng be8d623455
[Bilibili] Pass referer for all formats (#2834)
Authored by: blackgear
2 years ago
Lesmiscore a7d4acc018
[youtube] Escape possible `$` in `_extract_n_function_name` regex 2 years ago
Bepis febff4c119
[tubitv] Fix/improve TV series extraction (#2829)
Authored by: bbepis
2 years ago
pukkandan ed66a17ef0
[FFmpegConcat] Abort on `--simulate` 2 years ago
Bricio 5625e6073f
[Biqle] Fix extractor (#2731)
Closes #193
Authored by: Bricio
2 years ago
pukkandan 0ad92dfb18
[youtube] De-prioritize potentially damaged formats
Closes #2823
2 years ago
pukkandan 60f3e99592
Tolerate failure to `--write-link` due to unknown URL
Closes #2724
2 years ago
pukkandan 8d93e69d67
Create necessary directories for `--print-to-file`
Closes #2721
2 years ago
pukkandan 3aa915400d
Fix `-all` for `--sub-langs`
Closes #2703
2 years ago
pukkandan dcd55f766d
[aria2c] Add `--http-accept-gzip=true`
Closes #1936, #1236
2 years ago
pukkandan 2e4cacd038
[youtube] Fix intermittent failure of embed-based age-gate bypass 2 years ago
Ronnnny c15c316b21
[abc] Support 1080p (#2819)
Authored by: Ronnnny
2 years ago
Bricio 549cb2a836
[rtvs] Fix extractor (#2795)
Closes #2758

Authored by: Bricio
2 years ago
MinePlayersPE c571b3a6ab
[youtube] Fix n-sig extraction for phone player JS (#2816)
Authored by: MinePlayersPE
2 years ago
Bricio 5b804e3906
[washingtonpost] Fix extractor (#2796)
Closes #2778
Authored by: Bricio
2 years ago
Lesmiscore (Naoya Ozaki) 6bb608d055
[piapro] Add extractor (#2801)
Based on https://github.com/ytdl-org/youtube-dl/pull/25922
Closes #2710, https://github.com/ytdl-org/youtube-dl/issues/5856

Authored by: pycabbage, Lesmiscore
2 years ago
Nil Admirari ae419aa94f
[Sponsorblock] minor fixes (#2793)
* preserve mtime - Closes #2769
* keep concat spec on failure

Authored by: nihil-admirari
2 years ago
ajj8 ac184ab742
[bbc] Fix extraction of news articles (#2811)
Closes #1374

Authored by: ajj8
2 years ago
pukkandan 5c10453827
Fix for when stdout/stderr encoding is None
Closes #2711
2 years ago
pukkandan ffa89477ea
[extractor] Fix for manifests without period duration
Closes #2705
Authored by: dirkf, pukkandan
2 years ago
zenerdi0de db74de8c54
[dropbox] fix regex (#2814)
Closes #2812
Authored by: zenerdi0de
2 years ago
Grabien edecb5f81f
[extractor/cspan] Support of C-Span congress videos (#2295)
Authored by: Grabien
2 years ago
lyz-code 85a0ad0117
[bandcamp] Fix user URLs (#2800)
Authored by: lyz-code
2 years ago
Lesmiscore (Naoya Ozaki) 07ea0014ae
[twitcasting] Add fallback for finding running live (#2803)
Authored by: Lesmiscore
2 years ago
schn0sch e1f7f235bd
[peekvids] Use JSON-LD (#2784)
Authored by: schn0sch
2 years ago
shirt fc259cc249
[build] Update pyinstaller to 4.9 2 years ago
Lesmiscore (Naoya Ozaki) 9a5b012575
[niconico:tag] Add support for searching tags (#2789) 2 years ago
Lesmiscore (Naoya Ozaki) df635a09a4
[twitcasting] Fix extraction (#2788)
Authored by: Lesmiscore
2 years ago
cyberfox1691 812283199a
[murrtube] Add extractor (#2387)
Authored by: cyberfox1691
2 years ago
marieell 5c6dfc1f79
[ATVAt] Detect geo-restriction (#2777)
Authored by: marieell
2 years ago
schn0sch c2a8547fdc
[peekvids] Add extractor (#2414)
Authored by: schn0sch
2 years ago
Bricio 0a19532ead
[Caltrans] Add extractor (#2781)
Closes #2775

Authored by: Bricio
2 years ago
Ronald Ip 2d41e2eceb
[twitter] Fix for private videos (#2772)
Closes #2762, https://github.com/ytdl-org/youtube-dl/issues/27643
Authored by: iphoting
2 years ago
Lesmiscore (Naoya Ozaki) 81c5f44c0f
[fc2] Fix extraction (#2776)
Closes #2774

Authored by: Lesmiscore
2 years ago
Michael Pauley 1f7db8533a
[cookies] Update MacOS12 `Cookies.binarycookies` location (#2742)
Authored by: mdpauley
2 years ago
pukkandan e8969bda94
Obey `--abort-on-error` for "ffmpeg not installed"
Closes #1840
2 years ago
chris c82f051dbb
[ruv.is] Add extractor (#2665)
Closes: #2122

Authored by: iw0nderhow
2 years ago
pukkandan 49895f062e
[tiktok] Fix `vt.tiktok` URLs
and add test
2 years ago
coletdev 60f393e48b
[youtube] Ensure subtitle urls are absolute (#2765)
Closes #2755

Authored by: coletdjnz
2 years ago
pukkandan 88afe05695
[tiktok] Fix `vm.tiktok` URLs
Closes #2396
2 years ago
pukkandan 57ebfca39b
Set `webpage_url_...` from `webpage_url` and not input URL
Closes #2756
2 years ago
YuenSzeHong b1cb0525ac
[fujitv] Extract resolution for free sources (#2685)
Authored by: YuenSzeHong
2 years ago
Lesmiscore (Naoya Ozaki) da42679b87
[utils] WebSockets wrapper for non-async functions (#2417)
Authored by: Lesmiscore
2 years ago
Lesmiscore 2944835080
[bigo] Fix extractor to not to use `form_params` 2 years ago
Tom a3eb987e0e
[zoom] Add support for screen cast (#2699)
Authored by: Mipsters
2 years ago
Lesmiscore (Naoya Ozaki) 7bc33ad0e9
[bigo] Add extractor (#2749)
Fixes https://github.com/ytdl-org/youtube-dl/issues/18357

Authored by: Lesmiscore
2 years ago
Bricio 2068a60318
[generic] Set rss `guid` as video id (#2741)
Closes #2424
Authored by: Bricio
2 years ago
Lukas Fink 1ce9a3cb49
Add regex operator and quoting to format filters (#2698)
Closes #2681 
Authored by: lukasfink1
2 years ago
pukkandan d49f8db39f
[utils] Validate `DateRange` input
Closes #2641
2 years ago
pukkandan ab6df717d1
[youtube] Differentiate descriptive audio by language code
Related: #2677
2 years ago
pukkandan 0c8d9e5fec
[youtube] Label original auto-subs
Closes #2655
2 years ago
Felix S 3f047fc406
[extractor] Extract subtitles from manifests for more sites (#2686)
vimeo, globo, kaltura, svt

Authored by: fstirlitz
2 years ago
i6t 82b5176783
[Gettr] Add `GettrStreamingIE` (#2661)
Closes #2654
Authored by: i6t
2 years ago
Bricio 17b183886f
[globo] Expand valid URL (#2732)
Closes #2730 
Authored by: Bricio
2 years ago
Bricio cd170e8184
[beeg] Fix extractor (#2616)
Closes #2592

Authored by: Bricio
2 years ago
pukkandan 297e9952b6
[extractor] Allow `http_headers` to be specified for `thumbnails` 2 years ago
marieell dca4f46274
[cleanup] Remove extractors for some dead websites (#2739)
90tv.ir, HornBunny.com, 220.ro, 5min.com, Kankan.com, Roxwel.com,
FreshLive.tv, TheScene.com, Vube.com

Authored by: marieell
2 years ago
Luc Ritchie 5dee3ad037
[afreecatv] Support password-protected livestreams (#2738)
Authored by: wlritchi
2 years ago
pukkandan 079a7cfc71
[downloader] Do not use aria2c for non-native `m3u8`
Closes #2718
2 years ago
pukkandan 3856407a86
[options] Rename `--clean-infojson` to `--clean-info-json` 2 years ago
pukkandan db2e129ca0
[options] Better ambiguous option resolution
Eg: `--write-auto` no longer results in
> ambiguous option: --write-auto (--write-auto-subs, --write-automatic-subs?)
2 years ago
marieell 1209b6ca5b
[zaq1] Remove dead extractor (#2728)
Was already partially removed in 29f7c58aaf
Authored-by: marieell
2 years ago
Justin Keogh a3125791c7
[utils] Use `locked_file` for `sanitize_open` (#1066)
Authored by: jakeogh
2 years ago
ofkz f1657a98cb
[nfb] Add extractor (#2579)
Authored by: ofkz
2 years ago
github-actions b761428226 [version] update
Created by: pukkandan

:ci skip all
2 years ago
pukkandan c1653e9efb
Release 2022.02.04 2 years ago
pukkandan 84bbc54599
[youtube:search] Add tests 2 years ago
pukkandan 1e5d87beee
[websocket] Make syntax error in `websockets` module non-fatal
Closes #2633
2 years ago
nixxo 22219f2d1f
[mediaset] Fix extractor (#2158)
Closes #2149
Authored by: nixxo
2 years ago
Lesmiscore (Naoya Ozaki) 5a13fdd225
[twitcasting] Enforce UTF-8 for POST payload (#2521)
Authored by: Lesmiscore
2 years ago
coletdjnz af5c1c553e
[youtube] Fix search extractor
Regression introduced in 16aa9ea41d. Closes #2628
Authored-by: coletdjnz
2 years ago
github-actions 3cea9ec2eb [version] update
Created by: pukkandan

:ci skip all
2 years ago
pukkandan 28469edd7d
Release 2022.02.03 2 years ago
pukkandan d5a398988b
Update to ytdl-commit-78ce962
[youtube] Support channel search
78ce962f4f
2 years ago
pukkandan 455a15e2dc
[cleanup,docs] Minor fixes
Closes #2541, #2484
2 years ago
pukkandan 460a1c08b9
[FFmpegConcat] Abort on --skip-download and download errors
Closes #2470
2 years ago
pukkandan 4918522735
[utils] Strip double spaces in `clean_html`
Closes #2497
Authored by: dirkf
2 years ago
pukkandan 65662dffb1
Make nested --config-locations relative to parent file
* and allow environment variables in it so that you can use `$PWD`/`%cd%`
to specify paths relative to current directory
2 years ago
pukkandan 5e51f4a8ad
[glomex] Simplify embed detection (#2600)
Closes #2512
2 years ago
pukkandan 54bb39065c
[bilibili] Fix extractor
Closes #2599, Closes #2562
Fixes https://github.com/yt-dlp/yt-dlp/pull/1716#issuecomment-980512982
2 years ago
pukkandan c5332d7fbb
[instagram] Fix bug in 013322a95e
Closes #2552
2 years ago
pukkandan 35cd4c4d88
[cctv] De-prioritize sample format
Closes #2479
2 years ago
pukkandan 67fb99f193
[doodstream] Fix extractor
Closes #2584
2 years ago
pukkandan 85553414ae
[generic] Allow further processing of json_ld URL
Closes #2578
2 years ago
pukkandan d16df59db5
Fix `--compat-options list-formats`
Closes #2481
2 years ago
Bricio 63c3ee4f63
[globo] Fix extractor (#2589)
Closes #2524
Authored by: Bricio
2 years ago
pukkandan 182bda88e8
[youtube, cleanup] Misc fixes and cleanup 2 years ago
pukkandan 16aa9ea41d [youtube] Add extractor `YoutubeMusicSearchURLIE`
Closes #2568
2 years ago
Lesmiscore (Naoya Ozaki) d6bc443bde
[fc2] Fix extraction (#2572)
Closes #2566
Authored by: Lesmiscore
2 years ago
MinePlayersPE 046cab3915
[TikTok] Iterate through app versions (#2449)
Closes #2476
Authored by: MinePlayersPE
2 years ago
Sipherdrakon 7df07a3b55
[dplay] Add extractors for site changes (#2401)
Closes #2438
Authored by: Sipherdrakon
2 years ago
Zenon Mousmoulas 2d49720f89
[ertgr] Add new extractors (#2338)
Authored-by: zmousm, dirkf
2 years ago
pukkandan 48416bc4a8
[youtube] Fix n-sig for player e06dea74 2 years ago
pukkandan 6a0546e313
[outtmpl] Handle hard-coded file extension better
When we know that the user-provided extension is the correct final one,
replace it with intermediate extension during download
2 years ago
pukkandan dbcea0585f
[outtmpl] Handle `-o ""` better
Since the specific type of file is not downloaded when giving `-o "<type>:"`,
now `-o ""` acts as an alias to `--skip-download`
2 years ago
KiberInfinity f7d4854131
[Pladform] Fix redirection to external player (#2550)
Authored by: KiberInfinity
2 years ago
foghawk 403be2eefb
[tumblr] Fix 403 errors and handle vimeo embeds (#2542)
Fixes https://github.com/ytdl-org/youtube-dl/issues/29585
Authored by: foghawk
2 years ago
lazypete365 63bac931c2
[mildom] Fix extractor (#2533)
Closes #2519
Authored by: lazypete365
2 years ago
Jeff Huffman 7c74a01584
[crunchyroll] Fix login (#2530)
Closes #1424
Authored by: tejing1
2 years ago
pukkandan 1d3586d0d5
[aes] Add unpad_pkcs7 2 years ago
pukkandan c533c89ce1
[GoogleSearch] Fix extractor 2 years ago
KiberInfinity b8b3f4562a
[Odnoklassniki] Improve embedded players extraction (#2549)
Authored by: KiberInfinity
2 years ago
nyuszika7h 1c6f480160
[viki] Fix "Bad request" for manifest (#2540)
Closes #2499
Authored by: nyuszika7h
2 years ago
u-spec-png f8580bf02f
[Bilibili] Add 8k support (#1964)
Closes #1898, #1819
Authored by: u-spec-png
2 years ago
Zenon Mousmoulas 19afd9ea51
[GlomexEmbed] Avoid large match objects
Closes #2512
Authored by: zmousm
2 years ago
trasssh b72270d27e
[MySpass] Fix video url processing (#2510)
Closes #2507
Authored by: trassshhub
2 years ago
Jeff Huffman 706dfe441b
[crunchyroll:beta] Add cookies support (#2506)
* Extract directly from the beta API when cookies are passed. If login cookie is absent, the extraction is delegated to `CrunchyrollIE`. This causes different metadata to be extracted (including formats and video id) and therefore results in a different archive entry. For now, this issue is unavoidable since the browser also redirects to the old site when not logged in.

* Adds extractor-args `format` and `hardsub` to control the source and subtitles of the extracted formats

Closes #1911
Authored by: tejing1
2 years ago
YuenSzeHong c4da5ff971
[Fujitv] Extract metadata and support premium (#2505)
Authored by: YuenSzeHong
2 years ago
KiberInfinity e26f9cc1e5
[YandexVideoPreview] Add extractor (#2500)
Closes #1794
Authored by: KiberInfinity
2 years ago
pukkandan fa8fd95118
[cookies] Fix keyring selection for unsupported desktops
Closes #2450
2 years ago
MinePlayersPE 05b23b4156
[iq.com] Add VIP support (#2444)
Authored by: MinePlayersPE
2 years ago
Aleri Kaisattera 8f028b5f40
[Vimm] add recording extractor (#2441)
Authored by: alerikaisattera
2 years ago
MinePlayersPE 013322a95e
[Instagram] Fix extraction when logged in (#2439)
Closes #2435
Authored by: MinePlayersPE
2 years ago
Ashish Gupta fb62afd6f0
[Musicdex] Add extractors (#2421)
Closes #2204
Authored by: Ashish0804
2 years ago
Ashish Gupta 50600e833d
[ThisOldHouse] Improve Premium URL check (#2445)
Closes #2443
Authored by: Ashish0804
2 years ago
pukkandan fc08bdd6ab
[extractor] Allow non-fatal `title` extraction 2 years ago
pukkandan 2568d41f70
[bilibili] Make anthology title non-fatal 2 years ago
pukkandan 88f23a18e0
[docs,cleanup] Fix linter and misc cleanup
Closes #2419
2 years ago
pukkandan bb66c24797
Add option `--print-to-file`
Closes #2372
2 years ago
pukkandan 2edb38e8ca
[extractor] Extract video inside `Article` json_ld
Closes #2448
2 years ago
pukkandan af6793f804
[downloader/ffmpeg] Handle unknown formats better 2 years ago
pukkandan b695e3f9bd
[orf:tvthek] Lazy playlist extraction and obey --no-playlist
Closes #2411
2 years ago
pukkandan 6a5a30f9e2
Ensure `_type` is present in `info.json`
Closes #2447
2 years ago
pukkandan d37707bda4
Fix/improve `InAdvancePagedList` 2 years ago
pukkandan f40ee5e9a0
[extractor] Add convinience function `_yes_playlist` 2 years ago
pukkandan 1f13021eca
[web.archive:youtube] Add `ytarchive:` prefix
and misc cleanup
2 years ago
pukkandan e612f66c7c
[archive.org] Ignore unnecessary files
Closes #2452
2 years ago
coletdjnz 87e8e8a7d0
[youtube:api] Do not use seek when reading HTTPError response
Authored-by: coletdjnz
2 years ago
Aleri Kaisattera e600a5c908
[CAM4] Add thumbnail extraction (#2425)
Authored by: alerikaisattera
2 years ago
github-actions 50ce204cc2
[version] update
Created by: pukkandan

:ci skip all
2 years ago
pukkandan 144a3588b4
Release 2022.01.22 2 years ago
pukkandan ed40877833
Fix 426764371f for Py3.6 2 years ago
sian1468 935f5a4209
[line] Remove `tv.line.me` (#2420)
Service is discontinued
Authored by: sian1468
2 years ago
pukkandan 6970b6005e
[cleanup] Minor fixes
Closes #2334
2 years ago
pukkandan fc5fa964c7
[docs] Improvements 2 years ago
pukkandan e0ddbd02bd
[cleanup] Use format_field where applicable 2 years ago
pukkandan 0bfc53d05c
List playlist thumbnails in `--list-thumbnails` 2 years ago
Ashish Gupta 78ab4f447c
[Newsy] Add extractor (#2416)
Closes #2346
Authored by: Ashish0804
2 years ago
coletdjnz 85fee22152
[PRX] Add Extractors (#2245)
Closes #2144, https://github.com/ytdl-org/youtube-dl/issues/15948

Authored by: coletdjnz
2 years ago
Felix S ad9158d5f4
[ard] Extract subtitles (#2409)
Fixes https://github.com/ytdl-org/youtube-dl/issues/30543, related: https://github.com/ytdl-org/youtube-dl/pull/17766
Authored by: fstirlitz
2 years ago
xtkoba f81c62a6a4
Add option --legacy-server-connect (#778)
to allow HTTPS connection to servers that do not support RFC 5746 secure renegotiation

Authored by: xtkoba
2 years ago
coletdjnz 6c73052c0a
[youtube] Extract channel subscriber count (#2399)
Closes #2350
* Adds `channel_follower_count` field
Authored-by: coletdjnz
2 years ago
Ashish Gupta 593e43c030
[LnkIE] Add extractor (#2408)
Closes: #2268 
Authored by: Ashish0804
2 years ago
Ashish Gupta 8fe514d382
[CrowdBunker] Add extractors (#2407)
Closes: #2356 
Authored by: Ashish0804
2 years ago
pukkandan b1156c1e59
Fix d14cbdd92d 2 years ago
pukkandan 311b6615d8
[extractor] Improve `url_result` and related 2 years ago
coletdjnz 396a76f7bf
[youtube] Enforce UTC (#2402)
and [utils] use `utcnow` in `datetime_from_str`

Related: #2223 
Authored by: coletdjnz
2 years ago
coletdjnz 301d07fc4b
[youtube:tab] Extract channel banner (#2400)
Closes #2237
Authored by: coletdjnz
2 years ago
pukkandan d14cbdd92d
[utils] Add `Sec-Fetch-Mode` to `std_headers`
Closes #2187
2 years ago
pukkandan 19b4c74d40
Revert d6579d532b
Closes #2396, Reopens #2187
2 years ago
pukkandan 135dfa2c7e
[extractor,cleanup] Use `_search_nextjs_data` 2 years ago
MinePlayersPE e0585e6562
[TikTok] Extract captions (#2185)
Closes #2184
Authored by: MinePlayersPE
2 years ago
MinePlayersPE 426764371f
[iq.com] Add extractors (#2354)
Closes #704
Authored by: MinePlayersPE
2 years ago
krichbanana 64f36541c9
[youtube:tab] Raise error on tab redirect (#2318)
Closes #2306
Authored by: krichbanana, coletdjnz
2 years ago
Aleri Kaisattera 0ff1e0fba3
[Theta] Fix valid URL (#2323)
Authored by: alerikaisattera
2 years ago
Zenon Mousmoulas 1a20d29552
[tvopengr] Add extractors (#2297)
Authored by: zmousm
2 years ago
nyuszika7h f7085283e1
[instagram] Fix username extraction for stories and highlights (#2348)
Authored by: nyuszika7h
2 years ago
Ashish Gupta e25ca9b017
[RTNews] Add extractor (#2377)
Closes #2371
Authored by: Ashish0804
2 years ago
trasssh 4259402c56
[Ted] Rewrite extractor (#2359)
Closes #2343
Authored by: pukkandan, trassshhub
2 years ago
Ashish Gupta dfb7f2a25d
[CTVNewsIE] Add fallback for video search (#2378)
Closes #2370
Authored by: Ashish0804
2 years ago
Lesmiscore (Naoya Ozaki) 42c5458a02
[TVer] Extract message for unaired live (#2375)
Closes #2365
Authored by: Lesmiscore
2 years ago
Lesmiscore (Naoya Ozaki) ba1c671d2e
[mixch] Add `MixchArchiveIE` (#2373)
Closes #2363
Authored by: Lesmiscore
2 years ago
Zenon Mousmoulas b143e83ec9
[megatvcom] Add embed test (#2362)
Authored by: zmousm
2 years ago
k3ns1n 4a77fb1d6b
[daftsex] Add extractors (#2379)
Authored by: k3ns1n
2 years ago
pukkandan 66f7c6a3e0
[youtube] Do not return `upload_date` for playlists
Closes #2349
Partially reverts #1018
Re-opens #1883
2 years ago
pukkandan baf599effa
[pbs] de-prioritize AD formats
Related: #2335
2 years ago
pukkandan 8bd1c00bf3
[utils] Handle `ss:xxx` in `parse_duration`
Closes #2388
2 years ago
pukkandan 596379e260
[youtube] Make invalid storyboard URL non-fatal
Closes #2382
2 years ago
pukkandan b6ce9bb038
[youtube] Detect live-stream embeds
Closes #2380
2 years ago
Ashish Gupta eea1b0358e
[ThisOldHouseIE] Add support for premium videos (#2358)
Authored by: Ashish0804
Closes: #2341
2 years ago
Zenon Mousmoulas 32b95bb643
[megatvcom] Add extractors (#1980)
Authored by: zmousm
2 years ago
Zenon Mousmoulas fdf80059d9
[glomex] Minor fixes (#2357)
Authored by: zmousm
2 years ago
Ashish Gupta aa062713c1
[PokerGo] Add extractors (#2331)
Authored by: Ashish0804
Closes: #2316
2 years ago
Zenon Mousmoulas 71738b1451
[glomex] Add new extractors (#1979)
Original PR: https://github.com/ytdl-org/youtube-dl/pull/30212
Authored by: zmousm
2 years ago
pukkandan 0bb5ac1ac4
[dplay] Re-structure DiscoveryPlus extractors 2 years ago
Timendum 77b28f000a
[dplay] Migrate DiscoveryPlusItaly to DiscoveryPlus (#2315)
Partially fixes #2138
Authored by: timendum
2 years ago
pukkandan d57576b9d9
[httpie] Fix `available` method
Closes #2330
2 years ago
trasssh 11c861702d
[generic] Improve KVS player extraction (#2328)
Closes #2281
Authored by: trassshhub
2 years ago
Lesmiscore (The Hatsune Daishi) a4a426023d
[twitcasting] Refactor extractor (#2310)
Co-authored-by: Ashish Gupta <39122144+Ashish0804@users.noreply.github.com>
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>

Authored by: Lesmiscore
2 years ago
pukkandan 3b603dbdf1
Add option `--concat-playlist`
Closes #1855, related: #382
2 years ago
pukkandan 5df1ac92bd
[ffmpeg] Ignore unknown streams
Closes #2307
2 years ago
pukkandan b2db8102dc
[facebook] Fix extraction from groups
Closes #2264, related: #2320
2 years ago
Hirokuni Yano e9a6a65a55
[yahoo:gyao] Improved playlist handling (#1975)
Authored by: hyano
2 years ago
pukkandan ed8d87f911
[cleanup, docs] Minor fixes
Closes #2230
2 years ago
pukkandan 397235c52b
[ffmpeg] Standardize use of `-map 0`
Closes #2182
2 years ago
pukkandan 4636548463
[CeskaTelevize] Use `http` for manifests
Workaround for #2043
2 years ago
pukkandan cb3c5682ae
[kakao] Detect geo-restriction
Code from: d8085580f6
2 years ago
Petr Vaněk 7d449fff53
[streamcz] Fix extractor (#1616)
Closes #1329, closes #1731
Authored by: arkamar, pukkandan
2 years ago
pukkandan 80fa6e5327
[facebook] Improve title and uploader extraction
Closes #1943, closes #795
2 years ago
Lesmiscore (The Hatsune Daishi) fabb27fcea
[twitcasting] Throw proper error for login-only streams (#2290)
Closes #2289

Authored by: Lesmiscore
2 years ago
pukkandan e04938ab88
Check for existing thumbnail/subtitle in final directory
Closes #2275
2 years ago
teridon 8bcd404818
[digitalconcerthall] Add extractor (#1931)
Authored by: teridon
2 years ago
nixxo 0df11dafdd
[rai] Add Raiplaysound extractors (#1955)
Closes #1951
Authored by: nixxo, pukkandan
2 years ago
pukkandan dc5f409cdc
Fix typo in ed5835b451 2 years ago
pukkandan 99d6f9461d
[aparat] Fix extractor
Closes #2285
2 years ago
pukkandan 8130779db6
Allow listing formats, thumbnails, subtitles using `--print` (#2238)
Closes #2083
Authored by: pukkandan, Zirro
2 years ago
pukkandan ed5835b451
Allow `--print` to be run at any post-processing stage 2 years ago
trasssh e88e1febd8
[noodlemagazine] Add extractor (#2293)
Authored by: trassshhub
2 years ago
trasssh faca674510
[Rule34video] Add extractor (#2279)
Authored by: trassshhub
2 years ago
MinePlayersPE 0931ba94ab
[Nexx] Extract more metadata (#2273)
Authored by: MinePlayersPE
2 years ago
pukkandan b31874334d
[tiktok] Extract user thumbnail
Closes #2186
Authored by: pukkandan, MinePlayersPE
2 years ago
pukkandan f1150b9e1e
[twitter] Fix video in quoted tweets
Closes #2254
2 years ago
pukkandan d6579d532b
[utils] Partially revert d76d15a669
Closes #2187
2 years ago
pukkandan 2be56f2242
[funk] Support origin URLs
Closes #2270
2 years ago
pukkandan f95a7b93e6
[test] Fix TestVerboseOutput
Closes #2269
2 years ago
foghawk 62c955efc9
[veoh] Improve extractor (#2251)
* [veoh] Remove old _extract_video
* [veoh] Extend _VALID_URL to accept '/videos/'
* [veoh] Prefer high quality
* [veoh] Extract more metadata

Authored by: foghawk
2 years ago
Zenon Mousmoulas 0254f16274
[utils] Improve `get_elements_text_and_html_by_attribute` regex (#2280)
Authored by: zmousm, pukkandan
2 years ago
Ashish Gupta a70b71e85a
[vk] Fix VKUserVideosIE (#2248)
Authored by: Ashish0804
Closes #2196
2 years ago
Unit 193 4c968755fc
[PornHub,YouTube] Refresh onion addresses (#2272)
Authored by: unit193
2 years ago
MinePlayersPE be1f331f21
[TikTok] Misc fixes (#2271)
Closes #2265
Authored by: MinePlayersPE
2 years ago
Ashish Gupta 3cf5429a21
Add EuropeanTourIE (#2247)
Closes #2208 
Authored by: Ashish0804
2 years ago
ischmidt20 bfa0e270cf
[NBCSports] Fix extraction of platform URLs (#2244)
Authored by: ischmidt20
2 years ago
Luc Ritchie f76ca2dd56
[afreecatv] Add support for livestreams (#2097)
Authored by: wlritchi
2 years ago
MinePlayersPE 5f969a78b0
[Nexx] Support 3q CDN (#2213)
Closes #1637
Authored by: MinePlayersPE
2 years ago
ischmidt20 443f8de820
[fox] Extract m3u8 from preview (#2235)
Authored by: ischmidt20
2 years ago
Moises Lima 768145d48a
[Pornez] Add extractor (#2236)
Authored by: mozlima
2 years ago
pukkandan 976ae3eabb
[youtube] Update tests 2 years ago
coletdjnz f0d785d3ed
[youtube:tab] Extract more playlist metadata (#2069)
* Add fields modified_date, modified_timestamp
* Add field playlist_count
* [youtube:tab] Extract view_count, playlist_count, modified_date

Authored by: coletdjnz, pukkandan
2 years ago
foghawk 97a6b117d9
[callin] Add extractor (#2000)
Authored by: foghawk
2 years ago
Zenon Mousmoulas 6f32a0b5b7
[utils] Improve parsing for nested HTML elements (#2129)
and add functions to return the HTML of elements

Authored by: zmousm
2 years ago
Aleri Kaisattera e8736539f3
[Vimm] Add extractor (#2231)
Authored by: alerikaisattera
2 years ago
coletdjnz 9c634ef857
[MainStreaming] Add extractor (#2180)
Closes #1183, https://github.com/ytdl-org/youtube-dl/issues/29615

Authored by: coletdjnz
2 years ago
coletdjnz 9f517bb1f3
[gfycat] Support embeds (#2229)
Closes #2214
Authored by: coletdjnz
2 years ago
Lesmiscore (The Hatsune Daishi) b8eeced286
[openrec] Add movie extractor (#2222)
Closes #2218
Authored by: Lesmiscore
2 years ago
Alexander Simon db47787024
[hrfernsehen] Fix ardloader extraction (#2217)
Authored by: CreaValix
2 years ago
pukkandan fdeab99eab
[zee5] Add geo-bypass 2 years ago
pukkandan 9e907ebddf
[cleanup] Misc cleanup 2 years ago
pukkandan 21df2117e4
[vk] Capture `clip` URLs 2 years ago
pukkandan 06e57990f7
Allow multiple and nested configuration files 2 years ago
pukkandan b62fa6d75f
Fix `-s --ignore-no-formats --force-write-archive`
Bug in a13e684813
2 years ago
pukkandan be72c62480
Fix recursion error in f46e2f9d92
Closes #2216
2 years ago
pukkandan 61e9d9268c
Fix bug in 8896899216
Closes #2215
2 years ago
pukkandan a13e684813
Write `download_archive` only after all formats are downloaded
Closes #1470
2 years ago
pukkandan f46e2f9d92
Add key `requested_downloads` in the root `info_dict` 2 years ago
pukkandan 9c906919ae
Add field `video_autonumber`
Closes #662
2 years ago
pukkandan 6020e05d23
Raise error if subtitle download fails
Closes #2212
2 years ago
pukkandan ebed8b3732
Add more post-processing stages
playlist = After entire playlist
after_video = After downloading all formats of a video
2 years ago
pukkandan 1e43a6f733
Allow `--exec` to be run at any post-processing stage
Deprecates `--exec-before-download`
2 years ago
pukkandan ca30f449a1
Add `--print playlist:` to print fields per playlist 2 years ago
k3ns1n af3cbd8782
[vk] Improve _VALID_URL (#2207)
Authored by: k3ns1n
2 years ago
zenerdi0de 7141ced57d
[Dropbox] Support password protected files and more formats (#2201)
Authored by: zenerdi0de
2 years ago
coletdjnz 18c7683d27
[youtube:api] Update Innertube clients (#2163)
* Updated iOS clients to support 60fps formats (see: https://github.com/TeamNewPipe/NewPipeExtractor/issues/680#issuecomment-1002724558)
* General update of versions and keys of other clients
 Authored-by: coletdjnz
2 years ago
chris f5c2c2c9b0
[zdf] Add chapter extraction (#2198)
Authored by: iw0nderhow
2 years ago
pukkandan 8896899216
[FfmpegMetadata] Allow setting metadata of individual streams
Closes #877
2 years ago
pukkandan 1797b073ed
[utils] Use key `None` in `traverse_obj` to return as-is 2 years ago
pukkandan 4c922dd3fc
Fix live title for multiple formats 2 years ago
pukkandan b8e976a445
[facebook] Parse dash manifests 2 years ago
Ashish Gupta a9f5f5d6eb
[RedBullTV] Parse subtitles from manifest (#2200)
Closes #2151
Authored by: Ashish0804
2 years ago
chris f522573787
[extractor] Extract chapters from JSON-LD (#2031)
Authored by: iw0nderhow, pukkandan
2 years ago
nixxo 7592749cbe
[extractor] Extract thumbnails from JSON-LD (#2195)
Authored by: nixxo
2 years ago
pukkandan 767f999b53
[build] Reduce dependency on third party workflows
Closes #2194
2 years ago
MinePlayersPE 8efffafa53
[XVideos] Check HLS formats (#2193)
Closes #1823
Authored by; MinePlayersPE
2 years ago
Ashish Gupta 26f2aa3db9
[hotstar] Add extractor args to ignore tags (#2116)
Authored by: Ashish0804
2 years ago
pgaig 3464a2727b
[VrtNU] Handle empty title (#2147)
Closes #2146
Authored by: pgaig
2 years ago
Ashish Gupta 497d77e1aa
[KelbyOne] Add extractor (#2181)
Closes #2170
Authored by: Ashish0804
2 years ago
LE 9040e2d6e3
[mixcloud] Detect restrictions (#2169)
Authored by; llacb47
2 years ago
MinePlayersPE 6134fbeb65
[TikTok] Pass cookies to formats (#2171)
Closes #2166
Authored by: MinePlayersPE
2 years ago
MinePlayersPE cfcf60ea99
[BiliIntl] Add login (#2172)
and misc improvements

Authored by: MinePlayersPE
2 years ago
Felix S 4afa3ec4b6
[extractor] Detect more subtitle codecs in MPD manifests (#2174)
Authored by: fstirlitz
2 years ago
MinePlayersPE 11aa91a12f
[TikTok] Fix extraction for sigi-based webpages (#2164)
Fixes: #2133
Authored by: MinePlayersPE
2 years ago
pukkandan abbeeebc4c
[outtmpl] Alternate form for `D` and fix suffix's case
Fixes: https://github.com/yt-dlp/yt-dlp/issues/2085#issuecomment-1002247689, https://github.com/yt-dlp/yt-dlp/pull/2132/files#r775729811
2 years ago
pukkandan 2c539d493a
[cookies] Fix bug when keyring is unspecified
Closes #2167
2 years ago
pukkandan 042931a507
Allow escaped `,` in `--extractor-args`
Closes #2152
2 years ago
MinePlayersPE 96f13f01a6
[TikTok] Change app version (#2161)
Closes #2133, #2135
Authored by: MinePlayersPE, llacb47
2 years ago
u-spec-png 4b9353239e
[Drooble] Add extractor (#1547)
Closes #1527
Authored by: u-spec-png
2 years ago
u-spec-png dd5e60b15d
[Instagram] Add story/highlight extractor (#2006)
Fixes https://github.com/ytdl-org/youtube-dl/issues/25575
Authored by: u-spec-png
2 years ago
MinePlayersPE e540c56f39
[TikTok] Fallback to feed API endpoint (#2142)
Authored by: MinePlayersPE
Workaround for #2133
2 years ago
pukkandan 45d86abeb4
Allow unicode characters in `info.json`
Closes #2139
2 years ago
Pierre Mdawar f02d24d8d2
[utils] Fix `format_bytes` output for Bytes (#2132)
Authored by: pukkandan, mdawar
2 years ago
pukkandan ceb98323f2
Don't treat empty containers as `None` in `sanitize_info` 2 years ago
pukkandan 7537e35b64
[gfycat] Fix `uploader` 2 years ago
github-actions 1e5c83b26b [version] update
Created by: pukkandan

:ci skip all
2 years ago
pukkandan 6223f67a8c
Release 2021.12.27 2 years ago
pukkandan 6a34813a0d
[docs] Add examples for using `TYPES:` in `-P`/`-o` 2 years ago
Matt Broadway f59f5ef8b6
[cookies] Support other keyrings (#2032)
Authored by: mbway
2 years ago
pukkandan f44afb54ef
[aria2c] Don't show progress when `--no-progress` 2 years ago
pukkandan 77cee0f188
[EmbedThumbnail] Prefer AtomicParsley over ffmpeg if available 2 years ago
pukkandan 6a17677577
[ThumbnailsConvertor] Fix for when there are no thumbnails
Closes #2125
2 years ago
Ashish Gupta ee7b9bdf5d [Zee5] Fix VALID_URL for tv-shows 2 years ago
pukkandan 185bf31070
[youtube] End `live-from-start` properly when stream ends with 403
Closes #2089
2 years ago
pukkandan 0b77924a38
[tiktok] Fix `extractor_key` used in archive 2 years ago
MinePlayersPE 8126298c1b
[TikTok] Add music, sticker and tag IEs (#2119)
Closes #1752
Authored by: MinePlayersPE
2 years ago
pukkandan 6da22e7d4f
Avoid recursion error when re-extracting info 2 years ago
MinePlayersPE c62ecf0d90
[BiliIntl] Fix extractor (#2077)
Closes #1744
Authored by: MinePlayersPE
2 years ago
The Hatsune Daishi 3774f4f427
[PixivSketch] Add extractors (#2104)
Authored by: nao20010128nao
2 years ago
git-anony-mouse 9980d3d213
[generic] Fix HTTP KVS Player (#2111)
Authored by: git-anony-mouse
2 years ago
pukkandan 8eb4b1bb8e
[ffmpeg] Fix position of `--ppa`
Bug in ca5db158ae
Closes #2112
2 years ago
pukkandan 332da56f52
[CBC] Fix URL regex
Closes #2110
2 years ago
github-actions 459aea84c3 [version] update
Created by: pukkandan

:ci skip all
2 years ago
pukkandan 87e0499624
Release 2021.12.25 2 years ago
pukkandan 0f86a1cd59
[dplay] Temporary fix for `discoveryplus.com/it`
Closes #2073
2 years ago
pukkandan d80d98e7d4
[docs] Minor fixes 2 years ago
pukkandan 352d5da812
[utils] Improve `parse_count` 2 years ago
MinePlayersPE d43de6821c
[GameJolt] Add extractors (#2036)
Authored by: MinePlayersPE
2 years ago
u-spec-png 070f6a85ea
[Steam] Fix extractor (#2029)
Closes #1992
Authored by: u-spec-png
2 years ago
Benedikt Wildenhain 4b4b7f746c
[OpenCast] Add extractors (#1905)
Original PR: https://github.com/ytdl-org/youtube-dl/pull/26934
Authored by: bwildenhain, C0D3D3V
2 years ago
Sonic e9efb99f66
[dropout] Add extractor (#2045)
Authored-by: TwoThousandHedgehogs, pukkandan
2 years ago
coletdjnz a709d87335
[youtube:tab] Extract video thumbnails from playlist (#2096)
closes #1184
Co-Authored-by: coletdjnz, pukkandan
2 years ago
siddharth 774a46c53d
[npr] Make SMIL extraction non-fatal (#2099)
Closes #1934
Authored by: r5d
2 years ago
MinePlayersPE c8b80b9643
[RCTIPlusSeries] Lazy extraction and video type selection (#2050)
Authored by: MinePlayersPE
2 years ago
MinePlayersPE 4e260d1a56
[Instagram] Try bypassing login wall with embed page (#2095)
Authored by: MinePlayersPE
2 years ago
Luc Ritchie 4f3fa23e5a
[utils] Fix parsing `YYYYMMDD` dates in Nov/Dec (#2094)
The date format `%Y%m%d%H%M` will successfully match against
one-digit month, day, hour, and minute strings, even though %m et al.
are documented as being zero-padded. So dates without time in
Nov/Dec may be wrongly parsed as dates in January with time.

This commit adds a format string of `%Y%m%d` to our supported date
format strings directly below (higher priority) its problematic relatives.

Closes #2076
Authored by: wlritchi
2 years ago
pukkandan b28bac93ab
Fix bug in 1cefca9e44
Fixes https://github.com/ytdl-patched/ytdl-patched/issues/11
2 years ago
pukkandan 37893bb0c9
[outtmpl] Change filename sanitization type to `S`
`F` is already used for float!
Bug in e0fd95737d
2 years ago
Ashish Gupta c25de59cf7
[LBRY] Support livestreams (#2062)
Closes #2054 
Authored by: Ashish0804, pukkandan
2 years ago
Emanuel Hoogeveen 205a0654c0
Add option `--file-access-retries` (#2066)
Closes #517
Authored by: ehoogeveen-medweb
2 years ago
aarubui 663949f825
[NJPWWorld] Extract formats from m3u8 (#2075)
Authored by: aarubui
2 years ago
pukkandan b69fd25c25
[cleanup] Misc cleanup
Closes #1942 #1976 #2020 #2058 #1984
2 years ago
pukkandan e0fd95737d
[outtmpl] Add alternate forms `F`, `D`
and improve `id` detection

F = sanitize as filename (# = restricted)
D = add Decimal suffixes

Closes #2085, 2081
2 years ago
pukkandan 4ac5b94807
[dash] Fix `--test`
Bug in adbc4ec4bb
2 years ago
pukkandan 4273cc776d
[dash] Fix aria2c dash downloads
Bug in adbc4ec4bb
2 years ago
pukkandan fa9f30b802
Add interactive format selection with `-f -`
Closes #2065
2 years ago
pukkandan 1cefca9e44
Add warning when using `-f best` 2 years ago
kebianizao 5edb8dfec2
[rtve] Add `RTVEAudioIE` (#1657)
Original PR: https://github.com/ytdl-org/youtube-dl/pull/29023
Authored by: kebianizao
2 years ago
pukkandan 0fcba15d57
[docs] Fix bug in regex escape in python 3.6
Bug in ec2e44fc57
Closes #2060
2 years ago
The Hatsune Daishi adbc4ec4bb
[dash,youtube] Download live from start to end (#888)
* Add option `--live-from-start` to enable downloading live videos from start
* Add key `is_from_start` in formats to identify formats (of live videos) that downloads from start
* [dash] Create protocol `http_dash_segments_generator` that allows a function to be passed instead of fragments
* [fragment] Allow multiple live dash formats to download simultaneously
* [youtube] Implement fragment re-fetching for the live dash formats
* [youtube] Re-extract dash manifest every 5 hours (manifest expires in 6hrs)
* [postprocessor/ffmpeg] Add `FFmpegFixupDuplicateMoovPP` to fixup duplicated moov atoms

Known issue: Ctrl+C doesn't work on Windows when downloading multiple formats

Closes #1521
Authored by: nao20010128nao, pukkandan
2 years ago
Julien Hadley Jack c031b0414c
[ondemandkorea] Update `jw_config` regex (#2056)
Authored by: julien-hadleyjack
2 years ago
coletdjnz f3aa3c3f98
[youtube:tab] Extract more metadata from feeds/channels/playlists (#1018)
Parse relative time text, extract live, upcoming status, availability and channel id from feeds/channels/playlists (where applicable). 
Closes #1883
Authored-by: coletdjnz
2 years ago
cypheron ae43a4b986
[hse] Add extractors (#1906)
Original PR: https://github.com/ytdl-org/youtube-dl/pull/27060
Authored by: cypheron, pukkandan
2 years ago
pukkandan ca5db158ae
[postprocessor/ffmpeg] Always add `faststart`
Closes #1491
2 years ago
pukkandan 5f549d4959
[Facebook] Handle redirect URLs
Closes #1035
2 years ago
Paul Wise 6839d02cb6
[ABC:iview] Add show extractor (#1630)
Authored by: pabs3
2 years ago
Abdullah Ibn Fulan 2aae2c91ff
[audiomack] Update album and song VALID_URL (#1203)
Original PR: https://github.com/ytdl-org/youtube-dl/pull/29810
Closes #1352, https://github.com/ytdl-org/youtube-dl/issues/29800
Authored by: abdullah-if, dirkf
2 years ago
Lapinot c2dedf12e8
[soundcloud] Add related tracks extractor (#1000)
Authored by: Lapin0t
2 years ago
Unit 193 e75bb0d6c3
[cleanup] Fix some typos (#2033)
Authored by: unit193
2 years ago
pukkandan dd0228ce1f
Remove known invalid thumbnails from `info_dict`
Related: https://github.com/yt-dlp/yt-dlp/issues/980#issuecomment-997396821
2 years ago
pukkandan 37e57a9fd4
[youtube:tab] Ignore query when redirecting channel to playlist
and cleanup of related code
Closes #2046
2 years ago
pukkandan 940a67a3e2
[docs] Change all examples to use double quotes
to be platform-agnostic
2 years ago
pukkandan e6ae51c123
[generic] Extract m3u8 formats from JSON-LD 2 years ago
pukkandan 75ad33572b
[test/download] Split `sanitize_got_info_dict` into a separate function
so that it can be used by third party scripts
2 years ago
pukkandan aab41cdd33
[PlutoTV] Expand `_VALID_URL`
Closes #2007
2 years ago
pukkandan b3a5115ff1
[zee5] Support /episodes in URL
Closes #2016
2 years ago
Felix S d76d15a669
[utils] Update `std_headers` (#2023)
* Update our chrome versions used for `User-Agent`s
* Drop the `Accept-Charset` header that no browser emits any more

Authored by: kikuyan, fstirlitz
2 years ago
PilzAdam e978789f0f
[outtmpl] Add operator `&` for replacement text (#2012)
Authored by: PilzAdam
2 years ago
chris ec2e44fc57
[docs] Improve manpage format (#2003)
Closes #1448
Authored by: iw0nderhow, pukkandan
2 years ago
Sematre 375d9360bf
[gronkh] Support new URL pattern (#2019)
Authored by: Sematre
2 years ago
Zenon Mousmoulas d5c3254889
[extractor] Support default implicit graph in JSON-LD (#1983)
Original PR: https://github.com/ytdl-org/youtube-dl/pull/30229

Per W3C JSON-LD v1.1 §4.9 (non-normative ref):

    When a JSON-LD document's top-level structure is a map that contains
    no other keys than @graph and optionally @context (properties that
    are not mapped to an IRI or a keyword are ignored), @graph is
    considered to express the otherwise implicit default graph.

Authored by: zmousm
2 years ago
std-move fed1309651
[test/download] Ignore field `webpage_url_domain` (#2014)
Authored by: std-move
2 years ago
std-move fe69f52e5c
[NovaEmbed] update player regex (#2008)
Authored by: std-move
2 years ago
pukkandan 3116be32b4
[brightcove] Fix 487c5b3389 2 years ago
pukkandan a8549f19e7
[tiktok] Fix 53dad39e30 2 years ago
pukkandan 39ca3b5c7f
[extractor] Standardize `_live_title` 2 years ago
coletdjnz 46383212b3
[youtube:comments] Add more options for limiting number of comments extracted (#1626)
Extends `max_comments` extractor arg to support `max-parents,max-replies,max-replies-per-thread`.
Authored-by: coletdjnz
2 years ago
pukkandan 0bb322b9c0
Add field `webpage_url_domain`
Closes #1311
2 years ago
pukkandan ff9f925b63
[test/download] Add more fields 2 years ago
pukkandan 5bfc8bee5a
Fix PostProcessor hooks not registered for some PPs
Closes #1993
2 years ago
pukkandan 19188702ef
[FormatSort] Prevent incorrect deprecation warning
Closes #1981
2 years ago
The Hatsune Daishi d984a98def
[ok.ru] add mobile fallback (#1972)
Authored by: nao20010128nao
2 years ago
u-spec-png 069c6ccf02
[olympics] Add uploader and cleanup (#1990)
Authored by: u-spec-png
2 years ago
MinePlayersPE 53dad39e30
[TikTok] Pass cookies to mobile API (#1994)
Authored by: MinePlayersPE
2 years ago
Ashish Gupta db77c49c84
[SonyLiv] Add OTP login support (#1959)
Closes #1945
Authored by: Ashish0804
2 years ago
Ashish Gupta abc07b554c
[NateTV] Add NateIE and NateProgramIE (#1950)
Authored by: Ashish0804, Hyeeji
2 years ago
Ashish Gupta 86f3d52f8c [DiscoveryPlusShowBaseIE] yield actual video id 2 years ago
u-spec-png 8b688881ba
[instagram] Expand valid URL (#1977)
Closes #1925

Authored by: u-spec-png
2 years ago
Ashish Gupta 13debc86e7
[Rutube] Add RutubeChannelIE (#1970)
Closes #1966 
Authored by: Ashish0804
2 years ago
nyuszika7h b5f94e4fa1
[toggo] Add extractor (#1961)
Authored by: nyuszika7h
2 years ago
YuenSzeHong 61882afdc5
[fujitv] Extract 1080p from `tv_android` m3u8 (#1928)
Authored by: YuenSzeHong
2 years ago
coletdjnz aa4b054512
[web.archive:youtube] Improve metadata extraction (#1785)
Authored-by: coletdjnz
2 years ago
YuenSzeHong 487c5b3389
[TVer] Extract better thumbnails (#1929)
Authored by: YuenSzeHong
2 years ago
Nil Admirari 8157a09d22
[SponsorBlock] Add Filler and Highlight categories (#1664)
Authored by: nihil-admirari, pukkandan
2 years ago
Jertzukka b1aaf1c07f
[gofile] Add extractor (#1850)
Closes #1831 
Authored by: Jertzukka, Ashish0804
2 years ago
chris 5f9aaac8c2
[zdf] Support videos with different ptmd location (#1893)
Authored by: iw0nderhow
2 years ago
David Skrundz 54c2521ca6
[CBC Gem] Extract 1080p formats (#1913)
Authored by: DavidSkrundz
2 years ago
The Hatsune Daishi 2814f12ba4
[skeb] Add extractor (#1916)
Fixes: https://github.com/ytdl-org/youtube-dl/issues/30287
Authored by: nao20010128nao
2 years ago
raleeper 1619836cb7
[crackle] Look for non-DRM formats (#1938)
Authored by: raleeper
2 years ago
pukkandan e3c7d49571
[compat] Suppress errors in enabling VT mode
Closes #1932
2 years ago
The Hatsune Daishi ddd24c9949
[ntvcojp] Extract NUXT data (#1915)
Fixes: https://github.com/ytdl-org/youtube-dl/issues/30309
Authored by: nao20010128nao
2 years ago
Michal Kubeček 443b21dc4e
[ceskatelevize] Fetch iframe from nextJS data (#1904)
Closes #1899
Authored by: mkubecek
2 years ago
The Hatsune Daishi 66f4c04e50
[extractor] Add `_search_nuxt_data` (#1921)
Authored by: nao20010128nao
2 years ago
nixxo 93864403ea
[redtube] Handle formats delivered inside a JSON (#1877)
Closes #1663
Authored by: dirkf, nixxo
2 years ago
pukkandan b5475f1145
Pre-process when using `--flat-playlist` 2 years ago
pukkandan 38d79fd16c
Use `parse_duration` for `--wait-for-video`
and some minor fix
2 years ago
pukkandan acc0d6a411
Allow `--no-write-thumbnail` to override `--write-all-thumbnail`
Closes #1900
2 years ago
pukkandan 146cc4114a
bugfix for 63ccf4ff1a 2 years ago
pukkandan 818faa3a86
[vimeo] Extract chapters
Closes #1892
2 years ago
MinePlayersPE aa5ecf082c
[TrueID] Add extractor (#1847)
Authored by: MinePlayersPE
2 years ago
pukkandan d2b2fca53f
[extractor] Ignore errors in comment extraction when `-i` is given
Closes #1787
2 years ago
pukkandan 63ccf4ff1a
[lazy_extractors] Fix bug in 2c4aaaddc9
SearchIEs must not inherit from extractors that have a _VALID_URL defined
2 years ago
pukkandan 43b2290658
Fix `--throttled-rate` 2 years ago
nixxo 99148c6a33
[RaiNews] Fix extractor (#1864)
Closes #1862
Authored by: nixxo
2 years ago
pukkandan 9bdd99cf39
[EmbedSubtitle] Disable duration check temporarily
Closes #1870, #1385
2 years ago
pukkandan 2c4aaaddc9
[lazy_extractors] Fix for search IEs
Closes #1851
2 years ago
pukkandan 5f7cb91ae9
[youtube] Fix `ytsearchdate`
Related: #1851
2 years ago
pukkandan 3efb96a6d1
Fix control characters being printed to `--console-title`
Closes #1859
2 years ago
pukkandan 3262f8abf2
[trovo] Fix inheritance of `TrovoChannelBaseIE`
Closes #1849
2 years ago
Christian Paul bdbafb3913
[Jamendo] Fix use of `_VALID_URL_RE` (#1858)
Closes #1857
Authored by: jaller94
2 years ago
pukkandan a804f6d89c
[cleanup Fix some typos
* `MetadataFromFieldPP` is not deprecated!
* Wrong args to `MetadataFromFieldPP`
* Some mistakes in change log
* Type in build.yml causing release tag to be placed on wrong commit
3 years ago
github-actions 814dfb7e25 [version] update
Created by: pukkandan

:ci skip all
3 years ago
pukkandan 91f071af60
Release 2021.12.01 3 years ago
pukkandan 2aa5e2cc01
Ensure same config file is not loaded multiple times 3 years ago
j54vc1bk 1bad50eced
[CableAV] Add extractor (#1842)
Authored by: j54vc1bk
3 years ago
u-spec-png ac0efabf12
[Bilibili] Fix title extraction (#1716)
Closes #1714
Authored by: u-spec-png
3 years ago
Ashish Gupta 73f035e1fe
[Cleanup] Remove some unnecessary groups in regexes (#1738)
Authored by: Ashish0804
3 years ago
nyuszika7h 0cbed930c8
[trovo] Fix extractor (#1818)
Closes #1782

Authored by: nyuszika7h
3 years ago
Ashish Gupta 5118d2ec58
[DiscoveryPlus] Rewrite extractors (see desc) (#1766)
* Add `DiscoveryPlusItalyShowIE`
* Use `uuid.uuid4().hex` for device id so no cookies are required
* Fix dash formats not being downloaded
* Extract subtitles from manifests
* Move all extractors to one file and restructure inheritances

Authored by: Ashish0804, pukkandan
3 years ago
pukkandan 717216b093
Validate --get-bypass-country
Closes #1834
3 years ago
pukkandan 5c22c63da3
Fix `--trim-filename` when filename has `.`
Closes #1837
3 years ago
pukkandan ee8dd27a73
[cleanup] Add deprecation warnings 3 years ago
pukkandan f304da8a29
[cleanup] Misc cleanup
Closes #1805, closes #1800
3 years ago
pukkandan 06dfe0a0a2
[cleanup] Refactor `JSInterpreter._seperate` 3 years ago
pukkandan 75b725a7cc
[build] Use `workflow_dispatch` for release 3 years ago
pukkandan 13ab5fa586
[build] Fix MacOS Build
Closes #1624
3 years ago
pukkandan 36eaf3039a
[build] Save Git HEAD at release alongside version info 3 years ago
pukkandan f2ebc5c7be
Option `--wait-for-video` to wait for scheduled streams 3 years ago
pukkandan b222c27145
Option `--break-per-input` to apply --break-on... to each input URL 3 years ago
pukkandan 5e5be0c0b2
Fix --break-on-archive when pre-checking 3 years ago
pukkandan 7578d77d8c
[downloader] Add colors to download progress 3 years ago
pukkandan b29165267f
[youtube] Decrypt n-sig for URLs with `ratebypass`
Closes #1796
3 years ago
pukkandan bc104778d6
[vimeo] Sort http formats higher
Closes #1821
3 years ago
MinePlayersPE d298d33fe6
[Instagram] Display more login errors (#1822)
Authored by: MinePlayersPE
3 years ago
Deer-Spangle bf57cfa8b7
[RedGifs] Add Search and User extractors (#1808)
Authored by: Deer-Spangle
3 years ago
std-move 3c2208f82d
[NovaEmbed] Fix extractor (#1814)
Authored by: std-move
3 years ago
shirt 93e597ba28
Fix logic error in report_unplayable_conflict 3 years ago
pukkandan b28cdcc0e4
[tiktok:user] Set `webpage_url` correctly
Closes #1802
3 years ago
DEvmIb a33c0d9c5d
[twitch:vod] Extract live status (#1722)
Authored by: DEvmIb
3 years ago
pukkandan 75689fe59b
Ensure directory exists when checking formats 3 years ago
pukkandan 5ce1d13eba
[EmbedSubtitles] Slightly relax duration check
and related cleanup
Closes #1385
3 years ago
pukkandan e04b003e64
[FixupM3u8] Fixup MPEG-TS in MP4 container
Closes #1701, https://github.com/ytdl-org/youtube-dl/issues/26410
3 years ago
Grabien 909b0d66f4
[Senate.gov] Add SenateGovIE and fix SenateISVPIE (#1435)
Authored by: Grabien, pukkandan
3 years ago
u-spec-png dfd78699f5
[Aljazeera] Fix extractor (#1577)
Closes #1518
Authored by: u-spec-png
3 years ago
mpeter50 639f80c1f9
[Twitch:vod] Add chapters (#1515)
Authored by: mpeter50
3 years ago
gustaf 896a88c5c6
[Tvplayhome] Fix extractor (#1357)
Authored by: pukkandan, 18928172992817182 (gustaf)
3 years ago
chio0hai 4e4ba1d75f
[redgifs] Add extractor (#1631)
Closes #1504
Authored by: chio0hai
3 years ago
Yakabuff 2abf081554
[xvideos] Fix extractor (#1799)
Closes #1788 
Authored by: Yakabuff
3 years ago
Henrik Heimbuerger 359df0fc42
[nebula] Add NebulaCollectionIE and rewrite extractor (#1694)
Closes #1690
Authored by: hheimbuerger
3 years ago
Ashish Gupta 3938a9212c
[CPTwentyFour] Add extractor (#1769)
Closes #1768
Authored by: Ashish0804
3 years ago
shirt cf1f13b817
[generic] Support mpd manifests without extension (#1806)
Authored by: shirt-dev
3 years ago
Grabien 18d6dd4e01
[extractor/breitbart] Breitbart.com website support (#1434)
Authored by: Grabien
3 years ago
cntrl-s 883ecd5494
Streamff extractor (#1736)
Closes #1359 
Authored by: cntrl-s
3 years ago
pukkandan eb56d132d2
[cleanup,instagram] Refactor extractors
Closes #1561
3 years ago
Aurora 17b4540662
[radiozet] Add extractor (#1593)
Authored by: 0xA7404A (Aurora)
3 years ago
Tim da27aeea5c
[ITV] Fix extractor (#1776)
Closes #1775
Authored by: staubichsauger
3 years ago
Sipherdrakon fec41d17a5
[MTV] Improve mgid extraction (#1713)
Original PR: https://github.com/ytdl-org/youtube-dl/pull/30149
Fixes: #713, #1580, https://github.com/ytdl-org/youtube-dl/issues/30139

Authored by: Sipherdrakon, kikuyan
3 years ago
pukkandan a61fd4cf6f
[youtube:search_url] Add playlist/channel support
Closes #1213, #1214
3 years ago
pukkandan a6213a4925
[cleanup,youtube] Reorganize Tab and Search extractor inheritances 3 years ago
pukkandan 9941a1e127
[PatreonUser] Do not capture RSS URLs
Closes #1777
3 years ago
pukkandan ff51ed588f
Clarify video/audio-only formats in -F
Related: #1759
3 years ago
pukkandan 57dbe8077f
[jsinterp] Fix splice to handle float
Needed for new youtube js player f1ca6900
Closes #1767
3 years ago
pukkandan e5d731f35d
[tv2] Expand valid URL
Closes #1764
3 years ago
pukkandan d52cd2f5cd
[sbs] Fix for movies and livestreams
Closes #1640
3 years ago
pukkandan bc8ab44ea0
[itv] Fix for Python 3.6/3.7
Closes #1758
3 years ago
pukkandan 8f122fa070
[extractor] Extract `average_rating` from JSON-LD
Eg: Crunchyroll
3 years ago
pukkandan 14a086058a
[ARDBetaMediathek] Handle new URLs
Adapted from 8562218350
Closes #1601
3 years ago
Zirro 0e6b018a10
Ensure path for link files exists (#1755)
Authored by: Zirro
3 years ago
pukkandan f7b558df4d
[mediaklikk] Expand valid URL
Partial fix for #1409
3 years ago
pukkandan 1ee34c76bb
[vimeo] Add fallback for config URL
Closes #1662
3 years ago
pukkandan 234416e4bf
[downloader/ffmpeg] Fix for direct videos inside mpd manifests
Closes #1751
3 years ago
pukkandan c98d4df23b
[WDR] Expand valid URL
Closes #1749
3 years ago
4a1e2y5 849d699a8b
[xvideos] Detect embed URLs (#1729)
Authored by: 4a1e2y5
3 years ago
Ashish Gupta 77fcc65158
[CozyTV] Add extractor (#1727)
Authored by: Ashish0804
3 years ago
aarubui 545ad64988
[willow] Add extractor (#1723)
Authored by: aarubui
3 years ago
pukkandan d76991ab07
Fix `--check-formats` for `mhtml`
Closes #1709
3 years ago
pukkandan 282f570918
[utils] Fix error when copying `LazyList` 3 years ago
pukkandan c07a39ae8e
[utils] Fix `PagedList`
Bug in d8cf8d97a8
3 years ago
pukkandan c5e3f84972
[utils] Allow alignment in `render_table`
and add tests
3 years ago
nyuszika7h c45b87419f
[bbc] Get all available formats (#1717)
Authored by: nyuszika7h
3 years ago
Paper 7333296ff5
[VidLii] Add 720p support (#1681)
Authored by: mrpapersonic
3 years ago
The Hatsune Daishi a04e005521
[AES] Add ECB mode (#1686)
Needed for #1688
Authored by: nao20010128nao
3 years ago
nyuszika7h 6b993ca765
[hls] Better FairPlay DRM detection (#1661)
Authored by: nyuszika7h
3 years ago
pukkandan dd2a987d3f
[tests] Fix tests 3 years ago
pukkandan 9222c38182
[cleanup] Minor cleanup
Closes #1696, Closes #1673
3 years ago
pukkandan 467b6b8387
[ExtractAudio] Support `alac`
Closes #1707
3 years ago
pukkandan 8863c8f09e
[soundcloud:search] Fix pagination 3 years ago
Joshua Lochner e16fefd869
[Reddit] Add support for 1080p videos (#1682)
Fixes: https://github.com/ytdl-org/youtube-dl/issues/29565

Authored by: xenova
3 years ago
zulaport c6118ca2cc
[Stripchat] Add extractor (#1668)
Authored by: zulaport
3 years ago
Paul Wise 764f5de2f4
[blogger] Add extractor (#1629)
Authored by: pabs3
3 years ago
Paul Wise cfcaf64a4b
[rtrfm] Add extractor (#1628)
Authored by: pabs3
3 years ago
u-spec-png 402cd603a4
[LinkedIn] Add extractor (#1597)
Closes #1206 
Authored by: u-spec-png
3 years ago
The Hatsune Daishi 22a510ff44
[mixch] add support for mixch.tv (#1586)
Authored by: nao20010128nao
3 years ago
u-spec-png 61be785a67
[peer.tv] Add extractor (#1499)
Closes #1388 
Authored by: u-spec-png
3 years ago
Ashish Gupta 11852843e7
[AmazonStoreIE] Fix regex to not match vdp urls (#1699)
Closes: #1698 
Authored by: Ashish0804
3 years ago
Ashish Gupta 525d9e0c7d
[HotStar] Set language field from tags (#1700)
Authored by: Ashish0804
3 years ago
Ashish Gupta 9d63137eac
[CanalAlpha] Add extractor (#1655)
Closes: #1528 
Authored by: Ashish0804
3 years ago
Ashish Gupta 266a1b5d52
[ESPNCricInfo] Add extractor (#1652)
Closes: #1635 
Authored by: Ashish0804
3 years ago
Ashish Gupta 450bdf69bc
[OneFootball] Add extractor (#1613)
Closes: #1598 
Authored by: Ashish0804
3 years ago
pukkandan 720c309932
[youtube] Add storyboard formats
Closes: #1553, https://github.com/ytdl-org/youtube-dl/issues/9868
Related: https://github.com/ytdl-org/youtube-dl/pull/14951
3 years ago
pukkandan d8cf8d97a8
[utils] Fix `PagedList` 3 years ago
coletdjnz d0d012d4e7
[youtube] Add `default` player client (#1685)
Authored-by: coletdjnz
3 years ago
pukkandan 013b50b794
Fix 'postprocessor_hooks`
Closes #1650
3 years ago
pukkandan dac5df5a98
Add option `--embed-info-json` to embed info-json in mkv
Closes #1644
3 years ago
pukkandan f279aaee8e
Add compat-option embed-metadata 3 years ago
pukkandan d0e6121adf
[curiositystream] Fix login
Bug from 92775d8a40
3 years ago
pukkandan 9ac24e235e
[curiositystream] Add more metadata
Closes #1568
3 years ago
pukkandan 7c7f7161fc
Fix `--load-info-json` of playlists with failed entries 3 years ago
pukkandan e339d25a0d
[youtube] Minor improvement to format sorting 3 years ago
pukkandan 39c04074e7
[ExtractAudio] Fix conversion to `wav`
Closes #1645
3 years ago
pukkandan 92775d8a40
[CuriosityStream] Fix series
Bug indroduced in ed807c1837
3 years ago
MinePlayersPE df03de2c02
[RoosterTeethSeries] Fix for multiple pages (#1642)
Authored by: MinePlayersPE
3 years ago
pukkandan 48e9310660
[nexx] Better error message for unsupported format
Related: #1637
3 years ago
pukkandan c1dc0ee56e
[NovaEmbed] Fix extractor
Closes #1570
3 years ago
pukkandan bf5f605e76
bugfix for e08a85d865 3 years ago
pukkandan e08a85d865
Fix writing playlist infojson with `--no-clean-infojson` 3 years ago
pukkandan 093a17107e
Allow using a custom format selector through API
Closes #1619, #1464
3 years ago
pukkandan 44bcb8d122
Fix bug in parsing `--add-header`
Closes #1614
3 years ago
makeworld 013ae2e503
[CBC Gem] Fix for shows that don't have all seasons (#1621)
Closes #1594
Authored by: makeworld-the-better-one
3 years ago
u-spec-png b47d236d72
[Tokentube] Fix description (#1578)
Authored by: u-spec-png
3 years ago
pukkandan 9ebf3c6ab9 [version] update
:ci skip all
3 years ago
pukkandan 7144b697fc
Release 2021.11.10.1
:ci skip all
3 years ago
pukkandan 2e9a445bc3 [version] update
:ci skip all
3 years ago
pukkandan 86c1a8aae4
Release 2021.11.10 3 years ago
Lauren Liberda ebfab36fca
[tvp] Add TVPStreamIE (#1401)
Authored by: selfisekai
3 years ago
Lauren Liberda c15de6ffe6
[tvp] Fix extractor (#1401)
Authored by: selfisekai
3 years ago
Lauren Liberda 56bb56f3cf
[tvp] Fix embeds (#1401)
Authored by: selfisekai
3 years ago
Lauren Liberda c0599d4fe4
[wppilot] Add extractors (#1401)
Authored by: selfisekai
3 years ago
Lauren Liberda 3f771f75d7
[radiokapital] Add extractors (#1401)
Authored by: selfisekai
3 years ago
Lauren Liberda ed76230b3f
[polsatgo] Add extractor (#1386)
Authored by: selfisekai, sdomi

Co-authored-by: Dominika Liberda <ja@sdomi.pl>
3 years ago
Lauren Liberda 89fcdff5d8
[polskieradio] Add extractors (#1386)
Authored by: selfisekai
3 years ago
Lauren Liberda f98709af31
[extractor] Add `_search_nextjs_data` (#1386)
Authored by: selfisekai
3 years ago
pukkandan c586f9e8de
[cleanup] minor fixes 3 years ago
pukkandan 59a7a13ef9
[docs] Minor documentation improvements
Closes #1583, #1599
3 years ago
pukkandan 4476d2c764
[outtmpl] Add alternate forms for `q` and `j` 3 years ago
pukkandan aa9369a2d8
[cleanup] Minor improvements to error and debug messages 3 years ago
stanoarn d54c6003ab
fix for e1b7c54d78
Authored by: stanoarn
3 years ago
u-spec-png 1ee316a34a
[Gab] Add extractor (#1505)
Closes #1462 
Authored by: u-spec-png
3 years ago
ozburo 358247ed2a
[imdb] Fix thumbnail (#1581)
Authored by: ozburo
3 years ago
nixxo 9b12e9a573
[la7] Fix extractor (#1575)
Closes #1065 
Authored by: nixxo
3 years ago
u-spec-png a109acbf82
[ZenYandex] Fix extractor (#1558)
Closes #1545
Authored by: u-spec-png
3 years ago
pukkandan a49891c761
Fix bug in `--load-infojson` of playlists
Fixes: https://github.com/yt-dlp/yt-dlp/issues/1514#issuecomment-962659529
3 years ago
pukkandan 582fad70f5
[outtmpl] Do not traverse `None`
Closes #1585
3 years ago
pgaig aeec0e44e2
[VRT] Fix login (#1566)
Closes #1557 
Authored by: pgaig
3 years ago
Ryan Hendrickson d9190e4467
[youtube] Add Invidious list for playlists/channels (#1567)
Authored by: rhendric
3 years ago
stanoarn e1b7c54d78
[iPrima] Fix extractor (#1541)
Authored by: stanoarn
3 years ago
pukkandan 244644c02c
[roosterteeth] Add series extractor 3 years ago
pukkandan 34921b4345
[utils] Add `join_nonempty` 3 years ago
pukkandan a331949df3
[test/download] Fallback test to `bv` 3 years ago
u-spec-png 2c5e8a961e
[Newgrounds] Fix description (#1562)
Authored by: u-spec-png
3 years ago
u-spec-png b515b37cc4
[Vupload] Fix extractor (#1549)
Authored by: u-spec-png
3 years ago
pukkandan 3c4eebf772
[AmazonStore] Add extractor (#1512)
Closes #1509

Authored by: Ashish0804
3 years ago
u-spec-png fb2d1ee6cc
[Instagram] Add IOS URL support (#1560)
Authored by: u-spec-png
3 years ago
pukkandan 9cb070f9c0
[vimeo] Detect source extension
and misc cleanup

Cherry-picked from #1477
Closes #1402

Authored by: flashdagger
3 years ago
pukkandan 2a6f8475ac
[vimeo] Fix ondemand videos and direct URLs with hash
Closes #1353, #1471
3 years ago
Francesco Frassinelli 73673ccff3
[RaiplayRadio] Add extractors (#780)
Original PR: https://github.com/ytdl-org/youtube-dl/pull/21837
Authored by: frafra
3 years ago
pukkandan aeb2a9ad27
[FormatSort] `eac3` is better than `ac3` 3 years ago
pukkandan df6c409d1f
[piksel] Fix sorting 3 years ago
pukkandan a9d4da606d
[crunchyroll] Add extractor-args `language` and `hardsub`
Closes #1516
3 years ago
pukkandan c18d4482b1
[youtube] Fix sorting for some videos 3 years ago
u-spec-png 0f6518938d
[N1] Add support for nova.rs (#1537)
Authored by: u-spec-png
3 years ago
u-spec-png 22cd06c452
[Instagram] Improve thumbnail extraction (#1496)
Authored by: u-spec-png
3 years ago
pukkandan a4211baff5
[cleanup] Minor cleanup 3 years ago
pukkandan 8913ef74d7
[ffmpeg] Detect libavformat version for `aac_adtstoasc`
and print available features in verbose head
Based on https://github.com/ytdl-org/youtube-dl/pull/29581
3 years ago
pukkandan 832e9000c7
[ffmpeg] Accurately detect presence of setts
Closes #1237
3 years ago
CrypticSignal 673c0057e8
[ExtractAudio] Use `libfdk_aac` if available
Closes #1502
Authored by: CrypticSignal
3 years ago
pukkandan 9af98e17bd
[ffmpeg] Framework for feature detection
Related: #1502, #1237, https://github.com/ytdl-org/youtube-dl/pull/29581
3 years ago
pukkandan 31c49255bf
[ExtractAudio] Rescale --audio-quality correctly
Authored by: CrypticSignal, pukkandan
3 years ago
pukkandan bd93fd5d45
[fragment] Fix progress display in fragmented downloads
Closes #1517
3 years ago
pukkandan d89257f398
[youtube] Remove unnecessary no-playlist warning 3 years ago
pukkandan 9bd979ca40
[utils] Parse `vp09` as vp9 3 years ago
pukkandan a1fc7ca074
[jsinterp] Handle default in switch better 3 years ago
u-spec-png c588b602d3
[Instagram] Fix incorrect resolution (#1494)
Authored by: u-spec-png
3 years ago
kaz-us f0ffaa1621
[vk] Fix login (#1495)
Closes #1459
Authored by: kaz-us
3 years ago
pukkandan 0930b11fda
[docs,cleanup] Improve docs and minor cleanup
Closes #1387, #1404, #1408, #1485, #1415, #1450, #1492
3 years ago
pukkandan a0bb6ce58d
[youtube] refactor itag processing 3 years ago
pukkandan da48320075
[linkedin] Don't login multiple times 3 years ago
kaz-us 5b6cb56207
[vk] Add subtitles (#1480)
Authored by: kaz-us
3 years ago
u-spec-png b2f25dc242
[Olympics] Fix extractor (#1483)
Authored by: u-spec-png
3 years ago
Ashish Gupta 2f9e021299
[PlanetMarathi] Add extractor (#1484)
Authored by: Ashish0804
3 years ago
u-spec-png 8dcf65c92e
[Instagram] Add login to playlist (#1488)
Authored by: u-spec-png
3 years ago
Marcel 92592bd305
[ceskatelevize] Fix extractor (#1489)
Authored by: flashdagger
3 years ago
pukkandan 404f611f1c
[youtube] Fix throttling by decrypting n-sig (#1437) 3 years ago
u-spec-png cd9ea4104b
[instagram] Add more formats when logged in (#1487)
Authored by: u-spec-png
3 years ago
Ashish Gupta 652fb0d446
[VLive] Add upload_date and thumbnail (#1486)
Closes #1472
Authored by: Ashish0804
3 years ago
Sipherdrakon 6b301aaa34
[mtv] Fix some videos (#1453)
Partial fix for #713
Authored by: Sipherdrakon
3 years ago
pukkandan fa0b816e37
[generic] Detect more json_ld
Closes #1475
3 years ago
pukkandan 5e7bbac305
[generic] parse jwplayer with only the json URL
Closes #1476
3 years ago
pukkandan 10beccc980
[FormatSort] Fix some fields' defaults
Closes #1479
3 years ago
nixxo e6ff66efc0
[mediaset] Add playlist support (#1463)
Closes #1372
Authored by: nixxo
3 years ago
Luc Ritchie aeaf3b2b92
[Coub] Fix media format identification (#1469)
Authored by: wlritchi
3 years ago
Ashish Gupta 7b5f3f7c3d
[MLSScoccer] Add extractor (#1452)
Authored by: Ashish0804
Closes #1451
3 years ago
ajj8 3783b5f1d1
[itv] Add support for ITV News (#1456)
Authored by: ajj8
3 years ago
pukkandan ab630a57b9
[viewlift] Fix typo in 5be76d1ab7 3 years ago
pukkandan 16b0d7e621
[utils] Add `jwt_decode_hs256`
Code from #1340
Authored by: Ashish0804
3 years ago
pukkandan 5be76d1ab7
[viewlift] Add cookie-based login and series support
Closes #1340, #1316
Authored by: Ashish0804, pukkandan
3 years ago
ajj8 b7b186e7de
[sky] Add `SkyNewsStoryIE` (#1443)
Authored by: ajj8
3 years ago
nyuszika7h bd1c792327
[wakanim] Detect geo-restriction (#1429)
Authored by: nyuszika7h
3 years ago
nyuszika7h dc88e9be03
[wakanim] Add support for MPD manifests (#1428)
Closes #1426
Authored by: nyuszika7h
3 years ago
pukkandan 673944b001
[compat] Don't create console in `windows_enable_vt_mode`
Closes #1420
3 years ago
Ashish Gupta 0c873df3a8
[3speak] Add extractors (#1430)
Closes #1421
Authored by: Ashish0804
3 years ago
pukkandan c35ada3360
[twitter] Do not sort by codec
Closes #1431
3 years ago
pukkandan 0db3bae879
[extractor] Fix some errors being converted to `ExtractorError` 3 years ago
pukkandan 48f796874d
[utils] Create `DownloadCancelled` exception
as super-class of ExistingVideoReached, RejectedVideoReached, MaxDownloadsReached

Third parties can also sub-class this to cancel the download queue from a hook
3 years ago
pukkandan abad800058
[downloader/ffmpeg] Fix vtt download with ffmpeg 3 years ago
pukkandan 08438d2ca5
[outtmpl] Add type `link` for internet shortcut files
and refactor related code
Closes #1405
3 years ago
pukkandan 7de837a5e3
[utils] Sanitize URL when determining protocol
Closes #1406
3 years ago
pukkandan 7e59ca440a
[DiscoveryPlus] Allow language codes in URL
Closes #1425
3 years ago
u-spec-png 8e7ab2cf08
[Bilibili:comments] Fix infinite loop (#1423)
Closes #1412
Authored by: u-spec-png
3 years ago
u-spec-png ad64a2323f
[instagram] Fix bug in ab2ffab22d (#1403)
Authored by: u-spec-png
3 years ago
pukkandan f2fe69c7b0
Approximate filesize from bitrate
Closes #1400
3 years ago
pukkandan fccf502118
[youtube] Populate `thumbnail` with the best "known" thumbnail
Closes #402, Related: https://github.com/yt-dlp/yt-dlp/issues/340#issuecomment-950290624
3 years ago
pukkandan 9f1a1c36e6
Separate `--check-all-formats` from `--check-formats`
Previously, `--check-formats` tested only the selected video formats, but ALL thumbnails
3 years ago
pukkandan 96565c7e55
[cleanup] Add keyword automatically to SearchIE descriptions
and some minor cleanup of docs
3 years ago
pukkandan ec11a9f4a2
[minicurses] Add more colors 3 years ago
Alf Marius 93c7f3398d
[Nrk] See desc (#1382)
* Endpoint has changed. Currently the old one redirects to the new one, but this may change
* Descriptions use \r instead of \n. So translate it

Authored by: fractalf
3 years ago
pukkandan 1117579b94 [version] update
:ci skip all
3 years ago
pukkandan 0676afb126
Release 2021.10.22 3 years ago
pukkandan 49a57e70a9
[cleanup] misc 3 years ago
pukkandan 457f6d6866
[vlive:channel] Fix extraction
Based on https://github.com/ytdl-org/youtube-dl/pull/29866
Closes #749, #927, https://github.com/ytdl-org/youtube-dl/issues/29837
Authored by kikuyan, pukkandan
3 years ago
pukkandan ad0090d0d2
[cookies] Local State should be opened as utf-8
Closes #1276
3 years ago
makeworld d183af3cc1
[CBC] Support CBC Gem member content (#1294)
Authored by: makeworld-the-better-one
3 years ago
makeworld 3c239332b0
[CBC] Fix Gem livestream (#1289)
Authored by: makeworld-the-better-one
3 years ago
u-spec-png ab2ffab22d
[Instagram] Add login (#1288)
Authored by: u-spec-png
3 years ago
zenerdi0de f656a23cb1
[patreon] Fix vimeo player regex (#1332)
Closes #1323
Authored by: zenerdi0de
3 years ago
pukkandan 58ab5cbc58
[vimeo] Fix embedded `player.vimeo` URL
Closes #1138, partially fixes #1323
Cherry-picked from upstream commit 3ae9c0f410b1d4f63e8bada67dd62a8d2852be32
3 years ago
Damiano Amatruda 17ec8bcfa9
[microsoftstream] Add extractor (#1201)
Based on: https://github.com/ytdl-org/youtube-dl/pull/24649
Fixes: https://github.com/ytdl-org/youtube-dl/issues/24440
Authored by: damianoamatruda, nixklai
3 years ago
u-spec-png 0f6e60bb57
[tagesschau] Fix extractor (#1227)
Closes #1124
Authored by: u-spec-png
3 years ago
pukkandan ef58c47637
[SponsorBlock] Obey `extractor-retries` and `sleep-requests` 3 years ago
pukkandan 19b824f693
Re-implement deprecated option `--id`
Despite `--title`, `--literal` etc being deprecated,
`--id` is still documented in youtube-dl and so should be kept
3 years ago
jfogelman f0ded3dad3
[AdobePass] Fix RCN MSO (#1349)
Authored by: jfogelman
3 years ago
pukkandan 733d8e8f99
[build] Refactor `pyinst.py` and misc cleanup
Closes #1361
3 years ago
pukkandan 386cdfdb5b
[build] Release windows exe built with py2exe
Closes: #855
Related: #661, #705, #890, #1024, #1160
3 years ago
pukkandan 6e21fdd279
[build] Enable lazy-extractors in releases
Set the environment variable `YTDLP_NO_LAZY_EXTRACTORS`
to forcefully disable lazy extractor loading
3 years ago
Ricardo 0e5927eebf
[build] Build standalone MacOS packages (#1221)
Closes #1075 
Authored by: smplayer-dev
3 years ago
Ashish Gupta 27f817a84b
[docs] Migrate issues to use forms (#1302)
Authored by: Ashish0804
3 years ago
pukkandan d3c93ec2b7
Don't create console for subprocesses on Windows (#1261)
Closes #1251
3 years ago
pukkandan b4b855ebc7
[fragment] Print error message when skipping fragment 3 years ago
pukkandan 2cda6b401d
Revert "[fragments] Pad fragments before decrypting (#1298)"
This reverts commit 373475f035.
3 years ago
pukkandan aa7785f860
[utils] Standardize timestamp formatting code
Closes #1285
3 years ago
pukkandan 9fab498fbf
[http] Retry on socket timeout
Closes #1222
3 years ago
Nil Admirari e619d8a752
[ModifyChapters] Do not mutate original chapters (#1322)
Closes #1295 
Authored by: nihil-admirari
3 years ago
Zirro 1e520b5535
Add option `--no-batch-file` (#1335)
Authored by: Zirro
3 years ago
pukkandan 176f1866cb
Add HDR information to formats 3 years ago
pukkandan 17bddf3e95
Reduce default `--socket-timeout` 3 years ago
pukkandan 2d9ec70423
[ModifyChapters] Allow removing sections by timestamp
Eg: --remove-chapters "*10:15-15:00".
The `*` prefix is used so as to avoid any conflicts with other valid regex
3 years ago
pukkandan e820fbaa6f
Do not verify thumbnail URLs by default
Partially reverts cca80fe611 and 0ba692acc8

Unless `--check-formats` is specified, this causes yt-dlp to return incorrect thumbnail urls.
See https://github.com/yt-dlp/yt-dlp/issues/340#issuecomment-877909966, #402

But the overhead in general use is not worth it

Closes #694, #725
3 years ago
pukkandan b11d210156
[EmbedMetadata] Allow overwriting all default metadata
with `meta_default` key
3 years ago
pukkandan 24b0a72b30
[cleanup] Remove broken youtube login code 3 years ago
coletdjnz aae16f6ed9
[youtube:comments] Fix comment section not being extracted in new layouts (#1324)
Co-authored-by: coletdjnz, pukkandan
3 years ago
shirt 373475f035
[fragments] Pad fragments before decrypting (#1298)
Closes #197, #1297, #1007
Authored by: shirt-dev
3 years ago
Ashish Gupta 920134b2e5
[Gronkh] Add extractor (#1299)
Closes #1293
Authored by: Ashish0804
3 years ago
Ashish Gupta 72ab768719
[SkyNewsAU] Add extractor (#1308)
Closes #1287
Authored by: Ashish0804
3 years ago
LE 01b052b2b1
[tbs] Add tbs live streams (#1326)
Authored by: llacb47
3 years ago
Ákos Sülyi 019a94f7d6
[utils] Use `importlib` to load plugins (#1277)
Authored by: sulyi
3 years ago
nyuszika7h e69585f8c6
[7plus] Add cookie based authentication (#1202)
Closes #1103
Authored by: nyuszika7h
3 years ago
Damiano Amatruda 693ec74401
[on24] Add extractor (#1200)
Authored by: damianoamatruda
3 years ago
pukkandan 239df02103
Make `duration_string` and `resolution` available in --match-filter
Related: #1309
3 years ago
pukkandan 18f96d129b
[utils] Allow duration strings in filter
Closes #1309
3 years ago
pukkandan ec3f6640c1
[crunchyroll] Add season to flat-playlist
Closes #1319
3 years ago
pukkandan dd078970ba
[crunchyroll] Add support for `beta.crunchyroll` URLs
and fix series URLs with language code
3 years ago
pukkandan 71ce444a3f
Fix --restrict-filename when used with default template 3 years ago
pukkandan 580d3274e5 [youtube] Expose different formats with same itag 3 years ago
pukkandan 03b4de722a
[downloader] Fix slow progress hooks
Closes #1301
3 years ago
pukkandan 48ee10ee8a
Fix conflict b/w id and ext in format selection
Closes #1282
3 years ago
Ashish Gupta 6ff34542d2
[Hotstar] Raise appropriate error for DRM 3 years ago
gustaf e3950399e4
[Viafree] add support for Finland (#1253)
Authored by: 18928172992817182 (gustaf)
3 years ago
Ashish Gupta 974208e151
[trovo] Support channel clips and VODs (#1246)
Closes #229
Authored by: Ashish0804
3 years ago
pukkandan 883d4b1eec
[YoutubeDL] Write verbose header to logger 3 years ago
pukkandan a0c716bb61
[instagram] Show appropriate error when login is needed
Closes #1264
3 years ago
pukkandan d5a39f0bad
[http] Show the last encountered error
Closes #1262
3 years ago
Ashish Gupta a64907d0ac
[Hotstar] Mention Dynamic Range in format id (#1265)
Authored by: Ashish0804
3 years ago
pukkandan 6993f78d1b
[extractor,utils] Detect more codecs/mimetypes
Fixes: https://github.com/ytdl-org/youtube-dl/issues/29943
3 years ago
pukkandan 993191c0d5
Fix bug in c111cefa5d 3 years ago
pukkandan fc5c8b6492
[eria2c] Fix --skip-unavailable fragment 3 years ago
pukkandan b836dc94f2
[outtmpl] Fix bug in expanding environment variables 3 years ago
pukkandan c111cefa5d
[downloader/ffmpeg] Improve simultaneous download and merge 3 years ago
pukkandan 975a0d0df9
Calculate more fields for merged formats
Closes #947
3 years ago
Ákos Sülyi a387b69a7c
[devscripts/run_tests] Use markers to filter tests (#1258)
`-k` filters using a substring match on test name.
`-m` checks markers for an exact match.
Authored by: sulyi
3 years ago
pukkandan ecdc9049c0
[YouTube] Add auto-translated subtitles
Closes #1245
3 years ago
pukkandan 7b38649845
Fix verbose head not showing custom configs 3 years ago
pukkandan e88d44c6ee
[cleanup] Cleanup bilibili code
Closes #1169
Authored by pukkandan, u-spec-png
3 years ago
pukkandan a2160aa45f
[extractor] Generalize `getcomments` implementation 3 years ago
pukkandan cc16383ff3
[extractor] Simplify search extractors 3 years ago
pukkandan a903d8285c
Fix bug in storyboards
Caused by 9359f3d4f0
3 years ago
pukkandan 9dda99f2fc [Merger] Do not add `aac_adtstoasc` to non-hls audio 3 years ago
pukkandan ba10757412 [extractor] Detect `EXT-X-KEY` Apple FairPlay 3 years ago
pukkandan e6faf2be36
[update] Clean up error reporting
Closes #1224
3 years ago
pukkandan ed39cac53d Load archive only after printing verbose head
If there is some issue in loading archive, the verbose head should be visible in the logs
3 years ago
pukkandan a169858f24 Fix `check_formats` output being written to stdout when `-qv`
Closes #1229
3 years ago
pukkandan 0481e266f5
[tiktok] Fix typo in 943d5ab133
and update tests
Closes #1226
3 years ago
Ashish Gupta 2c4bba96ac
[EUScreen] Add Extractor (#1219)
Closes #1207
Authored by: Ashish0804
3 years ago
pukkandan e8f726a57f
[hidive] Fix typo in b5ae35ee6d 3 years ago
pukkandan 8063de5109 [version] update
:ci skip all
3 years ago
pukkandan dec0d56fa9
Release 2021.10.10 3 years ago
pukkandan 21186af70a
[downloader] Fix throttledratelimit
The timer should not reset at start of each block
3 years ago
pukkandan 84999521c8
[build] Allow to release without changelog
so that forks can build using GHA easily
3 years ago
pukkandan d1d5c08f29
[minicurses] Fix when printing to file
Closes #1215
3 years ago
Bojidar Qnkov 2e01ba6218
[NovaPlay] Add extractor (#1209)
Authored by: Bojidarist
3 years ago
pukkandan c9652aa418
[docs] Remove incorrect dependency on VC++10
Closes #1163
3 years ago
pukkandan 91b6c884c9
Revert "[ffmpeg] Set max probesize to workaround AAC HLS stream issues (#1109)"
This reverts commit 250a938de8.

This is no longer necessary since 7687c8ac6e
3 years ago
Felix S 28fe35b4e3
[francetv] Update extractor (#1096)
Original PR: https://github.com/ytdl-org/youtube-dl/pull/29996
Closes: https://github.com/yt-dlp/yt-dlp/issues/970, https://github.com/ytdl-org/youtube-dl/issues/29956, https://github.com/ytdl-org/youtube-dl/issues/29957, https://github.com/ytdl-org/youtube-dl/issues/29969, https://github.com/ytdl-org/youtube-dl/issues/29990, https://github.com/ytdl-org/youtube-dl/issues/30010

Authored by: fstirlitz, sarnoud
3 years ago
pukkandan aa9a92fdbb
[downloader/ffmpeg] Fix bug in initializing `FFmpegPostProcessor`
When `FFmpegFD` initializes the PP, it passes `self` as the `downloader`
But it does not have a `_postprocessor_hooks` attribute

Closes #1211
3 years ago
pukkandan a170527e1f [version] update
:ci skip all
3 years ago
pukkandan 90d55df330
Release 2021.10.09 3 years ago
Ashish Gupta 81bcd43a03
[HotStarSeries] Fix cookies (#1187)
Authored by: Ashish0804
3 years ago
pukkandan b5ae35ee6d
[cleanup] Misc cleanup 3 years ago
pukkandan 4e3b637d5b
Merge webm formats into mkv if thumbnails are to be embedded
This was originally implemented in 4d971a16b8 (#173) by @damianoamatruda
but was reverted in 3b297919e0
since it was unintentionally being triggered for `write_thumbnail` (See #500)
3 years ago
Jules-A 8cd69fc407
[Funimation] Fix for /v/ urls (#1196)
Closes #993 
Authored by: pukkandan, Jules-A
3 years ago
pukkandan 2614f64600
[utils] Let traverse_obj accept functions as keys 3 years ago
pukkandan b922db9fe5
[http] Respect user-provided chunk size over extractor's 3 years ago
pukkandan f2cad2e496
[Hidive] Fix subtitles broken by 705e7c2005 3 years ago
u-spec-png d6124e191e
[bilibili] Fix bug in efc947fb3e
Authored by: u-spec-png
3 years ago
timethrow 8c6f4daa4c
[docs] Write embedding and contributing documentation (#528)
Authored by: pukkandan, timethrow
3 years ago
coletdjnz ac56cf38a4
[youtube:tab] Fallback to API when webpage fails to download (#1122)
and add some extractor_args to force this mode
Authored by: coletdjnz
3 years ago
Damiano Amatruda c08b8873ea
[ciscowebex] Add extractor (#1199)
Authored by: damianoamatruda
3 years ago
pukkandan 819e05319b
Improved progress reporting (See desc) (#1125)
* Separate `--console-title` and `--no-progress`
* Add option `--progress` to show progress-bar even in quiet mode
* Fix and refactor `minicurses`
* Use `minicurses` for all progress reporting
* Standardize use of terminal sequences and enable color support for windows 10
* Add option `--progress-template` to customize progress-bar and console-title
* Add postprocessor hooks and progress reporting

Closes: #906, #901, #1085, #1170
3 years ago
u-spec-png fee3f44f5f
[Streamable] Add codecs (#1189)
Authored by: u-spec-png
3 years ago
pukkandan 705e7c2005
[Hidive] Fix duplicate and incorrect formats 3 years ago
pukkandan 49e7e9c3ce
[docs,build] Change all pycryptodome references to pycryptodomex 3 years ago
pukkandan 8472674399
[FixupM3u8] Do not run if merge is needed
We pass the relevant arguments to the merger, so separate fixup in redundant
3 years ago
pukkandan 1276a43a77
[youtube] Fix non-fatal errors in fetching player 3 years ago
pukkandan 519804a92f
bugfix for 80c03fa98f 3 years ago
pukkandan 1b6bb4a85a
[reddit] bugfix for 8e3fd7e034 3 years ago
pukkandan 644149afec
[soundcloud:playlist] Detect last page correctly
Closes #1168
3 years ago
pukkandan 4e3d1898a8
Workaround ssl errors in mingw python
Closes #1151
3 years ago
shirt f85e6be42e
[build] Use pycryptodomex for PyInstaller (#1179) 3 years ago
coletdjnz 762e509d91
[Mediaite] Relax valid url (#1158)
Closes #1131
Authored by: coletdjnz
3 years ago
i6t d92125aeba
[GoPro] Add extractor (#1167)
Fixes: https://github.com/ytdl-org/youtube-dl/issues/30044
Authored by: i6t
3 years ago
makeworld 0f0ac87be3
[CBC] Cleanup tests (#1162)
Related: #1013 
Authored by: makeworld-the-better-one
3 years ago
u-spec-png 755203fc3f
[parliamentlive.tv] Fix extractor (#1153)
Closes #1139 
Authored by: u-spec-png
3 years ago
MinePlayersPE 943d5ab133
[Douyin] Rewrite extractor (#1157)
Closes #1121
Authored by: MinePlayersPE
3 years ago
u-spec-png 3001a84dca
[Newgrounds] Add age_limit and fix duration (#1156)
Authored by: u-spec-png
3 years ago
u-spec-png ebf2fb4d61
[Vupload] Add extractor (#1146)
Fixes: https://github.com/ytdl-org/youtube-dl/issues/29877
Authored by: u-spec-png
3 years ago
u-spec-png efc947fb3e
[Bilibili] Add subtitle converter (#1144)
Closes #1015
Based on https://github.com/y2361547758/bcc2ass
Authored by: u-spec-png
3 years ago
pukkandan b11c04a8ae
Fix `-f mp4` behaving differently from youtube-dl 3 years ago
pukkandan 5d535b4a55
[build] Allow building with py2exe (and misc fixes)
py2exe config is copied from youtube-dl
Closes #1160
3 years ago
pukkandan a1c3967307
[EmbedSubtitle, SubtitlesConvertor] Fix error when subtitle file is missing
Closes #1152, #1134
Bug from 8e25d624df
3 years ago
pukkandan e919569e67
[funimation] Sort formats according to the relevant extractor-args 3 years ago
Ákos Sülyi ff1dec819a
[aes] Improve performance slightly (#1135)
Authored by: sulyi
3 years ago
Felix S 9359f3d4f0
[extractor] Extract storyboards from SMIL manifests (#1128)
Authored by: fstirlitz
3 years ago
Aleri Kaisattera 0eaec13ba6
[Theta] Add video extractor (#1137)
Authored by: alerikaisattera
3 years ago
jfogelman ad095c4283
[adobepass] Add RCN as MSO (#1129)
Authored by: jfogelman
3 years ago
pukkandan e6f21b3d92
[docs,cleanup] Some minor refactoring and improve docs 3 years ago
pukkandan d710cc6d36
[docs] Add note about our custom ffmpeg builds 3 years ago
pukkandan 3ae5e79774
[postprocessor] Add plugin support
Adds option `--use-postprocessor` to enable them
3 years ago
pukkandan 8e3fd7e034
[reddit] Fix 429 by generating a random `reddit_session`
Related: a76e2e0f88, #1014, https://github.com/ytdl-org/youtube-dl/issues/29986
Original PR: https://github.com/ytdl-org/youtube-dl/pull/30017
Authored by: AjaxGb
3 years ago
pukkandan 80c03fa98f
Allow empty output template to skip a type of file
Closes #760, #1111
3 years ago
pukkandan 1f2a268bd3
[embedsubtitle] Fix error when duration is unknown 3 years ago
pukkandan 804ca01cc7
[build] Add more files to the tarball
Closes #1099
3 years ago
i6t 851876095b
[Gettr] Add extractor (#1120)
Fixes: https://github.com/ytdl-org/youtube-dl/issues/29589
Authored by: i6t
3 years ago
ajj8 2d997542ca
[bbc] Extract better quality videos (#1113)
mobile-tablet-main only provides 540p25, so it shouldn't be used for the first attempt. Instead pc provides up to 720p50

Authored by: ajj8
3 years ago
pukkandan 7756277882
Workaround for bug in `ssl.SSLContext.load_default_certs` (#1118)
* Remove old compat code
* Load certificates only when not using nocheckcertificate
* Load each certificate individually

Closes #1060
Related bugs.python.org/issue35665, bugs.python.org/issue4531
3 years ago
shirt 7687c8ac6e
[HLS] Fix decryption issues (#1117)
* Unpad HLS fragments with PKCS#7 according to datatracker.ietf.org/doc/html/rfc8216
* media_sequence should only be incremented in for media fragments
* The native decryption should only be used if ffmpeg is unavailable since it is significantly slower. Closes #1086

Authored by: shirt-dev, pukkandan
3 years ago
Ashish Gupta 80c360d7aa
[LinkedInLearning] Fix newline bug in subtitles (#1104)
Authored by: Ashish0804
3 years ago
shirt 250a938de8
[ffmpeg] Set max probesize to workaround AAC HLS stream issues (#1109)
Fixes: #618, #998, #1039

Authored by: shirt-dev
3 years ago
Ashish Gupta f1d42a83ab
[Rumble] Add RumbleChannelIE (#1088)
Authored by: Ashish0804
3 years ago
ChillingPepper 3cf4b91dc5
[SovietsCloset] Add duration from m3u8 (#908)
Authored by: ChillingPepper
3 years ago
u-spec-png fecb20a503
[N1] Add extractor (#1080)
Authored by: u-spec-png
3 years ago
pukkandan 360167b9fc Fix `--flat-playlist` when neither IE nor id is known 3 years ago
pukkandan 28234287f1 [update] Check for new version even if not updateable 3 years ago
pukkandan 91dd88b90f
[outtmpl] Alternate form of format type `l` for `\n` delimited list 3 years ago
Aleri Kaisattera d31dab7084
[vidme] Remove extractor (#1095)
Authored by: alerikaisattera
3 years ago
u-spec-png c470901ccf
[reddit] Add embedded url (#1090)
Authored by: u-spec-png
3 years ago
i6t 2333ea1029
[Veo] Add extractor (#1084)
Fixes: https://github.com/ytdl-org/youtube-dl/issues/29445
Authored by: i6t
3 years ago
u-spec-png 9a13345439
[PolskieRadio] Fix extractors (#1082)
Closes #1033
Authored by: jakubadamw, u-spec-png
3 years ago
pukkandan 524e2e4fda
[outtmpl] Format type `U` for unicode normalization 3 years ago
Matt Broadway f440b14f87
[cookies] Fix keyring fallback (#1078)
The password returned by `security find-generic-password` has a newline at the end

Closes #1073
Authored by: mbway
3 years ago
Ashish Gupta 8dc831f715
[LinkedInLearning] Add subtitles (#1077)
Authored by: Ashish0804
Closes #1072
3 years ago
u-spec-png e99b2d2771
[Newgrounds] Fix view count on songs (#1071)
Authored by: u-spec-png
3 years ago
pukkandan 1fed277349 [version] update
:ci skip all
3 years ago
pukkandan 0ef787d773 Release 2021.09.25 3 years ago
pukkandan a5de4099cb [build] Fix brew tap 3 years ago
pukkandan ff1c7fc9d3
Allow `0` in `--playlist-items` 3 years ago
pukkandan 600e900300
[zdf] Improve format sorting
Closes #910
3 years ago
f4pp3rk1ng 20b91b9b63
[SpankBang] Fix uploader (#892)
Closes #833 
Authored by: f4pp3rk1ng, coletdjnz
3 years ago
pukkandan 4c88ff87fc
[build] Improve release process (#880)
* Automate more of the release process by animelover1984, pukkandan - closes #823
* Fix sha256 by nihil-admirari - closes #385
* Bring back brew taps by nao20010128nao #865
* Provide `--onedir` zip for windows by pukkandan - Closes #1024, #661, #705 and #890

Authored by: pukkandan, animelover1984, nihil-admirari, nao20010128nao
3 years ago
renalid e27cc5d864
[Arte] Improve description extraction (#1046)
Authored by: renalid
3 years ago
Aleri Kaisattera eb6d4ad1ca
[Theta] Add extractor (#1068)
Authored by: alerikaisattera
3 years ago
coletdjnz 99e9e001de
[youtube] Cleanup authentication code (#786)
Authored by: coletdjnz
3 years ago
pukkandan 51ff9ca0b0
[xattr] bugfix for b19404591a 3 years ago
pukkandan b19404591a
Separate the options `--ignore-errors` and `--no-abort-on-error`
In youtube-dl, `-i` ignores both download and post-processing error, and
treats the download as successful even if the post-processor fails.

yt-dlp used to skip the entire video on either error and there was no
option to ignore the post-processing errors like youtube-dl does.

By splitting the option into two, now either just the download errors
(--no-abort-on-error, default on CLI) or all errors (--ignore-errors)
can be ignored as per the users' needs

Closes #893
3 years ago
pukkandan 1f8471e22c
Ignore empty entries in `_list_from_options_callback` 3 years ago
pukkandan 77c4a9ef68
Download subtitles in order of `--sub-langs`
Closes #1041
3 years ago
pukkandan 8f70b0b82f
[cbs] Report appropriate error for DRM
Closes #1056
3 years ago
pukkandan be867b03f5
bugfix for bd50a52b0d 3 years ago
pukkandan 1813a6ccd4
[youtube] Fix `--mark-watched` with `--cookies-from-browser`
Closes #1019
3 years ago
pukkandan 8100c77223
[lbry] Show error message from API response 3 years ago
Ashish Gupta 9ada988bfc
[Koo] Add extractor (#1044)
Authored by: Ashish0804
3 years ago
Ashish Gupta d1a7768432
[Chingari] Add extractors (#1038)
Authored by: Ashish0804
3 years ago
NeroBurner 49fa4d9af7
[atv.at] Use jwt for API (#1012)
The jwt token is implemented according to RFC7519

Closes #988
Authored by: NeroBurner
3 years ago
The Hatsune Daishi ee2b3563f3
[downloader/niconico] Pass custom headers (#1063)
Closes #1057
Authored by: nao20010128nao
3 years ago
Glenn Slayden bdc196a444
[cleanup] Fix line endings for `nebula.py` (#1064)
:ci skip
Authored by: glenn-slayden
3 years ago
Ashish Gupta 388bc4a640
[Hotstar] Add referer for subs (#1062)
Authored by: Ashish0804
3 years ago
pukkandan 50eff38c1c
bugfix for a21e0ab1a1
Closes #1061
3 years ago
nixxo 4be9dbdc24
[comedycentral] Support `collection-playlist` (#1058)
Authored by: nixxo
3 years ago
pukkandan a21e0ab1a1
[ffmpeg] Add `aac_adtstoasc` when merging if needed
Related: #1039
3 years ago
pukkandan a76e2e0f88
[reddit] Workaround for 429 by redirecting to old.reddit.com
Closes #1014
3 years ago
The Hatsune Daishi bd50a52b0d
Basic framework for simultaneous download of multiple formats (#1036)
Authored by: nao20010128nao
3 years ago
Sipherdrakon c12977bdc4
[AnimalPlanet] Fix extractor (#1050)
Authored by: Sipherdrakon
3 years ago
ChillingPepper f6d8776d34
[SovietsCloset] Fix playlists for games with only named categories
Authored by: ConquerorDopy
3 years ago
pukkandan d806c9fd97
[docs,cleanup] Add deprecation warning in docs
for some counter intuitive behaviour that may be removed in future.

and fix linter
3 years ago
pukkandan 5e3f2f8fc4
[youtube] Return full URL instead of just ID 3 years ago
pukkandan 1009f67c2a
[fragment,aria2c] Generalize and refactor some code 3 years ago
pukkandan bd6f722de8
dump files should obey `--trim-filename` (#1043)
Authored by: sulyi
3 years ago
pukkandan d9d8b85747
[fragment] Fix range header when using `-N` and media sequence (#1048)
Authored by: shirt
3 years ago
pukkandan daf7ac2b92
[fragment] Avoid repeated request for AES key 3 years ago
pukkandan 96933fc1b6
[aria2c] Fix IV for some AES-128 streams
Authored by: shirt
3 years ago
makeworld 0d32e124c6
[CBC] Fix CBC Gem extractors (#1013)
Closes #936
Authored by: makeworld-the-better-one
3 years ago
u-spec-png cb2ec90e91
[Peertube] Add channel extractor (#1023)
Authored by: u-spec-png
3 years ago
pukkandan 3cd786dbd7
[youtube] Warn when trying to download clips 3 years ago
pukkandan 1b629e1b4c
[test/cookies] Improve logging 3 years ago
u-spec-png 8f8e8eba24
[Nuvid] Fix extractor (#1022)
Fixes: https://github.com/ytdl-org/youtube-dl/issues/29886
Authored by: u-spec-png
3 years ago
Ákos Sülyi 09906f554d
[aes] Add `aes_gcm_decrypt_and_verify` (#1020)
Authored by: sulyi, pukkandan
3 years ago
Yuan Chao a63d9bd0b0
[CGTN] Add extractor (#981)
Authored by: chao813
3 years ago
pukkandan f137e4c27c
[utils] Improve `extract_timezone`
Code taken from: https://github.com/ytdl-org/youtube-dl/pull/29845
Fixes: https://github.com/ytdl-org/youtube-dl/issues/29948
Authored by: dirkf
3 years ago
nyuszika7h 4762621925
[videa] Fix some extraction errors (#1028)
Authored by: nyuszika7h
3 years ago
pukkandan 57aa7b8511
[hls] Byterange + AES128 is supported by native downloader 3 years ago
pukkandan 9c1c3ec016
[Oreilly] Bugfix for 7738bd3272 3 years ago
DigitalDJ f9cc0161e6
[extractor] Fix root-relative URLs in MPD (#1006)
Authored by: DigitalDJ
3 years ago
Nil Admirari c6af2dd8e5
[SponsorBlock] Improve merge algorithm (#999)
Authored by: nihil-admirari
3 years ago
Mohammad Khaled AbouElSherbini 7738bd3272
[Oreilly] Handle new web url (#990)
The change in URL is most likely a server side issue. But we can work around it by a simple substitution

Authored by: MKSherbini
3 years ago
pukkandan 7c37ff97d3
Allow alternate fields in outtmpl
Closes #899, #1004
3 years ago
The Hatsune Daishi d47f46e17e
[damtomo] Add extractor (#992)
Authored by: nao20010128nao
3 years ago
coletdjnz 298bf1d275
[itv] Prefer last matching featureset (#1001)
Bug fix for #986
Authored by: coletdjnz
3 years ago
Aleri Kaisattera d1b39ad844
[CAM4] Add extractor (#1010)
Authored by: alerikaisattera
3 years ago
pukkandan edf65256aa
[hls,aes] Fallback to native implementation for AES-CBC
and detect `Cryptodome` in addition to `Crypto`

Closes #935
Related: #938
3 years ago
pukkandan 7303f84abe
[options] Fix `--no-config` and refactor reading of config files
Closes #912, #914
3 years ago
pukkandan f5aa5cfbff
Add format type `B` for outtmpl to treat the value as bytes
This is useful to limit the filename to a certain number of bytes rather than characters
Closes #1003
3 years ago
Aleri Kaisattera f1f6ca78b4
[Streamanity] Add Extractor (#984)
Authored by: alerikaisattera
3 years ago
Ashish Gupta 2fac2e9136
[Mediaite] Add Extractor (#973)
Closes #969 
Authored by: Ashish0804
3 years ago
Ashish Gupta 23dd2d9a32
[NDR] Rewrite NDRIE (#962)
Closes #959 
Authored by: Ashish0804
3 years ago
Ashish Gupta b89378a69a
[globo] Fix GloboIE (#994)
Closes #991 
Authored by: Ashish0804
3 years ago
pukkandan 0001fcb586
Add option `--netrc-location`
Closes #792, #963
3 years ago
pukkandan c589c1d395
[compat] Don't ignore `HOME` (if set) on windows
Related: #792
3 years ago
pukkandan f7590d4764
[vrv] Don't raise error when thumbnails are missing
Closes #983
3 years ago
pukkandan dbf7eca917
[soundcloud] Update `_CLIENT_ID`
Related: #975
3 years ago
pukkandan d21bba7853
[options] Strip spaces in list-like switches 3 years ago
Ashish Gupta a8cb7eca61
[HiDive] Fix extractor (#958)
Closes #952, #408
Authored by: Ashish0804
3 years ago
nyuszika7h 92790da2bb
[radlive] Add new extractor (#870)
Closes #312
Authored by: nyuszika7h
3 years ago
Sipherdrakon b5a39ed43b
[DIYNetwork] Support new format (#934)
Authored by: Sipherdrakon
3 years ago
LE cc33cc4395
[VrtNU] Handle login errors (#977)
Authored by: llacb47
3 years ago
Ashish Gupta 1722099ded
[Mxplayer] Use mobile API (#966)
Authored by: Ashish0804
3 years ago
Ákos Sülyi 40b18348e7
[cleanup] Improve `make clean-test` (#972)
Authored by: sulyi
3 years ago
u-spec-png e9a30b181e
[Peertube] Add playlist extractor (#957)
Authored by: u-spec-png
3 years ago
zenerdi0de 9c95ac677e
[Fancode] Fix live streams (#961)
Authored by: zenerdi0de
3 years ago
coletdjnz ea706726d6
[ITV] Fix extractor, add subtitles and thumbnails (#913)
Original PR: https://github.com/ytdl-org/youtube-dl/pull/28955 (see also https://github.com/ytdl-org/youtube-dl/issues/28906#issuecomment-831008270)

Closes #861, https://github.com/ytdl-org/youtube-dl/issues/28906, https://github.com/ytdl-org/youtube-dl/issues/29337, https://github.com/ytdl-org/youtube-dl/issues/29190, https://github.com/ytdl-org/youtube-dl/issues/28939, https://github.com/ytdl-org/youtube-dl/issues/29620

Authored-by: coletdjnz, sleaux-meaux, Vangelis66
3 years ago
pukkandan f60990ddfc
[peertube] Update instances (#957)
Authored by: u-spec-png
3 years ago
pukkandan ad226b1dc9
[funimation] Fix for locations outside US
Closes #868
Authored by: Jules-A, pukkandan
3 years ago
pukkandan ca46b94134
[cookies] Make browser names case insensitive 3 years ago
pukkandan 67ad7759af
[brightcove] Extract subtitles from manifests 3 years ago
pukkandan d5fe04f5c7
Fix `--compat-option no-direct-merge` 3 years ago
dalan 03c862794f
[9Now] handle episodes of series (#896)
Authored by: dalanmiller
3 years ago
MinePlayersPE 0fd6661edb
[TikTokUser] Fix extractor using mobile API (#925)
and misc cleanup

Closes #859
Authored by: MinePlayersPE, llacb47
3 years ago
u-spec-png 02c7ae8104
[Newgrounds] Add `NewgroundsUserIE` and improve extractor (#942)
Authored by: u-spec-png
3 years ago
Ashish Gupta 16f7e6be3a
[bilibili]Add BiliIntlIE and BiliIntlSeriesIE (#907)
Closes #611 
Authored by: Ashish0804
3 years ago
Ashish Gupta ffecd3034b
[MuseScore] Add Extractor (#918)
Closes #911 
Authored by: Ashish0804
3 years ago
Felix S 1c5ce74c04
[zype] Extract subtitles from the m3u8 manifest (#948)
Closes #929
Authored by: fstirlitz
3 years ago
pukkandan 81a136b80f
[WebVTT] Adjust parser to accommodate PBS subtitles (#922)
Closes #921
3 years ago
coletdjnz eab3f867e2
[nzherald] Add NZHeraldIE (#909)
Authored-by: coletdjnz

Related: https://github.com/ytdl-org/youtube-dl/issues/28267
3 years ago
coletdjnz a7e999beec
[pbs] Fix subtitle extraction (#813)
Original PR: https://github.com/ytdl-org/youtube-dl/pull/24430, https://github.com/ytdl-org/youtube-dl/pull/17434
Closes: #836, https://github.com/ytdl-org/youtube-dl/issues/18796, https://github.com/ytdl-org/youtube-dl/issues/17273
Authored-by: coletdjnz, gesa, raphaeldore
3 years ago
Ashish 71407b3eca
[Olympics] Add replay extractor (#905)
Closes #897 
Authored by: Ashish0804
3 years ago
Ashish dc9de9cbd2
[Yandex] Add ZenYandexIE and ZenYandexChannelIE (#900)
Authored by: Ashish0804
3 years ago
Poschi 92ddaa415e
[gotostage] Add extractor (#883)
Authored by: poschi3
3 years ago
coletdjnz b6de707d13
[youtube] Improvements to JS player extraction (See desc) (#860)
* fallback player url extraction when it fails to be extracted from the webpage
* don't download js player unnecessarily for clients that don't require it
* try to extract js player url from any additional client configs
* ability to skip the js player usage/download using `player_skip=js`
* ability to skip the initial webpage download using `player_skip=webpage`

known issue:
* authentication for multi-channel accounts and multi-account cookies may not work correctly if the webpage or client configs are skipped
*  formats from the web client requiring signature decryption will be skipped if player js extraction is skipped

Authored by: coletdjnz
3 years ago
coletdjnz bccdbd22d5
[Mediaklikk] Add Extractor (#867)
Original PR: https://github.com/ytdl-org/youtube-dl/pull/17453, https://github.com/ytdl-org/youtube-dl/pull/25098
Fixes: https://github.com/ytdl-org/youtube-dl/issues/21431
Authored-by: tmarki, mrx23dot, coletdjnz
3 years ago
MinePlayersPE bd9ff55bcd [tiktok] Use API to fetch higher quality video (#843)
Authored by: MinePlayersPE, llacb47
3 years ago
pukkandan 526d74ec5a
[cleanup] Misc 3 years ago
pukkandan e04a1ff92e
[soundcloud] Retry playlist pages on `502` error
Closes #872
3 years ago
pukkandan aa6c25309a [soundcloud] Make playlist extraction lazy 3 years ago
pukkandan d98b006b85 [dw] Fix extractor
Closes #830
3 years ago
pukkandan 265a7a8ee5
[redtube] Fix exts
Closes #464
3 years ago
pukkandan 826446bd82
[plutotv] Fix extractor for URLs with `/en`
Closes #431
3 years ago
The Hatsune Daishi bc79491368
[17live] Add 17.live extractor (#866)
Authored by: nao20010128nao
3 years ago
ChillingPepper 421ddcb8b4
[SovietsCloset] Add extractor (#884)
Authored by: ChillingPepper
3 years ago
coletdjnz c0ac49bcca
[youtube] Retry on 'Unknown Error' (#854)
and do not repeat unimportant alerts

Closes #839
Authored by: coletdjnz
3 years ago
coletdjnz 02def2714c
[southpark] Fix SouthParkDE (#812)
This was broken by ee1e05581e
Authored by: coletdjnz
3 years ago
pukkandan f9be9cb9fd
[cookies] Print warning for cookie decoding error only once
Closes #889
3 years ago
pukkandan 4614bc22c1 Allow `--force-write-archive` to work with `--flat-playlist`
Related: #876
3 years ago
pukkandan 8e5fecc88c
Handle more playlist errors with `-i` 3 years ago
pukkandan 165efb823b
[ModifyChapters] fixes (See desc)
* [docs] Fix typo
* Do not enable `sponskrub` by default
* Fix `--force-keyframes-at-cuts`
* Don't embed subtitles if the video has been cut. Previously, running `--remove-chapters` with `--embed-subs` multiple times caused repeated cuts and out-of-sync subtitles
* Store `_real_duration` to prevent running ffprobe multiple times
3 years ago
pukkandan dd594deb2a
Fix `--no-get-comments`
Closes #882
3 years ago
pukkandan 409e18286e
Fix `extra_info` being reused across runs
58adec4677 was supposed to solve this, but ended up being an incomplete fix
Closes #727
3 years ago
pukkandan 8113999995
Fix `--compat-option playlist-index` 3 years ago
pukkandan 8026e50152
[version] update
:ci skip all
3 years ago
pukkandan 9ee4f0bb5b
Release 2021.09.02 3 years ago
pukkandan be4d9f4cd9
Partially revert "[build] Add homebrew taps (#827)" 3 years ago
pukkandan 347182a0cd
Show a more useful error in older python versions 3 years ago
pukkandan a7429aa9fa
[youtube] Fix subtitle names 3 years ago
Nil Admirari 7a340e0df3
Native SponsorBlock implementation and related improvements (#360)
SponsorBlock options:
* The fetched sponsor sections are written to infojson
* `--sponsorblock-remove` removes specified chapters from file
* `--sponsorblock-mark` marks the specified sponsor sections as chapters
* `--sponsorblock-chapter-title` to specify sponsor chapter template
* `--sponsorblock-api` to use a different API

Related improvements:
* Split `--embed-chapters` from `--embed-metadata`
* Add `--remove-chapters` to remove arbitrary chapters
* Add `--force-keyframes-at-cuts` for more accurate cuts when removing and splitting chapters

Deprecates all `--sponskrub` options

Authored by: nihil-admirari, pukkandan
3 years ago
ouwou f0e5366335
[reddit] Fix for quarantined subreddits (#848)
Authored by: ouwou
3 years ago
nyuszika7h 49ca8db06b
[mediaset] Fix extraction for more videos (#852)
Closes #851
Authored by: nyuszika7h
3 years ago
nyuszika7h ee57a19d84
[mediaset] Fix extraction for some videos (#850)
This was broken by #564
Closes #849 
Authored by: nyuszika7h
3 years ago
octotherp 908b56eaf7
[XHamster] Extract `uploader_id` (#844)
Authored by: octotherp
3 years ago
u-spec-png 1461d7bef2
[Tokentube] Add extractor (#842)
Closes #800 
Authored by: u-spec-png
3 years ago
pukkandan 8a2d992389
[facebook] Fix format sorting
Closes #795
3 years ago
pukkandan 8e25d624df
[EmbedSubtitle] Continue even if some files are missing 3 years ago
coletdjnz e88dabb35e
[Viafree] Fix extractor and extract subtitles (#828)
Authored by: coletdjnz
Fixes #820
3 years ago
BunnyHelp 8eb7ba82ca
[iwara.tv] Extract more metadata (#829)
Authored-by: BunnyHelp
3 years ago
Luc Ritchie b2eeee0ce0
[afreecatv] Tolerate failure to parse date string (#832)
Authored by: wlritchi
3 years ago
Luc Ritchie 875cfb8cbc
[afreecatv] Fix adult VODs (#831)
Original PR: https://github.com/ytdl-org/youtube-dl/pull/28405
Fixes https://github.com/ytdl-org/youtube-dl/issues/26622, https://github.com/ytdl-org/youtube-dl/issues/26926

Authored by: wlritchi
3 years ago
The Hatsune Daishi b8773e63f0
[build] Add homebrew taps (#827)
https://github.com/yt-dlp/homebrew-taps
Closes: #754, #770
Authored by: nao20010128nao
3 years ago
u-spec-png 05664a2f7b
[CDA] Add more formats (#805)
Fixes: #791, https://github.com/ytdl-org/youtube-dl/issues/29844
Authored by: u-spec-png
3 years ago
pukkandan 2ee6389bef
[build] Fix bug in making `yt-dlp.tar.gz` 3 years ago
coletdjnz 62cdaaf0e2
[StarTV] Add extractor for startv.com.tr (#815)
Authored-by: mrfade, coletdjnz
Related: https://github.com/ytdl-org/youtube-dl/issues/22715
3 years ago
coletdjnz 419508eabb
[Motherless] Fix extractor (#809)
Authored-by: coletdjnz
Fixes #806, https://github.com/ytdl-org/youtube-dl/issues/29626
3 years ago
Sipherdrakon 54153fb71b
[VH1,TVLand] Fix extractors (#784)
Fixes #745 but not #713
Authored by: Sipherdrakon
3 years ago
zenerdi0de 1dd6d9ca9d
[Patreon] Add PatreonUserIE (#573)
Authored by: zenerdi0de
3 years ago
IONECarter 356ac009d3
[peloton] Add extractor (#192)
Authored by: IONECarter, capntrips, pukkandan
3 years ago
coletdjnz 9a292a620c
[ATV.at] Fix extractor for ATV.at (#816)
Authored-by: NeroBurner, coletdjnz
Fixes https://github.com/ytdl-org/youtube-dl/issues/29079
3 years ago
coletdjnz 7e55872286
[camtube] remove extractor (#810)
Co-authored-by: alerikaisattera
3 years ago
std-move 2fc14b9925
[Nova] fix extractor (#807)
Fixes: https://github.com/ytdl-org/youtube-dl/issues/27840
Authored by: std-move
3 years ago
Ashish 58f68fe703
[TV2Hu] Fix `TV2HuIE` and add `TV2HuSeriesIE` (#804)
Closes #799 
Authored by: Ashish0804
3 years ago
animelover1984 abafce59a1
[Niconico] Add Search extractors (#672)
Authored by: animelover1984, pukkandan
3 years ago
pukkandan 2e7781a93c
[docs] Fix some typos
Closes #677, #774
3 years ago
Ashish bc36bc36a1
[ShemarooMe] Fix extractor (#798)
Closes #797 
Authored by: Ashish0804
3 years ago
Paul Wrubel d75201a873
Use `os.replace` where applicable (#793)
When using 
```py
os.remove(encodeFilename(filename))
os.rename(encodeFilename(temp_filename), encodeFilename(filename))
```
the `os.remove` need not be atomic and so can be executed arbitrarily compared to the immediately following rename call. It is better to use `os.replace` instead

Authored by: paulwrubel
3 years ago
pukkandan 691d5823d6
[aria2c] Obey `--rate-limit` 3 years ago
pukkandan c311988d19
[youtube] Improve 26e8e04454
The streams of the same itag may have slightly different size/bitrate
3 years ago
pukkandan 26e8e04454
[youtube] Prefer audio stream that YouTube considers default
Fixes: https://github.com/ytdl-org/youtube-dl/issues/29864
Related: https://github.com/clsid2/mpc-hc/issues/1268
3 years ago
pukkandan 198e3a04c9
[FormatSort] Remove priority of `lang` 3 years ago
Robin 61bfacb233
[facebook] Update onion URL (#788)
Authored by: Derkades
3 years ago
Ashish 85a0021fb3
[ProjectVeritas] Add extractor (#790)
https://github.com/ytdl-org/youtube-dl/issues/26749
Authored by: Ashish0804
3 years ago
Ashish 7a45a1590b
[Epicon] Add extractors (#789)
Authored by: Ashish0804
3 years ago
CeruleanSky 1c36c1f320
Fix `--no-prefer-free-formats` (#787)
Authored by: CeruleanSky
3 years ago
pukkandan e0493e90fc
fix bug in 88acdbc269 3 years ago
The Hatsune Daishi 1931a55ee8
[radiko] Add extractors (#731)
https://github.com/ytdl-org/youtube-dl/issues/29840
Authored by: nao20010128nao
3 years ago
i6t 63b1ad0f05
[iwara] Add thumbnail (#781)
Authored by: i6t
3 years ago
coletdjnz 0bb1bc1b10
[youtube] Remove annotations and deprecate `--write-annotations` (#765)
Closes #692 
Authored by: coletdjnz
3 years ago
pukkandan 45842107b9
fix bug in 6251555f1c
:ci skip
3 years ago
pukkandan 6251555f1c
[downloader/ffmpeg] Support for DASH manifests (experimental)
Closes #159
3 years ago
pukkandan 330690a214
[downloader/ffmpeg] Allow passing custom arguments before -i
Closes #686
3 years ago
tandy1000 91d4b32bb6
[ManotoTV] Add new extractors (#767)
Authored by: tandy1000
3 years ago
pukkandan a181cd0c60
[facebook] Fix metadata extraction
Original PR: https://github.com/ytdl-org/youtube-dl/pull/29796
Closes #453, https://github.com/ytdl-org/youtube-dl/issues/29421, https://github.com/ytdl-org/youtube-dl/issues/23627, https://github.com/ytdl-org/youtube-dl/issues/23180, https://github.com/ytdl-org/youtube-dl/issues/14156

Authored by: kikuyan
3 years ago
Ashish ea81966e64
[TV2] Fix extractor (#766)
Closes #764 
Authored by: Ashish0804
3 years ago
Ashish 2acf2ce5cb
[GabTV] Add extractor (#768)
Closes #499
Authored by: Ashish0804
3 years ago
Ashish f7f18f905c
[tiktok] Add TikTokUserIE (#756)
Authored-by: Ashish0804, pukkandan
3 years ago
pukkandan 4f8b70b593
[TikTok] Fix metadata extraction 3 years ago
MinePlayersPE e43e9f3c2c
[aljazeera] Fix extractor (#763)
Closes #762, https://github.com/ytdl-org/youtube-dl/issues/29517
Authored by: MinePlayersPE
3 years ago
pukkandan 71dd5d4a00
[peertube] handle new video URL format
Closes #722, https://github.com/ytdl-org/youtube-dl/issues/29782
Original PR: https://github.com/ytdl-org/youtube-dl/pull/29475
Authored by: Chocobozzz
3 years ago
nyuszika7h 52a2f994c9
[adobepass] Fix Verizon SAML login (#743)
Original PR: https://github.com/ytdl-org/youtube-dl/pull/19136 from 64bddfe15c

Authored-by: nyuszika7h, ParadoxGBB <paradoxgbb@yahoo.com>
3 years ago
pukkandan 8b7491c8d1
Fix `add_info_extractor` when used via API
Bug from: 251ae04e6a
3 years ago
pukkandan 251ae04e6a
[lazy_extractor] Create instance only after pre-checking archive 3 years ago
pukkandan 5bc4a65eea
[lazy_extractor] Import actual class if an attribute is accessed
Now all core tests pass with lazy extraction enabled
3 years ago
pukkandan 1151c4079a
[extractor] Show video id in error messages if possible 3 years ago
pukkandan 88acdbc269
[extractor] Better error message for DRM (#729)
Closes #636
3 years ago
Tom-Oliver Heidel 9b5fa9ee7c
[youtube] Add av01 itags to known formats list (#747)
Authored by: blackjack4494
3 years ago
mahanstreamer aca5774e68
[bitchute] Fix test (#758)
Authored by: mahanstreamer
3 years ago
pukkandan 3fb4e21b38
[lazy_extractors] Fix `suitable` and add flake8 test 3 years ago
pukkandan 4dfbf8696b
[utils] Add `parse_qs` 3 years ago
pukkandan 8fc54b1230
[youtube] Add `shorts` to `_VALID_URL`
Normally the generic extractor will redirect the URL,
but the cookies consent screen may sometimes appear instead

Closes #752
3 years ago
pukkandan da33e35b05
Don't try to merge with final extension
The formats may not be directly mergable into the final extension
3 years ago
pukkandan 5ad28e7ffd
[extractor] Common function `_match_valid_url` 3 years ago
Jérôme Duval f79ec47d71
[tv5mondeplus] Fix extractor (#739)
Authored by: korli
3 years ago
Ashish 45b0596290
[HearThisAtIE] Fix extractor (#742)
Closes: #740 
Authored by: Ashish0804
3 years ago
Ashish 96c23f3be8
[Zee5] Fix extractor and add subtitles (#733)
Closes #728
Authored by Ashish0804
3 years ago
CHJ85 6e7dfe4959
[BannedVideo] Add Extractor (#717)
Closes: #669
Original PR: https://github.com/ytdl-org/youtube-dl/pull/24572
Authored by: smege1001, blackjack4494, pukkandan
3 years ago
animelover1984 c34f505b04
[bilibili] Add category extractor (#695)
Authored by: animelover1984
3 years ago
Ashish 14183d1f80
[Hungama] Fix `HungamaSongIE` and add `HungamaAlbumPlaylistIE` (#744)
Authored by: Ashish0804
3 years ago
pukkandan 58adec4677
Fix `extra_info` being reused across runs
Closes #727
3 years ago
pukkandan 9e598870dd
Fix `playlist_index` not obeying `playlist_start`
and add tests
Closes #720
3 years ago
pukkandan 8f18aca871
Let `--match-filter` reject entries early
Makes redundant: `--match-title`, `--reject-title`, `--min-views`, `--max-views`
3 years ago
pukkandan 3ad56b4236
Fix `-J` when there are failed videos 3 years ago
Glenn Slayden 5d62709bc7
[cleanup] Replace improper use of tab in trovo (#719)
:ci skip

Authored by: glenn-slayden
3 years ago
zootedb0t 7581d2467a
[docs] fix typo (#715)
Authored by: zootedb0t
3 years ago
shirt 5fa206fb54
[ParamountPlus] Fix geo verification (#711)
Closes #681 
Authored by: shirt
3 years ago
mzbaulhaque df2a5633da
[pornhub] Separate and fix playlist extractor (#700)
Closes #680
Authored by: mzbaulhaque
3 years ago
Felix S 7a6742b5f9
[webvtt] Fix timestamp overflow adjustment (#698)
In some streams, empty segments may appear with a bogus, non-monotone MPEG timestamp.
This should not be considered as an overflow

Authored by: fstirlitz
3 years ago
The Hatsune Daishi e040bb0a41
[voicy] Add extractor (#667)
Authored by: nao20010128nao
3 years ago
pukkandan f8fabc9930
[kakao] Fix extractor
Closes #699
3 years ago
jhwgh1968 d967c68e4c
[eroprofile] Fix page skipping in albums (#701)
Bug from #658 
Authored by: jhwgh1968
3 years ago
SsSsS 3dd39c5f9a
[instagram] Add referrer to prevent throttling (#676)
Code from: https://github.com/ytdl-org/youtube-dl/pull/29751
Fixes: https://github.com/ytdl-org/youtube-dl/issues/29736

Authored by: u-spec-png, kikuyan
3 years ago
mzbaulhaque be44eefd5e
[filmmodu] Add extractor (#690)
Closes #288
Authored by: mzbaulhaque
3 years ago
pukkandan f775c83110
Fix `--force-overwrites` when using `-k`
For formats that need merge, the `.fxxx` files are not removed before
downloading the corresponding `.part` files. This causes the rename to fail
3 years ago
pukkandan b714b41f81
[soundcloud] Refetch `client_id` on 403
Closes #673
3 years ago
pukkandan 31654882e9
[options] Add `_set_from_options_callback` 3 years ago
pukkandan 86c66b2d3e
Fix `-F` for extractors that directly return url
Related: #693
3 years ago
pukkandan 37242e56f2
Fix bug during subtitle conversion 3 years ago
pukkandan 6c7274ecd2
Fix resuming of single formats when using --no-part
Closes #576
3 years ago
Kid 5c333d7496
[lazy_extractor] Bugfix for when plugin directory doesn't exist (#691)
Bug introduced by: 0b2e9d2c30

Authored by: kidonng
3 years ago
coletdjnz 641ad5d813
[youtube] Extract error messages from HTTPError response (#644)
Authored by: coletdjnz
3 years ago
Felix S 0715f7e19b
Revert erroneous use of the `Content-Length` header (#637)
This reverts commit 6c907eb33f

The use of the Content-Length value here is erroneous and may lead
to truncated downloads if a compression scheme is specified in the
Content-Encoding header, as the Content-Length header refers to the
size of encoded data, not of the raw bytestream. This has been noticed
in the wild with WebVTT subtitle segments.

Authored by: fstirlitz
3 years ago
pukkandan a8731fcc1d minor bugfixes
bugs due to be2fc5b212, e9f4ccd19e
3 years ago
pukkandan 5a64127f94
[docs] Fix credits of 246fb276e0
It is authored by mzbaulhaque - The commit message is wrong

:ci skip all
3 years ago
pukkandan ade6dc5e9e
[version] update
:ci skip all
3 years ago
pukkandan 418964fa91
Release 2021.08.10 3 years ago
jhwgh1968 c196640ff1
[eroprofile] Add album downloader (#658)
Authored by: jhwgh1968
3 years ago
SsSsS 60c8fc73c6
[instagram] Fix comments extraction (#660)
Authored-by: u-spec-png <miloradkalabasdt@gmail.com>
3 years ago
Ashish bc8745480e
[BandCamp] Add BandcampMusicIE (#668)
Authored by Ashish0804
3 years ago
The Hatsune Daishi ff5e16f2f6
[mirrativ] Add extractors (#657)
Authored by: nao20010128nao
3 years ago
pukkandan be2fc5b212
[extractor] Detect `sttp` as subtitles in MPD
Closes #656
Solution by: fstirlitz
3 years ago
pukkandan 7be9ccff0b [utils] Fix `InAdvancePagedList.__getitem__`
Since it didn't have any cache, the page was re-fetched for each video.
* Also generalized the cache code
3 years ago
funniray 245d43cacf
[crunchyroll] Fix thumbnail (#650)
Authored by: funniray
3 years ago
mzbaulhaque 246fb276e0
[blackboardcollaborate] Add new extractor (#646)
Authored by: Ashish0804
3 years ago
shirt 6e6e0d95b3
[paramountplus] Separate extractor and fix some titles (#652)
Co-authored-by: shirt, pukkandan
3 years ago
Felix S 25a3f4f5d6
[webvtt] Merge daisy-chained duplicate cues (#638)
Fixes: https://github.com/yt-dlp/yt-dlp/issues/631#issuecomment-893338552

Previous deduplication algorithm only removed duplicate cues with
identical text, styles and timestamps.  This change also merges
cues that come in ‘daisy chains’, where sequences of cues with
identical text and styles appear in which the ending timestamp of
one equals the starting timestamp of the next.

This deduplication algorithm has the somewhat unfortunate side effect
that NOTE blocks between cues, if found, will be emitted in a different
order relative to their original cues.  This may be unwanted if perfect
fidelity is desired, but then so is daisy-chain deduplication itself.
NOTE blocks ought to be ignored by WebVTT players in any case.

Authored by: fstirlitz
3 years ago
pukkandan ad3dc496bb Misc fixes - See desc
* Remove unnecessary uses of _list_from_options_callback
* Fix download tests - Bug from 6e84b21559
* Rename ExecAfterDownloadPP to ExecPP and refactor its tests
* Ensure _write_ytdl_file closes file handle on error - Potential fix for #517
3 years ago
pukkandan 2831b4686c Show libraries present in verbose head 3 years ago
pukkandan 8c0ae192a4 [ffmpeg] Fix `--ffmpeg-location` when directory is given
Bug introduced in 89efdc15dd
Closes #654
3 years ago
pukkandan e9f4ccd19e
Add option `--replace-in-metadata` 3 years ago
pukkandan a38bd1defa
[viki] Print error message from API request
Closes #651
3 years ago
shirt 476febeb3a
[build] Use custom build of `pyinstaller` (#663)
Related: #25 

Authored-by: shirt
3 years ago
Ashish b6a35ad83b
[HotStar] Use API for metadata and extract subtitles (#640)
The API is not rate-limited unlike the webpage

Authored by: Ashish0804
3 years ago
SsSsS bfd56b74b9
[peertube] Fix videos without description (#639)
Authored by: u-spec-png
3 years ago
PSlava 858a65ecc1
[youtube] Improve signature function detection (#641)
Authored by: PSlava (Slava <slash@i-slash.com>)
3 years ago
Wes 3b34e38813
[aenetworks] Update `_THEPLATFORM_KEY` and `_THEPLATFORM_SECRET` (#643)
Original PR: https://github.com/ytdl-org/youtube-dl/pull/29749
Fixes: https://github.com/ytdl-org/youtube-dl/issues/29300

Authored by: wesnm
3 years ago
pukkandan 3448870205
[docs] Fix some mistakes and improve doc 3 years ago
pukkandan b868936cd6 [cleanup] Misc 3 years ago
pukkandan c681cb5d93 Allow multiple `--exec` and `--exec-before-download` 3 years ago
pukkandan 379e44ed3c [youtube] Raise appropriate error when API pages can't be downloaded 3 years ago
pukkandan 243c57cfe8 [tests:download] Add batch testing for extractors
Use `test_YourExtractor_all` to invoke them
3 years ago
pukkandan 28f436bad0 [extractor] Reset non-repeating warnings per video 3 years ago
pukkandan 2b8a2973bd Allow entire infodict to be printed using `%()s`
Makes `--dump-json` redundant
3 years ago
pukkandan b7b04c782e Add option `--no-simulate` to not simulate even when `--print` or `--list...` are used
* Deprecates `--print-json`
* Some listings like `--list-extractors` are handled by `yt_dlp` and so are not affected by this. These have been documented as such

Addresses: https://github.com/ytdl-org/youtube-dl/issues/29675, https://github.com/ytdl-org/youtube-dl/issues/29580#issuecomment-882046305
3 years ago
pukkandan 6e84b21559
Fix bugs related to `sanitize_info`
Related: 8012d892bd (r54555230)
3 years ago
pukkandan 575e17a1b9
[utils] Fix `traverse_obj` depth when is_user_input 3 years ago
pukkandan 57015a4a3f
[youtube] extractor-arg to show live dash formats
If replay is enabled, these formats can be used to download the last 4 hours
3 years ago
pukkandan 9cc1a3130a
Fix resuming when using `--no-part`
Closes #576
3 years ago
pukkandan b51d2ae3ca
Add compat-option `no-keep-subs`
Closes #630
3 years ago
Jesse fee5f0c909
[adobepass] Add MSO Cablevision (#635)
Authored by: Jessecar96
3 years ago
funniray 7bb6434767
[vrv] Fix thumbnail extraction (#634)
Authored by: funniray
3 years ago
pukkandan 124bc071ee
Fix wrong extension for intermediate files
Closes #632
3 years ago
pukkandan a047eeb6d2
Add regex to `--match-filter`
This does not fully deprecate `--match-title`/`--reject-title`
since `--match-filter` is only checked after the extraction is complete,
while `--match-title` can often be checked from the flat playlist.

Fixes: https://github.com/ytdl-org/youtube-dl/issues/9092, https://github.com/ytdl-org/youtube-dl/issues/23035
3 years ago
Max Teegen 77b87f0519 Add all format filtering operators also to `--match-filter`
PR: https://github.com/ytdl-org/youtube-dl/pull/27361

Authored by: max-te
3 years ago
pukkandan 678da2f21b [twitch:clips] Extract `display_id`
PR: https://github.com/ytdl-org/youtube-dl/pull/29684
Fixes: https://github.com/ytdl-org/youtube-dl/issues/29666

Authored by: dirkf
3 years ago
pukkandan cc3fa8d39d Handle `BrokenPipeError`
PR: https://github.com/ytdl-org/youtube-dl/pull/29505
Fixes: https://github.com/ytdl-org/youtube-dl/issues/29082

Authored by: kikuyan
3 years ago
pukkandan 89efdc15dd [ffpmeg] Allow `--ffmpeg-location` to be a file with different name 3 years ago
pukkandan 8012d892bd
Ensure sanitization of infodict before printing to stdout
* `filter_requested_info` is renamed to a more appropriate name `sanitize_info`
3 years ago
Stavros Ntentos 9d65e7bd6d
Fix `--compat-options filename` (#629)
The correct default filename is `%(title)s-%(id)s.%(ext)s`

Authored by: stdedos
3 years ago
SsSsS 36576d7c4c
[Newgrounds] Improve extractor and fix playlist (#627)
Authored by: u-spec-png
3 years ago
nikhil bb36a55c41
[nbcolympics:stream] Fix extractor
PR: https://github.com/ytdl-org/youtube-dl/pull/29688
Closes: #617, https://github.com/ytdl-org/youtube-dl/issues/29665

* Livestreams are untested
* If using ffmpeg as downloader, v4.3+ is needed since `-http_seekable` option is necessary
* Instead of making a seperate key for each arg that needs to be passed to ffmpeg, I made `_ffmpeg_args`
* This deprecates `_seekable`, but the option is kept for compatibility

Authored by: nchilada, pukkandan
3 years ago
MinePlayersPE 3dbb2a9dcb
[RCTIPlus] Support events and TV (#625)
Authored by: MinePlayersPE
3 years ago
The Hatsune Daishi 9997eee4af
[openrec] Add extractors (#624)
Authored by: nao20010128nao
3 years ago
Wes 3e376d183e
[nbcolympics] Update extractor for 2020 olympics (#621)
Fixes: https://github.com/yt-dlp/yt-dlp/issues/617#issuecomment-891834323

Authored by: wesnm
3 years ago
Sam 888299e6ca
[VrtNU] Fix XSRF token (#588)
PR: https://github.com/ytdl-org/youtube-dl/pull/29614
Authored-by: pgaig
3 years ago
pukkandan c31be5b009
[docs] Document which fields `--add-metadata` adds to the file
:ci skip all
3 years ago
pukkandan e5611e8eda
[ffmpeg] Fix streaming `mp4` to `stdout` 3 years ago
SsSsS 8e6cc12c80
[Vine] Remove invalid formats (#614)
Authored by: u-spec-png
3 years ago
pukkandan e980017ac8
[doc] Fix banner URL 3 years ago
pukkandan e9d9efc0f2
[version] update
:ci skip all
3 years ago
pukkandan 6ccf351a87
Release 2021.08.02 3 years ago
pukkandan 28dff70b51
Add donate links 3 years ago
pukkandan 1aebc0f79e
Add logo and banner 3 years ago
pukkandan cf87314d4e
[youtube] Extract SAPISID only once 3 years ago
pukkandan 1bd3639f69
[tenplay] Add MA15+ age limit (#606)
Authored by: pento
3 years ago
LE 68f5867cf0
[CBS] Add fallback (#579)
Related: https://github.com/ytdl-org/youtube-dl/issues/29564
Authored-by: llacb47, pukkandan
3 years ago
Ashish 605cad0be7
[Vimeo] Better extraction of original file (#599)
Authored by: Ashish0804
3 years ago
pukkandan 0855702f3f
[test:download] Support testing with `ignore_no_formats_error` 3 years ago
Ashish e8384376c0
[CBS] Add ParamountPlusSeriesIE (#603)
Authored by: Ashish0804
3 years ago
David e7e94f2a5c
[youtube] Add age-gate bypass for unverified accounts (#600)
Adds `_creator` variants for each client

Authored by: zerodytrash, colethedj, pukkandan
3 years ago
pukkandan a46a815b05
[cleanup] Fix linter in 96fccc101f 3 years ago
pukkandan 96fccc101f [downloader] Allow streaming unmerged formats to stdout using ffmpeg
For this to work:
1. The downloader must be ffmpeg
2. The selected formats must have the same protocol
3. The formats must be downloadable by ffmpeg to stdout

Partial solution for: https://github.com/ytdl-org/youtube-dl/issues/28146, https://github.com/ytdl-org/youtube-dl/issues/27265
3 years ago
pukkandan dbf5416a20 [cleanup] Refactor some code 3 years ago
pukkandan d74a58a186
Set `home:` as the default key for `-P` 3 years ago
pukkandan f5510afef0
[FormatSort] Fix bug for audio with unknown codec 3 years ago
pukkandan e4f0275711
Add compat-option `no-clean-infojson` 3 years ago
pukkandan e0f2b4b47d
[utils] Fix slicing of reversed `LazyList`
Closes #589
3 years ago
coletdjnz eca330cb88
[youtube] Fix default global API key
bug introduced in 000c15a4ca
3 years ago
Wes d24734daea
[adobepass] Add MSO Sling TV (#596)
Original PR: ytdl-org/youtube-dl#29686
Closes: #300, ytdl-org/youtube-dl#18132

Authored by: wesnm
3 years ago
MinePlayersPE d9e6e9481e
[RCTIPlus] Remove PhantomJS dependency (#595)
Authored by: MinePlayersPE
3 years ago
pukkandan 3619f78d2c
[youtube] Misc cleanup (#577)
Authored by: pukkandan, colethedj
3 years ago
pukkandan 65c2fde23f
[youtube] Add `thirdParty` to agegate clients (#577)
* This allows more videos like `tf2U5Vyj0oU` to become embeddable
    See https://github.com/yt-dlp/yt-dlp/pull/575#issuecomment-888837000
* Also added tests for all types of age-gate

Closes #581
3 years ago
pukkandan 000c15a4ca
[youtube] simplify and de-duplicate client definitions (#577) 3 years ago
colethedj 9275f62cf8
[youtube] Improve age-gate detection (#577)
Authored by: colethedj
3 years ago
coletdjnz 6552469433
[youtube] Force `hl=en` for comments (#594)
Closes #532
3 years ago
MinePlayersPE 11cc45718c
[vidio] Fix login error detection (#582)
Authored by: MinePlayersPE
3 years ago
Ashish fe07e2c69f
[Hotstar] Support cookies (#584)
Closes #583 
Authored by: Ashish0804
3 years ago
Ashish 89ce723edd
[Mxplayer] Add h265 formats (#572)
Authored by: Ashish0804
3 years ago
Sipherdrakon 45d1f15725
[dplay] Add `ScienceChannelIE` (#567)
Authored by: Sipherdrakon
3 years ago
rigstot a318f59d14
[generic] Support KVS player (#549)
* Replaces the extractor for thisvid

Fixes: https://github.com/ytdl-org/youtube-dl/issues/2077
Authored-by: rigstot
3 years ago
pukkandan 7d1eb38af1
Add format types `j`, `l`, `q` for outtmpl
Closes #345
3 years ago
pukkandan 901130bbcf Expand and escape environment variables correctly in outtmpl
Fixes: https://www.reddit.com/r/youtubedl/comments/otfmq3/ytdlp_same_parameters_different_results
3 years ago
MinePlayersPE c0bc527bca
[YouTube] Age-gate bypass implementation (#575)
* Calling the API with `clientScreen=EMBED` allows access to most age-gated videos - discovered by @ccdffddfddfdsfedeee (https://github.com/yt-dlp/yt-dlp/issues/574#issuecomment-887171136)
* Adds clients: (web/android/ios)_(embedded/agegate), mweb_embedded
* Renamed mobile_web to mweb

Closes #574

Authored by pukkandan, MinePlayersPE
3 years ago
pukkandan 2a9c6dcd22
[youtube] Fix format sorting when using alternate clients 3 years ago
coletdjnz 5a1fc62b41
[youtube] Add `mobile_web` client (#557)
Authored by: colethedj
3 years ago
pukkandan b4c055bac2
[youtube] Add `player_client=all` 3 years ago
pukkandan ea05b3020d
Remove `asr` appearing twice in `-F` 3 years ago
pukkandan 9536bc072d
[bilibili] Improve `_VALID_URL` 3 years ago
Ashish 8242bf220d
[HotStarSeriesIE] Fix regex (#569)
Authored by: Ashish0804
3 years ago
Ashish 4bfa401d40
[UtreonIE] Add extractor (#562)
Authored by: Ashish0804
3 years ago
nixxo 0222620725
[mediaset] Fix extraction (#564)
Closes #365
Authored by: nixxo
3 years ago
pukkandan 1fe3c4c27e
[version] update
:ci skip all
3 years ago
pukkandan f703a88055
Release 2021.07.24 3 years ago
pukkandan a353beba83
[youtube:tab] Extract video duration early
Based on: https://github.com/ytdl-org/youtube-dl/pull/29487 by glenn-slayden
3 years ago
pukkandan 052e135029
[youtube] Simplify `_get_text` early 3 years ago
xtkoba cb89cfc14b
[test] Add Python 3.10 (#480)
Authored-by: pukkandan, xtkoba
3 years ago
pukkandan 060ac76257
[test] Use `pytest` instead of `nosetests` (#482)
`nosetests` is no longer being maintained : https://github.com/nose-devs/nose/issues/1099
and will stop working in py 3.10 as can be seen in #480
3 years ago
pukkandan 063c409dfb
[cookies] Handle errors when importing `keyring`
Workaround for #551
3 years ago
Matt Broadway 767b02a99b
[cookies] Handle `sqlite` `ImportError` gracefully (#554)
Closes #544
Authored by: mbway
3 years ago
pukkandan f45e6c1126
[downloader] Pass same status object to all `progress_hooks` 3 years ago
pukkandan 3944e7af92
[youtube] Fix subtitles only being extracted from the first client
Closes #547
3 years ago
pukkandan ad34b2951e
Try all clients even if age-gated
Reverts: 892e31ce7c

If some API calls have any issue, saving the state will cause unnecessary errors
3 years ago
pukkandan c8fa48fd94
[youtube] Disable `get_video_info` age-gate workaround
This now seems to be completely dead
Closes: #553
3 years ago
coletdjnz 2fd226f6a7
[youtube] Fix age-gated videos for API clients when cookies are supplied (#545)
Fixes #543
Authored by: colethedj
3 years ago
pukkandan 3ba7740dd8
[downloader] Pass `info_dict` to `progress_hook`s 3 years ago
pukkandan 29b208f6f9
[cookies] bugfix
Fixes: https://github.com/yt-dlp/yt-dlp/pull/488#discussion_r674352059
3 years ago
pukkandan e4d666d27b
[version] update
:ci skip all
3 years ago
pukkandan 245524e6a3
Release 2021.07.21
and fix some typos
Closes #538
3 years ago
pukkandan 9c0d7f4951
[youtube] Make `--extractor-retries` work for more errors
Closes #507
3 years ago
pukkandan e37d0efbd9
Fix bug where `original_url` was not propagated when `_type`=`url` 3 years ago
coletdjnz c926c9541f
[youtube] Add debug message for SAPISID cookie extraction (#540)
Authored by: colethedj
3 years ago
Matt Broadway 982ee69a74
Add option `--cookies-from-browser` to load cookies from a browser (#488)
* also adds `--no-cookies-from-browser`

Original PR: https://github.com/ytdl-org/youtube-dl/pull/29201
Authored by: mbway
3 years ago
pukkandan 7ea6541124
[youtube] Improve extraction of livestream metadata
Modified from and closes #441
Authored by: pukkandan, krichbanana
3 years ago
pukkandan ae30b84072
Add field `live_status` 3 years ago
pukkandan cc9d1493c6
bugfix for 50fed816dd 3 years ago
Philip Xu f6755419d1
[douyin] Add extractor (#513)
Authored-by: pukkandan, pyx
3 years ago
Henrik Heimbuerger 145bd631c5
[nebula] Authentication via tokens from cookie jar (#537)
Closes #496
Co-authored-by: hheimbuerger, TpmKranz
3 years ago
pukkandan b35496d825
Add `only_once` param for `write_debug` 3 years ago
pukkandan 352d63fdb5
[utils] Improve `traverse_obj` 3 years ago
pukkandan 11f9be0912
[youtube] Extract data from multiple clients (#536)
* `player_client` accepts multiple clients
* default `player_client` = `android,web`
* music clients can be specifically requested
* Add IOS `player_client`
* Hide live dash since they can't be downloaded

Closes #501

Authored-by: pukkandan, colethedj
3 years ago
pukkandan c84aeac6b5
Add `only_once` param for `report_warning`
Related: https://github.com/yt-dlp/yt-dlp/pull/488#discussion_r667527297
3 years ago
pukkandan 50fed816dd
Errors in playlist extraction should obey `--ignore-errors`
Related: https://github.com/yt-dlp/yt-dlp/issues/535#issuecomment-883277272, https://github.com/yt-dlp/yt-dlp/issues/518#issuecomment-881794754
3 years ago
coletdjnz a1a7907bc0
[youtube] Fix controversial videos when requested via API (#533)
Closes: https://github.com/yt-dlp/yt-dlp/issues/511#issuecomment-883024350
Authored by: colethedj
3 years ago
pukkandan d61fc64618
[youtube:tab] Fix channels tab 3 years ago
pukkandan 6586bca9b9
[utils] Fix LazyList for Falsey values 3 years ago
pukkandan da503b7a52
[youtube] Make `parse_time_text` and `_extract_chapters` non-fatal
Related: #532, 7c365c2109
3 years ago
pukkandan 7c365c2109
[youtube] Sanity check `chapters` (and refactor related code)
Closes #520
3 years ago
pukkandan 3f698246b2
Rename `NOTE` in `-F` to `MORE INFO`
since it's often confused to be the same as `format_note`
3 years ago
pukkandan cca80fe611 [youtube] Extract even more thumbnails and reduce testing
* Also fix bug where `_test_url` was being ignored

Ref: https://stackoverflow.com/a/20542029
Related: #340
3 years ago
pukkandan c634ad2a3c [compat] Remove unnecessary code 3 years ago
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
3 years ago
pukkandan 0ba692acc8
[youtube] Extract more thumbnails
* The thumbnail URLs are hard-coded and their actual existence is tested lazily
* Added option `--no-check-formats` to not test them

Closes #340, Related: #402, #337, https://github.com/ytdl-org/youtube-dl/issues/29049
3 years ago
pukkandan d9488f69c1
[crunchyroll:playlist] Force http
Closes #495
3 years ago
pukkandan dce8743677
[docs] fix default of multistreams 3 years ago
pukkandan 5520aa2dc9
Add option `--exec-before-download`
Closes #530
3 years ago
mzbaulhaque 8d9b902243
[pornflip] Add new extractor (#523)
Authored-by: mzbaulhaque
3 years ago
coletdjnz fe93e2c4cf
[youtube] misc cleanup and bug fixes (#505)
* Update some `_extract_response` calls to keep them consistent
* Cleanup continuation extraction related code using new API format
* Improve `_extract_account_syncid` to support multiple parameters
* Generalize `get_text` and related functions into one
* Update `INNERTUBE_CONTEXT_CLIENT_NAME` with integer values

Authored by: colethedj
3 years ago
coletdjnz 314ee30548
[youtube] Fix session index extraction and headers for non-web player clients (#526)
Fixes #522
3 years ago
coletdjnz 34917076ad
[youtube] Fix authentication when using multiple accounts
`SESSION_INDEX` in `ytcfg` is the index of the active account and should be sent as `X-Goog-AuthUser` header

Closes #518
Authored by @colethedj
3 years ago
The Hatsune Daishi ccc7795ca3
[yahoo:gyao:player] Relax `_VALID_URL` (#503)
Authored by: nao20010128nao
3 years ago
Felix S da1c94ee45
[generic] Extract previously missed subtitles (#515)
* [generic] Extract subtitles in cases missed previously
* [common] Detect discarded subtitles in SMIL manifests
* [generic] Extract everything in the SMIL manifest

Authored by: fstirlitz
3 years ago
pukkandan 3b297919e0
Revert "Merge webm formats into mkv if thumbnails are to be embedded (#173)"
This reverts commit 4d971a16b8 by @damianoamatruda
Closes #500

This was wrongly checking for `write_thumbnail`
3 years ago
coletdjnz 47193e0298
[youtube:tab] Extract playlist availability (#504)
Authored by: colethedj
3 years ago
coletdjnz 49bd8c66d3
[youtube:comments] Improve comment vote count parsing (fixes #506) (#508)
Authored by: colethedj
3 years ago
Felix S 182b6ae8a6
[RTP] Fix extraction and add subtitles (#497)
Authored by: fstirlitz
3 years ago
felix c843e68588
[utils] Improve `js_to_json` comment regex
Capture the newline character as part of a single-line comment

From #497, Authored by: fstirlitz
3 years ago
felix 198f7ea89e
[extractor] Allow extracting multiple groups in `_search_regex`
From #497, Authored by: fstirlitz
3 years ago
coletdjnz c888ffb95a
[youtube] Use android client as default and add age-gate bypass for it (#492)
Authored by: colethedj
3 years ago
coletdjnz 9752433221
[youtube:comments] Fix `is_favorited` (#491)
Authored by colethedj
3 years ago
pukkandan f0ff9979c6
[vlive] Extract thumbnail directly in addition to the one from Naver
Closes #477
3 years ago
pukkandan 501dd1ad55
[metadatafromfield] Do not detect numbers as field names
Related: https://github.com/yt-dlp/yt-dlp/issues/486#issuecomment-877820394
3 years ago
pukkandan 75722b037d
[webtt] Fix timestamps
Closes #474
3 years ago
coletdjnz 2d6659b9ea
[youtube:comments] Move comment extraction to new API (#466)
Closes #438, #481, #485 

Authored by: colethedj
3 years ago
Kevin O'Connor c5370857b3
[BravoTV] Improve metadata extraction (#483)
Authored by: kevinoconnor7
3 years ago
pukkandan 00034c146a
[embedthumbnail] Fix `_get_thumbnail_resolution` 3 years ago
pukkandan 325ebc1703
Improve `traverse_obj` 3 years ago
pukkandan 7dde84f3c9
[FFmpegMetadata] Add language of each stream
and some refactoring
3 years ago
pukkandan 6606817a86
[utils] Add `variadic` 3 years ago
zackmark29 73d829c144
[VIKI] Rewrite extractors (#475)
Closes #462
Also added extractor-arg `video_types` to `vikichannel`

Co-authored-by: zackmark29, pukkandan
3 years ago
pukkandan 60bdb7bd9e
[youtube] Fix sorting of 3gp format 3 years ago
pukkandan 4bb6b02f93
Improve `extractor_args` parsing 3 years ago
pukkandan b5ac45b197
Fix selectors `all`, `mergeall` and add tests
Bug from: 981052c9c6
3 years ago
pukkandan 38a40c9e16
[version] update
:ci skip all
3 years ago
pukkandan a8bf9b4dc1
Release 2021.07.07 3 years ago
pukkandan 51f8a31d65
Update to ytdl-commit-a803582
[peertube] only call description endpoint if necessary
a803582717
3 years ago
Tom-Oliver Heidel be05d5cff1
[soundcloud] Allow login using oauth token (#469)
Authored by: blackjack4494
3 years ago
zenerdi0de 30d569d2ac
[fancode] Fix extraction, support live and allow login with refresh token (#471)
Authored-by: zenerdi0de
3 years ago
OhMyBahGosh 08625e4125
[AdobePass] Add Spectrum MSO (#470)
From: https://github.com/ytdl-org/youtube-dl/pull/26792

Co-authored by: kevinoconnor7, ohmybahgosh
3 years ago
pukkandan 3acf6d3856
[Funimation] Rewrite extractor (See desc) (#444)
* Support direct `/player/` URL
* Treat the different versions of an episode as different formats of a single video. So `experience_id` can no longer be used as the video `id` and the `episode_id` is used instead. This means that all existing archives will break
* Extractor options `language` and `version` to pre-select them
* Compat option `seperate-video-versions` to fall back to old behavior (including using the old video IDs)

Closes #428
3 years ago
pukkandan 46890374f7
[extractor] Minor improvements (See desc)
1. Allow removal of login hint - extractors can set their own login hint as part of `msg`
2. Cleanup `_merge_subtitles` signature
3 years ago
pukkandan 60755938b3
[extractor] Prevent unnecessary download of hls manifests
and refactor `hls_split_discontinuity` code
3 years ago
pukkandan 723d44b92b
[fragment] Handle errors in threads correctly 3 years ago
pukkandan bc97cdae67
[cleanup] Fix linter and some typos
Related: https://github.com/ytdl-org/youtube-dl/pull/29398
3 years ago
nyuszika7h e010672ab5
[videa] Fix extraction (#463)
Authored by: nyuszika7h
3 years ago
pukkandan 169dbde946
Fixes for `--list` options (See desc)
1. Fix `--list-formats-old`
2. Allow listing with `--quiet`
3. Allow various listings to work together
4. Allow `--print` to work with listing
3 years ago
MinePlayersPE 17f0eb66b8
[RCTIPlus] Add extractor (#443)
Authored by: MinePlayersPE
3 years ago
pukkandan 981052c9c6 Some minor fixes and refactoring (see desc)
* [utils] Fix issues with reversal
* check_formats should catch `DownloadError`, not `ExtractorError`
* Simplify format selectors with `LazyList` and `yield from`
3 years ago
pukkandan b1e60d1806 [facebook] Extract description and fix title
Partially fixes: #453
3 years ago
pukkandan 6b6c16ca6c [downloader/ffmpeg] Fix `--ppa` when using simultaneous download 3 years ago
krichbanana f6745c4980
[Youtube] Choose correct Live chat API for upcoming streams (#460)
Authored by: krichbanana
3 years ago
coletdjnz 109dd3b237
[youtube] Use new API for additional video extraction requests (#328)
Co-authored-by: colethedj, pukkandan
Closes https://github.com/yt-dlp/yt-dlp/issues/427
Workarounds for https://github.com/ytdl-org/youtube-dl/issues/29326, https://github.com/yt-dlp/yt-dlp/issues/319, https://github.com/ytdl-org/youtube-dl/issues/29086
3 years ago
siikamiika c2603313b1
[youtube_live_chat] use `clickTrackingParams` (#449)
Authored by: siikamiika
3 years ago
LE 1e79316e20
[TBS] Support livestreams (#448)
Authored by: llacb47
3 years ago
coletdjnz 45261e063b
[youtube:comments] Fix error handling and add `itct` to params (#446)
Should close #439 (untested)

Authored by: colethedj
3 years ago
pukkandan 49c258e18d
[youtube] Fix subtitle names for age-gated videos
Related: https://github.com/iv-org/invidious/pull/2205#issuecomment-868680486
3 years ago
pukkandan d3f62c1967
Fix `--throttled-rate` when using `--load-info-json` 3 years ago
pukkandan 5d3a0e794b
Add `--extractor-args` to pass extractor-specific arguments 3 years ago
Mevious 125728b038
[funimation] Add `FunimationShowIE` (#442)
Closes #436

Authored by: Mevious
3 years ago
pukkandan 15a4fd53d3
[thumbnailsconvertor] Treat `jpeg` as `jpg` 3 years ago
Adrik 4513a41a72
Process videos when using `--ignore-no-formats-error` (#441)
Authored by: krichbanana
3 years ago
pukkandan 6033d9808d
Fix `--flat-playlist` when entry has no `ie_key` 3 years ago
pukkandan bd4d1ea398
[cleanup] Minor refactoring of `fragment` 3 years ago
pukkandan 8e897ed283
[fragment] Return status of download correctly 3 years ago
LE 412cce82b0
[yahoo] Fix extraction (#435)
Fixes: https://github.com/ytdl-org/youtube-dl/issues/28290

Co-authored-by: llacb47, pukkandan
3 years ago
siikamiika d534c4520b
[youtube_live_chat] Fix download with cookies (#437)
Closes #417 

Authored by: siikamiika
3 years ago
pukkandan 2b18a8c590
[plutotv] Improve `_VALID_URL`
Closes #431
3 years ago
pukkandan dac8b87b0c
[version] update :ci skip all 3 years ago
pukkandan 6aecd87106
Release 2021.06.23 3 years ago
pukkandan ed807c1837
Update to ytdl-commit-379f52a
[liveleak] Remove extractor
379f52a495
3 years ago
Mevious 29f63c9672
[funimation] Extract subtitles (#434)
Closes #420, https://github.com/ytdl-org/youtube-dl/issues/25645
Related: https://github.com/ytdl-org/youtube-dl/pull/24906

Authored by: Mevious
3 years ago
pukkandan 9fc0de5796
[hotstar] Use server time for authentication instead of local time
Closes #396
3 years ago
siikamiika c60ee3a218
[youtube_live_chat] Support ongoing live chat (#422)
Authored by: siikamiika
3 years ago
pukkandan 8a77e5e6bc
[cleanup] Revert unnecessary changes in 51d9739f80 3 years ago
pukkandan 51d9739f80
Add option `--throttled-rate` below which video data is re-extracted
Currently only for HTTP downloads

Closes #430, workaround for https://github.com/ytdl-org/youtube-dl/issues/29326
3 years ago
pukkandan 4c7853de14
[fragment] Merge during download for `-N`, and refactor `hls`/`dash` (#364) 3 years ago
pukkandan e6779b9400
[twitcasting] Websocket support (#399)
Closes #392
Authored by: nao20010128nao
3 years ago
pukkandan e36d50c5dd
[websockets] Add `WebSocketFragmentFD` (#399)
Necessary for #392

Co-authored by: nao20010128nao, pukkandan
3 years ago
pukkandan ff0f78e1fe
[aria2c] Lower `--min-split-size` for HTTP downloads
This makes downloading smaller files much faster
3 years ago
pukkandan 7e067091e8
[options] Rename `--add-metadata` to `--embed-metadata`
and clarify that it embeds chapter markers
3 years ago
pukkandan f89b3e2d7a
Skip fixup of existing files and add `--fixup force` to force it 3 years ago
pukkandan fd7cfb6444
[cleanup] Refactor fixup 3 years ago
pukkandan 4e6767b5f2
[youtube] Temporary fix for age-gate
Related:
https://stackoverflow.com/a/67629882
https://github.com/yt-dlp/yt-dlp/issues/319
https://github.com/ytdl-org/youtube-dl/issues/29333
https://github.com/ytdl-org/youtube-dl/issues/29086
3 years ago
pukkandan 9fea350f0d
Fix id sanitization in filenames
Closes #415
3 years ago
pukkandan e858a9d6d3
[EmbedThumbnail] Add compat-option `embed-thumbnail-atomicparsley`
to force use of atomicparsley for embedding thumbnails in mp4

Related: #411
3 years ago
pukkandan 7e87e27c52
[postprocessor] Fix `_restrict_to` when a codec is not set 3 years ago
pukkandan d0fb4bd16f
[pornhub] Extract `cast`
Closes #406, https://github.com/ytdl-org/youtube-dl/pull/27384
3 years ago
felix 3fd4c2a543
[mediasite] Extract slides (#343)
Fixes:
https://github.com/ytdl-org/youtube-dl/issues/4974#issue-58006762
https://github.com/ytdl-org/youtube-dl/issues/4540#issuecomment-69574231
https://github.com/ytdl-org/youtube-dl/pull/11185#issuecomment-335554239

Authored by: fstirlitz
3 years ago
felix cdb19aa4c2
[downloader/mhtml] Add new downloader (#343)
This downloader is intended to be used for streams that consist of a
timed sequence of stand-alone images, such as slideshows or thumbnail
streams

This can be used for implementing:

https://github.com/ytdl-org/youtube-dl/issues/4974#issue-58006762
https://github.com/ytdl-org/youtube-dl/issues/4540#issuecomment-69574231
https://github.com/ytdl-org/youtube-dl/pull/11185#issuecomment-335554239

https://github.com/ytdl-org/youtube-dl/issues/9868
https://github.com/ytdl-org/youtube-dl/pull/14951


Authored by: fstirlitz
3 years ago
pukkandan 4d85fbbdbb
Fix bug in 8326b00aab 3 years ago
pukkandan 551f93885e
Ignore `images` formats from merge 3 years ago
pukkandan 8326b00aab
Allow `images` formats
Necessary for #343.

* They are identified by `vcodec=acodec='none'`
* These formats show as the worst in `-F`
* Any postprocessor that expects audio/video will be skipped
* `b*` and all related selectors will skip such formats
* This commit also does not add any selector for downloading such formats. They have to be explicitly requested by the `format_id`. Implementation of a selector is left for when #389 is resolved
3 years ago
pukkandan b0249bcaf0
Expand `--check-formats` to thumbnails
Closes #402
3 years ago
pukkandan 21cd8fae49
Use `NamedTemporaryFile` for `--check-formats` 3 years ago
pukkandan 45db527fa6
[youtube] Login is not needed for `:ytrec` 3 years ago
pukkandan 28419ca2c8
[utils] Improve `LazyList`
* Add `repr` and `str` that mimics `list`
* Add `reversed`. Unlike `[::-1]`, reversed does not exhaust the iterable and modifies the `LazyList` in-place
* Add tests
3 years ago
pukkandan 8ba8714880
[EmbedThumbnail] Fix for already downloaded thumbnail 3 years ago
pukkandan 187986a857
Better error handling of syntax errors in `-f` 3 years ago
coletdjnz 4ba001080f
[youtube] Non-fatal alert reporting for unavailable videos page (#401)
Co-Authored by: colethedj, pukkandan
3 years ago
coletdjnz 1974e99f4b
[youtube] Improve SAPISID cookie handling (closes #393) (#395)
Author: colethedj
3 years ago
pukkandan 0181adefc6
[build] Build Windows x86 version with py3.7
and remove redundant tests
Closes #390

:ci skip

Co-authored by: pukkandan, shirt-dev
3 years ago
pukkandan fd3c633d26
[version] update
:ci skip all
3 years ago
pukkandan 0d47c278d1
Release 2021.06.09 3 years ago
pukkandan 385a27fad1
Improve offset parsing in outtmpl 3 years ago
pukkandan 5c6542ce69
[test] More rigorous tests for `prepare_filename`
All tests of `prepare_outtmpl` is now also run on `prepare_filename`
3 years ago
pukkandan 639f1cea92
Fix `%d` and empty default in outtmpl
Closes #388
3 years ago
pukkandan b5c5d84f60
Revert "[build] Build Windows x86 version with py3.8"
This reverts commit aa75e51f99.

See #390

This is being reverted instead of modified due to #388
3 years ago
pukkandan aa75e51f99
[build] Build Windows x86 version with py3.8
and remove redundant tests
:ci skip

Ao-authored by: pukkandan, shirt-dev
3 years ago
pukkandan 884ce9d05d
[version] update :ci skip all 3 years ago
pukkandan 3b1fe47d84
Release 2021.06.08 3 years ago
pukkandan ed64ce5905
[build] Release `yt-dlp.tar.gz`
Closes #386
3 years ago
pukkandan 76a264ac9e
Make outtmpl more robust and catch errors early 3 years ago
pukkandan 324ad82006
[utils] Generalize `traverse_dict` to `traverse_obj` 3 years ago
Nil Admirari beb982bead
[build,update] Add GNU-style SHA512 and prepare updater for simlar SHA256 (#383)
Authored by: nihil-admirari <50202386+nihil-admirari@users.noreply.github.com>

Related: #385
3 years ago
pukkandan e88396f123
[build] Fix SHA256 3 years ago
pukkandan 46358f647d
Update to ytdl-commit-c2350ca
Update MSVC 2010 redist URL
c2350cac24
3 years ago
pukkandan bd99f6e648
Add field `original_url` with the user-inputted URL
So that they can be processed by `--parse-metadata` for example

`webpage_url` is the same, but may be modified by the extractor
3 years ago
pukkandan ecb5419149
Make more fields available for `--print` when used with `--flat-playlist` 3 years ago
pukkandan cf59cd4dcd
[docs] Improve documentation of dependencies
Related: #348
3 years ago
Nil Admirari 56ce9eb832
[pyinst] Show Python version in EXE metadata (#384)
Authored by: nihil-admirari
3 years ago
pukkandan 89ee4cf8ae
[viki] Fix extraction
Closes #381
Code from: 59e583f7e8
3 years ago
pukkandan 87ea7dfc04
Fix filename sanitization
Bug from 752cda3880
3 years ago
pukkandan eb0f9d6838
[zoom] Extract transcripts as subtitles 3 years ago
pukkandan d3d8d8184a
[extractor] Fix pre-checking archive for some extractors
The `id` regex group must be present for `_match_id` and pre-checking archive to work correctly
3 years ago
pukkandan e85a39717a
[twitcasting] Add TwitCastingUserIE, TwitCastingLiveIE
Closes #374

Code adapted from: f1fb9222bb/youtube_dl/extractor/twitcasting.py
Authored by: pukkandan, nao20010128nao
3 years ago
MinePlayersPE f2cd7060fc
[vidio] Add VidioPremierIE and VidioLiveIE (#371)
Authored-by: MinePlayersPE
3 years ago
pukkandan 752cda3880
Fix and refactor `prepare_outtmpl`
The following tests would have failed previously:
%(id)d %(id)r
%(ext)s-%(ext|def)d
%(width|)d
%(id)r %(height)r
%(formats.0)r
%s
3 years ago
pukkandan 9d83ad93d0
[cleanup] Mark unused files 3 years ago
felix cc52de4356
[cleanup] Point all shebang to `python3` (#372)
Authored by: fstirlitz
3 years ago
pukkandan 14b17a551f
Remove support for obsolete python versions 3 years ago
felix 2ec1759f9d
[downloader/ffmpeg] Hide FFmpeg banner unless in verbose mode (#372)
Authored by: fstirlitz
3 years ago
felix e2efe599aa
[common] Fix FourCC fallback when parsing ISM (#372)
In some DASH manifests, the FourCC attribute is actually present,
but empty.  We thus apply the same fallback to 'AACL' that we do
when the attribute is entirely absent.

Authored by: fstirlitz
3 years ago
pukkandan 5e1dba8ed6
Remove duplicate file `trovolive.py` 3 years ago
pukkandan bea742222f
[youtube] Support shorts URL
Closes #375
3 years ago
pukkandan e06ca6ddac
[hls] Decrypt fragment when reading from disk
Closes #373
3 years ago
pukkandan eb03899192
[version] update
:ci skip all
3 years ago
pukkandan 3de7c2ce9a
Release 2021.06.01 3 years ago
pukkandan bc6b9bcd65
[utils] Escape URLs in `sanitized_Request`, not `sanitize_url`
d2558234cf added escaping of URLs while sanitizing. However, `sanitize_url` may not always receive an actual URL.
Eg: When using `yt-dlp "search query" --default-search ytsearch`, `search query` gets escaped to `search%20query` before being prefixed with `ytsearch:` which is not the intended behavior. So the escaping is moved to `sanitized_Request` instead.
3 years ago
Ashish 6e6390321c
[Hotstar] Add HotStarSeriesIE (#366)
Authored by: Ashish0804
3 years ago
pukkandan 4040428efc
[update] Block further update for unsupported systems 3 years ago
pukkandan cc1dfc9373
[cleanup] setup.py 3 years ago
pukkandan 14eb1ee1cb
Update to ytdl-commit-d495292
[ard] Relax _VALID_URL and fix video ids
d495292852

Closes #357
3 years ago
coletdjnz 879e7199bb
[archiveorg] Add YoutubeWebArchiveIE (#356)
Co-authored by: colethedj, pukkandan, alex-gedeon
3 years ago
pukkandan d89da64b1d
[hls,dash] When using `concurrent_fragment_downloads`, do not keep the fragment content in memory
Partial fix for #359
This is a temporary solution until #364 can be implemented
3 years ago
pukkandan 5dcd8e1d88
[hls] Disable external downloader for `webtt` 3 years ago
MinePlayersPE 10bb7e51e8
[vidio] Add login support (#362)
Authored by: MinePlayersPE
3 years ago
pukkandan b0089e8992
[fancode] Add extractor (#316,#354)
Closes #269, #363

Authored by: rmsmachine
3 years ago
Ashish a3ed14cbaf
[Voot] Add VootSeriesIE (#351)
Authored by: Ashish0804
3 years ago
LE 9dee4df559
[Saitosan] Add new extractor (#350)
Closes #224
Authored by: llacb47
3 years ago
pukkandan adddc50cbf
[extractor] Functions to parse socket.io response as json
Authored by: pukkandan, llacb47
3 years ago
MinePlayersPE 46c43ffc9d
[vidio] Support premium videos (#358)
Authored by: MinePlayersPE
3 years ago
pukkandan 37a3bb66a7
[extractor] Allow `note=False` when extracting manifests 3 years ago
pukkandan 337e0c62f8
[embedthumbnail] Correctly escape filename
Closes #352
The approach in [1] is faulty as can be seen in the test cases
1. bff857a8af
3 years ago
pukkandan 885cc0b75c
[embedthumbnail] Embed if any thumbnail was downloaded, not just the best 3 years ago
pukkandan 46953e7e6e
[youtube:playlist] fix bug 3 years ago
pukkandan ae8f99e648
Remove `None` values from `info.json` 3 years ago
pukkandan 077c476276
[zee5] Fix m3u8 formats extension 3 years ago
pukkandan 835a1478b4
Write messages to `stderr` when both `quiet` and `verbose` 3 years ago
pukkandan 120fe5134a
Pre-check archive and filters during playlist extraction
This makes `--break-on-existing` much faster.
It also helps `--break-on-reject` if the playlist extractor can extract the relevant fields
3 years ago
pukkandan 56a8fb4f77
Refactor `__process_playlist` using `LazyList` 3 years ago
pukkandan 55575225b4
[utils] Add `__getitem__` for `PagedList` 3 years ago
pukkandan 483336e79e
[utils] Add `LazyList` 3 years ago
pukkandan c77495e3a4
[cleanup] `_match_entry` 3 years ago
rhsmachine 65af1839c6
[patreon] Support vimeo embeds (#349)
Authored by: rhsmachine
3 years ago
pukkandan 177877c544
[extractor] Always prefer native hls downloader by default
When the manifest is not downloadable by native downloader, it already is able to detect it and switch to `ffmpeg`. So there doesn't seem to be a reason anymore to use ffmpeg as the preferred downloader
3 years ago
pukkandan b25522ba52
[update] Replace self without launching a subprocess in windows
Closes: #335, https://github.com/ytdl-org/youtube-dl/issues/28488, https://github.com/ytdl-org/youtube-dl/issues/5810, https://github.com/ytdl-org/youtube-dl/issues/5994

In windows, a running executable cannot be replaced. So, the old updater worked by launching a batch script and then exiting, so that the batch script can replace the executable. However, this caused the above-mentioned issues.

The new method takes advantage of the fact that while the executable cannot be replaced or deleted, it can still be renamed. The current update process on windows is as follows:
1. Delete `yt-dlp.exe.old` if it exists
2. Download the new version as `yt-dlp.exe.new`
3. Rename the running exe to `yt-dlp.exe.old`
4. Rename `yt-dlp.exe.new` to `yt-dlp.exe`
5. Open a shell that deletes `yt-dlp.exe.old` and terminate

While we still use a subprocess, the actual update is already done before the app terminates and the batch script does not print anything to stdout/stderr. So this solves all the above issues
3 years ago
pukkandan c19bc311cb
[cleanup] Refactor updater
The updater now uses `.update.run_update` and not `.update.update_self`.
Although I don't expect anyone to be using the updater via API, a wrapper `update_self` is provided for compatibility just in case
3 years ago
Hubert Hirtz 5435dcf96e
Handle Basic Auth `user:pass` in URLs
Fixes https://github.com/ytdl-org/youtube-dl/issues/20258, https://github.com/ytdl-org/youtube-dl/issues/26211
Authored by: hhirtz, pukkandan
3 years ago
Oliver Freyermuth f17c702270
[ard] Allow URLs without `-` before id
https://github.com/ytdl-org/youtube-dl/pull/29091

Authored by: olifre
3 years ago
pukkandan 3907333c5d
[extractor] Skip subtitles without URI in m3u8 manifests
Closes #339

Authored by: hheimbuerger
3 years ago
pukkandan acdecdfaef
[embedthumbnail] Embed in `mp4`/`m4a` using mutagen
Code from: https://github.com/ytdl-org/youtube-dl/pull/23525
Co-authored by: tripulse , pukkandan
3 years ago
Ashish 09d18ad07e
[Sonyliv] Add subtitle support (#342)
Authored by: Ashish0804
3 years ago
pukkandan bc516a3f3c
Sanitize and sort playlist thumbnails
Closes #341
3 years ago
Ashish 9572eaaa11
[ShemarooMe] Add extractor (#332)
Closes #307
Co-authored-by: Ashish0804, pukkandan
3 years ago
pukkandan 18e674b4f6
[ffmpeg] Download and merge in a single step if possible 3 years ago
pukkandan 8d68ab98a7
[youtube] Fix bug where not all hls formats were extracted
Bug introduced in 9297939ec3
3 years ago
Ashish 135e6b93f4
[SonyLIV] Add SonyLIVSeriesIE (#331)
Authored by: Ashish0804
3 years ago
king-millez 13a49340ed
[telemundo] add extractor (#327)
Closes #284
Authored by: king-millez
3 years ago
pukkandan 81a23040eb
[cleanup] Refactor ffmpeg convertors 3 years ago
pukkandan 857f63136d
[videoconvertor] Generalize with remuxer and allow conditional recoding 3 years ago
louie-github a927acb1ec
[ThumbnailsConvertor] Support conversion to `png` and make it the default (#333)
PNG, being a lossless format, should be a better default here compared to JPG since we won't be compressing to a lossy format and losing some of the original image data
PNG is also supported for embedding in all the formats similar to JPEG

Authored by: louie-github
3 years ago
pukkandan 09f1580e2d
[youtube] `/live` URLs should raise error if channel is not live
Fixes: https://github.com/ytdl-org/youtube-dl/issues/29090
3 years ago
pukkandan cd59e22191
[version] update
:ci skip all
3 years ago
shirt 7237fdc6ce
[build] Fix `pefile` version for x86
Authored by: shirt-dev
3 years ago
pukkandan 0fdf490d33
Release 2021.05.20 3 years ago
pukkandan b73612a254
Update to ytdl-commit-dfbbe29
[redbulltv] fix embed data extraction
dfbbe2902f
3 years ago
king-millez 5014558ab9
[parlview] Add extractor (#322)
Authored by: king-millez
3 years ago
pukkandan 28b0eb0f65
[cleanup] See desc
* Remove struct from `embedthumbnail`
* Use bullet lists in readme where numbered list don't make sense
* Fix error introduced in 9c2b75b561 when `ie_result` is `None`
3 years ago
pukkandan 95131b2176
[embedthumbnail] Add `flac` support and refactor `mutagen` code
https://github.com/ytdl-org/youtube-dl/pull/28894, https://github.com/ytdl-org/youtube-dl/pull/24310
Authored by: tripulse
3 years ago
pukkandan 2305e2e5c9
[options] Alias `--write-comments`, `--no-write-comments`
Closes: #264
3 years ago
coletdjnz 00ae27690d
[youtube] Add `html5=1` param to `get_video_info` page requests (#329)
Workaround for #319, https://github.com/ytdl-org/youtube-dl/issues/29086
Authored by: colethedj
3 years ago
pukkandan 9d5d4d64f8
[youtube] Better message when login required 3 years ago
king-millez 98784ef8d6
[audius:artist] Add extractor (#323)
Authored by: king-millez
3 years ago
pukkandan d3fc8074a4
[youtube] Sort audio-only formats correctly
Closes #317
3 years ago
pukkandan 9c2b75b561
Field `additional_urls` to download additional videos from metadata 3 years ago
pukkandan 856bb8f99d
[downloader] Fix `write_debug` 3 years ago
pukkandan af32f40bf5
[test] Fix `test_YoutubeDL.TestYoutubeDL`
Test `test_ignoreerrors_for_playlist_with_url_transparent_iterable_entries` was broken due to `__original_infodict` being added to the dict
3 years ago
pukkandan 4ec82a72bb
Ensure `post_extract` and `pre_process` only run once
Previously, they ran once for each format requested
3 years ago
pukkandan 07cce701de
[cleanup] linter, code formatting and readme 3 years ago
king-millez 74e001af1d
[tenplay] Fix extractor (#314)
Authored by: king-millez
3 years ago
pukkandan ff2751ac9c
[youtube] Always extract `maxresdefault` thumbnail
Fixes: https://github.com/ytdl-org/youtube-dl/issues/29049
3 years ago
pukkandan abcdd12b26
[youtube:tab] Support youtube music `MP` pages 3 years ago
pukkandan 18db754858
[youtube:tab] Redirect `UC` channels that doesn't have a `videos` tab
Many topic URLs don't have a videos tab, but has an equivalent `UU` playlist.
If there is no playlist, fallback to using channel page
3 years ago
pukkandan fe03a6cdc8
[youtube:tab] Support youtube music `VL` and `browse` pages 3 years ago
pukkandan cd684175ad
[youtube:tab] Support channel search
Fixes: https://github.com/ytdl-org/youtube-dl/issues/29071
3 years ago
pukkandan da692b7920
[cleanup] youtube tests 3 years ago
pukkandan 95c01b6c16
[youtube:tab] Show alerts only from the final webpage 3 years ago
pukkandan 6911e11edd
[test:download] Only extract enough videos for `playlist_mincount` 3 years ago
pukkandan 5112f26a60
Add `pl_thumbnail` outtmpl key for playlist thumbnails
This should have been implemented in 681de68e9d, but I forgot
3 years ago
pukkandan a06916d98e
[extractor] Add `write_debug` and `get_param` 3 years ago
pukkandan 681de68e9d
Write thumbnail of playlist
Related: https://github.com/ytdl-org/youtube-dl/pull/28872, https://github.com/ytdl-org/youtube-dl/pull/28860
This is slightly different from the above PRs in that this downloads the playlist's thumbnail instead of the uploader's profile picture. But for youtube channel URLs these are the same
3 years ago
pukkandan 7aee40c13c
Fix bug in listing subtitles
Bug introduced by: 2412044c90
3 years ago
coletdjnz 9297939ec3
[Youtube] Extract more formats for `music.youtube` URLs (#311)
Based on: https://github.com/ytdl-org/youtube-dl/pull/28778, https://github.com/ytdl-org/youtube-dl/pull/26160

Co-authored-by: craftingmod, colethedj, pukkandan
3 years ago
pukkandan 774d79cc4c
[youtube] Add language names
Co-authored by: nixxo, tpikonen
Based on: https://github.com/ytdl-org/youtube-dl/pull/26112
Closes: #310
3 years ago
pukkandan 2412044c90
Add field `name` for subtitles
Co-authored by: pukkandan, tpikonen

Based on: #310, https://github.com/ytdl-org/youtube-dl/pull/26112
3 years ago
pukkandan 120916dac2
[youtube] multiple subtitles in same language
Fixes: https://github.com/ytdl-org/youtube-dl/issues/21164
Related: #310, https://github.com/ytdl-org/youtube-dl/pull/26112
3 years ago
pukkandan fe346461ff
Fix `--check-formats` when there is network error 3 years ago
pukkandan d2a1fad968
[compat] Fix py2 3 years ago
pukkandan 0fb983f62d
[youtube] Extract audio language 3 years ago
pukkandan 53c18592d3
Add option `--print`
Deprecates: `--get-description`, `--get-duration`, `--get-filename`, `--get-format`, `--get-id`, `--get-thumbnail`, `--get-title`, `--get-url`
Closes #295
3 years ago
pukkandan e632bce2e4
[options] Refactor callbacks 3 years ago
pukkandan 0760b0a7e2
Standardize `write_debug` 3 years ago
pukkandan d908aa636a
[cleanup] Fix typos 3 years ago
pukkandan 3d89341b47
[common] bugfix for when `compat_opts` is not given 3 years ago
pukkandan d8ec40b39f
[rmcdecouverte] Generalize `_VALID_URL`
Closes #291
3 years ago
pukkandan 4171221823
Add compat-option `no-attach-infojson` 3 years ago
pukkandan eaeca38fc4
[version] update :ci skip all 3 years ago
pukkandan fac988053f
Release 2021.05.11
* and some documentation improvements
3 years ago
pukkandan 61241abbb0
[generic] Respect the encoding in manifest 3 years ago
pukkandan 53ed7066ab
Option `--compat-options` to revert some of yt-dlp's changes
* Deprecates `--list-formats-as-table`, `--list-formats-old`
3 years ago
pukkandan a61f4b287b
Deprecate support for python versions < 3.6
Closes #267
3 years ago
pukkandan 486fb17975
Remove `-l`, `-t`, `-A` completely and disable `--auto-number`, `--title`, `--literal`, `--id` 3 years ago
pukkandan 2f567473c6
[Plugins] Prioritize plugins over standard extractors
and prevent plugins from overwriting the standard extractor classes

Closes #304
3 years ago
pukkandan 000ee7ef34
[fragment] Make sure first segment is not skipped 3 years ago
pukkandan 41d1cca328
Update to ytdl-commit-a726009
[blinkx] Remove extractor
a726009987
3 years ago
pukkandan 717297545b
Fix `playlist_index` and add `playlist_autonumber` (#302)
Now `playlist_index` is always the position of the video in the actual playlist and `playlist_autonumber` is the position of the item in the playlist queue
3 years ago
pukkandan e8e738406a
Add experimental option `--check-formats` to test the URLs before format selection 3 years ago
pukkandan e625be0d10
Improve output template internal formatting
* Allow slicing lists/strings using `field.start🔚step`
* A field can also be used as offset like `field1+num+field2`
* A default value can be given using `field|default`
* Capture all format strings and set it to `None` if invalid. This prevents invalid fields from causing errors
3 years ago
pukkandan 12e73423f1
[plutotv] Fix format extraction for some urls
* And fallback to the first urls if ad-free urls can't be found
Closes #299
3 years ago
pukkandan 7700b37f39
[plutotv] Extract subtitles from manifests 3 years ago
Ashish c28cfda81f
[SonyLiv] Fix `title` and `series` extraction (#301)
Authored by: Ashish0804
3 years ago
pukkandan 848887eb7a
[downloader] Fix `quiet` and `to_stderr` 3 years ago
pukkandan 3158150cb7
[utils] Add `network_exceptions` 3 years ago
pukkandan 6ef6bcbd6b
[fragment] Ensure the file is closed on error 3 years ago
pukkandan 06425e9621
[blinkx] Minor fix
Fixes: https://github.com/ytdl-org/youtube-dl/issues/28941
3 years ago
pukkandan 4d224a3022
[embedthumbnail] Fix bug where jpeg thumbnails were converted again
Closes #297
3 years ago
pukkandan f59ae58163
Fix number of digits in `%(playlist_index)s`
When used with `--playlist-(items|start|end)`, the number of digits should depend on the last index in the playlist, not number of items
3 years ago
pukkandan 0d1bb027aa
Move option warnings to `YoutubeDL`
Previously, these warnings did not obey `--no-warnings` and did not output colors
3 years ago
pukkandan 4cd0a709aa
Fix `preload_download_archive` writing verbose message to `stdout`
* And move it after all deprecated warnings
3 years ago
pukkandan 1815d1028b
[zee5] Fix py2 compatibility 3 years ago
The Hatsune Daishi 0fa9a1e236
[whowatch] Add extractor #292
closes #223

Authored by: nao20010128nao 
Modified from: 9e4a0e061a/youtube_dl/extractor/whowatch.py
3 years ago
pukkandan eb55bad5a0
[aria2c] Fix whitespace being stripped off
Closes #276
3 years ago
pukkandan cc0ec3e161
Do not strip out whitespaces in `-o` and `-P`
Related: https://github.com/yt-dlp/yt-dlp/issues/276#issuecomment-827361652
3 years ago
pukkandan 80185155a1
[ukcolumn] Add Extractor
Closes #287
3 years ago
pukkandan c755f1901f
[CBS] Improve `_VALID_URL` to support movies
Closes #290
Tested by: BeeMuffins
3 years ago
pukkandan 68b91dc905
[youtube] Add `oembed` to reserved names 3 years ago
pukkandan 88f06afc0c
[rmcdecouverte] Improve `_VALID_URL`
Closes #291
3 years ago
CXwudi 40078a55e2
[niconico] Fix bug in thumbnail extraction #289
Bug from: 6b1d8c1e30
Authored by: CXwudi
3 years ago
pukkandan d2558234cf
[utils] Escape URL while sanitizing
Closes #263

While this fixes the issue in question, it does not try to address the root-cause of the problem
Refer: 915f911e36, f5fa042c82
3 years ago
pukkandan f5fa042c82
Revert "[utils] Encode URLs in `YoutubeDLCookieProcessor`"
This reverts commit 915f911e36.

When the request is copied, `unredirected_hdrs` are not copied, which causes issues elsewhere
Reopens #263
3 years ago
pukkandan 07e4a40a9a
[crackle] Improve extraction (See desc)
Closes #282

* Refactor authorization as an extension to `_download_json`
* Better error messages and warnings
* Respect `--ignore-no-formats-error`
* Extract subtitles from manifests
* Try with crackle's geo-location service if all hard-coded countries fail
3 years ago
pukkandan e28f1c0ae8
[cleanup] Fix linter and some typos
* Also remove inconsistent use of `"` in setup.py
3 years ago
pukkandan ef39f8600a
[curiositystream] Fix collections
Closes #277

* A bug with authentication was reported in <https://github.com/yt-dlp/yt-dlp/issues/277#issuecomment-828254721> but cannot be tested without an account
3 years ago
pukkandan 2291dbce2a
[niconico] Fix HLS formats
Closes #171

* The structure of the API JSON was changed
* Smile Video seems to be no longer available. So remove the warning
* Move ping to downloader
* Change heartbeat interval to 40sec
* Remove unnecessary API headers

Authored-by: CXwudi, tsukumijima, nao20010128nao, pukkandan
Tested by: tsukumijima
3 years ago
pukkandan 58f197b76c
Revert "[core] be able to hand over id and title using url_result"
This reverts commit 0704d2224b.

This is a commit from `youtube-dlc`. It is not clear what the original purpose of this was. It seems to be a way for extractors to pass `title` and `id` through when the entry is processed by another extractor

* But `title` can already be passed through using `url_transparent`
* `id` is never supposed to be passed through since it could cause issues with archiving
3 years ago
pukkandan 895b0931e5
[youtube:tab] Detect playlists inside community posts 3 years ago
pukkandan 1ad047d0f7
[nebula] Move to nebula.app
Closes #272
Tested by: Lamieur
3 years ago
pukkandan be6202f12b
Subtitle extraction from streaming media manifests #247
Authored by fstirlitz
Modified from: https://github.com/ytdl-org/youtube-dl/pull/6144

Closes: #73
Fixes:
https://github.com/ytdl-org/youtube-dl/issues/6106
https://github.com/ytdl-org/youtube-dl/issues/14977
https://github.com/ytdl-org/youtube-dl/issues/21438
https://github.com/ytdl-org/youtube-dl/issues/23609
https://github.com/ytdl-org/youtube-dl/issues/28132

Might also fix (untested):
https://github.com/ytdl-org/youtube-dl/issues/15424
https://github.com/ytdl-org/youtube-dl/issues/18267
https://github.com/ytdl-org/youtube-dl/issues/23899
https://github.com/ytdl-org/youtube-dl/issues/24375
https://github.com/ytdl-org/youtube-dl/issues/24595
https://github.com/ytdl-org/youtube-dl/issues/27899

Related:
https://github.com/ytdl-org/youtube-dl/issues/22379
https://github.com/ytdl-org/youtube-dl/pull/24517
https://github.com/ytdl-org/youtube-dl/pull/24886
https://github.com/ytdl-org/youtube-dl/pull/27215

Notes:
* The functions `extractor.common._extract_..._formats` are still kept for compatibility
* Only some extractors have currently been moved to using `_extract_..._formats_and_subtitles`
* Direct subtitle manifests (without a master) are not supported and are wrongly identified as containing video formats
* AES support is untested
* The fragmented TTML subtitles extracted from DASH/ISM are valid, but are unsupported by `ffmpeg` and most video players
    * Their XML fragments can be dumped using `ffmpeg -i in.mp4 -f data -map 0 -c copy out.ttml`.
        Once the unnecessary headers are stripped out of this, it becomes a valid self-contained ttml file
    * The ttml subs downloaded from DASH manifests can also be directly opened with <https://github.com/SubtitleEdit>
* Fragmented WebVTT files extracted from DASH/ISM are also unsupported by most tools
    * Unlike the ttml files, the XML fragments of these cannot be dumped using `ffmpeg`
    * The webtt subs extracted from DASH can be parsed by <https://github.com/gpac/gpac>
    * But validity of the those extracted from ISM are untested
3 years ago
Felix S e8f834cd8d [threeqsdn] Extract subtitles from streaming manifests 3 years ago
Felix S e0e624ca7f [canvas] Extract subtitles from streaming manifests 3 years ago
Felix S ec4f374c05 [wat] Extract subtitles from streaming manifests 3 years ago
Felix S c811e8d8bd [atresplayer] Extract subtitles from streaming manifests 3 years ago
Felix S b2cd5da460 [francetv] Extract subtitles from the HLS manifest 3 years ago
Felix S 2de3b21e05 [uplynk] Extract subtitles from HLS manifests 3 years ago
Felix S 4bed436371 [twitter] Extract subtitles from HLS manifests 3 years ago
Felix S efe9dba595 [srgssr] Extract subtitles from HLS manifests 3 years ago
Felix S 47f4203dd3 [nytimes] Extract subtitles from HLS manifests 3 years ago
Felix S 015c10aeec [roosterteeth] Use common code for subtitle extraction 3 years ago
Felix S a00d781b73 [elonet] Use common code for subtitle extraction 3 years ago
Felix S 0c541b563f [tv4] Extract subtitles from streaming manifests 3 years ago
Felix S 64a5cf7929 [byutv] Extract subtitles from streaming manifests 3 years ago
Felix S 7a450a3b1c [generic] Extract subtitles from direct SSTR manifest links 3 years ago
Felix S 7de27caf16 [generic] Extract subtitles from direct DASH manifest links 3 years ago
Felix S c26326c1be [generic] Extract subtitles from direct HLS manifest links 3 years ago
Felix S 66a1b8643a [downloader/ism] Support muxing TTML subtitles 3 years ago
Felix S 15828bcf25 [downloader/hls] Handle MPEG-2 PES timestamp overflow 3 years ago
Felix S 333217f43e [downloader/hls] Remove duplicate cues using a sliding window of candidates 3 years ago
Felix S 4a2f19abbd [downloader/hls] Assemble single-file WebVTT subtitles from HLS segments 3 years ago
Felix S 5fbcebed8c [test] Test SSTR manifest parsing 3 years ago
Felix S becdc7f82c [test] Test subtitle extraction from DASH manifests 3 years ago
Felix S 73b9088a1c [test] Test subtitle extraction from HLS manifests 3 years ago
Felix S f6a1d69a87 [extractor/common] Extend _extract_akamai_formats to also extract subtitle tracks 3 years ago
Felix S fd76a14259 [extractor/common, downloader/ism] Extract SSTR subtitle tracks
_parse_ism_formats was extended into _parse_ism_formats_and_subtitles;
all direct users were updated, though _extract_ism_formats was left
as a compatibility wrapper.

The SSTR downloader was also modified in order to prepare for muxing
subtitle streams, although no support for any subtitle codecs was
added in this commit.
3 years ago
Felix S 171e59edd4 [extractor/common] Extract DASH subtitle tracks
_extract_mpd_formats and _parse_mpd_formats were extended into
_…_formats_and_subtitles; wrappers with old names are provided
for compatibility.
3 years ago
Felix S a0c3b2d5cf [extractor/common] Extract HLS subtitle tracks
_extract_m3u8_formats is renamed to _extract_m3u8_formats_and_subtitles
and extended to handle subtitle tracks instead of skipping them;
a wrapper with the old name is provided for compatibility.

_parse_m3u8_formats is likewise renamed and extended, but without adding
the compatibility wrapper; the test suite is adjusted to test the enhanced
method instead.
3 years ago
Felix S 19bb39202d [extractor/common] Generalise _merge_subtitles
This allows modifying a subtitles dictionary in-place.
3 years ago
Felix S d4553567d2 [downloader/ism] Prevent writing the header again when resuming an interrupted download 3 years ago
Felix S 4d49884c58 [downloader/fragment] Allow persisting extra state when a download is interrupted 3 years ago
Felix S 5873d4ccdd [utils] Improve bug_report_message
Add an optional argument specifying the text that should go before
the message.
3 years ago
Hadi0609 db9a564b6a
[zee5] Fix extraction for some URLs (#279)
Closes: #278
3 years ago
Felix S c72967d5de
[mediasite] Generalize URL pattern (#275)
Authored by: fstirlitz
3 years ago
pukkandan 598d185db1
Fix case sensitivity of format selector
Bug introduced in f8d4ad9ab0
3 years ago
pukkandan b982cbdd0e
[limelight] Obey `allow_unplayable_formats` 3 years ago
pukkandan 6a04a74e8b
[FormatSort] Fix for when some formats have quality and others don't 3 years ago
pukkandan 88728713c8
Py2 compatibility for `FileNotFoundError` 3 years ago
CXwudi 6b1d8c1e30
[niconico] Fix title and thumbnail extraction (#273)
Authored by: CXwudi
3 years ago
Ashish 87c3d06271
[Mxplayer] Add MxplayerShowIE (#270)
Authored by: Ashish0804
3 years ago
pukkandan 915f911e36
[utils] Encode URLs in `YoutubeDLCookieProcessor`
Closes #263
3 years ago
pukkandan cf9d6cfb0c
[tubi] Raise "no video formats" error when video url is empty
Related: #266
3 years ago
pukkandan bbed5763f1
[francetvinfo] Improve video id extraction
Closes #261
3 years ago
pukkandan ca0b91b39e
[version] update :ci skip all 3 years ago
pukkandan 0cf0571560
Release 2021.04.22 3 years ago
pukkandan e58c22a0f6
[documentation] Fix typos 3 years ago
pukkandan e4bdd3377d
[ci] Disable fail-fast 3 years ago
pukkandan 0b2e9d2c30
[lazy_extractor] Do not load plugins 3 years ago
pukkandan 1bdae7d312
Update to ytdl-commit-7e8b3f9
[youtube] Remove unused code
7e8b3f9439
3 years ago
Felix S a471f21da6
[mildom] Remove proxy (#260)
Closes #251
Makes 2cff495997, ab406a1c0e, #252 obsolete

Authored by: fstirlitz
3 years ago
pukkandan 6efb071135
[BilibiliChannel] Fix pagination
Closes #222

ccca21d7f5
Coauthored by: nao20010128nao, pukkandan
3 years ago
pukkandan f4536226c1
[documentation] Clarify which deprecated options still work 3 years ago
pukkandan a439a3a45c
Improve output template (see desc)
* Objects can be traversed like `%(field.key1.key2)s`
* A number can be added to the field as `%(field+n)s`
* Deprecates `--autonumber-start`
3 years ago
pukkandan 26e2805c3f
Add option `--skip-playlist-after-errors`
Allows to skip the rest of a playlist after a given number of errors are encountered
3 years ago
pukkandan 3b4775e021
[go] Fix `_VALID_URL`
Closes #255
3 years ago
pukkandan ab406a1c0e
[mildom] Warn user of proxy 3 years ago
pukkandan a3faeb7de4
[MetadataFromField] Improve regex and add tests 3 years ago
pukkandan 8c54a3051d
[youtube] Bugfix in `_extract_ytcfg` 3 years ago
pukkandan c32b0aab8a
Improve --sub-langs (see desc)
* Treat `--sub-langs` entries as regex
* `all` can be used to refer to all the subtitles
* the language code can be prefixed with `-` to exclude it
* Deprecates `--all-subs`
Closes #253
3 years ago
pukkandan 3097d9e512
[mildom:user:vod] Download only necessary amount of pages 3 years ago
pukkandan c1df120eda
[mildom:vod] Remove proxy
* Proxy is needed only for live videos
3 years ago
pukkandan 2cff495997
[mildom] Change proxy
Related: #251
Closes #252
3 years ago
pukkandan d0491a1ebe
[twitcasting] Fix extractor
* `Origin: https://twitcasting.tv` must be sent when requesting the webpage. Otherwise the extracted `m3u8` will always give a `502`
* Fix regex for when `data-movie-playlist` is a dict containing the needed list
* media initialization is fully supported; so change downloader to native

Closes #220
3 years ago
nixxo b9d68c199b
[rai] Add support for http formats (#208)
Authored by: nixxo
3 years ago
Felix S 155510fe81
Improve the yt-dlp.sh script (#248)
* Quote the `$0` variable to correctly handle spaces
* Change the shebang line to `/bin/sh` to avoid unnecessarily depending on bash
* Use the `exec` command to avoid having the shell process linger unnecessarily
* Change the mode to make the script directly executable

Authored by: fstirlitz

:ci skip all
3 years ago
pukkandan 201c145953
Update to ytdl-commit-9f6c03
[cbsnews] Fix extraction for python <3.6
9f6c03a006
3 years ago
pukkandan 5d34200268
[youtube:tab] Reload with unavailable videos for all playlists
If the unavailable video is in a later page, the warning and button are not shown in the initial webpage
So we force all playlists' initial page to reload with the correct params
3 years ago
pukkandan b7da73eb19
Add option `--ignore-no-formats-error`
* Ignores the "no video format" and similar errors
* Experimental - Some extractors may still throw these errors
3 years ago
pukkandan 6a39ee13f7
Fix inconsistent use of `report_warning` 3 years ago
pukkandan 33245766ab
[downloader] Fix ffmpeg selection for m3u8_native 3 years ago
coletdjnz 358de58c4d
[youtube:tab] Show unavailable videos in playlists (#242)
Closes #231

Authored by: colethedj
3 years ago
pukkandan a7191c6f57
Fix some linter and typos 3 years ago
lkho baa5873942
[viu:ott] Fix extractor (see desc)
* add language_flag_id query param
* add support for premium account (untested since I dont have a premium account)
* support entire series

Code from:
https://github.com/blackjack4494/youtube-dlc/pull/211
https://github.com/ytdl-org/youtube-dl/pull/15182
https://github.com/ytdl-org/youtube-dl/pull/26775

Fixes:
https://github.com/yt-dlp/yt-dlp/issues/219
https://github.com/ytdl-org/youtube-dl/issues/27946
https://github.com/ytdl-org/youtube-dl/issues/27863
https://github.com/ytdl-org/youtube-dl/issues/27812
https://github.com/ytdl-org/youtube-dl/issues/27464
https://github.com/ytdl-org/youtube-dl/issues/26788
https://github.com/blackjack4494/yt-dlc/issues/136

Possibly also fixes (untested):
https://github.com/ytdl-org/youtube-dl/issues/16992
https://github.com/ytdl-org/youtube-dl/issues/26701

Co-authored by: lkho, pukkandan
3 years ago
pukkandan c6ce815461
[Exec] Ensure backward compatibility when the command contains `%` 3 years ago
coletdjnz 79360d99d3
[youtube] Standardize API calls for tabs, mixes and search (#245)
Authored by: colethedj
3 years ago
pukkandan 46fff7105e
[youtube] Ignore invalid stretch ratio
Closes #244
3 years ago
pukkandan 72e1fe969f
[downloader] Fix downloader selection for m3u8
Bug introduced by: 52a8a1e1b9 and a31953b0e6
3 years ago
Ashish b5be6dd504
[TubiTv] Add TubiTvShowIE (#243)
Authored by: Ashish0804
3 years ago
coletdjnz 8ea3f7b909
[youtube] Improve channel syncid extraction to support ytcfg (#241)
Authored by: colethedj
3 years ago
pukkandan 921b76cab8
Ensure `mergeall` selects best format when multistreams are disabled 3 years ago
pukkandan a31953b0e6
[downloader] Fix external downloader selection for m3u8
Closes #239
3 years ago
pukkandan 54670cf084
[version] update
:ci skip all
3 years ago
pukkandan a0f30f194a
Release 2021.04.11 3 years ago
pukkandan b31fdeedfd
[documentation] Improvements 3 years ago
pukkandan 8fa43c73d8
Add option `--convert-thumbnails`
Closes: https://github.com/yt-dlp/yt-dlp/issues/99 https://github.com/yt-dlp/yt-dlp/issues/102
3 years ago
pukkandan 56d868dbb7
Allow running some `postprocessors` before actual download 3 years ago
coletdjnz f4f751af40
[youtube] Parse API parameters from initial webpage (#230)
* Obtain innertube_context, api_key and x-goog-visitor-id from webpage
* Generalize the header & Innertube_context extraction across YouTube extractors

Related: 1b0a13f33c

Authored by: colethedj
3 years ago
pukkandan 1988fab7e3
[youtube] Fix thumbnail URL
Closes: https://github.com/yt-dlp/yt-dlp/issues/233 https://github.com/ytdl-org/youtube-dl/issues/28023
3 years ago
pukkandan 9de3ea3126
Pass any field to `--exec` using similar syntax to output template
Related: https://github.com/ytdl-org/youtube-dl/issues/28642
3 years ago
pukkandan e01d6aa435
Fix `mergeall` when requested formats are unavailable 3 years ago
pukkandan f7ad71607d
Update to ytdl-commit-4fb25ff
[maoritv] Add new extractor
4fb25ff5a3

Except:
[vimeo] improve extraction 3ae9c0f410
[youtube:tab] Pass innertube context... 1b0a13f33c
3 years ago
pukkandan 68379de561
[downloaders] Fix API access
Bug introduced by: 52a8a1e1b9
3 years ago
pukkandan d9aa233295
Deprecate more options
* `--all-formats` = `-f all`
* `--include-ads` is not implemented
3 years ago
pukkandan f37468c41f
Fix default of `dynamic_mpd` 3 years ago
pukkandan 52a8a1e1b9
Option to choose different downloader for different protocols
* Renamed `--external-downloader-args` to `--downloader-args`
* Added `native` as an option for the downloader
* Use similar syntax to `--downloader-args` etc. Eg: `--downloader dash:native --downloader aria2c`
* Deprecated `--hls-prefer-native` and `--hls-prefer-ffmpeg` since the same can now be done with `--downloader "m3u8:native"` and `m3u8:ffmpeg` respectively
* Split `frag_urls` protocol into `m3u8_frag_urls` and `dash_frag_urls`
* Standardize shortening of protocol names with `downloader.shorten_protocol_name`
3 years ago
pukkandan d818eb7473
Improve argument parsing for `-P`, `-o`, `-S`
* `-P "subtitle,thumbnail:PATH"` is now possible. Similarly for `-o`
* `-S "fps,br" -S "res,codec"` is now interpreted as `-S res,codec,fps,br`. Previously, `-S fps,br` was ignored in this case.
3 years ago
pukkandan f8d4ad9ab0
Format selector `mergeall` to download and merge all formats 3 years ago
pukkandan 3ffc7c89b0
[youtube] Fix _extract_alerts
* Sometimes one warning is split between multiple runs
* Also simplified code
3 years ago
Henrik Heimbuerger f1823403b0
[nebula] Add extractor (watchnebula.com) (#122)
Authored by: hheimbuerger
3 years ago
LE 384fb069ec
[NFHSNetwork] Add extractor (#217)
Authored by: llacb47
3 years ago
bopol a4ddaf231e
[nitter] Fix extraction of reply tweets (#218)
And update instance list

Closes #215 

Authored by: B0pol
3 years ago
pukkandan 7e60c06925
[bilibili] Fix uploader
Related: https://github.com/yt-dlp/yt-dlp/issues/222
3 years ago
coletdjnz d92f5d5a90
[youtube] Extract comments' approximate timestamp (#221)
Authored by: colethedj
3 years ago
colethedj 9e62f283ff
[utils] Add `datetime_from_str` to parse relative time (#221)
and `datetime_add_months` to accurately add/subtract months

Authored by: colethedj
3 years ago
bopol c24ce07a84
[nitter] Fix thumbnails (#216)
Authored by: B0pol
3 years ago
Ashish de6758128e
[DiscoveryPlusIndia] Add DiscoveryPlusIndiaShowIE (#213)
Co-authored-by: Ashish <ashish@pop-os.localdomain>
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
3 years ago
pukkandan 73d4343e39
Fix some `m3u8` not obeying `--allow-unplayable-formats` 3 years ago
pukkandan 57d104424f
[version] update
:ci skip all
3 years ago
pukkandan 02aabd45d0
Release 2021.04.03 3 years ago
pukkandan 39ed931e53
Update to ytdl-commit-654b4f4
[youtube] prioritize information from YoutubeIE for playlist entries
654b4f4ff2
3 years ago
Matthew b28f8d244a
[YouTube] Show premium state in `availability` (#209)
Authored by colethedj
3 years ago
pukkandan 73cd218f5a
[documentation] Improve `--parse-metadata` documentation 3 years ago
pukkandan 84601bb72b
Ability to set a specific field in the file's metadata
Eg: `--parse-metadata "description:(?s)(?P<meta_comment>.+)"`
sets the "comment" field using `description`
3 years ago
pukkandan 54df8fc5b2
[ViewSource] Add extractor to handle `view-source:` 3 years ago
The Hatsune Daishi 5d39972ed0
[mildom] Update extractor to comply with current proxy (#212)
Authored by nao20010128nao
3 years ago
pukkandan 0481374e1d
[DiscoveryPlus] Add discoveryplus.in (#203)
Closes #201
3 years ago
pukkandan eff635394a
Ability to select nth best format
Eg: -f `bv*.2`

* Also cleaned up the related format selection code
3 years ago
pukkandan df0c81513e
[generic] Detect Invidious' link element (Closes #195) 3 years ago
pukkandan 3f6a90eb63
[ard:mediathek] Fix video id extraction (Closes #202) 3 years ago
pukkandan b050d210df
Fix some typos and linter 3 years ago
pukkandan f4e4be19f0
[sponskrub] Run before embedding thumbnail
Workaround for https://github.com/faissaloo/SponSkrub/issues/29
Closes https://github.com/yt-dlp/yt-dlp/issues/204
3 years ago
pukkandan cce889b900 Update to ytdl v2021-04-01
14f29f087e

Closes #205
3 years ago
nixxo a6ae61a4c2
[la7] Add podcasts and podcast playlists (#198)
Authored by: nixxo
3 years ago
pukkandan b23b9eefd9
[version] update 3 years ago
pukkandan a2f0b0c672
Release 2021.03.24.1 3 years ago
pukkandan b704fc1a68
Revert commit 8562218
[ard] improve clip id extraction
8562218350

This was merged incorrectly
3 years ago
pukkandan a3affbe6a0
Release 2021.03.24 3 years ago
pukkandan 1418a0437f
Update to ytdl-commit-8562218
[ard] improve clip id extraction
8562218350
3 years ago
pukkandan 143db31d48
Parse metadata from multiple fields
Closes #196
3 years ago
pukkandan 3700c7ef10
[linuxacadamy] Fix login 3 years ago
pukkandan 498f560638
Ability to load playlist infojson
* If `--no-clean-infojson` is given, the video ids are saved/loaded from in the infojson along with their playlist index
* If a video entry that was not saved is requested, we fallback to using `webpage_url` to re-extract the entries

Related: https://github.com/yt-dlp/yt-dlp/issues/190#issuecomment-804921024
3 years ago
pukkandan 394dcd4486
Write current epoch to infojson when using `--no-clean-infojson`
Closes #191
3 years ago
pukkandan 83b20a970d
[youtube_live_chat] fix bug when trying to set cookies
Closes #194
3 years ago
pukkandan e1feb88fdf
[niconico] Fix for when logged in
Related: https://github.com/yt-dlp/yt-dlp/issues/171#issuecomment-803692716
Co-authored by: CXwudi, xtkoba
3 years ago
pukkandan 389b9dbbcc
[version] update 3 years ago
pukkandan a7f347d9c9
Release 2021.03.21 3 years ago
pukkandan 421a459573
Update to ytdl-commit-7e79ba7
7e79ba7dd6
[vimeo:album] Fix extraction for albums with number of videos multiple to page size
3 years ago
Matthew c224251aad
[youtube] Show if video is `private`, `unlisted` etc in new field `availability` (#188)
Closes: #185, https://github.com/ytdl-org/youtube-dl/issues/25631

Authored by: colethedj, pukkandan
3 years ago
pukkandan 037cc66ec8
[linuxacadamy] Improve regex
TODO: We need to make a more robust standard regex for fetching js objects from html
3 years ago
Two Sheds" Jackson 9160a0c6a2
[nbc] Improve metadata extraction (#187)
Authored by: 2ShedsJackson
3 years ago
2ShedsJackson 5c5fae6d2f
[amcnetworks] Fix extractor (#179)
* Prefer use of manifest based on `releasePid` since the one based on `videoPid` may have Fairplay
* Additional thumbnail images were added
* Don't add `season_number` and `series` to `title`
* `series` is now set to `None` rather than "_" when empty
* fix bug with age limit

Authored by: 2ShedsJackson
3 years ago
pukkandan c1d3a4a8f0
[niconico] Add user extractor
Co-authored by: animelover1984
3 years ago
pukkandan adc74b3c6d
[bilibili] Add anthology support
Closes: #118

Co-authored by: animelover1984
3 years ago
pukkandan beb4b92a66
More consistent warning messages (#173)
Co-authored by: Damiano Amatruda <damiano.amatruda@outlook.com>
3 years ago
pukkandan cd9b384cc3
Embed video URL metadata inside MP4 (#173)
`mp4` has `comment` and `synopsis`; the synopsis is expected to have the long description
So we save the `webpage_url` to `comment` and `description` to `synopsis`

Related: https://github.com/ytdl-org/youtube-dl/issues/28478

Co-authored by: Damiano Amatruda <damiano.amatruda@outlook.com>
3 years ago
pukkandan 4d971a16b8
Merge webm formats into mkv if thumbnails are to be embedded (#173)
Co-authored by: Damiano Amatruda <damiano.amatruda@outlook.com>
3 years ago
Damiano Amatruda 3561530776
Parse resolution in info dictionary (#173) 3 years ago
Damiano Amatruda 4690688658
Use headers and cookies when downloading subtitles (#173) 3 years ago
pukkandan fe845284c4
[aria2c] Support retry/abort unavailable fragments (#173)
Co-authored by: Damiano Amatruda <damiano.amatruda@outlook.com>
3 years ago
pukkandan 2b3bf01c90 [aria2c] Better default arguments 3 years ago
pukkandan 23c1a66730 Make sure `post_hook` gets the final filename 3 years ago
pukkandan dd18a58cb1 [documentation] Add `SplitChapters` to `--ppa` 3 years ago
pukkandan a94bfd6cfe [splitchapters] Fix for older ffmpeg
Older versions of ffmpeg doesn't allow `-to` as an input option
Closes #180
3 years ago
pukkandan a515a78dd3
fix some typos and linter 3 years ago
pukkandan e167860ce7
[documentation] Add deprecated options and aliases in readme 3 years ago
pukkandan 75d43ca080
Option to keep private keys in the infojson
Options: --clean-infojson, --no-clean-infojson

Related: https://github.com/yt-dlp/yt-dlp/issues/42#issuecomment-800778391
3 years ago
pukkandan 5226731e2d
Recursively remove private keys from infojson
Related: https://github.com/yt-dlp/yt-dlp/issues/42
3 years ago
pukkandan dcf64d43e0
[movefiles] Fix bugs and make more robust 3 years ago
pukkandan e3c076970e
[youtube] bugfix for channel playlist extraction
Bug introduced in cd7c66cf01
3 years ago
pukkandan 7978e172f3
[niconico] Partial fix
TODO:
Smile formats don't work
Extraction code that no longer works needs to be removed

Adapted from:
b5eff52dd9
by animelover1984

Related:
https://github.com/yt-dlp/yt-dlp/issues/171
https://github.com/animelover1984/youtube-dl/issues/29
https://github.com/ytdl-org/youtube-dl/issues/28470
3 years ago
nixxo 605d299f83
[stitcher] Merge from youtube-dl (#175)
This cherry-picks the commits:
a563c97c5c (diff-cc37718b18689c1c0588c4c74518853ef43ab020bbd674f3c04d4eae037798d2)
8522bcd97c (diff-cc37718b18689c1c0588c4c74518853ef43ab020bbd674f3c04d4eae037798d2)

Authored by: nixxo
3 years ago
nixxo 18c1f04362
[rcs] Improved extraction (See desc) (#170)
* improved `video_data` extraction
* added an extra fallback value for `description`
* improved regex in `RCSVariousIE`

Authored by: nixxo
3 years ago
pukkandan e4beae703d
[formatSort] Fix `quality` being ignored
Closes #172
3 years ago
pukkandan d034ab669c
[sponskrub] Pass proxy to sponskrub
Needs atleast sponskrub version:
    faissaloo/sponskrub 3.7.0
    OR yt-dlp/sponskrub 2021.03.15
3 years ago
pukkandan 5aeefbd633
[version] update
:ci skip all
3 years ago
pukkandan 597c18665e
Release 2021.03.15 3 years ago
pukkandan 10db0d2f57
Update to ytdl-commit-3be0980
3be098010f
3 years ago
pukkandan 7275535116
Split video by chapters (#158)
* New options `--split-chapters` and `--no-split-chapters`
* The output/path of the split files can be given using the key `chapter`
* Additional keys `section_title`, `section_number`, `section_start`, `section_end` are available in the output template
* Alias `--split-tracks` for parity with animelover/youtube-dl
* `--sponskrub-cut` and `--split-chapter` cannot work together

Closes:
https://github.com/blackjack4494/yt-dlc/issues/277
https://github.com/ytdl-org/youtube-dl/issues/28438
https://github.com/ytdl-org/youtube-dl/issues/12907
https://github.com/ytdl-org/youtube-dl/issues/6480
https://github.com/ytdl-org/youtube-dl/pull/25005

Rewritten from the implementation by: femaref and Wattux
https://github.com/Wattux/youtube-dl/tree/split-at-timestamps
https://github.com/ytdl-org/youtube-dl/pull/25005
https://github.com/femaref/youtube-dl/tree/split-track
3 years ago
Matthew a1c5d2ca64
[Youtube] Rewrite comment extraction (#167)
Closes #121

TODO:
* Add an option for the user to specify newest/popular and max number of comments
* Refactor the download code and generalize with TabIE
* Parse time_text to timestamp
3 years ago
pukkandan ca87974543
[embedthumbnail] Set mtime correctly
Related: https://github.com/yt-dlp/yt-dlp/issues/67
3 years ago
pukkandan e92caff5d5
Refactor (See desc)
* Create `FFmpegPostProcessor.real_run_ffmpeg` that can accept multiple input/output files along with switches for each
* Rewrite `cli_configuration_args` and related functions
* Create `YoutubeDL._ensure_dir_exists` - this was previously defined in multiple places
3 years ago
CHJ85 ea3a012d2a
[pluto.tv] Add extractor (#163)
https://github.com/ytdl-org/youtube-dl/pull/27621

Authored by: kevinoconnor7
3 years ago
pukkandan 5b8917fb52
[zee5] Support zee5originals 3 years ago
nixxo 8eec0120a2
[rai] fix drm check (#168)
Bug introduced by #150
Authored by: nixxo
3 years ago
shirt 4cf1e5d2f9
Native concurrent downloading of fragments (#166)
* Option `--concurrent-fragments` (`-N`) to set the number of threads

Related: #165

Known issues:
* When receiving Ctrl+C, the process will exit only after finishing the currently downloading fragments
* The download progress shows the speed of only one thread

Authored by shirt-dev
3 years ago
pukkandan 0a473f2f0f
More improvements to HLS/DASH external downloader code
* Fix error when there is no `protocol` in `info_dict`
* Move HLS byte range detection to `Aria2cFD` so that the download will fall back to the native downloader instead of ffmpeg
* Fix bug with getting no fragments in DASH
* Convert `check_results` in `can_download` to a generator
3 years ago
nixxo e4edeb6226
[wimtv] Add extractor (#161)
Added support for VODs, live and embeds

Authored by: nixxo
3 years ago
Ashish d488e254d9
[Zee5] Add Show Extractor (#160)
Co-authored-by: Ashish <ashish@pop-os.localdomain>
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
3 years ago
shirt-dev d7009caa03
Improve HLS/DASH external downloader code (#162)
Authored by: shirt
3 years ago
pukkandan 54759df586
[zee5] Improve regex 3 years ago
nixxo 605b684c2d
[mtv] Add mtv.it and extract series metadata (#156)
* New extractors: MTVItalia, MTVItaliaProgramma
* Extract fields: series, season_number, episode_number

Authored-by: nixxo
3 years ago
pukkandan 994443d24d
[version] update :ci skip all 3 years ago
pukkandan c5640c4508
Release 2021.03.07 3 years ago
teesid 1f52a09e2e
[vimeo] Fix videos with password
https://github.com/ytdl-org/youtube-dl/pull/27992

Fixes: https://github.com/ytdl-org/youtube-dl/issues/28354

Authored by teesid
3 years ago
pukkandan fc21af505c
Fix some videos downloading with m3u8 extension 3 years ago
pukkandan 015f3b3120
[bilibili] Change `Accept` header (Closes #145)
This is a temporary fix. Ideally we should find a more reasonable accept string that just "*/*"

Fixes: https://github.com/ytdl-org/youtube-dl/issues/28363 https://github.com/ytdl-org/youtube-dl/issues/28341

Thanks to animelover1984 for identifying the problem
3 years ago
Ashish 5ba4a0b69c
[Documentation] Inclusion of two-line install script for Unix (#155)
Closes #83
Authored-by: Ashish <ashish@pop-os.localdomain>

ci skip all
3 years ago
nixxo 0852947fcc
[rai] Check for DRM (#150)
Authored by: nixxo <nixxo@protonmail.com>
3 years ago
pukkandan 99594a11ce
Remove "fixup is ignored" warning when fixup wasn't passed by user
Closes #151
3 years ago
pukkandan 2be71994c0
[youtube] Detect when Mixes end or wrap around 3 years ago
pukkandan 26fe8ffed0
[youtube] Fix community page continuation (Closes #152) 3 years ago
nixxo feee67ae88
[gedi] Improvements from youtube-dl (#149)
Authored-by: nixxo <c.nixxo@gmail.com>
3 years ago
Ashish 1caaf92d47
[MXPlayer] Rewrite extractor with show support (#141)
Co-authored-by: Ashish <ashish@pop-os.localdomain>
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
3 years ago
Matthew d069eca7a3
[Youtube] Fix private feeds/playlists on multi-channel accounts (#143)
Authored by: colethedj
3 years ago
Matthew f3eaa8dd1c
[Youtube] Extract alerts from continuation (#144)
Related: #143

Authored by: colethedj
3 years ago
pukkandan 9e631877f8
[downloader] Fix bug for ffmpeg/httpie
Caused by: 7f7de7f94d
3 years ago
pukkandan 36147a63e3
[trovo] Pass origin header (Closes #139)
Fixes: https://github.com/ytdl-org/youtube-dl/issues/28346
3 years ago
pukkandan 57db6a87ef
[lbry] Support lbry:// url
https://github.com/ytdl-org/youtube-dl/pull/28207

Fixes: https://github.com/ytdl-org/youtube-dl/issues/28084

Authored by: nixxo <nixxo@protonmail.com>
3 years ago
pukkandan cd7c66cf01
[youtube] Fix history, trending and mix playlists (#136)
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
Co-authored-by: Matthew <colethedj@protonmail.com>
3 years ago
shirt-dev 2c736b4f61
[cbs] Add support for ParamountPlus (#138)
Related: https://github.com/ytdl-org/youtube-dl/issues/28342

Authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com>
3 years ago
pukkandan c4a508ab31
[update] Fix updater removing the executable bit on some UNIX distros
Closes #133
3 years ago
pukkandan 7815e55572
[update] Fix current build hash for UNIX 3 years ago
pukkandan 162e6f0000
[version] update :ci skip all 3 years ago
pukkandan a8278ababd
Release 2021.03.03.2 3 years ago
pukkandan bd9ed42387
[build] fix bug from da7f321e93 3 years ago
pukkandan 5f7514957f
Release 2021.03.03 3 years ago
pukkandan 3721515bde
Update to ytdl-2021.03.03 3 years ago
Matthew a5c5623470
[YouTube] Use new browse API for continuation page extraction. (#131)
Known issues (these issues existed in previous API as well)
* Mix playlists only give 1 page (25 vids)
* Trending only gives 1 video
* History gives 5 pages (200 vids)

Co-authored-by: colethedj, pukkandan
3 years ago
pukkandan c705177da2
[youtube] Throw error when `--extractor-retries` are exhausted (Closes #130) 3 years ago
pukkandan d6e51845b7
Reduce default of `--extractor-retries` to 3
so that even those not using sleep won't get 429'd on youtube
3 years ago
hseg da7f321e93
Fix packaging bugs (#129)
* Autogenerate `AUTHORS`
* Fix `setup.py` using wrong completion files
* Complete `ChangeLog` -> `Changelog.md` rename
* Make `make tar` respect DESTDIR
* Remove `bin/` `yt-dlp` and `docs/` from tar and sdist
* Make `pypi-files` build all files needed for `python setup.py`
* Add `completions` alias
* Add `devscripts/` and `supportedsites.md` to pip sdist
* Remove `man` target
* Remove `README.txt` from sdist
* Make `clean` more granular
* Move aliases to top

Authored by: hseg <gesh@gesh.uni.cx>
3 years ago
Ashutosh Chaudhary 097b056c5a
[mxplayer] Add new extractor
https://github.com/ytdl-org/youtube-dl/pull/27325
Authored by: codeasashu
3 years ago
Han Dai f3b737ed19
[nick] fix extraction
https://github.com/ytdl-org/youtube-dl/pull/27900
Authored by: DennyDai
3 years ago
pukkandan ee1e05581e
[mtv] Fix extractor by reverting changes made in youtube-dlc
youtube-dl has since fixed the extractor and the changes from the two sources are incompatible
3 years ago
pukkandan ec5e77c558
Update to ytdl-2021.03.02 3 years ago
shirt-dev b3b30a4bca
Fix HLS playlist downloading (#127)
Co-authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com>
3 years ago
pukkandan 5372545ddb
[version] update :ci skip 3 years ago
pukkandan 5ef7d9bdd8
Release 2021.03.01 3 years ago
pukkandan 62bff2c170
Add option `--extractor-retries` to retry on known extractor errors
* Currently only used by youtube

Fixes https://github.com/ytdl-org/youtube-dl/issues/28194
Possibly also fixes: https://github.com/ytdl-org/youtube-dl/issues/28289 (can not confirm since the issue isn't reliably reproducible)
3 years ago
pukkandan f0884c8b3f Cleanup some code (see desc)
* `--get-comments` doesn't imply `--write-info-json` if `-J`, `-j` or `--print-json` are used
* Don't pass `config_location` to `YoutubeDL` (it is unused)
* [bilibiliaudio] Recognize the file as audio-only
* Update gitignore
* Fix typos
3 years ago
pukkandan 277d6ff5f2
Extract comments only when needed #95 (Closes #94) 3 years ago
pukkandan 1cf376f55a Add option `--sleep-requests` to sleep b/w requests (Closes #106)
* Also fix documentation of `sleep_interval_subtitles`

Related issues:
https://github.com/blackjack4494/yt-dlc/issues/158
https://github.com/blackjack4494/youtube-dlc/issues/195
https://github.com/ytdl-org/youtube-dl/pull/28270
https://github.com/ytdl-org/youtube-dl/pull/28144
https://github.com/ytdl-org/youtube-dl/issues/27767
https://github.com/ytdl-org/youtube-dl/issues/23638
https://github.com/ytdl-org/youtube-dl/issues/26287
https://github.com/ytdl-org/youtube-dl/issues/26319
3 years ago
pukkandan 7f7de7f94d Allow specifying path in `--external-downloader` 3 years ago
pukkandan 86878b6cd9 [hrfensehen] Fix wrong import 3 years ago
pukkandan b3d1242534 [youtube] Fix inconsistent `webpage_url` (closes #119) 3 years ago
pukkandan 9bd2020476 [hls] Enable `--hls-use-mpegts` by default when downloading live-streams
* Also added option `--no-hls-use-mpegts` to disable this

Related: #96
3 years ago
pukkandan ed9b7e3dd3 Fix bug with m3u8 format extraction 3 years ago
shirt-dev c552ae8838
Fix `get_executable_path` (#117)
Authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com>
3 years ago
Robin Dunn 31a5e037a7
[viki] Fix viki play pass authentication (#111)
Authored by: RobinD42
3 years ago
pukkandan 3638226215 [ci] Disable download tests unless specifically invoked
Tests can be enabled/disabled using the following in the commit message
* Run Download: `ci-run-dl`
* Skip Core: `ci-skip`
* Skip Quick & Core: `ci-skip-all`
(replace "-" by a space " ")
3 years ago
pukkandan 14fdfea973 [youtube] Retry on incomplete `ytInitialData`
Related: #116
3 years ago
shirt-dev b45d4e4a8e
Fix completion paths, zsh pip completion install (#114) 3 years ago
pukkandan 3e39273418
Merge branch 'master' into fix-paths 3 years ago
shirt-dev b965087396
Readthedocs improvements (#115)
Authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com>

:ci skip dl
3 years ago
hseg 359d6d8650 Fix completion paths, zsh pip completion install
Closes: #108, #110
3 years ago
pukkandan 0e0040519b [embedthumbnail] Fix bug with deleting original thumbnail (Closes #113)
:ci skip dl
3 years ago
pukkandan 127d075955 [documentation] Fix typos (Closes #112)
:ci skip all
3 years ago
pukkandan bce8cbb089 [tennistv] Fix format sorting 3 years ago
pukkandan aae273ded8 [version] update :ci skip dl 3 years ago
pukkandan c74d1aa340 Release 2021.02.24 3 years ago
pukkandan 7c60c33efe Update to ytdl-commit-4460329
44603290e5

Except: gedi, tmz
7422a2194f
8cb4b71909
d81421af4b
3 years ago
pukkandan 0744a815b7 [documentation] Changes left behind from #85 and #107 3 years ago
Pccode66 7a5c1cfe93
Completely change project name to yt-dlp (#85)
* All modules and binary names are changed
* All documentation references changed
* yt-dlp no longer loads youtube-dlc config files
* All URLs changed to point to organization account

Co-authored-by: Pccode66
Co-authored-by: pukkandan
3 years ago
pukkandan c4218ac3f1 Fix `--windows-filenames` removing `/` from UNIX paths
:ci skip all
3 years ago
shirt-dev a17417e8ca
Readthedocs support (#107)
Authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com>
3 years ago
pukkandan 5b1ecbb327 [ffmpeg] Allow passing custom arguments before -i
:ci skip dl
3 years ago
pukkandan e409895f13 [documentation] Fix documentation of "Extractor Options" 3 years ago
shirt-dev 310c2ed2c6
Better support HLS media discontinuity and fully support media initialization (#105)
* Added options: `--hls-split-discontinuity` and `--no-hls-split-discontinuity`

Authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com>
3 years ago
pukkandan c8d83a22ef [tennistv] Fix extractor (Closes #104) 3 years ago
shirt-dev b1bb77d75f
Basic support for HLS media initialization (#103)
Co-authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com>
Co-authored-by: pukkandan <pukkandan@gmail.com>
3 years ago
pukkandan 389e2956a7 [jwplatform] Add support for `hyland.com`
Related: https://github.com/ytdl-org/youtube-dl/issues/12918

:ci skip dl
3 years ago
Ashish da6dcbad7d
[Zee5] Add new extractor (#100)
Co-authored-by: Ashish <ashish@pop-os.localdomain>
Co-authored-by: pukkandan <pukkandan@gmail.com>
3 years ago
pukkandan 6cfda0582b [documentaion] Document `playable_in_embed`
:ci skip all
3 years ago
pukkandan f76ede8ee4 [youtube] Show if video was a live stream in info 3 years ago
pukkandan e094cec18c [documentation] Document `all` in format selection (Closes #101)
:ci skip all
3 years ago
pukkandan d9524b89b7 [hls] Show warning if pycryptodome is not found
:ci skip dl
3 years ago
pukkandan ad68b9f07f [version] update
:ci skip all
3 years ago
pukkandan 4524baf056 Release 2021.02.19 3 years ago
pukkandan bc2ca1bb75 Update to ytdl-commit-cf2dbec
cf2dbec630

Except: [kakao] improve info extraction and detect geo restriction
d8085580f6
3 years ago
pukkandan 5e41dca334 [viki] Fix extractor (Closes #91) 3 years ago
pukkandan 2a86f3da07 [build] Publish on PyPi only if token is set
This allows forks to easily build releases
:ci skip all
3 years ago
pukkandan a40258a259 [documentation] Remove `--flat-videos`
It does not work as documented
It was an experimental option that I forgot to remove when making the fork public

:ci skip all
3 years ago
pukkandan ba7bf12d89 [youtube] Fix for empty comment text (Closes #97) 3 years ago
pukkandan f983b87567 [formatsort] Remove misuse of 'preference'
'preference' is to be used only when the format is better that ALL qualities of a lower preference irrespective of ANY sorting order the user requests. See deezer.py for correct use of this

In the older sorting method, `preference`, `quality` and `language_preference` were functionally almost equivalent. So these disparities doesn't really matter there

Also, despite what the documentation says, the default for `preference` was actually 0 and not -1. I have tried to correct this and also account for it when converting `preference` to `quality`
3 years ago
pukkandan dca3ff4a5e [formatsort] Remove forced priority of `quality`
When making `FormatSort`, I misinterpreted the purpose `quality`
3 years ago
pukkandan da9be05edf [documentation] Better document `--prefer-free-formats`
Also added `--no-prefer-free-formats`
3 years ago
pukkandan 155d2b48c5 [formatsort] Prefer vp9.2 over other vp9 codecs
vp9.2 may contain HDR while vp9.0 doesn't
3 years ago
pukkandan 54f37eeabd [formatsort] Remove unnecessary `field_preference` from extractors
These were written with the old format sorting in mind and is no longer needed
3 years ago
pukkandan 9ba5705ac0 [youtube] Fix hashtag continuation
Eg: https://www.youtube.com/hashtag/youtube

:ci skip dl
3 years ago
pukkandan c2934512c2 Option `--windows-filenames` to force use of windows compatible filenames
* Also changed `--trim-file-name` to `--trim-filenames` to be similar to related options

Related: https://web.archive.org/web/20210217190806/https://old.reddit.com/r/youtubedl/comments/llc4o5/do_you_guys_also_have_this_error

:ci skip dl
3 years ago
shirt-dev 55e36f035c
#93 Build improvements
* Lock all python package versions to the last officially supported releases for x86
* Bugfix for UNIX hash output
* Use wheels to avoid compilation of python packages
* Hash calculation on Windows now uses PowerShell rather than the legacy certutil

Authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com>
3 years ago
pukkandan c86d5023d0 [youtube] Add more Invidious instances (Closes #92)
:ci skip dl
3 years ago
pukkandan 42bb0c59f8 [MoveFiles] Fix when merger can't run
:ci skip dl
3 years ago
pukkandan c3e1f0c4f2 [contributors] update
Forgot to do it when making release

:ci skip dl
3 years ago
pukkandan 6b027907ce Don't raise parser.error when exiting for update 3 years ago
pukkandan f3b7c69377 [version] Set version number based on UTC time, not local time 3 years ago
Jody Bruchon 46261325be
#89 [pyinst.py] Exclude vcruntime140.dll from UPX (#89)
Related: https://github.com/blackjack4494/yt-dlc/pull/182 (7b400ac40b)

Authored by: jbruchon
3 years ago
kurumigi 78b9a616cc
#90 [niconico] Extract `channel` and `channel_id` (Closes #77)
Authored by kurumigi
3 years ago
pukkandan 55b53b338b [ExtractAudio] Bugfix for 1de75fa129
Fixes: #58
:ci skip dl
3 years ago
pukkandan d16ab6ef1c [version] update
:ci skip dl
3 years ago
pukkandan aa837ddf06 Release 2021.02.15 3 years ago
pukkandan a718ef84c8 [youtube] Fix for new accounts
Cookies for some new accounts doesn't work with age-gated videos without `has_verified=1`
3 years ago
shirt-dev 44f705d001
#88 Implement SHA256 checking for autoupdater
* Also fix bugs from e5813e53f0

Authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com>

:ci skip dl
3 years ago
shirt-dev 47930b73a5
Fix build.yml hashing and crypto support (#87)
Authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com>
3 years ago
pukkandan 1de75fa129 [ExtractAudio] Don't re-encode when file is already in a common audio format (Closes #58)
Fixes: https://github.com/blackjack4494/youtube-dlc/issues/214
Fixes: https://github.com/ytdl-org/youtube-dl/issues/28006
3 years ago
pukkandan 6285297795 [rumble] Add support for video page (Closes #80) 3 years ago
pukkandan e5813e53f0 Improve build/updater
* Fix `get_executable_path` in UNIX
* Update `x86.exe` correctly
* Exit immediately in windows once the update process starts so that the file handle is released correctly
* Show `exe`/`zip`/`source` and 32/64bit in verbose message
* Look for both `yt-dlp` and `youtube-dlc` in releases. This ensures that the updater will keep working when the binary name is changed to yt-dlp
* Disable pycryptodome in win_x86 since it causes `distutils.errors.DistutilsPlatformError: Microsoft Visual C++ 10.0 is required`
3 years ago
siikamiika 273762c8d0
#86 [youtube_live_chat] Use POST API (Closes #82)
YouTube has removed support for the old GET based live chat API, and it's now returning 404

Authored by siikamiika
3 years ago
shirt-dev 7620cd46c3
#79 Fix HLS AES-128 with multiple keys in external downloaders
Authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com>
3 years ago
pukkandan 068693675e Cleanup some code and fix typos
:ci skip dl
3 years ago
pukkandan 1ea2412927 Minor bugfixes
* `__real_download` should be false when ffmpeg unavailable and no download
* Mistakes in #70
* `allow_playlist_files` was not correctly pass through
3 years ago
shirt-dev 63ad4d43eb
#70 Allow downloading of unplayable video formats
Video postprocessors are also turned off when this option is used

Co-authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com>
Co-authored-by: pukkandan <pukkandan@gmail.com>
3 years ago
pukkandan 584bab3766 [sponskrub] Print ffmpeg output and errors to terminal
The ffmpeg run can be long when using `--sponskrub-cut`. So progress needs to be printed

:ci skip dl
3 years ago
shirt-dev fc2119f210
#76 Fix for empty HTTP head requests
Related: https://github.com/ytdl-org/youtube-dl/issues/7181

Authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com> (shirt-dev)
3 years ago
shirt-dev 5d25607a3a
#75 Change optional dependency from `Crypto` to `pycryptodome` (Closes #74)
Authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com> (shirt-dev)

pycryptodome is an in-place replacement for Crypto and is more actively developed
3 years ago
pukkandan a96c6d154a [youtube] Fix search continuations 3 years ago
pukkandan cc2db87805 Update to ytdl-2021.02.10
Except: [archiveorg] Fix and improve extraction (5fc53690cbe6abb11941a3f4846b566a7472753e)
3 years ago
shirt-dev 539d158c50
#72 Fix issue with unicode filenames in aria2c (Closes #71)
Authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com> (shirt-dev)
3 years ago
kurumigi fb198a8a9c
#49 [niconico] Improved extraction and support encrypted/SMILE movies
Co-authored-by: tsukumijima <tsukumijima@users.noreply.github.com>
Co-authored-by: tsukumi <39271166+tsukumijima@users.noreply.github.com>
Co-authored-by: Bepis <36346617+bbepis@users.noreply.github.com>
Co-authored-by: pukkandan <pukkandan@gmail.com>
3 years ago
pukkandan 8d801631cf [version] update
:ci skip all
3 years ago
pukkandan ba9f36d732 Release 2021.02.09 3 years ago
pukkandan cffab0eefc [embedsubtitle] Keep original subtitle after conversion if write_subtitles given
Closes: https://github.com/pukkandan/yt-dlp/issues/57#issuecomment-775227745

:ci skip dl
3 years ago
pukkandan 2e339f59c3 [embedthumbnail] Keep original thumbnail after conversion if write_thumbnail given (Closes #67)
Closes https://github.com/ytdl-org/youtube-dl/issues/27041

:ci skip dl
3 years ago
pukkandan 6c4fd172de Add fallback for thumbnails
Workaround for: https://github.com/ytdl-org/youtube-dl/issues/28023
Related: https://github.com/ytdl-org/youtube-dl/pull/28031

Also fixes https://www.reddit.com/r/youtubedl/comments/lfslw1/youtubedlp_with_aria2c_for_dash_support_is/gmolt0r?context=3
3 years ago
pukkandan deaec5afc2 [youtube] Fix tests 3 years ago
pukkandan 69184e4152 [youtube] Simplified renderer parsing 3 years ago
pukkandan a1b535bd75 [youtube] Support gridPlaylistRenderer and gridVideoRenderer (Closes #65) 3 years ago
pukkandan b3943b2f33 [pyinst.py] Move back to root dir (Closes #63) 3 years ago
shirt-dev 3dd264bf42
#64 Implement self updater
Co-authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com> (shirt-dev)
Co-authored-by: pukkandan <pukkandan@gmail.com>
3 years ago
pukkandan efabc16165 [postprocessor] Fix bug (Closes #62)
introduced by: 1bf540d28b

:ci skip dl
3 years ago
shirt-dev 5219cb3e75
#55 Add aria2c support for DASH (mpd) and HLS (m3u8)
Co-authored-by: Dan <2660574+shirtjs@users.noreply.github.com>
Co-authored-by: pukkandan <pukkandan@gmail.com>
3 years ago
pukkandan ff84930c86 [youtube] Bugfix (Closes #60) 3 years ago
pukkandan 06ff212d64 [documentation] Crypto is an optional dependency 3 years ago
pukkandan 1bf540d28b [sponskrub] Don't raise error when the video does not exist
Eg: `--convert-sub srt --no-download --sponskrub` gave error before

:ci skip dl
3 years ago
pukkandan df692c5a7a [remuxvideo] Fix validation of conditional remux 3 years ago
pukkandan ecc97af344 [youtube] Don't show warning for empty playlist description (Closes #54)
:ci skip dl
3 years ago
pukkandan 8a0b932258 [movefiles] Fix compatibility with python2
:ci skip dl
3 years ago
pukkandan 4d608b522f [youtube_live_chat] Improve extraction
:ci skip dl
3 years ago
pukkandan 885d36d4e4 [youtube] Fix comment extraction (Closes #53)
:ci skip dl
3 years ago
pukkandan 0fd1a2b0bf [version] update (and linter) 3 years ago

@ -0,0 +1,8 @@
root = true
[**.py]
charset = utf-8
indent_size = 4
indent_style = space
trim_trailing_whitespace = true
insert_final_newline = true

6
.gitattributes vendored

@ -0,0 +1,6 @@
* text=auto
Makefile* text whitespace=-tab-in-indent
*.sh text eol=lf
*.md diff=markdown
*.py diff=python

@ -0,0 +1,13 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: ['https://github.com/yt-dlp/yt-dlp/blob/master/Collaborators.md#collaborators']

@ -1,70 +0,0 @@
---
name: Broken site support
about: Report broken or misfunctioning site
title: "[Broken]"
labels: Broken
assignees: ''
---
<!--
######################################################################
WARNING!
IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE
######################################################################
-->
## Checklist
<!--
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
- First of, make sure you are using the latest version of yt-dlp. Run `youtube-dlc --version` and ensure your version is 2021.01.29. If it's not, see https://github.com/pukkandan/yt-dlp on how to update. Issues with outdated version will be REJECTED.
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
- Make sure that all URLs and arguments with special characters are properly quoted or escaped as explained in https://github.com/pukkandan/yt-dlp.
- Search the bugtracker for similar issues: https://github.com/pukkandan/yt-dlp. DO NOT post duplicates.
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
-->
- [ ] I'm reporting a broken site support
- [ ] I've verified that I'm running yt-dlp version **2021.01.29**
- [ ] I've checked that all provided URLs are alive and playable in a browser
- [ ] I've checked that all URLs and arguments with special characters are properly quoted or escaped
- [ ] I've searched the bugtracker for similar issues including closed ones
## Verbose log
<!--
Provide the complete verbose output of youtube-dlc that clearly demonstrates the problem.
Add the `-v` flag to your command line you run youtube-dlc with (`youtube-dlc -v <your command line>`), copy the WHOLE output and insert it below. It should look similar to this:
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'-v', u'http://www.youtube.com/watch?v=BaW_jenozKcj']
[debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251
[debug] yt-dlp version 2021.01.29
[debug] Python version 2.7.11 - Windows-2003Server-5.2.3790-SP2
[debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4
[debug] Proxy map: {}
<more lines>
-->
```
PASTE VERBOSE LOG HERE
```
<!--
Do not remove the above ```
-->
## Description
<!--
Provide an explanation of your issue in an arbitrary form. Provide any additional information, suggested solution and as much context and examples as possible.
If work on your issue requires account credentials please provide them or explain how one can obtain them.
-->
WRITE DESCRIPTION HERE

@ -0,0 +1,79 @@
name: Broken site support
description: Report issue with yt-dlp on a supported site
labels: [triage, site-bug]
body:
- type: checkboxes
attributes:
label: DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE
description: Fill all fields even if you think it is irrelevant for the issue
options:
- label: I understand that I will be **blocked** if I *intentionally* remove or skip any mandatory\* field
required: true
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: |
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
options:
- label: I'm reporting that yt-dlp is broken on a **supported** site
required: true
- label: I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
required: true
- label: I've checked that all provided URLs are playable in a browser with the same IP and same login details
required: true
- label: I've checked that all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/yt-dlp/yt-dlp/wiki/FAQ#video-url-contains-an-ampersand--and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)
required: true
- label: I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
required: true
- label: I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
required: true
- label: I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and I'm willing to share it if required
- type: input
id: region
attributes:
label: Region
description: Enter the country/region that the site is accessible from
placeholder: India
- type: textarea
id: description
attributes:
label: Provide a description that is worded well enough to be understood
description: See [is-the-description-of-the-issue-itself-sufficient](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#is-the-description-of-the-issue-itself-sufficient)
placeholder: Provide any additional information, any suggested solutions, and as much context and examples as possible
validations:
required: true
- type: checkboxes
id: verbose
attributes:
label: Provide verbose output that clearly demonstrates the problem
options:
- label: Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)
required: true
- label: "If using API, add `'verbose': True` to `YoutubeDL` params instead"
required: false
- label: Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below
required: true
- type: textarea
id: log
attributes:
label: Complete Verbose Output
description: |
It should start like this:
placeholder: |
[debug] Command-line config: ['-vU', 'https://www.youtube.com/watch?v=BaW_jenozKc']
[debug] Encodings: locale cp65001, fs utf-8, pref cp65001, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version nightly@... from yt-dlp/yt-dlp [b634ba742] (win_exe)
[debug] Python 3.8.10 (CPython 64bit) - Windows-10-10.0.22000-SP0
[debug] exe versions: ffmpeg N-106550-g072101bd52-20220410 (fdk,setts), ffprobe N-106624-g391ce570c8-20220415, phantomjs 2.1.1
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests
[debug] Loaded 1893 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
yt-dlp is up to date (nightly@... from yt-dlp/yt-dlp-nightly-builds)
[youtube] Extracting URL: https://www.youtube.com/watch?v=BaW_jenozKc
<more lines>
render: shell
validations:
required: true

@ -1,56 +0,0 @@
---
name: Site support request
about: Request support for a new site
title: "[Site Request]"
labels: Request
assignees: ''
---
<!--
######################################################################
WARNING!
IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE
######################################################################
-->
## Checklist
<!--
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
- First of, make sure you are using the latest version of yt-dlp. Run `youtube-dlc --version` and ensure your version is 2021.01.29. If it's not, see https://github.com/pukkandan/yt-dlp on how to update. Issues with outdated version will be REJECTED.
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
- Make sure that site you are requesting is not dedicated to copyright infringement, see https://github.com/pukkandan/yt-dlp. yt-dlp does not support such sites. In order for site support request to be accepted all provided example URLs should not violate any copyrights.
- Search the bugtracker for similar site support requests: https://github.com/pukkandan/yt-dlp. DO NOT post duplicates.
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
-->
- [ ] I'm reporting a new site support request
- [ ] I've verified that I'm running yt-dlp version **2021.01.29**
- [ ] I've checked that all provided URLs are alive and playable in a browser
- [ ] I've checked that none of provided URLs violate any copyrights
- [ ] I've searched the bugtracker for similar site support requests including closed ones
## Example URLs
<!--
Provide all kinds of example URLs support for which should be included. Replace following example URLs by yours.
-->
- Single video: https://www.youtube.com/watch?v=BaW_jenozKc
- Single video: https://youtu.be/BaW_jenozKc
- Playlist: https://www.youtube.com/playlist?list=PL4lCao7KL_QFVb7Iudeipvc2BCavECqzc
## Description
<!--
Provide any additional information.
If work on your issue requires account credentials please provide them or explain how one can obtain them.
-->
WRITE DESCRIPTION HERE

@ -0,0 +1,91 @@
name: Site support request
description: Request support for a new site
labels: [triage, site-request]
body:
- type: checkboxes
attributes:
label: DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE
description: Fill all fields even if you think it is irrelevant for the issue
options:
- label: I understand that I will be **blocked** if I *intentionally* remove or skip any mandatory\* field
required: true
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: |
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
options:
- label: I'm reporting a new site support request
required: true
- label: I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
required: true
- label: I've checked that all provided URLs are playable in a browser with the same IP and same login details
required: true
- label: I've checked that none of provided URLs [violate any copyrights](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#is-the-website-primarily-used-for-piracy) or contain any [DRM](https://en.wikipedia.org/wiki/Digital_rights_management) to the best of my knowledge
required: true
- label: I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
required: true
- label: I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
required: true
- label: I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and am willing to share it if required
- type: input
id: region
attributes:
label: Region
description: Enter the country/region that the site is accessible from
placeholder: India
- type: textarea
id: example-urls
attributes:
label: Example URLs
description: |
Provide all kinds of example URLs for which support should be added
placeholder: |
- Single video: https://www.youtube.com/watch?v=BaW_jenozKc
- Single video: https://youtu.be/BaW_jenozKc
- Playlist: https://www.youtube.com/playlist?list=PL4lCao7KL_QFVb7Iudeipvc2BCavECqzc
validations:
required: true
- type: textarea
id: description
attributes:
label: Provide a description that is worded well enough to be understood
description: See [is-the-description-of-the-issue-itself-sufficient](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#is-the-description-of-the-issue-itself-sufficient)
placeholder: Provide any additional information, any suggested solutions, and as much context and examples as possible
validations:
required: true
- type: checkboxes
id: verbose
attributes:
label: Provide verbose output that clearly demonstrates the problem
options:
- label: Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)
required: true
- label: "If using API, add `'verbose': True` to `YoutubeDL` params instead"
required: false
- label: Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below
required: true
- type: textarea
id: log
attributes:
label: Complete Verbose Output
description: |
It should start like this:
placeholder: |
[debug] Command-line config: ['-vU', 'https://www.youtube.com/watch?v=BaW_jenozKc']
[debug] Encodings: locale cp65001, fs utf-8, pref cp65001, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version nightly@... from yt-dlp/yt-dlp [b634ba742] (win_exe)
[debug] Python 3.8.10 (CPython 64bit) - Windows-10-10.0.22000-SP0
[debug] exe versions: ffmpeg N-106550-g072101bd52-20220410 (fdk,setts), ffprobe N-106624-g391ce570c8-20220415, phantomjs 2.1.1
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests
[debug] Loaded 1893 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
yt-dlp is up to date (nightly@... from yt-dlp/yt-dlp-nightly-builds)
[youtube] Extracting URL: https://www.youtube.com/watch?v=BaW_jenozKc
<more lines>
render: shell
validations:
required: true

@ -1,40 +0,0 @@
---
name: Site feature request
about: Request a new functionality for a site
title: "[Site Request]"
labels: Request
assignees: ''
---
<!--
######################################################################
WARNING!
IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE
######################################################################
-->
## Checklist
<!--
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
- First of, make sure you are using the latest version of yt-dlp. Run `youtube-dlc --version` and ensure your version is 2021.01.29. If it's not, see https://github.com/pukkandan/yt-dlp on how to update. Issues with outdated version will be REJECTED.
- Search the bugtracker for similar site feature requests: https://github.com/pukkandan/yt-dlp. DO NOT post duplicates.
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
-->
- [ ] I'm reporting a site feature request
- [ ] I've verified that I'm running yt-dlp version **2021.01.29**
- [ ] I've searched the bugtracker for similar site feature requests including closed ones
## Description
<!--
Provide an explanation of your site feature request in an arbitrary form. Please make sure the description is worded well enough to be understood, see https://github.com/ytdl-org/youtube-dl#is-the-description-of-the-issue-itself-sufficient. Provide any additional information, suggested solution and as much context and examples as possible.
-->
WRITE DESCRIPTION HERE

@ -0,0 +1,87 @@
name: Site feature request
description: Request a new functionality for a supported site
labels: [triage, site-enhancement]
body:
- type: checkboxes
attributes:
label: DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE
description: Fill all fields even if you think it is irrelevant for the issue
options:
- label: I understand that I will be **blocked** if I *intentionally* remove or skip any mandatory\* field
required: true
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: |
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
options:
- label: I'm requesting a site-specific feature
required: true
- label: I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
required: true
- label: I've checked that all provided URLs are playable in a browser with the same IP and same login details
required: true
- label: I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
required: true
- label: I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
required: true
- label: I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and I'm willing to share it if required
- type: input
id: region
attributes:
label: Region
description: Enter the country/region that the site is accessible from
placeholder: India
- type: textarea
id: example-urls
attributes:
label: Example URLs
description: |
Example URLs that can be used to demonstrate the requested feature
placeholder: |
https://www.youtube.com/watch?v=BaW_jenozKc
validations:
required: true
- type: textarea
id: description
attributes:
label: Provide a description that is worded well enough to be understood
description: See [is-the-description-of-the-issue-itself-sufficient](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#is-the-description-of-the-issue-itself-sufficient)
placeholder: Provide any additional information, any suggested solutions, and as much context and examples as possible
validations:
required: true
- type: checkboxes
id: verbose
attributes:
label: Provide verbose output that clearly demonstrates the problem
options:
- label: Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)
required: true
- label: "If using API, add `'verbose': True` to `YoutubeDL` params instead"
required: false
- label: Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below
required: true
- type: textarea
id: log
attributes:
label: Complete Verbose Output
description: |
It should start like this:
placeholder: |
[debug] Command-line config: ['-vU', 'https://www.youtube.com/watch?v=BaW_jenozKc']
[debug] Encodings: locale cp65001, fs utf-8, pref cp65001, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version nightly@... from yt-dlp/yt-dlp [b634ba742] (win_exe)
[debug] Python 3.8.10 (CPython 64bit) - Windows-10-10.0.22000-SP0
[debug] exe versions: ffmpeg N-106550-g072101bd52-20220410 (fdk,setts), ffprobe N-106624-g391ce570c8-20220415, phantomjs 2.1.1
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests
[debug] Loaded 1893 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
yt-dlp is up to date (nightly@... from yt-dlp/yt-dlp-nightly-builds)
[youtube] Extracting URL: https://www.youtube.com/watch?v=BaW_jenozKc
<more lines>
render: shell
validations:
required: true

@ -1,72 +0,0 @@
---
name: Bug report
about: Report a bug unrelated to any particular site or extractor
title: ''
labels: ''
assignees: ''
---
<!--
######################################################################
WARNING!
IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE
######################################################################
-->
## Checklist
<!--
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
- First of, make sure you are using the latest version of yt-dlp. Run `youtube-dlc --version` and ensure your version is 2021.01.29. If it's not, see https://github.com/pukkandan/yt-dlp on how to update. Issues with outdated version will be REJECTED.
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
- Make sure that all URLs and arguments with special characters are properly quoted or escaped as explained in https://github.com/pukkandan/yt-dlp.
- Search the bugtracker for similar issues: https://github.com/pukkandan/yt-dlp. DO NOT post duplicates.
- Read bugs section in FAQ: https://github.com/pukkandan/yt-dlp
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
-->
- [ ] I'm reporting a broken site support issue
- [ ] I've verified that I'm running yt-dlp version **2021.01.29**
- [ ] I've checked that all provided URLs are alive and playable in a browser
- [ ] I've checked that all URLs and arguments with special characters are properly quoted or escaped
- [ ] I've searched the bugtracker for similar bug reports including closed ones
- [ ] I've read bugs section in FAQ
## Verbose log
<!--
Provide the complete verbose output of youtube-dlc that clearly demonstrates the problem.
Add the `-v` flag to your command line you run youtube-dlc with (`youtube-dlc -v <your command line>`), copy the WHOLE output and insert it below. It should look similar to this:
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'-v', u'http://www.youtube.com/watch?v=BaW_jenozKcj']
[debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251
[debug] yt-dlp version 2021.01.29
[debug] Python version 2.7.11 - Windows-2003Server-5.2.3790-SP2
[debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4
[debug] Proxy map: {}
<more lines>
-->
```
PASTE VERBOSE LOG HERE
```
<!--
Do not remove the above ```
-->
## Description
<!--
Provide an explanation of your issue in an arbitrary form. Please make sure the description is worded well enough to be understood, see https://github.com/ytdl-org/youtube-dl#is-the-description-of-the-issue-itself-sufficient. Provide any additional information, suggested solution and as much context and examples as possible.
If work on your issue requires account credentials please provide them or explain how one can obtain them.
-->
WRITE DESCRIPTION HERE

@ -0,0 +1,72 @@
name: Core bug report
description: Report a bug unrelated to any particular site or extractor
labels: [triage, bug]
body:
- type: checkboxes
attributes:
label: DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE
description: Fill all fields even if you think it is irrelevant for the issue
options:
- label: I understand that I will be **blocked** if I *intentionally* remove or skip any mandatory\* field
required: true
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: |
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
options:
- label: I'm reporting a bug unrelated to a specific site
required: true
- label: I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
required: true
- label: I've checked that all provided URLs are playable in a browser with the same IP and same login details
required: true
- label: I've checked that all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/yt-dlp/yt-dlp/wiki/FAQ#video-url-contains-an-ampersand--and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)
required: true
- label: I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
required: true
- label: I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
required: true
- type: textarea
id: description
attributes:
label: Provide a description that is worded well enough to be understood
description: See [is-the-description-of-the-issue-itself-sufficient](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#is-the-description-of-the-issue-itself-sufficient)
placeholder: Provide any additional information, any suggested solutions, and as much context and examples as possible
validations:
required: true
- type: checkboxes
id: verbose
attributes:
label: Provide verbose output that clearly demonstrates the problem
options:
- label: Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)
required: true
- label: "If using API, add `'verbose': True` to `YoutubeDL` params instead"
required: false
- label: Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below
required: true
- type: textarea
id: log
attributes:
label: Complete Verbose Output
description: |
It should start like this:
placeholder: |
[debug] Command-line config: ['-vU', 'https://www.youtube.com/watch?v=BaW_jenozKc']
[debug] Encodings: locale cp65001, fs utf-8, pref cp65001, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version nightly@... from yt-dlp/yt-dlp [b634ba742] (win_exe)
[debug] Python 3.8.10 (CPython 64bit) - Windows-10-10.0.22000-SP0
[debug] exe versions: ffmpeg N-106550-g072101bd52-20220410 (fdk,setts), ffprobe N-106624-g391ce570c8-20220415, phantomjs 2.1.1
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests
[debug] Loaded 1893 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
yt-dlp is up to date (nightly@... from yt-dlp/yt-dlp-nightly-builds)
[youtube] Extracting URL: https://www.youtube.com/watch?v=BaW_jenozKc
<more lines>
render: shell
validations:
required: true

@ -1,40 +0,0 @@
---
name: Feature request
about: Request a new functionality unrelated to any particular site or extractor
title: "[Feature Request]"
labels: Request
assignees: ''
---
<!--
######################################################################
WARNING!
IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE
######################################################################
-->
## Checklist
<!--
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
- First of, make sure you are using the latest version of yt-dlp. Run `youtube-dlc --version` and ensure your version is 2021.01.29. If it's not, see https://github.com/pukkandan/yt-dlp on how to update. Issues with outdated version will be REJECTED.
- Search the bugtracker for similar feature requests: https://github.com/pukkandan/yt-dlp. DO NOT post duplicates.
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
-->
- [ ] I'm reporting a feature request
- [ ] I've verified that I'm running yt-dlp version **2021.01.29**
- [ ] I've searched the bugtracker for similar feature requests including closed ones
## Description
<!--
Provide an explanation of your issue in an arbitrary form. Please make sure the description is worded well enough to be understood, see https://github.com/ytdl-org/youtube-dl#is-the-description-of-the-issue-itself-sufficient. Provide any additional information, suggested solution and as much context and examples as possible.
-->
WRITE DESCRIPTION HERE

@ -0,0 +1,66 @@
name: Feature request
description: Request a new functionality unrelated to any particular site or extractor
labels: [triage, enhancement]
body:
- type: checkboxes
attributes:
label: DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE
description: Fill all fields even if you think it is irrelevant for the issue
options:
- label: I understand that I will be **blocked** if I *intentionally* remove or skip any mandatory\* field
required: true
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: |
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
options:
- label: I'm requesting a feature unrelated to a specific site
required: true
- label: I've looked through the [README](https://github.com/yt-dlp/yt-dlp#readme)
required: true
- label: I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
required: true
- label: I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
required: true
- label: I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
required: true
- type: textarea
id: description
attributes:
label: Provide a description that is worded well enough to be understood
description: See [is-the-description-of-the-issue-itself-sufficient](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#is-the-description-of-the-issue-itself-sufficient)
placeholder: Provide any additional information, any suggested solutions, and as much context and examples as possible
validations:
required: true
- type: checkboxes
id: verbose
attributes:
label: Provide verbose output that clearly demonstrates the problem
options:
- label: Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)
- label: "If using API, add `'verbose': True` to `YoutubeDL` params instead"
required: false
- label: Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below
- type: textarea
id: log
attributes:
label: Complete Verbose Output
description: |
It should start like this:
placeholder: |
[debug] Command-line config: ['-vU', 'https://www.youtube.com/watch?v=BaW_jenozKc']
[debug] Encodings: locale cp65001, fs utf-8, pref cp65001, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version nightly@... from yt-dlp/yt-dlp [b634ba742] (win_exe)
[debug] Python 3.8.10 (CPython 64bit) - Windows-10-10.0.22000-SP0
[debug] exe versions: ffmpeg N-106550-g072101bd52-20220410 (fdk,setts), ffprobe N-106624-g391ce570c8-20220415, phantomjs 2.1.1
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests
[debug] Loaded 1893 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
yt-dlp is up to date (nightly@... from yt-dlp/yt-dlp-nightly-builds)
[youtube] Extracting URL: https://www.youtube.com/watch?v=BaW_jenozKc
<more lines>
render: shell

@ -1,40 +0,0 @@
---
name: Ask question
about: Ask youtube-dl related question
title: "[Question]"
labels: question
assignees: ''
---
<!--
######################################################################
WARNING!
IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE
######################################################################
-->
## Checklist
<!--
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
- Look through the README (https://github.com/pukkandan/yt-dlp) and FAQ (https://github.com/pukkandan/yt-dlp) for similar questions
- Search the bugtracker for similar questions: https://github.com/blackjack4494/yt-dlc
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
-->
- [ ] I'm asking a question
- [ ] I've looked through the README and FAQ for similar questions
- [ ] I've searched the bugtracker for similar questions including closed ones
## Question
<!--
Ask your question in an arbitrary form. Please make sure it's worded well enough to be understood, see https://github.com/blackjack4494/yt-dlc.
-->
WRITE QUESTION HERE

@ -0,0 +1,72 @@
name: Ask question
description: Ask yt-dlp related question
labels: [question]
body:
- type: checkboxes
attributes:
label: DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE
description: Fill all fields even if you think it is irrelevant for the issue
options:
- label: I understand that I will be **blocked** if I *intentionally* remove or skip any mandatory\* field
required: true
- type: markdown
attributes:
value: |
### Make sure you are **only** asking a question and not reporting a bug or requesting a feature.
If your question contains "isn't working" or "can you add", this is most likely the wrong template.
If you are in doubt whether this is the right template, **USE ANOTHER TEMPLATE**!
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: |
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
options:
- label: I'm asking a question and **not** reporting a bug or requesting a feature
required: true
- label: I've looked through the [README](https://github.com/yt-dlp/yt-dlp#readme)
required: true
- label: I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
required: true
- label: I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar questions **including closed ones**. DO NOT post duplicates
required: true
- label: I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
required: true
- type: textarea
id: question
attributes:
label: Please make sure the question is worded well enough to be understood
description: See [is-the-description-of-the-issue-itself-sufficient](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#is-the-description-of-the-issue-itself-sufficient)
placeholder: Provide any additional information and as much context and examples as possible
validations:
required: true
- type: checkboxes
id: verbose
attributes:
label: Provide verbose output that clearly demonstrates the problem
options:
- label: Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)
- label: "If using API, add `'verbose': True` to `YoutubeDL` params instead"
required: false
- label: Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below
- type: textarea
id: log
attributes:
label: Complete Verbose Output
description: |
It should start like this:
placeholder: |
[debug] Command-line config: ['-vU', 'https://www.youtube.com/watch?v=BaW_jenozKc']
[debug] Encodings: locale cp65001, fs utf-8, pref cp65001, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version nightly@... from yt-dlp/yt-dlp [b634ba742] (win_exe)
[debug] Python 3.8.10 (CPython 64bit) - Windows-10-10.0.22000-SP0
[debug] exe versions: ffmpeg N-106550-g072101bd52-20220410 (fdk,setts), ffprobe N-106624-g391ce570c8-20220415, phantomjs 2.1.1
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests
[debug] Loaded 1893 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
yt-dlp is up to date (nightly@... from yt-dlp/yt-dlp-nightly-builds)
[youtube] Extracting URL: https://www.youtube.com/watch?v=BaW_jenozKc
<more lines>
render: shell

@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Get help from the community on Discord
url: https://discord.gg/H5MNcFW63r
about: Join the yt-dlp Discord for community-powered support!
- name: Matrix Bridge to the Discord server
url: https://matrix.to/#/#yt-dlp:matrix.org
about: For those who do not want to use Discord

@ -1,70 +0,0 @@
---
name: Broken site support
about: Report broken or misfunctioning site
title: "[Broken]"
labels: Broken
assignees: ''
---
<!--
######################################################################
WARNING!
IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE
######################################################################
-->
## Checklist
<!--
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
- First of, make sure you are using the latest version of yt-dlp. Run `youtube-dlc --version` and ensure your version is %(version)s. If it's not, see https://github.com/pukkandan/yt-dlp on how to update. Issues with outdated version will be REJECTED.
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
- Make sure that all URLs and arguments with special characters are properly quoted or escaped as explained in https://github.com/pukkandan/yt-dlp.
- Search the bugtracker for similar issues: https://github.com/pukkandan/yt-dlp. DO NOT post duplicates.
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
-->
- [ ] I'm reporting a broken site support
- [ ] I've verified that I'm running yt-dlp version **%(version)s**
- [ ] I've checked that all provided URLs are alive and playable in a browser
- [ ] I've checked that all URLs and arguments with special characters are properly quoted or escaped
- [ ] I've searched the bugtracker for similar issues including closed ones
## Verbose log
<!--
Provide the complete verbose output of youtube-dlc that clearly demonstrates the problem.
Add the `-v` flag to your command line you run youtube-dlc with (`youtube-dlc -v <your command line>`), copy the WHOLE output and insert it below. It should look similar to this:
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'-v', u'http://www.youtube.com/watch?v=BaW_jenozKcj']
[debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251
[debug] yt-dlp version %(version)s
[debug] Python version 2.7.11 - Windows-2003Server-5.2.3790-SP2
[debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4
[debug] Proxy map: {}
<more lines>
-->
```
PASTE VERBOSE LOG HERE
```
<!--
Do not remove the above ```
-->
## Description
<!--
Provide an explanation of your issue in an arbitrary form. Provide any additional information, suggested solution and as much context and examples as possible.
If work on your issue requires account credentials please provide them or explain how one can obtain them.
-->
WRITE DESCRIPTION HERE

@ -0,0 +1,40 @@
name: Broken site support
description: Report issue with yt-dlp on a supported site
labels: [triage, site-bug]
body:
%(no_skip)s
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: |
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
options:
- label: I'm reporting that yt-dlp is broken on a **supported** site
required: true
- label: I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
required: true
- label: I've checked that all provided URLs are playable in a browser with the same IP and same login details
required: true
- label: I've checked that all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/yt-dlp/yt-dlp/wiki/FAQ#video-url-contains-an-ampersand--and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)
required: true
- label: I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
required: true
- label: I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
required: true
- label: I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and I'm willing to share it if required
- type: input
id: region
attributes:
label: Region
description: Enter the country/region that the site is accessible from
placeholder: India
- type: textarea
id: description
attributes:
label: Provide a description that is worded well enough to be understood
description: See [is-the-description-of-the-issue-itself-sufficient](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#is-the-description-of-the-issue-itself-sufficient)
placeholder: Provide any additional information, any suggested solutions, and as much context and examples as possible
validations:
required: true
%(verbose)s

@ -1,56 +0,0 @@
---
name: Site support request
about: Request support for a new site
title: "[Site Request]"
labels: Request
assignees: ''
---
<!--
######################################################################
WARNING!
IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE
######################################################################
-->
## Checklist
<!--
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
- First of, make sure you are using the latest version of yt-dlp. Run `youtube-dlc --version` and ensure your version is %(version)s. If it's not, see https://github.com/pukkandan/yt-dlp on how to update. Issues with outdated version will be REJECTED.
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
- Make sure that site you are requesting is not dedicated to copyright infringement, see https://github.com/pukkandan/yt-dlp. yt-dlp does not support such sites. In order for site support request to be accepted all provided example URLs should not violate any copyrights.
- Search the bugtracker for similar site support requests: https://github.com/pukkandan/yt-dlp. DO NOT post duplicates.
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
-->
- [ ] I'm reporting a new site support request
- [ ] I've verified that I'm running yt-dlp version **%(version)s**
- [ ] I've checked that all provided URLs are alive and playable in a browser
- [ ] I've checked that none of provided URLs violate any copyrights
- [ ] I've searched the bugtracker for similar site support requests including closed ones
## Example URLs
<!--
Provide all kinds of example URLs support for which should be included. Replace following example URLs by yours.
-->
- Single video: https://www.youtube.com/watch?v=BaW_jenozKc
- Single video: https://youtu.be/BaW_jenozKc
- Playlist: https://www.youtube.com/playlist?list=PL4lCao7KL_QFVb7Iudeipvc2BCavECqzc
## Description
<!--
Provide any additional information.
If work on your issue requires account credentials please provide them or explain how one can obtain them.
-->
WRITE DESCRIPTION HERE

@ -0,0 +1,52 @@
name: Site support request
description: Request support for a new site
labels: [triage, site-request]
body:
%(no_skip)s
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: |
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
options:
- label: I'm reporting a new site support request
required: true
- label: I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
required: true
- label: I've checked that all provided URLs are playable in a browser with the same IP and same login details
required: true
- label: I've checked that none of provided URLs [violate any copyrights](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#is-the-website-primarily-used-for-piracy) or contain any [DRM](https://en.wikipedia.org/wiki/Digital_rights_management) to the best of my knowledge
required: true
- label: I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
required: true
- label: I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
required: true
- label: I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and am willing to share it if required
- type: input
id: region
attributes:
label: Region
description: Enter the country/region that the site is accessible from
placeholder: India
- type: textarea
id: example-urls
attributes:
label: Example URLs
description: |
Provide all kinds of example URLs for which support should be added
placeholder: |
- Single video: https://www.youtube.com/watch?v=BaW_jenozKc
- Single video: https://youtu.be/BaW_jenozKc
- Playlist: https://www.youtube.com/playlist?list=PL4lCao7KL_QFVb7Iudeipvc2BCavECqzc
validations:
required: true
- type: textarea
id: description
attributes:
label: Provide a description that is worded well enough to be understood
description: See [is-the-description-of-the-issue-itself-sufficient](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#is-the-description-of-the-issue-itself-sufficient)
placeholder: Provide any additional information, any suggested solutions, and as much context and examples as possible
validations:
required: true
%(verbose)s

@ -1,40 +0,0 @@
---
name: Site feature request
about: Request a new functionality for a site
title: "[Site Request]"
labels: Request
assignees: ''
---
<!--
######################################################################
WARNING!
IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE
######################################################################
-->
## Checklist
<!--
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
- First of, make sure you are using the latest version of yt-dlp. Run `youtube-dlc --version` and ensure your version is %(version)s. If it's not, see https://github.com/pukkandan/yt-dlp on how to update. Issues with outdated version will be REJECTED.
- Search the bugtracker for similar site feature requests: https://github.com/pukkandan/yt-dlp. DO NOT post duplicates.
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
-->
- [ ] I'm reporting a site feature request
- [ ] I've verified that I'm running yt-dlp version **%(version)s**
- [ ] I've searched the bugtracker for similar site feature requests including closed ones
## Description
<!--
Provide an explanation of your site feature request in an arbitrary form. Please make sure the description is worded well enough to be understood, see https://github.com/ytdl-org/youtube-dl#is-the-description-of-the-issue-itself-sufficient. Provide any additional information, suggested solution and as much context and examples as possible.
-->
WRITE DESCRIPTION HERE

@ -0,0 +1,48 @@
name: Site feature request
description: Request a new functionality for a supported site
labels: [triage, site-enhancement]
body:
%(no_skip)s
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: |
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
options:
- label: I'm requesting a site-specific feature
required: true
- label: I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
required: true
- label: I've checked that all provided URLs are playable in a browser with the same IP and same login details
required: true
- label: I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
required: true
- label: I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
required: true
- label: I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and I'm willing to share it if required
- type: input
id: region
attributes:
label: Region
description: Enter the country/region that the site is accessible from
placeholder: India
- type: textarea
id: example-urls
attributes:
label: Example URLs
description: |
Example URLs that can be used to demonstrate the requested feature
placeholder: |
https://www.youtube.com/watch?v=BaW_jenozKc
validations:
required: true
- type: textarea
id: description
attributes:
label: Provide a description that is worded well enough to be understood
description: See [is-the-description-of-the-issue-itself-sufficient](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#is-the-description-of-the-issue-itself-sufficient)
placeholder: Provide any additional information, any suggested solutions, and as much context and examples as possible
validations:
required: true
%(verbose)s

@ -1,72 +0,0 @@
---
name: Bug report
about: Report a bug unrelated to any particular site or extractor
title: ''
labels: ''
assignees: ''
---
<!--
######################################################################
WARNING!
IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE
######################################################################
-->
## Checklist
<!--
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
- First of, make sure you are using the latest version of yt-dlp. Run `youtube-dlc --version` and ensure your version is %(version)s. If it's not, see https://github.com/pukkandan/yt-dlp on how to update. Issues with outdated version will be REJECTED.
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
- Make sure that all URLs and arguments with special characters are properly quoted or escaped as explained in https://github.com/pukkandan/yt-dlp.
- Search the bugtracker for similar issues: https://github.com/pukkandan/yt-dlp. DO NOT post duplicates.
- Read bugs section in FAQ: https://github.com/pukkandan/yt-dlp
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
-->
- [ ] I'm reporting a broken site support issue
- [ ] I've verified that I'm running yt-dlp version **%(version)s**
- [ ] I've checked that all provided URLs are alive and playable in a browser
- [ ] I've checked that all URLs and arguments with special characters are properly quoted or escaped
- [ ] I've searched the bugtracker for similar bug reports including closed ones
- [ ] I've read bugs section in FAQ
## Verbose log
<!--
Provide the complete verbose output of youtube-dlc that clearly demonstrates the problem.
Add the `-v` flag to your command line you run youtube-dlc with (`youtube-dlc -v <your command line>`), copy the WHOLE output and insert it below. It should look similar to this:
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'-v', u'http://www.youtube.com/watch?v=BaW_jenozKcj']
[debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251
[debug] yt-dlp version %(version)s
[debug] Python version 2.7.11 - Windows-2003Server-5.2.3790-SP2
[debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4
[debug] Proxy map: {}
<more lines>
-->
```
PASTE VERBOSE LOG HERE
```
<!--
Do not remove the above ```
-->
## Description
<!--
Provide an explanation of your issue in an arbitrary form. Please make sure the description is worded well enough to be understood, see https://github.com/ytdl-org/youtube-dl#is-the-description-of-the-issue-itself-sufficient. Provide any additional information, suggested solution and as much context and examples as possible.
If work on your issue requires account credentials please provide them or explain how one can obtain them.
-->
WRITE DESCRIPTION HERE

@ -0,0 +1,33 @@
name: Core bug report
description: Report a bug unrelated to any particular site or extractor
labels: [triage, bug]
body:
%(no_skip)s
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: |
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
options:
- label: I'm reporting a bug unrelated to a specific site
required: true
- label: I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
required: true
- label: I've checked that all provided URLs are playable in a browser with the same IP and same login details
required: true
- label: I've checked that all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/yt-dlp/yt-dlp/wiki/FAQ#video-url-contains-an-ampersand--and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)
required: true
- label: I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
required: true
- label: I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
required: true
- type: textarea
id: description
attributes:
label: Provide a description that is worded well enough to be understood
description: See [is-the-description-of-the-issue-itself-sufficient](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#is-the-description-of-the-issue-itself-sufficient)
placeholder: Provide any additional information, any suggested solutions, and as much context and examples as possible
validations:
required: true
%(verbose)s

@ -1,40 +0,0 @@
---
name: Feature request
about: Request a new functionality unrelated to any particular site or extractor
title: "[Feature Request]"
labels: Request
assignees: ''
---
<!--
######################################################################
WARNING!
IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE
######################################################################
-->
## Checklist
<!--
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dlc:
- First of, make sure you are using the latest version of yt-dlp. Run `youtube-dlc --version` and ensure your version is %(version)s. If it's not, see https://github.com/pukkandan/yt-dlp on how to update. Issues with outdated version will be REJECTED.
- Search the bugtracker for similar feature requests: https://github.com/pukkandan/yt-dlp. DO NOT post duplicates.
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
-->
- [ ] I'm reporting a feature request
- [ ] I've verified that I'm running yt-dlp version **%(version)s**
- [ ] I've searched the bugtracker for similar feature requests including closed ones
## Description
<!--
Provide an explanation of your issue in an arbitrary form. Please make sure the description is worded well enough to be understood, see https://github.com/ytdl-org/youtube-dl#is-the-description-of-the-issue-itself-sufficient. Provide any additional information, suggested solution and as much context and examples as possible.
-->
WRITE DESCRIPTION HERE

@ -0,0 +1,31 @@
name: Feature request
description: Request a new functionality unrelated to any particular site or extractor
labels: [triage, enhancement]
body:
%(no_skip)s
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: |
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
options:
- label: I'm requesting a feature unrelated to a specific site
required: true
- label: I've looked through the [README](https://github.com/yt-dlp/yt-dlp#readme)
required: true
- label: I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
required: true
- label: I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
required: true
- label: I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
required: true
- type: textarea
id: description
attributes:
label: Provide a description that is worded well enough to be understood
description: See [is-the-description-of-the-issue-itself-sufficient](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#is-the-description-of-the-issue-itself-sufficient)
placeholder: Provide any additional information, any suggested solutions, and as much context and examples as possible
validations:
required: true
%(verbose_optional)s

@ -0,0 +1,37 @@
name: Ask question
description: Ask yt-dlp related question
labels: [question]
body:
%(no_skip)s
- type: markdown
attributes:
value: |
### Make sure you are **only** asking a question and not reporting a bug or requesting a feature.
If your question contains "isn't working" or "can you add", this is most likely the wrong template.
If you are in doubt whether this is the right template, **USE ANOTHER TEMPLATE**!
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: |
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
options:
- label: I'm asking a question and **not** reporting a bug or requesting a feature
required: true
- label: I've looked through the [README](https://github.com/yt-dlp/yt-dlp#readme)
required: true
- label: I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
required: true
- label: I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar questions **including closed ones**. DO NOT post duplicates
required: true
- label: I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
required: true
- type: textarea
id: question
attributes:
label: Please make sure the question is worded well enough to be understood
description: See [is-the-description-of-the-issue-itself-sufficient](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#is-the-description-of-the-issue-itself-sufficient)
placeholder: Provide any additional information and as much context and examples as possible
validations:
required: true
%(verbose_optional)s

@ -1,28 +1,43 @@
## Please follow the guide below
**IMPORTANT**: PRs without the template will be CLOSED
### Description of your *pull request* and other information
<!--
Explanation of your *pull request* in arbitrary form goes here. Please **make sure the description explains the purpose and effect** of your *pull request* and is worded well enough to be understood. Provide as much **context and examples** as possible
-->
ADD DESCRIPTION HERE
Fixes #
<details open><summary>Template</summary> <!-- OPEN is intentional -->
<!--
# PLEASE FOLLOW THE GUIDE BELOW
- You will be asked some questions, please read them **carefully** and answer honestly
- Put an `x` into all the boxes [ ] relevant to your *pull request* (like that [x])
- Put an `x` into all the boxes `[ ]` relevant to your *pull request* (like [x])
- Use *Preview* tab to see how your *pull request* will actually look like
---
-->
### Before submitting a *pull request* make sure you have:
- [ ] At least skimmed through [adding new extractor tutorial](https://github.com/ytdl-org/youtube-dl#adding-support-for-a-new-site) and [youtube-dl coding conventions](https://github.com/ytdl-org/youtube-dl#youtube-dl-coding-conventions) sections
- [ ] [Searched](https://github.com/pukkandan/yt-dlp/search?q=is%3Apr&type=Issues) the bugtracker for similar pull requests
- [ ] Checked the code with [flake8](https://pypi.python.org/pypi/flake8)
- [ ] At least skimmed through [contributing guidelines](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#developer-instructions) including [yt-dlp coding conventions](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#yt-dlp-coding-conventions)
- [ ] [Searched](https://github.com/yt-dlp/yt-dlp/search?q=is%3Apr&type=Issues) the bugtracker for similar pull requests
- [ ] Checked the code with [flake8](https://pypi.python.org/pypi/flake8) and [ran relevant tests](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#developer-instructions)
### In order to be accepted and merged into youtube-dl each piece of code must be in public domain or released under [Unlicense](http://unlicense.org/). Check one of the following options:
### In order to be accepted and merged into yt-dlp each piece of code must be in public domain or released under [Unlicense](http://unlicense.org/). Check all of the following options that apply:
- [ ] I am the original author of this code and I am willing to release it under [Unlicense](http://unlicense.org/)
- [ ] I am not the original author of this code but it is in public domain or released under [Unlicense](http://unlicense.org/) (provide reliable evidence)
### What is the purpose of your *pull request*?
- [ ] Bug fix
- [ ] Improvement
- [ ] New extractor
- [ ] New feature
---
### Description of your *pull request* and other information
- [ ] Fix or improvement to an extractor (Make sure to add/update tests)
- [ ] New extractor ([Piracy websites will not be accepted](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#is-the-website-primarily-used-for-piracy))
- [ ] Core bug fix/improvement
- [ ] New feature (It is strongly [recommended to open an issue first](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#adding-new-feature-or-making-overarching-changes))
Explanation of your *pull request* in arbitrary form goes here. Please make sure the description explains the purpose and effect of your *pull request* and is worded well enough to be understood. Provide as much context and examples as possible.
</details>

31
.github/banner.svg vendored

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

@ -1,182 +1,507 @@
name: Build
name: Build Artifacts
on:
push:
branches:
- release
workflow_call:
inputs:
version:
required: true
type: string
channel:
required: false
default: stable
type: string
unix:
default: true
type: boolean
linux_static:
default: true
type: boolean
linux_arm:
default: true
type: boolean
macos:
default: true
type: boolean
macos_legacy:
default: true
type: boolean
windows:
default: true
type: boolean
windows32:
default: true
type: boolean
origin:
required: false
default: ''
type: string
secrets:
GPG_SIGNING_KEY:
required: false
workflow_dispatch:
inputs:
version:
description: |
VERSION: yyyy.mm.dd[.rev] or rev
required: true
type: string
channel:
description: |
SOURCE of this build's updates: stable/nightly/master/<repo>
required: true
default: stable
type: string
unix:
description: yt-dlp, yt-dlp.tar.gz
default: true
type: boolean
linux_static:
description: yt-dlp_linux
default: true
type: boolean
linux_arm:
description: yt-dlp_linux_aarch64, yt-dlp_linux_armv7l
default: true
type: boolean
macos:
description: yt-dlp_macos, yt-dlp_macos.zip
default: true
type: boolean
macos_legacy:
description: yt-dlp_macos_legacy
default: true
type: boolean
windows:
description: yt-dlp.exe, yt-dlp_min.exe, yt-dlp_win.zip
default: true
type: boolean
windows32:
description: yt-dlp_x86.exe
default: true
type: boolean
origin:
description: Origin
required: false
default: 'current repo'
type: choice
options:
- 'current repo'
permissions:
contents: read
jobs:
build_unix:
process:
runs-on: ubuntu-latest
outputs:
origin: ${{ steps.process_origin.outputs.origin }}
steps:
- name: Process origin
id: process_origin
run: |
echo "origin=${{ inputs.origin == 'current repo' && github.repository || inputs.origin }}" | tee "$GITHUB_OUTPUT"
unix:
needs: process
if: inputs.unix
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Needed for changelog
- uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install Requirements
run: |
sudo apt -y install zip pandoc man sed
- name: Prepare
run: |
python devscripts/update-version.py -c "${{ inputs.channel }}" -r "${{ needs.process.outputs.origin }}" "${{ inputs.version }}"
python devscripts/update_changelog.py -vv
python devscripts/make_lazy_extractors.py
- name: Build Unix platform-independent binary
run: |
make all tar
- name: Verify --update-to
if: vars.UPDATE_TO_VERIFICATION
run: |
chmod +x ./yt-dlp
cp ./yt-dlp ./yt-dlp_downgraded
version="$(./yt-dlp --version)"
./yt-dlp_downgraded -v --update-to yt-dlp/yt-dlp@2023.03.04
downgraded_version="$(./yt-dlp_downgraded --version)"
[[ "$version" != "$downgraded_version" ]]
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: build-bin-${{ github.job }}
path: |
yt-dlp
yt-dlp.tar.gz
compression-level: 0
outputs:
ytdlc_version: ${{ steps.bump_version.outputs.ytdlc_version }}
upload_url: ${{ steps.create_release.outputs.upload_url }}
sha2_unix: ${{ steps.sha2_file.outputs.sha2_unix }}
linux_static:
needs: process
if: inputs.linux_static
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build static executable
env:
channel: ${{ inputs.channel }}
origin: ${{ needs.process.outputs.origin }}
version: ${{ inputs.version }}
run: |
mkdir ~/build
cd bundle/docker
docker compose up --build static
sudo chown "${USER}:docker" ~/build/yt-dlp_linux
- name: Verify --update-to
if: vars.UPDATE_TO_VERIFICATION
run: |
chmod +x ~/build/yt-dlp_linux
cp ~/build/yt-dlp_linux ~/build/yt-dlp_linux_downgraded
version="$(~/build/yt-dlp_linux --version)"
~/build/yt-dlp_linux_downgraded -v --update-to yt-dlp/yt-dlp@2023.03.04
downgraded_version="$(~/build/yt-dlp_linux_downgraded --version)"
[[ "$version" != "$downgraded_version" ]]
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: build-bin-${{ github.job }}
path: |
~/build/yt-dlp_linux
compression-level: 0
linux_arm:
needs: process
if: inputs.linux_arm
permissions:
contents: read
packages: write # for creating cache
runs-on: ubuntu-latest
strategy:
matrix:
architecture:
- armv7
- aarch64
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.8'
- name: Install packages
run: sudo apt-get -y install zip pandoc man
- name: Bump version
id: bump_version
run: python devscripts/update-version.py
- name: Print version
run: echo "${{ steps.bump_version.outputs.ytdlc_version }}"
- name: Run Make
run: make
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.bump_version.outputs.ytdlc_version }}
release_name: yt-dlp ${{ steps.bump_version.outputs.ytdlc_version }}
body: |
Changelog:
PLACEHOLDER
draft: false
prerelease: false
- name: Upload youtube-dlc Unix binary
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./youtube-dlc
asset_name: youtube-dlc
asset_content_type: application/octet-stream
- name: Get SHA2-256SUMS for youtube-dlc
id: sha2_file
env:
SHA2: ${{ hashFiles('youtube-dlc') }}
run: echo "::set-output name=sha2_unix::$SHA2"
- name: Install dependencies for pypi
run: |
python -m pip install --upgrade pip
pip install setuptools wheel twine
- name: Build and publish on pypi
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
run: |
rm -rf dist/*
python setup.py sdist bdist_wheel
twine upload dist/*
build_windows:
- uses: actions/checkout@v4
with:
path: ./repo
- name: Virtualized Install, Prepare & Build
uses: yt-dlp/run-on-arch-action@v2
with:
# Ref: https://github.com/uraimo/run-on-arch-action/issues/55
env: |
GITHUB_WORKFLOW: build
githubToken: ${{ github.token }} # To cache image
arch: ${{ matrix.architecture }}
distro: ubuntu18.04 # Standalone executable should be built on minimum supported OS
dockerRunArgs: --volume "${PWD}/repo:/repo"
install: | # Installing Python 3.10 from the Deadsnakes repo raises errors
apt update
apt -y install zlib1g-dev libffi-dev python3.8 python3.8-dev python3.8-distutils python3-pip
python3.8 -m pip install -U pip setuptools wheel
# Cannot access any files from the repo directory at this stage
python3.8 -m pip install -U Pyinstaller mutagen pycryptodomex websockets brotli certifi secretstorage cffi
runs-on: windows-latest
run: |
cd repo
python3.8 devscripts/install_deps.py -o --include build
python3.8 devscripts/install_deps.py --include pyinstaller --include secretstorage # Cached version may be out of date
python3.8 devscripts/update-version.py -c "${{ inputs.channel }}" -r "${{ needs.process.outputs.origin }}" "${{ inputs.version }}"
python3.8 devscripts/make_lazy_extractors.py
python3.8 -m bundle.pyinstaller
if ${{ vars.UPDATE_TO_VERIFICATION && 'true' || 'false' }}; then
arch="${{ (matrix.architecture == 'armv7' && 'armv7l') || matrix.architecture }}"
chmod +x ./dist/yt-dlp_linux_${arch}
cp ./dist/yt-dlp_linux_${arch} ./dist/yt-dlp_linux_${arch}_downgraded
version="$(./dist/yt-dlp_linux_${arch} --version)"
./dist/yt-dlp_linux_${arch}_downgraded -v --update-to yt-dlp/yt-dlp@2023.03.04
downgraded_version="$(./dist/yt-dlp_linux_${arch}_downgraded --version)"
[[ "$version" != "$downgraded_version" ]]
fi
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: build-bin-linux_${{ matrix.architecture }}
path: | # run-on-arch-action designates armv7l as armv7
repo/dist/yt-dlp_linux_${{ (matrix.architecture == 'armv7' && 'armv7l') || matrix.architecture }}
compression-level: 0
macos:
needs: process
if: inputs.macos
runs-on: macos-11
steps:
- uses: actions/checkout@v4
# NB: Building universal2 does not work with python from actions/setup-python
- name: Install Requirements
run: |
brew install coreutils
python3 devscripts/install_deps.py --user -o --include build
python3 devscripts/install_deps.py --print --include pyinstaller > requirements.txt
# We need to ignore wheels otherwise we break universal2 builds
python3 -m pip install -U --user --no-binary :all: -r requirements.txt
# We need to fuse our own universal2 wheels for curl_cffi
python3 -m pip install -U --user delocate
mkdir curl_cffi_whls curl_cffi_universal2
python3 devscripts/install_deps.py --print -o --include curl-cffi > requirements.txt
for platform in "macosx_11_0_arm64" "macosx_11_0_x86_64"; do
python3 -m pip download \
--only-binary=:all: \
--platform "${platform}" \
--pre -d curl_cffi_whls \
-r requirements.txt
done
python3 -m delocate.cmd.delocate_fuse curl_cffi_whls/curl_cffi*.whl -w curl_cffi_universal2
python3 -m delocate.cmd.delocate_fuse curl_cffi_whls/cffi*.whl -w curl_cffi_universal2
cd curl_cffi_universal2
for wheel in *cffi*.whl; do mv -n -- "${wheel}" "${wheel/x86_64/universal2}"; done
python3 -m pip install -U --user *cffi*.whl
- name: Prepare
run: |
python3 devscripts/update-version.py -c "${{ inputs.channel }}" -r "${{ needs.process.outputs.origin }}" "${{ inputs.version }}"
python3 devscripts/make_lazy_extractors.py
- name: Build
run: |
python3 -m bundle.pyinstaller --target-architecture universal2 --onedir
(cd ./dist/yt-dlp_macos && zip -r ../yt-dlp_macos.zip .)
python3 -m bundle.pyinstaller --target-architecture universal2
- name: Verify --update-to
if: vars.UPDATE_TO_VERIFICATION
run: |
chmod +x ./dist/yt-dlp_macos
cp ./dist/yt-dlp_macos ./dist/yt-dlp_macos_downgraded
version="$(./dist/yt-dlp_macos --version)"
./dist/yt-dlp_macos_downgraded -v --update-to yt-dlp/yt-dlp@2023.03.04
downgraded_version="$(./dist/yt-dlp_macos_downgraded --version)"
[[ "$version" != "$downgraded_version" ]]
needs: build_unix
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: build-bin-${{ github.job }}
path: |
dist/yt-dlp_macos
dist/yt-dlp_macos.zip
compression-level: 0
macos_legacy:
needs: process
if: inputs.macos_legacy
runs-on: macos-12
steps:
- uses: actions/checkout@v4
- name: Install Python
# We need the official Python, because the GA ones only support newer macOS versions
env:
PYTHON_VERSION: 3.10.5
MACOSX_DEPLOYMENT_TARGET: 10.9 # Used up by the Python build tools
run: |
# Hack to get the latest patch version. Uncomment if needed
#brew install python@3.10
#export PYTHON_VERSION=$( $(brew --prefix)/opt/python@3.10/bin/python3 --version | cut -d ' ' -f 2 )
curl https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}-macos11.pkg -o "python.pkg"
sudo installer -pkg python.pkg -target /
python3 --version
- name: Install Requirements
run: |
brew install coreutils
python3 devscripts/install_deps.py --user -o --include build
python3 devscripts/install_deps.py --user --include pyinstaller
- name: Prepare
run: |
python3 devscripts/update-version.py -c "${{ inputs.channel }}" -r "${{ needs.process.outputs.origin }}" "${{ inputs.version }}"
python3 devscripts/make_lazy_extractors.py
- name: Build
run: |
python3 -m bundle.pyinstaller
mv dist/yt-dlp_macos dist/yt-dlp_macos_legacy
- name: Verify --update-to
if: vars.UPDATE_TO_VERIFICATION
run: |
chmod +x ./dist/yt-dlp_macos_legacy
cp ./dist/yt-dlp_macos_legacy ./dist/yt-dlp_macos_legacy_downgraded
version="$(./dist/yt-dlp_macos_legacy --version)"
./dist/yt-dlp_macos_legacy_downgraded -v --update-to yt-dlp/yt-dlp@2023.03.04
downgraded_version="$(./dist/yt-dlp_macos_legacy_downgraded --version)"
[[ "$version" != "$downgraded_version" ]]
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: build-bin-${{ github.job }}
path: |
dist/yt-dlp_macos_legacy
compression-level: 0
windows:
needs: process
if: inputs.windows
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.8'
- name: Install Requirements
run: pip install pyinstaller mutagen
- name: Bump version
id: bump_version
run: python devscripts/update-version.py
- name: Print version
run: echo "${{ steps.bump_version.outputs.ytdlc_version }}"
- name: Run PyInstaller Script
run: python devscripts/pyinst.py 64
- name: Upload youtube-dlc.exe Windows binary
id: upload-release-windows
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.build_unix.outputs.upload_url }}
asset_path: ./dist/youtube-dlc.exe
asset_name: youtube-dlc.exe
asset_content_type: application/vnd.microsoft.portable-executable
- name: Get SHA2-256SUMS for youtube-dlc.exe
id: sha2_file_win
env:
SHA2_win: ${{ hashFiles('dist/youtube-dlc.exe') }}
run: echo "::set-output name=sha2_windows::$SHA2_win"
build_windows32:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with: # 3.8 is used for Win7 support
python-version: "3.8"
- name: Install Requirements
run: | # Custom pyinstaller built with https://github.com/yt-dlp/pyinstaller-builds
python devscripts/install_deps.py -o --include build
python devscripts/install_deps.py --include py2exe --include curl-cffi
python -m pip install -U "https://yt-dlp.github.io/Pyinstaller-Builds/x86_64/pyinstaller-5.8.0-py3-none-any.whl"
- name: Prepare
run: |
python devscripts/update-version.py -c "${{ inputs.channel }}" -r "${{ needs.process.outputs.origin }}" "${{ inputs.version }}"
python devscripts/make_lazy_extractors.py
- name: Build
run: |
python -m bundle.py2exe
Move-Item ./dist/yt-dlp.exe ./dist/yt-dlp_min.exe
python -m bundle.pyinstaller
python -m bundle.pyinstaller --onedir
Compress-Archive -Path ./dist/yt-dlp/* -DestinationPath ./dist/yt-dlp_win.zip
- name: Verify --update-to
if: vars.UPDATE_TO_VERIFICATION
run: |
foreach ($name in @("yt-dlp","yt-dlp_min")) {
Copy-Item "./dist/${name}.exe" "./dist/${name}_downgraded.exe"
$version = & "./dist/${name}.exe" --version
& "./dist/${name}_downgraded.exe" -v --update-to yt-dlp/yt-dlp@2023.03.04
$downgraded_version = & "./dist/${name}_downgraded.exe" --version
if ($version -eq $downgraded_version) {
exit 1
}
}
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: build-bin-${{ github.job }}
path: |
dist/yt-dlp.exe
dist/yt-dlp_min.exe
dist/yt-dlp_win.zip
compression-level: 0
windows32:
needs: process
if: inputs.windows32
runs-on: windows-latest
needs: [build_unix, build_windows]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.8"
architecture: "x86"
- name: Install Requirements
run: |
python devscripts/install_deps.py -o --include build
python devscripts/install_deps.py
python -m pip install -U "https://yt-dlp.github.io/Pyinstaller-Builds/i686/pyinstaller-5.8.0-py3-none-any.whl"
- name: Prepare
run: |
python devscripts/update-version.py -c "${{ inputs.channel }}" -r "${{ needs.process.outputs.origin }}" "${{ inputs.version }}"
python devscripts/make_lazy_extractors.py
- name: Build
run: |
python -m bundle.pyinstaller
- name: Verify --update-to
if: vars.UPDATE_TO_VERIFICATION
run: |
foreach ($name in @("yt-dlp_x86")) {
Copy-Item "./dist/${name}.exe" "./dist/${name}_downgraded.exe"
$version = & "./dist/${name}.exe" --version
& "./dist/${name}_downgraded.exe" -v --update-to yt-dlp/yt-dlp@2023.03.04
$downgraded_version = & "./dist/${name}_downgraded.exe" --version
if ($version -eq $downgraded_version) {
exit 1
}
}
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: build-bin-${{ github.job }}
path: |
dist/yt-dlp_x86.exe
compression-level: 0
meta_files:
if: always() && !cancelled()
needs:
- process
- unix
- linux_static
- linux_arm
- macos
- macos_legacy
- windows
- windows32
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.4.4 32-Bit
uses: actions/setup-python@v2
with:
python-version: '3.4.4'
architecture: 'x86'
- name: Install Requirements for 32 Bit
run: pip install pyinstaller==3.5 mutagen
- name: Bump version
id: bump_version
run: python devscripts/update-version.py
- name: Print version
run: echo "${{ steps.bump_version.outputs.ytdlc_version }}"
- name: Run PyInstaller Script for 32 Bit
run: python devscripts/pyinst.py 32
- name: Upload Executable youtube-dlc_x86.exe
id: upload-release-windows32
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.build_unix.outputs.upload_url }}
asset_path: ./dist/youtube-dlc_x86.exe
asset_name: youtube-dlc_x86.exe
asset_content_type: application/vnd.microsoft.portable-executable
- name: Get SHA2-256SUMS for youtube-dlc_x86.exe
id: sha2_file_win32
env:
SHA2_win32: ${{ hashFiles('dist/youtube-dlc_x86.exe') }}
run: echo "::set-output name=sha2_windows32::$SHA2_win32"
- name: Make SHA2-256SUMS file
env:
SHA2_WINDOWS: ${{ needs.build_windows.outputs.sha2_windows }}
SHA2_WINDOWS32: ${{ steps.sha2_file_win32.outputs.sha2_windows32 }}
SHA2_UNIX: ${{ needs.build_unix.outputs.sha2_unix }}
YTDLC_VERSION: ${{ needs.build_unix.outputs.ytdlc_version }}
run: |
echo "version:${env:YTDLC_VERSION}" >> SHA2-256SUMS
echo "youtube-dlc.exe:${env:SHA2_WINDOWS}" >> SHA2-256SUMS
echo "youtube-dlc_x86.exe:${env:SHA2_WINDOWS32}" >> SHA2-256SUMS
echo "youtube-dlc:${env:SHA2_UNIX}" >> SHA2-256SUMS
- name: Upload 256SUMS file
id: upload-sums
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.build_unix.outputs.upload_url }}
asset_path: ./SHA2-256SUMS
asset_name: SHA2-256SUMS
asset_content_type: text/plain
# update_version_badge:
# runs-on: ubuntu-latest
# needs: build_unix
# steps:
# - name: Create Version Badge
# uses: schneegans/dynamic-badges-action@v1.0.0
# with:
# auth: ${{ secrets.GIST_TOKEN }}
# gistID: c69cb23c3c5b3316248e52022790aa57
# filename: version.json
# label: Version
# message: ${{ needs.build_unix.outputs.ytdlc_version }}
- uses: actions/download-artifact@v4
with:
path: artifact
pattern: build-bin-*
merge-multiple: true
- name: Make SHA2-SUMS files
run: |
cd ./artifact/
# make sure SHA sums are also printed to stdout
sha256sum * | tee ../SHA2-256SUMS
sha512sum * | tee ../SHA2-512SUMS
- name: Make Update spec
run: |
cat >> _update_spec << EOF
# This file is used for regulating self-update
lock 2022.08.18.36 .+ Python 3\.6
lock 2023.11.16 (?!win_x86_exe).+ Python 3\.7
lock 2023.11.16 win_x86_exe .+ Windows-(?:Vista|2008Server)
lockV2 yt-dlp/yt-dlp 2022.08.18.36 .+ Python 3\.6
lockV2 yt-dlp/yt-dlp 2023.11.16 (?!win_x86_exe).+ Python 3\.7
lockV2 yt-dlp/yt-dlp 2023.11.16 win_x86_exe .+ Windows-(?:Vista|2008Server)
lockV2 yt-dlp/yt-dlp-nightly-builds 2023.11.15.232826 (?!win_x86_exe).+ Python 3\.7
lockV2 yt-dlp/yt-dlp-nightly-builds 2023.11.15.232826 win_x86_exe .+ Windows-(?:Vista|2008Server)
lockV2 yt-dlp/yt-dlp-master-builds 2023.11.15.232812 (?!win_x86_exe).+ Python 3\.7
lockV2 yt-dlp/yt-dlp-master-builds 2023.11.15.232812 win_x86_exe .+ Windows-(?:Vista|2008Server)
EOF
- name: Sign checksum files
env:
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }}
if: env.GPG_SIGNING_KEY != ''
run: |
gpg --batch --import <<< "${{ secrets.GPG_SIGNING_KEY }}"
for signfile in ./SHA*SUMS; do
gpg --batch --detach-sign "$signfile"
done
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: build-${{ github.job }}
path: |
_update_spec
SHA*SUMS*
compression-level: 0
overwrite: true

@ -0,0 +1,65 @@
name: "CodeQL"
on:
push:
branches: [ 'master', 'gh-pages', 'release' ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ 'master' ]
schedule:
- cron: '59 11 * * 5'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'python' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Use only 'java' to analyze code written in Java, Kotlin or both
# Use only 'javascript' to analyze code written in JavaScript, TypeScript or both
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- name: Checkout repository
uses: actions/checkout@v4
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
# If the Autobuild fails above, remove it and uncomment the following three lines.
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
# - run: |
# echo "Run, Build Application using script"
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
with:
category: "/language:${{matrix.language}}"

@ -1,54 +1,61 @@
name: Core Tests
on: [push, pull_request]
on:
push:
paths:
- .github/**
- devscripts/**
- test/**
- yt_dlp/**.py
- '!yt_dlp/extractor/*.py'
- yt_dlp/extractor/__init__.py
- yt_dlp/extractor/common.py
- yt_dlp/extractor/extractors.py
pull_request:
paths:
- .github/**
- devscripts/**
- test/**
- yt_dlp/**.py
- '!yt_dlp/extractor/*.py'
- yt_dlp/extractor/__init__.py
- yt_dlp/extractor/common.py
- yt_dlp/extractor/extractors.py
permissions:
contents: read
concurrency:
group: core-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
tests:
name: Core Tests
if: "!contains(github.event.head_commit.message, 'ci skip all')"
if: "!contains(github.event.head_commit.message, 'ci skip')"
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
fail-fast: false
matrix:
os: [ubuntu-18.04]
# TODO: python 2.6
python-version: [2.7, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, pypy-2.7, pypy-3.6, pypy-3.7]
python-impl: [cpython]
ytdl-test-set: [core]
run-tests-ext: [sh]
os: [ubuntu-latest]
# CPython 3.8 is in quick-test
python-version: ['3.9', '3.10', '3.11', '3.12', pypy-3.8, pypy-3.10]
include:
# python 3.2 is only available on windows via setup-python
# atleast one of each CPython/PyPy tests must be in windows
- os: windows-latest
python-version: 3.2
python-impl: cpython
ytdl-test-set: core
run-tests-ext: bat
# jython
- os: ubuntu-latest
python-impl: jython
ytdl-test-set: core
run-tests-ext: sh
python-version: '3.8'
- os: windows-latest
python-version: '3.12'
- os: windows-latest
python-version: pypy-3.9
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
if: ${{ matrix.python-impl == 'cpython' }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Set up Java 8
if: ${{ matrix.python-impl == 'jython' }}
uses: actions/setup-java@v1
with:
java-version: 8
- name: Install Jython
if: ${{ matrix.python-impl == 'jython' }}
run: |
wget http://search.maven.org/remotecontent?filepath=org/python/jython-installer/2.7.1/jython-installer-2.7.1.jar -O jython-installer.jar
java -jar jython-installer.jar -s -d "$HOME/jython"
echo "$HOME/jython/bin" >> $GITHUB_PATH
- name: Install nose
run: pip install nose
- name: Install test requirements
run: python3 ./devscripts/install_deps.py --include dev --include curl-cffi
- name: Run tests
continue-on-error: ${{ matrix.ytdl-test-set == 'download' || matrix.python-impl == 'jython' }}
env:
YTDL_TEST_SET: ${{ matrix.ytdl-test-set }}
run: ./devscripts/run_tests.${{ matrix.run-tests-ext }}
# Linter is in quick-test
continue-on-error: False
run: |
python3 -m yt_dlp -v || true # Print debug head
python3 ./devscripts/run_tests.py core

@ -1,53 +1,48 @@
name: Download Tests
on: [push, pull_request]
permissions:
contents: read
jobs:
tests:
name: Download Tests
if: "!contains(github.event.head_commit.message, 'ci skip dl') && !contains(github.event.head_commit.message, 'ci skip all')"
quick:
name: Quick Download Tests
if: "contains(github.event.head_commit.message, 'ci run dl')"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.9
- name: Install test requirements
run: python3 ./devscripts/install_deps.py --include dev
- name: Run tests
continue-on-error: true
run: python3 ./devscripts/run_tests.py download
full:
name: Full Download Tests
if: "contains(github.event.head_commit.message, 'ci run dl all')"
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
matrix:
os: [ubuntu-18.04]
# TODO: python 2.6
python-version: [2.7, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, pypy-2.7, pypy-3.6, pypy-3.7]
python-impl: [cpython]
ytdl-test-set: [download]
run-tests-ext: [sh]
os: [ubuntu-latest]
python-version: ['3.10', '3.11', '3.12', pypy-3.8, pypy-3.10]
include:
# python 3.2 is only available on windows via setup-python
# atleast one of each CPython/PyPy tests must be in windows
- os: windows-latest
python-version: 3.2
python-impl: cpython
ytdl-test-set: download
run-tests-ext: bat
# jython - disable for now since it takes too long to complete
# - os: ubuntu-latest
# python-impl: jython
# ytdl-test-set: download
# run-tests-ext: sh
python-version: '3.8'
- os: windows-latest
python-version: pypy-3.9
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
if: ${{ matrix.python-impl == 'cpython' }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Set up Java 8
if: ${{ matrix.python-impl == 'jython' }}
uses: actions/setup-java@v1
with:
java-version: 8
- name: Install Jython
if: ${{ matrix.python-impl == 'jython' }}
run: |
wget http://search.maven.org/remotecontent?filepath=org/python/jython-installer/2.7.1/jython-installer-2.7.1.jar -O jython-installer.jar
java -jar jython-installer.jar -s -d "$HOME/jython"
echo "$HOME/jython/bin" >> $GITHUB_PATH
- name: Install nose
run: pip install nose
- name: Install test requirements
run: python3 ./devscripts/install_deps.py --include dev
- name: Run tests
continue-on-error: ${{ matrix.ytdl-test-set == 'download' || matrix.python-impl == 'jython' }}
env:
YTDL_TEST_SET: ${{ matrix.ytdl-test-set }}
run: ./devscripts/run_tests.${{ matrix.run-tests-ext }}
continue-on-error: true
run: python3 ./devscripts/run_tests.py download

@ -1,33 +1,37 @@
name: Quick Test
on: [push, pull_request]
permissions:
contents: read
jobs:
tests:
name: Core Test
if: "!contains(github.event.head_commit.message, 'ci skip all')"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
- uses: actions/checkout@v4
- name: Set up Python 3.8
uses: actions/setup-python@v5
with:
python-version: 3.9
- name: Install nose
run: pip install nose
python-version: '3.8'
- name: Install test requirements
run: python3 ./devscripts/install_deps.py --include dev
- name: Run tests
env:
YTDL_TEST_SET: core
run: ./devscripts/run_tests.sh
run: |
python3 -m yt_dlp -v || true
python3 ./devscripts/run_tests.py core
flake8:
name: Linter
if: "!contains(github.event.head_commit.message, 'ci skip all')"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.9
python-version: '3.8'
- name: Install flake8
run: pip install flake8
run: python3 ./devscripts/install_deps.py -o --include dev
- name: Make lazy extractors
run: python3 ./devscripts/make_lazy_extractors.py
- name: Run flake8
run: flake8 .
run: flake8 .

@ -0,0 +1,29 @@
name: Release (master)
on:
push:
branches:
- master
paths:
- "yt_dlp/**.py"
- "!yt_dlp/version.py"
- "bundle/*.py"
- "pyproject.toml"
- "Makefile"
- ".github/workflows/build.yml"
concurrency:
group: release-master
permissions:
contents: read
jobs:
release:
if: vars.BUILD_MASTER != ''
uses: ./.github/workflows/release.yml
with:
prerelease: true
source: master
permissions:
contents: write
packages: write
id-token: write # mandatory for trusted publishing
secrets: inherit

@ -0,0 +1,42 @@
name: Release (nightly)
on:
schedule:
- cron: '23 23 * * *'
permissions:
contents: read
jobs:
check_nightly:
if: vars.BUILD_NIGHTLY != ''
runs-on: ubuntu-latest
outputs:
commit: ${{ steps.check_for_new_commits.outputs.commit }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check for new commits
id: check_for_new_commits
run: |
relevant_files=(
"yt_dlp/*.py"
':!yt_dlp/version.py'
"bundle/*.py"
"pyproject.toml"
"Makefile"
".github/workflows/build.yml"
)
echo "commit=$(git log --format=%H -1 --since="24 hours ago" -- "${relevant_files[@]}")" | tee "$GITHUB_OUTPUT"
release:
needs: [check_nightly]
if: ${{ needs.check_nightly.outputs.commit }}
uses: ./.github/workflows/release.yml
with:
prerelease: true
source: nightly
permissions:
contents: write
packages: write
id-token: write # mandatory for trusted publishing
secrets: inherit

@ -0,0 +1,383 @@
name: Release
on:
workflow_call:
inputs:
prerelease:
required: false
default: true
type: boolean
source:
required: false
default: ''
type: string
target:
required: false
default: ''
type: string
version:
required: false
default: ''
type: string
workflow_dispatch:
inputs:
source:
description: |
SOURCE of this release's updates:
channel, repo, tag, or channel/repo@tag
(default: <current_repo>)
required: false
default: ''
type: string
target:
description: |
TARGET to publish this release to:
channel, tag, or channel@tag
(default: <source> if writable else <current_repo>[@source_tag])
required: false
default: ''
type: string
version:
description: |
VERSION: yyyy.mm.dd[.rev] or rev
(default: auto-generated)
required: false
default: ''
type: string
prerelease:
description: Pre-release
default: false
type: boolean
permissions:
contents: read
jobs:
prepare:
permissions:
contents: write
runs-on: ubuntu-latest
outputs:
channel: ${{ steps.setup_variables.outputs.channel }}
version: ${{ steps.setup_variables.outputs.version }}
target_repo: ${{ steps.setup_variables.outputs.target_repo }}
target_repo_token: ${{ steps.setup_variables.outputs.target_repo_token }}
target_tag: ${{ steps.setup_variables.outputs.target_tag }}
pypi_project: ${{ steps.setup_variables.outputs.pypi_project }}
pypi_suffix: ${{ steps.setup_variables.outputs.pypi_suffix }}
head_sha: ${{ steps.get_target.outputs.head_sha }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Process inputs
id: process_inputs
run: |
cat << EOF
::group::Inputs
prerelease=${{ inputs.prerelease }}
source=${{ inputs.source }}
target=${{ inputs.target }}
version=${{ inputs.version }}
::endgroup::
EOF
IFS='@' read -r source_repo source_tag <<<"${{ inputs.source }}"
IFS='@' read -r target_repo target_tag <<<"${{ inputs.target }}"
cat << EOF >> "$GITHUB_OUTPUT"
source_repo=${source_repo}
source_tag=${source_tag}
target_repo=${target_repo}
target_tag=${target_tag}
EOF
- name: Setup variables
id: setup_variables
env:
source_repo: ${{ steps.process_inputs.outputs.source_repo }}
source_tag: ${{ steps.process_inputs.outputs.source_tag }}
target_repo: ${{ steps.process_inputs.outputs.target_repo }}
target_tag: ${{ steps.process_inputs.outputs.target_tag }}
run: |
# unholy bash monstrosity (sincere apologies)
fallback_token () {
if ${{ !secrets.ARCHIVE_REPO_TOKEN }}; then
echo "::error::Repository access secret ${target_repo_token^^} not found"
exit 1
fi
target_repo_token=ARCHIVE_REPO_TOKEN
return 0
}
source_is_channel=0
[[ "${source_repo}" == 'stable' ]] && source_repo='yt-dlp/yt-dlp'
if [[ -z "${source_repo}" ]]; then
source_repo='${{ github.repository }}'
elif [[ '${{ vars[format('{0}_archive_repo', env.source_repo)] }}' ]]; then
source_is_channel=1
source_channel='${{ vars[format('{0}_archive_repo', env.source_repo)] }}'
elif [[ -z "${source_tag}" && "${source_repo}" != */* ]]; then
source_tag="${source_repo}"
source_repo='${{ github.repository }}'
fi
resolved_source="${source_repo}"
if [[ "${source_tag}" ]]; then
resolved_source="${resolved_source}@${source_tag}"
elif [[ "${source_repo}" == 'yt-dlp/yt-dlp' ]]; then
resolved_source='stable'
fi
revision="${{ (inputs.prerelease || !vars.PUSH_VERSION_COMMIT) && '$(date -u +"%H%M%S")' || '' }}"
version="$(
python devscripts/update-version.py \
-c "${resolved_source}" -r "${{ github.repository }}" ${{ inputs.version || '$revision' }} | \
grep -Po "version=\K\d+\.\d+\.\d+(\.\d+)?")"
if [[ "${target_repo}" ]]; then
if [[ -z "${target_tag}" ]]; then
if [[ '${{ vars[format('{0}_archive_repo', env.target_repo)] }}' ]]; then
target_tag="${source_tag:-${version}}"
else
target_tag="${target_repo}"
target_repo='${{ github.repository }}'
fi
fi
if [[ "${target_repo}" != '${{ github.repository}}' ]]; then
target_repo='${{ vars[format('{0}_archive_repo', env.target_repo)] }}'
target_repo_token='${{ env.target_repo }}_archive_repo_token'
${{ !!secrets[format('{0}_archive_repo_token', env.target_repo)] }} || fallback_token
pypi_project='${{ vars[format('{0}_pypi_project', env.target_repo)] }}'
pypi_suffix='${{ vars[format('{0}_pypi_suffix', env.target_repo)] }}'
fi
else
target_tag="${source_tag:-${version}}"
if ((source_is_channel)); then
target_repo="${source_channel}"
target_repo_token='${{ env.source_repo }}_archive_repo_token'
${{ !!secrets[format('{0}_archive_repo_token', env.source_repo)] }} || fallback_token
pypi_project='${{ vars[format('{0}_pypi_project', env.source_repo)] }}'
pypi_suffix='${{ vars[format('{0}_pypi_suffix', env.source_repo)] }}'
else
target_repo='${{ github.repository }}'
fi
fi
if [[ "${target_repo}" == '${{ github.repository }}' ]] && ${{ !inputs.prerelease }}; then
pypi_project='${{ vars.PYPI_PROJECT }}'
fi
echo "::group::Output variables"
cat << EOF | tee -a "$GITHUB_OUTPUT"
channel=${resolved_source}
version=${version}
target_repo=${target_repo}
target_repo_token=${target_repo_token}
target_tag=${target_tag}
pypi_project=${pypi_project}
pypi_suffix=${pypi_suffix}
EOF
echo "::endgroup::"
- name: Update documentation
env:
version: ${{ steps.setup_variables.outputs.version }}
target_repo: ${{ steps.setup_variables.outputs.target_repo }}
if: |
!inputs.prerelease && env.target_repo == github.repository
run: |
python devscripts/update_changelog.py -vv
make doc
- name: Push to release
id: push_release
env:
version: ${{ steps.setup_variables.outputs.version }}
target_repo: ${{ steps.setup_variables.outputs.target_repo }}
if: |
!inputs.prerelease && env.target_repo == github.repository
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add -u
git commit -m "Release ${{ env.version }}" \
-m "Created by: ${{ github.event.sender.login }}" -m ":ci skip all :ci run dl"
git push origin --force ${{ github.event.ref }}:release
- name: Get target commitish
id: get_target
run: |
echo "head_sha=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
- name: Update master
env:
target_repo: ${{ steps.setup_variables.outputs.target_repo }}
if: |
vars.PUSH_VERSION_COMMIT != '' && !inputs.prerelease && env.target_repo == github.repository
run: git push origin ${{ github.event.ref }}
build:
needs: prepare
uses: ./.github/workflows/build.yml
with:
version: ${{ needs.prepare.outputs.version }}
channel: ${{ needs.prepare.outputs.channel }}
origin: ${{ needs.prepare.outputs.target_repo }}
permissions:
contents: read
packages: write # For package cache
secrets:
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }}
publish_pypi:
needs: [prepare, build]
if: ${{ needs.prepare.outputs.pypi_project }}
runs-on: ubuntu-latest
permissions:
id-token: write # mandatory for trusted publishing
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install Requirements
run: |
sudo apt -y install pandoc man
python devscripts/install_deps.py -o --include build
- name: Prepare
env:
version: ${{ needs.prepare.outputs.version }}
suffix: ${{ needs.prepare.outputs.pypi_suffix }}
channel: ${{ needs.prepare.outputs.channel }}
target_repo: ${{ needs.prepare.outputs.target_repo }}
pypi_project: ${{ needs.prepare.outputs.pypi_project }}
run: |
python devscripts/update-version.py -c "${{ env.channel }}" -r "${{ env.target_repo }}" -s "${{ env.suffix }}" "${{ env.version }}"
python devscripts/update_changelog.py -vv
python devscripts/make_lazy_extractors.py
sed -i -E '0,/(name = ")[^"]+(")/s//\1${{ env.pypi_project }}\2/' pyproject.toml
- name: Build
run: |
rm -rf dist/*
make pypi-files
printf '%s\n\n' \
'Official repository: <https://github.com/yt-dlp/yt-dlp>' \
'**PS**: Some links in this document will not work since this is a copy of the README.md from Github' > ./README.md.new
cat ./README.md >> ./README.md.new && mv -f ./README.md.new ./README.md
python devscripts/set-variant.py pip -M "You installed yt-dlp with pip or using the wheel from PyPi; Use that to update"
make clean-cache
python -m build --no-isolation .
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
verbose: true
publish:
needs: [prepare, build]
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/download-artifact@v4
with:
path: artifact
pattern: build-*
merge-multiple: true
- uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Generate release notes
env:
head_sha: ${{ needs.prepare.outputs.head_sha }}
target_repo: ${{ needs.prepare.outputs.target_repo }}
target_tag: ${{ needs.prepare.outputs.target_tag }}
run: |
printf '%s' \
'[![Installation](https://img.shields.io/badge/-Which%20file%20to%20download%3F-white.svg?style=for-the-badge)]' \
'(https://github.com/${{ github.repository }}#installation "Installation instructions") ' \
'[![Discord](https://img.shields.io/discord/807245652072857610?color=blue&labelColor=555555&label=&logo=discord&style=for-the-badge)]' \
'(https://discord.gg/H5MNcFW63r "Discord") ' \
'[![Donate](https://img.shields.io/badge/_-Donate-red.svg?logo=githubsponsors&labelColor=555555&style=for-the-badge)]' \
'(https://github.com/yt-dlp/yt-dlp/blob/master/Collaborators.md#collaborators "Donate") ' \
'[![Documentation](https://img.shields.io/badge/-Docs-brightgreen.svg?style=for-the-badge&logo=GitBook&labelColor=555555)]' \
'(https://github.com/${{ github.repository }}' \
'${{ env.target_repo == github.repository && format('/tree/{0}', env.target_tag) || '' }}#readme "Documentation") ' \
${{ env.target_repo == 'yt-dlp/yt-dlp' && '\
"[![Nightly](https://img.shields.io/badge/Nightly%20builds-purple.svg?style=for-the-badge)]" \
"(https://github.com/yt-dlp/yt-dlp-nightly-builds/releases/latest \"Nightly builds\") " \
"[![Master](https://img.shields.io/badge/Master%20builds-lightblue.svg?style=for-the-badge)]" \
"(https://github.com/yt-dlp/yt-dlp-master-builds/releases/latest \"Master builds\")"' || '' }} > ./RELEASE_NOTES
printf '\n\n' >> ./RELEASE_NOTES
cat >> ./RELEASE_NOTES << EOF
#### A description of the various files are in the [README](https://github.com/${{ github.repository }}#release-files)
---
$(python ./devscripts/make_changelog.py -vv --collapsible)
EOF
printf '%s\n\n' '**This is a pre-release build**' >> ./PRERELEASE_NOTES
cat ./RELEASE_NOTES >> ./PRERELEASE_NOTES
printf '%s\n\n' 'Generated from: https://github.com/${{ github.repository }}/commit/${{ env.head_sha }}' >> ./ARCHIVE_NOTES
cat ./RELEASE_NOTES >> ./ARCHIVE_NOTES
- name: Publish to archive repo
env:
GH_TOKEN: ${{ secrets[needs.prepare.outputs.target_repo_token] }}
GH_REPO: ${{ needs.prepare.outputs.target_repo }}
version: ${{ needs.prepare.outputs.version }}
channel: ${{ needs.prepare.outputs.channel }}
if: |
inputs.prerelease && env.GH_TOKEN != '' && env.GH_REPO != '' && env.GH_REPO != github.repository
run: |
title="${{ startswith(env.GH_REPO, 'yt-dlp/') && 'yt-dlp ' || '' }}${{ env.channel }}"
gh release create \
--notes-file ARCHIVE_NOTES \
--title "${title} ${{ env.version }}" \
${{ env.version }} \
artifact/*
- name: Prune old release
env:
GH_TOKEN: ${{ github.token }}
version: ${{ needs.prepare.outputs.version }}
target_repo: ${{ needs.prepare.outputs.target_repo }}
target_tag: ${{ needs.prepare.outputs.target_tag }}
if: |
env.target_repo == github.repository && env.target_tag != env.version
run: |
gh release delete --yes --cleanup-tag "${{ env.target_tag }}" || true
git tag --delete "${{ env.target_tag }}" || true
sleep 5 # Enough time to cover deletion race condition
- name: Publish release
env:
GH_TOKEN: ${{ github.token }}
version: ${{ needs.prepare.outputs.version }}
target_repo: ${{ needs.prepare.outputs.target_repo }}
target_tag: ${{ needs.prepare.outputs.target_tag }}
head_sha: ${{ needs.prepare.outputs.head_sha }}
if: |
env.target_repo == github.repository
run: |
title="${{ github.repository == 'yt-dlp/yt-dlp' && 'yt-dlp ' || '' }}"
title+="${{ env.target_tag != env.version && format('{0} ', env.target_tag) || '' }}"
gh release create \
--notes-file ${{ inputs.prerelease && 'PRERELEASE_NOTES' || 'RELEASE_NOTES' }} \
--target ${{ env.head_sha }} \
--title "${title}${{ env.version }}" \
${{ inputs.prerelease && '--prerelease' || '' }} \
${{ env.target_tag }} \
artifact/*

124
.gitignore vendored

@ -1,6 +1,73 @@
# Config
*.conf
cookies
*cookies.txt
.netrc
# Downloaded
*.annotations.xml
*.aria2
*.description
*.dump
*.frag
*.frag.aria2
*.frag.urls
*.info.json
*.live_chat.json
*.meta
*.part*
*.tmp
*.temp
*.unknown_video
*.ytdl
.cache/
*.3gp
*.ape
*.ass
*.avi
*.desktop
*.f4v
*.flac
*.flv
*.gif
*.jpeg
*.jpg
*.lrc
*.m4a
*.m4v
*.mhtml
*.mkv
*.mov
*.mp3
*.mp4
*.mpg
*.mpga
*.oga
*.ogg
*.opus
*.png
*.sbv
*.srt
*.ssa
*.swf
*.swp
*.tt
*.ttml
*.url
*.vtt
*.wav
*.webloc
*.webm
*.webp
# Allow config/media files in testdata
!test/**
# Python
*.pyc
*.pyo
.pytest_cache
wine-py2exe/
py2exe.log
build/
@ -8,6 +75,8 @@ dist/
zip/
tmp/
venv/
.venv/
completions/
# Misc
*~
@ -17,70 +86,43 @@ MANIFEST
test/local_parameters.json
.coverage
cover/
secrets/
updates_key.pem
*.egg-info
.tox
*.class
*.isorted
*.stackdump
# Generated
AUTHORS
README.txt
.mailmap
*.1
*.bash-completion
*.fish
*.exe
*.tar.gz
*.zsh
*.spec
test/testdata/sigs/player-*.js
# Binary
youtube-dl
youtube-dlc
/youtube-dl
/youtube-dlc
/yt-dlp
yt-dlp.zip
*.exe
# Downloaded
*.srt
*.ttml
*.sbv
*.vtt
*.flv
*.mp4
*.m4a
*.m4v
*.mp3
*.3gp
*.wav
*.ape
*.mkv
*.swf
*.part
*.ytdl
*.swp
*.ogg
*.opus
*.info.json
*.annotations.xml
*.description
# Config
*.conf
*.spec
cookies
cookies.txt
# Text Editor / IDE
.idea
*.iml
.vscode
*.sublime-workspace
*.sublime-project
!yt-dlp.sublime-project
*.sublime-*
*.code-workspace
# Lazy extractors
*/extractor/lazy_extractors.py
# Plugins
ytdlp_plugins/extractor/*
!ytdlp_plugins/extractor/__init__.py
!ytdlp_plugins/extractor/sample.py
ytdlp_plugins/
yt-dlp-plugins

@ -1,38 +0,0 @@
language: python
python:
- "2.6"
- "2.7"
- "3.2"
- "3.3"
- "3.4"
- "3.5"
- "3.6"
- "pypy"
- "pypy3"
dist: trusty
env:
- YTDL_TEST_SET=core
jobs:
include:
- python: 3.7
dist: xenial
env: YTDL_TEST_SET=core
- python: 3.8
dist: xenial
env: YTDL_TEST_SET=core
- python: 3.8-dev
dist: xenial
env: YTDL_TEST_SET=core
- env: JYTHON=true; YTDL_TEST_SET=core
- name: flake8
python: 3.8
dist: xenial
install: pip install flake8
script: flake8 .
fast_finish: true
allow_failures:
- env: YTDL_TEST_SET=download
- env: JYTHON=true; YTDL_TEST_SET=core
before_install:
- if [ "$JYTHON" == "true" ]; then ./devscripts/install_jython.sh; export PATH="$HOME/jython/bin:$PATH"; fi
script: ./devscripts/run_tests.sh

@ -1,26 +1,63 @@
**Please include the full output of youtube-dl when run with `-v`**, i.e. **add** `-v` flag to **your command line**, copy the **whole** output and post it in the issue body wrapped in \`\`\` for better formatting. It should look similar to this:
```
$ youtube-dl -v <your command line>
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'-v', u'https://www.youtube.com/watch?v=BaW_jenozKcj']
[debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251
[debug] youtube-dl version 2015.12.06
[debug] Git HEAD: 135392e
[debug] Python version 2.6.6 - Windows-2003Server-5.2.3790-SP2
[debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4
# CONTRIBUTING TO YT-DLP
- [OPENING AN ISSUE](#opening-an-issue)
- [Is the description of the issue itself sufficient?](#is-the-description-of-the-issue-itself-sufficient)
- [Are you using the latest version?](#are-you-using-the-latest-version)
- [Is the issue already documented?](#is-the-issue-already-documented)
- [Why are existing options not enough?](#why-are-existing-options-not-enough)
- [Have you read and understood the changes, between youtube-dl and yt-dlp](#have-you-read-and-understood-the-changes-between-youtube-dl-and-yt-dlp)
- [Is there enough context in your bug report?](#is-there-enough-context-in-your-bug-report)
- [Does the issue involve one problem, and one problem only?](#does-the-issue-involve-one-problem-and-one-problem-only)
- [Is anyone going to need the feature?](#is-anyone-going-to-need-the-feature)
- [Is your question about yt-dlp?](#is-your-question-about-yt-dlp)
- [Are you willing to share account details if needed?](#are-you-willing-to-share-account-details-if-needed)
- [Is the website primarily used for piracy](#is-the-website-primarily-used-for-piracy)
- [DEVELOPER INSTRUCTIONS](#developer-instructions)
- [Adding new feature or making overarching changes](#adding-new-feature-or-making-overarching-changes)
- [Adding support for a new site](#adding-support-for-a-new-site)
- [yt-dlp coding conventions](#yt-dlp-coding-conventions)
- [Mandatory and optional metafields](#mandatory-and-optional-metafields)
- [Provide fallbacks](#provide-fallbacks)
- [Regular expressions](#regular-expressions)
- [Long lines policy](#long-lines-policy)
- [Quotes](#quotes)
- [Inline values](#inline-values)
- [Collapse fallbacks](#collapse-fallbacks)
- [Trailing parentheses](#trailing-parentheses)
- [Use convenience conversion and parsing functions](#use-convenience-conversion-and-parsing-functions)
- [My pull request is labeled pending-fixes](#my-pull-request-is-labeled-pending-fixes)
- [EMBEDDING YT-DLP](README.md#embedding-yt-dlp)
# OPENING AN ISSUE
Bugs and suggestions should be reported at: [yt-dlp/yt-dlp/issues](https://github.com/yt-dlp/yt-dlp/issues). Unless you were prompted to or there is another pertinent reason (e.g. GitHub fails to accept the bug report), please do not send bug reports via personal email. For discussions, join us in our [discord server](https://discord.gg/H5MNcFW63r).
**Please include the full output of yt-dlp when run with `-vU`**, i.e. **add** `-vU` flag to **your command line**, copy the **whole** output and post it in the issue body wrapped in \`\`\` for better formatting. It should look similar to this:
```
$ yt-dlp -vU <your command line>
[debug] Command-line config: ['-v', 'demo.com']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8
[debug] yt-dlp version 2021.09.25 (zip)
[debug] Python version 3.8.10 (CPython 64bit) - Linux-5.4.0-74-generic-x86_64-with-glibc2.29
[debug] exe versions: ffmpeg 4.2.4, ffprobe 4.2.4
[debug] Proxy map: {}
Current Build Hash 25cc412d1d3c0725a1f2f5b7e4682f6fb40e6d15f7024e96f7afd572e9919535
yt-dlp is up to date (2021.09.25)
...
```
**Do not post screenshots of verbose logs; only plain text is acceptable.**
The output (including the first lines) contains important debugging information. Issues without the full output are often not reproducible and therefore do not get solved in short order, if ever.
The output (including the first lines) contains important debugging information. Issues without the full output are often not reproducible and therefore will be closed as `incomplete`.
The templates provided for the Issues, should be completed and **not removed**, this helps aide the resolution of the issue.
Please re-read your issue once again to avoid a couple of common mistakes (you can and should use this as a checklist):
### Is the description of the issue itself sufficient?
We often get issue reports that we cannot really decipher. While in most cases we eventually get the required information after asking back multiple times, this poses an unnecessary drain on our resources. Many contributors, including myself, are also not native speakers, so we may misread some parts.
We often get issue reports that we cannot really decipher. While in most cases we eventually get the required information after asking back multiple times, this poses an unnecessary drain on our resources.
So please elaborate on what feature you are requesting, or what bug you want to be fixed. Make sure that it's obvious
@ -28,25 +65,31 @@ So please elaborate on what feature you are requesting, or what bug you want to
- How it could be fixed
- How your proposed solution would look like
If your report is shorter than two lines, it is almost certainly missing some of these, which makes it hard for us to respond to it. We're often too polite to close the issue outright, but the missing info makes misinterpretation likely. As a committer myself, I often get frustrated by these issues, since the only possible way for me to move forward on them is to ask for clarification over and over.
If your report is shorter than two lines, it is almost certainly missing some of these, which makes it hard for us to respond to it. We're often too polite to close the issue outright, but the missing info makes misinterpretation likely. We often get frustrated by these issues, since the only possible way for us to move forward on them is to ask for clarification over and over.
For bug reports, this means that your report should contain the *complete* output of youtube-dl when called with the `-v` flag. The error message you get for (most) bugs even says so, but you would not believe how many of our bug reports do not contain this information.
For bug reports, this means that your report should contain the **complete** output of yt-dlp when called with the `-vU` flag. The error message you get for (most) bugs even says so, but you would not believe how many of our bug reports do not contain this information.
If your server has multiple IPs or you suspect censorship, adding `--call-home` may be a good idea to get more diagnostics. If the error is `ERROR: Unable to extract ...` and you cannot reproduce it from multiple countries, add `--dump-pages` (warning: this will yield a rather large output, redirect it to the file `log.txt` by adding `>log.txt 2>&1` to your command-line) or upload the `.dump` files you get when you add `--write-pages` [somewhere](https://gist.github.com/).
If the error is `ERROR: Unable to extract ...` and you cannot reproduce it from multiple countries, add `--write-pages` and upload the `.dump` files you get [somewhere](https://gist.github.com).
**Site support requests must contain an example URL**. An example URL is a URL you might want to download, like `https://www.youtube.com/watch?v=BaW_jenozKc`. There should be an obvious video present. Except under very special circumstances, the main page of a video service (e.g. `https://www.youtube.com/`) is *not* an example URL.
### Are you using the latest version?
Before reporting any issue, type `youtube-dl -U`. This should report that you're up-to-date. About 20% of the reports we receive are already fixed, but people are using outdated versions. This goes for feature requests as well.
Before reporting any issue, type `yt-dlp -U`. This should report that you're up-to-date. This goes for feature requests as well.
### Is the issue already documented?
Make sure that someone has not already opened the issue you're trying to open. Search at the top of the window or browse the [GitHub Issues](https://github.com/ytdl-org/youtube-dl/search?type=Issues) of this repository. If there is an issue, feel free to write something along the lines of "This affects me as well, with version 2015.01.01. Here is some more information on the issue: ...". While some issues may be old, a new post into them often spurs rapid activity.
Make sure that someone has not already opened the issue you're trying to open. Search at the top of the window or browse the [GitHub Issues](https://github.com/yt-dlp/yt-dlp/search?type=Issues) of this repository. If there is an issue, subscribe to it to be notified when there is any progress. Unless you have something useful to add to the conversation, please refrain from commenting.
Additionally, it is also helpful to see if the issue has already been documented in the [youtube-dl issue tracker](https://github.com/ytdl-org/youtube-dl/issues). If similar issues have already been reported in youtube-dl (but not in our issue tracker), links to them can be included in your issue report here.
### Why are existing options not enough?
Before requesting a new feature, please have a quick peek at [the list of supported options](https://github.com/ytdl-org/youtube-dl/blob/master/README.md#options). Many feature requests are for features that actually exist already! Please, absolutely do show off your work in the issue report and detail how the existing similar options do *not* solve your problem.
Before requesting a new feature, please have a quick peek at [the list of supported options](README.md#usage-and-options). Many feature requests are for features that actually exist already! Please, absolutely do show off your work in the issue report and detail how the existing similar options do *not* solve your problem.
### Have you read and understood the changes, between youtube-dl and yt-dlp
There are many changes between youtube-dl and yt-dlp [(changes to default behavior)](README.md#differences-in-default-behavior), and some of the options available have a different behaviour in yt-dlp, or have been removed all together [(list of changes to options)](README.md#deprecated-options). Make sure you have read and understand the differences in the options and how this may impact your downloads before opening an issue.
### Is there enough context in your bug report?
@ -58,87 +101,111 @@ We are then presented with a very complicated request when the original problem
Some of our users seem to think there is a limit of issues they can or should open. There is no limit of issues they can or should open. While it may seem appealing to be able to dump all your issues into one ticket, that means that someone who solves one of your issues cannot mark the issue as closed. Typically, reporting a bunch of issues leads to the ticket lingering since nobody wants to attack that behemoth, until someone mercifully splits the issue into multiple ones.
In particular, every site support request issue should only pertain to services at one site (generally under a common domain, but always using the same backend technology). Do not request support for vimeo user videos, White house podcasts, and Google Plus pages in the same issue. Also, make sure that you don't post bug reports alongside feature requests. As a rule of thumb, a feature request does not include outputs of youtube-dl that are not immediately related to the feature at hand. Do not post reports of a network error alongside the request for a new video service.
In particular, every site support request issue should only pertain to services at one site (generally under a common domain, but always using the same backend technology). Do not request support for vimeo user videos, White house podcasts, and Google Plus pages in the same issue. Also, make sure that you don't post bug reports alongside feature requests. As a rule of thumb, a feature request does not include outputs of yt-dlp that are not immediately related to the feature at hand. Do not post reports of a network error alongside the request for a new video service.
### Is anyone going to need the feature?
Only post features that you (or an incapacitated friend you can personally talk to) require. Do not post features because they seem like a good idea. If they are really useful, they will be requested by someone who requires them.
### Is your question about youtube-dl?
### Is your question about yt-dlp?
Some bug reports are completely unrelated to yt-dlp and relate to a different, or even the reporter's own, application. Please make sure that you are actually using yt-dlp. If you are using a UI for yt-dlp, report the bug to the maintainer of the actual application providing the UI. In general, if you are unable to provide the verbose log, you should not be opening the issue here.
If the issue is with `youtube-dl` (the upstream fork of yt-dlp) and not with yt-dlp, the issue should be raised in the youtube-dl project.
### Are you willing to share account details if needed?
The maintainers and potential contributors of the project often do not have an account for the website you are asking support for. So any developer interested in solving your issue may ask you for account details. It is your personal discretion whether you are willing to share the account in order for the developer to try and solve your issue. However, if you are unwilling or unable to provide details, they obviously cannot work on the issue and it cannot be solved unless some developer who both has an account and is willing/able to contribute decides to solve it.
By sharing an account with anyone, you agree to bear all risks associated with it. The maintainers and yt-dlp can't be held responsible for any misuse of the credentials.
While these steps won't necessarily ensure that no misuse of the account takes place, these are still some good practices to follow.
- Look for people with `Member` (maintainers of the project) or `Contributor` (people who have previously contributed code) tag on their messages.
- Change the password before sharing the account to something random (use [this](https://passwordsgenerator.net/) if you don't have a random password generator).
- Change the password after receiving the account back.
### Is the website primarily used for piracy?
We follow [youtube-dl's policy](https://github.com/ytdl-org/youtube-dl#can-you-add-support-for-this-anime-video-site-or-site-which-shows-current-movies-for-free) to not support services that is primarily used for infringing copyright. Additionally, it has been decided to not to support porn sites that specialize in fakes. We also cannot support any service that serves only [DRM protected content](https://en.wikipedia.org/wiki/Digital_rights_management).
It may sound strange, but some bug reports we receive are completely unrelated to youtube-dl and relate to a different, or even the reporter's own, application. Please make sure that you are actually using youtube-dl. If you are using a UI for youtube-dl, report the bug to the maintainer of the actual application providing the UI. On the other hand, if your UI for youtube-dl fails in some way you believe is related to youtube-dl, by all means, go ahead and report the bug.
# DEVELOPER INSTRUCTIONS
Most users do not need to build youtube-dl and can [download the builds](https://ytdl-org.github.io/youtube-dl/download.html) or get them from their distribution.
Most users do not need to build yt-dlp and can [download the builds](https://github.com/yt-dlp/yt-dlp/releases) or get them via [the other installation methods](README.md#installation).
To run youtube-dl as a developer, you don't need to build anything either. Simply execute
To run yt-dlp as a developer, you don't need to build anything either. Simply execute
python -m youtube_dl
python3 -m yt_dlp
To run the test, simply invoke your favorite test runner, or execute a test file directly; any of the following work:
To run all the available core tests, use:
python -m unittest discover
python test/test_download.py
nosetests
python3 devscripts/run_tests.py
See item 6 of [new extractor tutorial](#adding-support-for-a-new-site) for how to run extractor specific test cases.
If you want to create a build of youtube-dl yourself, you'll need
If you want to create a build of yt-dlp yourself, you can follow the instructions [here](README.md#compile).
## Adding new feature or making overarching changes
* python
* make (only GNU make is supported)
* pandoc
* zip
* nosetests
Before you start writing code for implementing a new feature, open an issue explaining your feature request and at least one use case. This allows the maintainers to decide whether such a feature is desired for the project in the first place, and will provide an avenue to discuss some implementation details. If you open a pull request for a new feature without discussing with us first, do not be surprised when we ask for large changes to the code, or even reject it outright.
### Adding support for a new site
The same applies for changes to the documentation, code style, or overarching changes to the architecture
If you want to add support for a new site, first of all **make sure** this site is **not dedicated to [copyright infringement](README.md#can-you-add-support-for-this-anime-video-site-or-site-which-shows-current-movies-for-free)**. youtube-dl does **not support** such sites thus pull requests adding support for them **will be rejected**.
## Adding support for a new site
If you want to add support for a new site, first of all **make sure** this site is **not dedicated to [copyright infringement](#is-the-website-primarily-used-for-piracy)**. yt-dlp does **not support** such sites thus pull requests adding support for them **will be rejected**.
After you have ensured this site is distributing its content legally, you can follow this quick list (assuming your service is called `yourextractor`):
1. [Fork this repository](https://github.com/ytdl-org/youtube-dl/fork)
2. Check out the source code with:
1. [Fork this repository](https://github.com/yt-dlp/yt-dlp/fork)
1. Check out the source code with:
git clone git@github.com:YOUR_GITHUB_USERNAME/youtube-dl.git
git clone git@github.com:YOUR_GITHUB_USERNAME/yt-dlp.git
3. Start a new git branch with
1. Start a new git branch with
cd youtube-dl
cd yt-dlp
git checkout -b yourextractor
4. Start with this simple template and save it to `youtube_dl/extractor/yourextractor.py`:
1. Start with this simple template and save it to `yt_dlp/extractor/yourextractor.py`:
```python
# coding: utf-8
from __future__ import unicode_literals
from .common import InfoExtractor
class YourExtractorIE(InfoExtractor):
_VALID_URL = r'https?://(?:www\.)?yourextractor\.com/watch/(?P<id>[0-9]+)'
_TEST = {
_TESTS = [{
'url': 'https://yourextractor.com/watch/42',
'md5': 'TODO: md5 sum of the first 10241 bytes of the video file (use --test)',
'info_dict': {
# For videos, only the 'id' and 'ext' fields are required to RUN the test:
'id': '42',
'ext': 'mp4',
'title': 'Video title goes here',
'thumbnail': r're:^https?://.*\.jpg$',
# TODO more properties, either as:
# * A value
# * MD5 checksum; start the string with md5:
# * A regular expression; start the string with re:
# * Any Python type (for example int or float)
# Then if the test run fails, it will output the missing/incorrect fields.
# Properties can be added as:
# * A value, e.g.
# 'title': 'Video title goes here',
# * MD5 checksum; start the string with 'md5:', e.g.
# 'description': 'md5:098f6bcd4621d373cade4e832627b4f6',
# * A regular expression; start the string with 're:', e.g.
# 'thumbnail': r're:^https?://.*\.jpg$',
# * A count of elements in a list; start the string with 'count:', e.g.
# 'tags': 'count:10',
# * Any Python type, e.g.
# 'view_count': int,
}
}
}]
def _real_extract(self, url):
video_id = self._match_id(url)
webpage = self._download_webpage(url, video_id)
# TODO more code goes here, for example ...
title = self._html_search_regex(r'<h1>(.+?)</h1>', webpage, 'title')
@ -147,45 +214,59 @@ After you have ensured this site is distributing its content legally, you can fo
'title': title,
'description': self._og_search_description(webpage),
'uploader': self._search_regex(r'<div[^>]+id="uploader"[^>]*>([^<]+)<', webpage, 'uploader', fatal=False),
# TODO more properties (see youtube_dl/extractor/common.py)
# TODO more properties (see yt_dlp/extractor/common.py)
}
```
5. Add an import in [`youtube_dl/extractor/extractors.py`](https://github.com/ytdl-org/youtube-dl/blob/master/youtube_dl/extractor/extractors.py).
6. Run `python test/test_download.py TestDownload.test_YourExtractor`. This *should fail* at first, but you can continually re-run it until you're done. If you decide to add more than one test, then rename ``_TEST`` to ``_TESTS`` and make it into a list of dictionaries. The tests will then be named `TestDownload.test_YourExtractor`, `TestDownload.test_YourExtractor_1`, `TestDownload.test_YourExtractor_2`, etc. Note that tests with `only_matching` key in test's dict are not counted in.
7. Have a look at [`youtube_dl/extractor/common.py`](https://github.com/ytdl-org/youtube-dl/blob/master/youtube_dl/extractor/common.py) for possible helper methods and a [detailed description of what your extractor should and may return](https://github.com/ytdl-org/youtube-dl/blob/7f41a598b3fba1bcab2817de64a08941200aa3c8/youtube_dl/extractor/common.py#L94-L303). Add tests and code for as many as you want.
8. Make sure your code follows [youtube-dl coding conventions](#youtube-dl-coding-conventions) and check the code with [flake8](https://flake8.pycqa.org/en/latest/index.html#quickstart):
1. Add an import in [`yt_dlp/extractor/_extractors.py`](yt_dlp/extractor/_extractors.py). Note that the class name must end with `IE`.
1. Run `python3 devscripts/run_tests.py YourExtractor`. This *may fail* at first, but you can continually re-run it until you're done. Upon failure, it will output the missing fields and/or correct values which you can copy. If you decide to add more than one test, the tests will then be named `YourExtractor`, `YourExtractor_1`, `YourExtractor_2`, etc. Note that tests with an `only_matching` key in the test's dict are not included in the count. You can also run all the tests in one go with `YourExtractor_all`
1. Make sure you have at least one test for your extractor. Even if all videos covered by the extractor are expected to be inaccessible for automated testing, tests should still be added with a `skip` parameter indicating why the particular test is disabled from running.
1. Have a look at [`yt_dlp/extractor/common.py`](yt_dlp/extractor/common.py) for possible helper methods and a [detailed description of what your extractor should and may return](yt_dlp/extractor/common.py#L119-L440). Add tests and code for as many as you want.
1. Make sure your code follows [yt-dlp coding conventions](#yt-dlp-coding-conventions) and check the code with [flake8](https://flake8.pycqa.org/en/latest/index.html#quickstart):
$ flake8 youtube_dl/extractor/yourextractor.py
$ flake8 yt_dlp/extractor/yourextractor.py
9. Make sure your code works under all [Python](https://www.python.org/) versions claimed supported by youtube-dl, namely 2.6, 2.7, and 3.2+.
10. When the tests pass, [add](https://git-scm.com/docs/git-add) the new files and [commit](https://git-scm.com/docs/git-commit) them and [push](https://git-scm.com/docs/git-push) the result, like this:
1. Make sure your code works under all [Python](https://www.python.org/) versions supported by yt-dlp, namely CPython and PyPy for Python 3.8 and above. Backward compatibility is not required for even older versions of Python.
1. When the tests pass, [add](https://git-scm.com/docs/git-add) the new files, [commit](https://git-scm.com/docs/git-commit) them and [push](https://git-scm.com/docs/git-push) the result, like this:
$ git add youtube_dl/extractor/extractors.py
$ git add youtube_dl/extractor/yourextractor.py
$ git commit -m '[yourextractor] Add new extractor'
$ git add yt_dlp/extractor/_extractors.py
$ git add yt_dlp/extractor/yourextractor.py
$ git commit -m '[yourextractor] Add extractor'
$ git push origin yourextractor
11. Finally, [create a pull request](https://help.github.com/articles/creating-a-pull-request). We'll then review and merge it.
1. Finally, [create a pull request](https://help.github.com/articles/creating-a-pull-request). We'll then review and merge it.
In any case, thank you very much for your contributions!
## youtube-dl coding conventions
**Tip:** To test extractors that require login information, create a file `test/local_parameters.json` and add `"usenetrc": true` or your `username`&`password` or `cookiefile`/`cookiesfrombrowser` in it:
```json
{
"username": "your user name",
"password": "your password"
}
```
## yt-dlp coding conventions
This section introduces a guide lines for writing idiomatic, robust and future-proof extractor code.
Extractors are very fragile by nature since they depend on the layout of the source data provided by 3rd party media hosters out of your control and this layout tends to change. As an extractor implementer your task is not only to write code that will extract media links and metadata correctly but also to minimize dependency on the source's layout and even to make the code foresee potential future changes and be ready for that. This is important because it will allow the extractor not to break on minor layout changes thus keeping old youtube-dl versions working. Even though this breakage issue is easily fixed by emitting a new version of youtube-dl with a fix incorporated, all the previous versions become broken in all repositories and distros' packages that may not be so prompt in fetching the update from us. Needless to say, some non rolling release distros may never receive an update at all.
Extractors are very fragile by nature since they depend on the layout of the source data provided by 3rd party media hosters out of your control and this layout tends to change. As an extractor implementer your task is not only to write code that will extract media links and metadata correctly but also to minimize dependency on the source's layout and even to make the code foresee potential future changes and be ready for that. This is important because it will allow the extractor not to break on minor layout changes thus keeping old yt-dlp versions working. Even though this breakage issue may be easily fixed by a new version of yt-dlp, this could take some time, during which the extractor will remain broken.
### Mandatory and optional metafields
For extraction to work youtube-dl relies on metadata your extractor extracts and provides to youtube-dl expressed by an [information dictionary](https://github.com/ytdl-org/youtube-dl/blob/7f41a598b3fba1bcab2817de64a08941200aa3c8/youtube_dl/extractor/common.py#L94-L303) or simply *info dict*. Only the following meta fields in the *info dict* are considered mandatory for a successful extraction process by youtube-dl:
For extraction to work yt-dlp relies on metadata your extractor extracts and provides to yt-dlp expressed by an [information dictionary](yt_dlp/extractor/common.py#L119-L440) or simply *info dict*. Only the following meta fields in the *info dict* are considered mandatory for a successful extraction process by yt-dlp:
- `id` (media identifier)
- `title` (media title)
- `url` (media download URL) or `formats`
In fact only the last option is technically mandatory (i.e. if you can't figure out the download location of the media the extraction does not make any sense). But by convention youtube-dl also treats `id` and `title` as mandatory. Thus the aforementioned metafields are the critical data that the extraction does not make any sense without and if any of them fail to be extracted then the extractor is considered completely broken.
The aforementioned metafields are the critical data that the extraction does not make any sense without and if any of them fail to be extracted then the extractor is considered completely broken. While all extractors must return a `title`, they must also allow it's extraction to be non-fatal.
For pornographic sites, appropriate `age_limit` must also be returned.
The extractor is allowed to return the info dict without url or formats in some special cases if it allows the user to extract useful information with `--ignore-no-formats-error` - e.g. when the video is a live stream that has not started yet.
[Any field](https://github.com/ytdl-org/youtube-dl/blob/7f41a598b3fba1bcab2817de64a08941200aa3c8/youtube_dl/extractor/common.py#L188-L303) apart from the aforementioned ones are considered **optional**. That means that extraction should be **tolerant** to situations when sources for these fields can potentially be unavailable (even if they are always available at the moment) and **future-proof** in order not to break the extraction of general purpose mandatory fields.
[Any field](yt_dlp/extractor/common.py#219-L426) apart from the aforementioned ones are considered **optional**. That means that extraction should be **tolerant** to situations when sources for these fields can potentially be unavailable (even if they are always available at the moment) and **future-proof** in order not to break the extraction of general purpose mandatory fields.
#### Example
@ -199,8 +280,10 @@ Assume at this point `meta`'s layout is:
```python
{
...
"summary": "some fancy summary text",
"user": {
"name": "uploader name"
},
...
}
```
@ -219,6 +302,30 @@ description = meta['summary'] # incorrect
The latter will break extraction process with `KeyError` if `summary` disappears from `meta` at some later time but with the former approach extraction will just go ahead with `description` set to `None` which is perfectly fine (remember `None` is equivalent to the absence of data).
If the data is nested, do not use `.get` chains, but instead make use of `traverse_obj`.
Considering the above `meta` again, assume you want to extract `["user"]["name"]` and put it in the resulting info dict as `uploader`
```python
uploader = traverse_obj(meta, ('user', 'name')) # correct
```
and not like:
```python
uploader = meta['user']['name'] # incorrect
```
or
```python
uploader = meta.get('user', {}).get('name') # incorrect
```
or
```python
uploader = try_get(meta, lambda x: x['user']['name']) # old utility
```
Similarly, you should pass `fatal=False` when extracting optional data from a webpage with `_search_regex`, `_html_search_regex` or similar methods, for instance:
```python
@ -238,28 +345,70 @@ description = self._search_regex(
```
On failure this code will silently continue the extraction with `description` set to `None`. That is useful for metafields that may or may not be present.
Another thing to remember is not to try to iterate over `None`
Say you extracted a list of thumbnails into `thumbnail_data` and want to iterate over them
```python
thumbnail_data = data.get('thumbnails') or []
thumbnails = [{
'url': item['url'],
'height': item.get('h'),
} for item in thumbnail_data if item.get('url')] # correct
```
and not like:
```python
thumbnail_data = data.get('thumbnails')
thumbnails = [{
'url': item['url'],
'height': item.get('h'),
} for item in thumbnail_data] # incorrect
```
In this case, `thumbnail_data` will be `None` if the field was not found and this will cause the loop `for item in thumbnail_data` to raise a fatal error. Using `or []` avoids this error and results in setting an empty list in `thumbnails` instead.
Alternately, this can be further simplified by using `traverse_obj`
```python
thumbnails = [{
'url': item['url'],
'height': item.get('h'),
} for item in traverse_obj(data, ('thumbnails', lambda _, v: v['url']))]
```
or, even better,
```python
thumbnails = traverse_obj(data, ('thumbnails', ..., {'url': 'url', 'height': 'h'}))
```
### Provide fallbacks
When extracting metadata try to do so from multiple sources. For example if `title` is present in several places, try extracting from at least some of them. This makes it more future-proof in case some of the sources become unavailable.
#### Example
Say `meta` from the previous example has a `title` and you are about to extract it. Since `title` is a mandatory meta field you should end up with something like:
Say `meta` from the previous example has a `title` and you are about to extract it like:
```python
title = meta['title']
title = meta.get('title')
```
If `title` disappears from `meta` in future due to some changes on the hoster's side the extraction would fail since `title` is mandatory. That's expected.
If `title` disappears from `meta` in future due to some changes on the hoster's side the title extraction would fail.
Assume that you have some another source you can extract `title` from, for example `og:title` HTML meta of a `webpage`. In this case you can provide a fallback scenario:
Assume that you have some another source you can extract `title` from, for example `og:title` HTML meta of a `webpage`. In this case you can provide a fallback like:
```python
title = meta.get('title') or self._og_search_title(webpage)
```
This code will try to extract from `meta` first and if it fails it will try extracting `og:title` from a `webpage`.
This code will try to extract from `meta` first and if it fails it will try extracting `og:title` from a `webpage`, making the extractor more robust.
### Regular expressions
@ -282,11 +431,10 @@ Incorrect:
r'(id|ID)=(?P<id>\d+)'
```
#### Make regular expressions relaxed and flexible
When using regular expressions try to write them fuzzy, relaxed and flexible, skipping insignificant parts that are more likely to change, allowing both single and double quotes for quoted values and so on.
##### Example
Say you need to extract `title` from the following HTML code:
@ -298,34 +446,84 @@ Say you need to extract `title` from the following HTML code:
The code for that task should look similar to:
```python
title = self._search_regex(
title = self._search_regex( # correct
r'<span[^>]+class="title"[^>]*>([^<]+)', webpage, 'title')
```
Or even better:
which tolerates potential changes in the `style` attribute's value. Or even better:
```python
title = self._search_regex(
title = self._search_regex( # correct
r'<span[^>]+class=(["\'])title\1[^>]*>(?P<title>[^<]+)',
webpage, 'title', group='title')
```
Note how you tolerate potential changes in the `style` attribute's value or switch from using double quotes to single for `class` attribute:
which also handles both single quotes in addition to double quotes.
The code definitely should not look like:
```python
title = self._search_regex(
title = self._search_regex( # incorrect
r'<span style="position: absolute; left: 910px; width: 90px; float: right; z-index: 9999;" class="title">(.*?)</span>',
webpage, 'title', group='title')
```
or even
```python
title = self._search_regex( # incorrect
r'<span style=".*?" class="title">(.*?)</span>',
webpage, 'title', group='title')
```
Here the presence or absence of other attributes including `style` is irrelevant for the data we need, and so the regex must not depend on it
#### Keep the regular expressions as simple as possible, but no simpler
Since many extractors deal with unstructured data provided by websites, we will often need to use very complex regular expressions. You should try to use the *simplest* regex that can accomplish what you want. In other words, each part of the regex must have a reason for existing. If you can take out a symbol and the functionality does not change, the symbol should not be there.
##### Example
Correct:
```python
_VALID_URL = r'https?://(?:www\.)?website\.com/(?:[^/]+/){3,4}(?P<display_id>[^/]+)_(?P<id>\d+)'
```
Incorrect:
```python
_VALID_URL = r'https?:\/\/(?:www\.)?website\.com\/[^\/]+/[^\/]+/[^\/]+(?:\/[^\/]+)?\/(?P<display_id>[^\/]+)_(?P<id>\d+)'
```
#### Do not misuse `.` and use the correct quantifiers (`+*?`)
Avoid creating regexes that over-match because of wrong use of quantifiers. Also try to avoid non-greedy matching (`?`) where possible since they could easily result in [catastrophic backtracking](https://www.regular-expressions.info/catastrophic.html)
Correct:
```python
title = self._search_regex(r'<span\b[^>]+class="title"[^>]*>([^<]+)', webpage, 'title')
```
Incorrect:
```python
title = self._search_regex(r'<span\b.*class="title".*>(.+?)<', webpage, 'title')
```
### Long lines policy
There is a soft limit to keep lines of code under 80 characters long. This means it should be respected if possible and if it does not make readability and code maintenance worse.
There is a soft limit to keep lines of code under 100 characters long. This means it should be respected if possible and if it does not make readability and code maintenance worse. Sometimes, it may be reasonable to go upto 120 characters and sometimes even 80 can be unreadable. Keep in mind that this is not a hard limit and is just one of many tools to make the code more readable.
For example, you should **never** split long string literals like URLs or some other often copied entities over multiple lines to fit this limit:
Conversely, don't unnecessarily split small lines further. As a rule of thumb, if removing the line split keeps the code under 80 characters, it should be a single line.
##### Examples
Correct:
```python
@ -339,26 +537,76 @@ Incorrect:
'PLMYEtVRpaqY00V9W81Cwmzp6N6vZqfUKD4'
```
Correct:
```python
uploader = traverse_obj(info, ('uploader', 'name'), ('author', 'fullname'))
```
Incorrect:
```python
uploader = traverse_obj(
info,
('uploader', 'name'),
('author', 'fullname'))
```
Correct:
```python
formats = self._extract_m3u8_formats(
m3u8_url, video_id, 'mp4', 'm3u8_native', m3u8_id='hls',
note='Downloading HD m3u8 information', errnote='Unable to download HD m3u8 information')
```
Incorrect:
```python
formats = self._extract_m3u8_formats(m3u8_url,
video_id,
'mp4',
'm3u8_native',
m3u8_id='hls',
note='Downloading HD m3u8 information',
errnote='Unable to download HD m3u8 information')
```
### Quotes
Always use single quotes for strings (even if the string has `'`) and double quotes for docstrings. Use `'''` only for multi-line strings. An exception can be made if a string has multiple single quotes in it and escaping makes it *significantly* harder to read. For f-strings, use you can use double quotes on the inside. But avoid f-strings that have too many quotes inside.
### Inline values
Extracting variables is acceptable for reducing code duplication and improving readability of complex expressions. However, you should avoid extracting variables used only once and moving them to opposite parts of the extractor file, which makes reading the linear flow difficult.
#### Example
#### Examples
Correct:
```python
title = self._html_search_regex(r'<title>([^<]+)</title>', webpage, 'title')
return {
'title': self._html_search_regex(r'<h1>([^<]+)</h1>', webpage, 'title'),
# ...some lines of code...
}
```
Incorrect:
```python
TITLE_RE = r'<title>([^<]+)</title>'
TITLE_RE = r'<h1>([^<]+)</h1>'
# ...some lines of code...
title = self._html_search_regex(TITLE_RE, webpage, 'title')
# ...some lines of code...
return {
'title': title,
# ...some lines of code...
}
```
### Collapse fallbacks
Multiple fallback values can quickly become unwieldy. Collapse multiple fallback values into a single expression via a list of patterns.
@ -384,51 +632,100 @@ description = (
Methods supporting list of patterns are: `_search_regex`, `_html_search_regex`, `_og_search_property`, `_html_search_meta`.
### Trailing parentheses
Always move trailing parentheses after the last argument.
Always move trailing parentheses used for grouping/functions after the last argument. On the other hand, multi-line literal list/tuple/dict/set should closed be in a new line. Generators and list/dict comprehensions may use either style
#### Example
#### Examples
Correct:
```python
url = traverse_obj(info, (
'context', 'dispatcher', 'stores', 'VideoTitlePageStore', 'data', 'video', 0, 'VideoUrlSet', 'VideoUrl'), list)
```
Correct:
```python
lambda x: x['ResultSet']['Result'][0]['VideoUrlSet']['VideoUrl'],
url = traverse_obj(
info,
('context', 'dispatcher', 'stores', 'VideoTitlePageStore', 'data', 'video', 0, 'VideoUrlSet', 'VideoUrl'),
list)
```
Incorrect:
```python
lambda x: x['ResultSet']['Result'][0]['VideoUrlSet']['VideoUrl'],
list,
url = traverse_obj(
info,
('context', 'dispatcher', 'stores', 'VideoTitlePageStore', 'data', 'video', 0, 'VideoUrlSet', 'VideoUrl'),
list
)
```
### Use convenience conversion and parsing functions
Correct:
Wrap all extracted numeric data into safe functions from [`youtube_dl/utils.py`](https://github.com/ytdl-org/youtube-dl/blob/master/youtube_dl/utils.py): `int_or_none`, `float_or_none`. Use them for string to number conversions as well.
```python
f = {
'url': url,
'format_id': format_id,
}
```
Use `url_or_none` for safe URL processing.
Incorrect:
Use `try_get` for safe metadata extraction from parsed JSON.
```python
f = {'url': url,
'format_id': format_id}
```
Use `unified_strdate` for uniform `upload_date` or any `YYYYMMDD` meta field extraction, `unified_timestamp` for uniform `timestamp` extraction, `parse_filesize` for `filesize` extraction, `parse_count` for count meta fields extraction, `parse_resolution`, `parse_duration` for `duration` extraction, `parse_age_limit` for `age_limit` extraction.
Correct:
Explore [`youtube_dl/utils.py`](https://github.com/ytdl-org/youtube-dl/blob/master/youtube_dl/utils.py) for more useful convenience functions.
```python
formats = [process_formats(f) for f in format_data
if f.get('type') in ('hls', 'dash', 'direct') and f.get('downloadable')]
```
#### More examples
Correct:
##### Safely extract optional description from parsed JSON
```python
description = try_get(response, lambda x: x['result']['video'][0]['summary'], compat_str)
formats = [
process_formats(f) for f in format_data
if f.get('type') in ('hls', 'dash', 'direct') and f.get('downloadable')
]
```
##### Safely extract more optional metadata
### Use convenience conversion and parsing functions
Wrap all extracted numeric data into safe functions from [`yt_dlp/utils/`](yt_dlp/utils/): `int_or_none`, `float_or_none`. Use them for string to number conversions as well.
Use `url_or_none` for safe URL processing.
Use `traverse_obj` and `try_call` (superseeds `dict_get` and `try_get`) for safe metadata extraction from parsed JSON.
Use `unified_strdate` for uniform `upload_date` or any `YYYYMMDD` meta field extraction, `unified_timestamp` for uniform `timestamp` extraction, `parse_filesize` for `filesize` extraction, `parse_count` for count meta fields extraction, `parse_resolution`, `parse_duration` for `duration` extraction, `parse_age_limit` for `age_limit` extraction.
Explore [`yt_dlp/utils/`](yt_dlp/utils/) for more useful convenience functions.
#### Examples
```python
video = try_get(response, lambda x: x['result']['video'][0], dict) or {}
description = video.get('summary')
description = traverse_obj(response, ('result', 'video', 'summary'), expected_type=str)
thumbnails = traverse_obj(response, ('result', 'thumbnails', ..., 'url'), expected_type=url_or_none)
video = traverse_obj(response, ('result', 'video', 0), default={}, expected_type=dict)
duration = float_or_none(video.get('durationMs'), scale=1000)
view_count = int_or_none(video.get('views'))
```
# My pull request is labeled pending-fixes
The `pending-fixes` label is added when there are changes requested to a PR. When the necessary changes are made, the label should be removed. However, despite our best efforts, it may sometimes happen that the maintainer did not see the changes or forgot to remove the label. If your PR is still marked as `pending-fixes` a few days after all requested changes have been made, feel free to ping the maintainer who labeled your issue and ask them to re-review and remove the label.
# EMBEDDING YT-DLP
See [README.md#embedding-yt-dlp](README.md#embedding-yt-dlp) for instructions on how to embed yt-dlp in another Python program

@ -1,4 +1,9 @@
pukkandan (owner)
shirt-dev (collaborator)
coletdjnz/colethedj (collaborator)
Ashish0804 (collaborator)
bashonly (collaborator)
Grub4K (collaborator)
h-h-h-h
pauldubois98
nixxo
@ -16,4 +21,592 @@ samiksome
alxnull
FelixFrog
Zocker1999NET
nao20010128nao
kurumigi
bbepis
animelover1984/horahoradev
Pccode66
RobinD42
hseg
DennyDai
codeasashu
teesid
kevinoconnor7
damianoamatruda
2ShedsJackson
CXwudi
xtkoba
llacb47
hheimbuerger
B0pol
lkho
fstirlitz
Lamieur
tsukumijima
Hadi0609
b5eff52
craftingmod
tpikonen
tripulse
king-millez
alex-gedeon
hhirtz
louie-github
MinePlayersPE
olifre
rhsmachine/zenerdi0de
nihil-admirari
krichbanana
ohmybahgosh
nyuszika7h
blackjack4494
pyx
TpmKranz
mzbaulhaque
zackmark29
mbway
zerodytrash
wesnm
pento
rigstot
dirkf
funniray
Jessecar96
jhwgh1968
kikuyan
max-te
nchilada
pgaig
PSlava
stdedos
u-spec-png
Sipherdrakon
kidonng
smege1001
tandy1000
IONECarter
capntrips
mrfade
ParadoxGBB
wlritchi
NeroBurner
mahanstreamer
alerikaisattera
Derkades
BunnyHelp
i6t
std-move
Chocobozzz
ouwou
korli
octotherp
CeruleanSky
zootedb0t
chao813
ChillingPepper
ConquerorDopy
dalanmiller
DigitalDJ
f4pp3rk1ng
gesa
Jules-A
makeworld-the-better-one
MKSherbini
mrx23dot
poschi3
raphaeldore
renalid
sleaux-meaux
sulyi
tmarki
Vangelis66
AjaxGb
ajj8
jakubadamw
jfogelman
timethrow
sarnoud
Bojidarist
18928172992817182/gustaf
nixklai
smplayer-dev
Zirro
CrypticSignal
flashdagger
fractalf
frafra
kaz-us
ozburo
rhendric
sdomi
selfisekai
stanoarn
0xA7404A/Aurora
4a1e2y5
aarubui
chio0hai
cntrl-s
Deer-Spangle
DEvmIb
Grabien/MaximVol
j54vc1bk
mpeter50
mrpapersonic
pabs3
staubichsauger
xenova
Yakabuff
zulaport
ehoogeveen-medweb
PilzAdam
zmousm
iw0nderhow
unit193
TwoThousandHedgehogs/KathrynElrod
Jertzukka
cypheron
Hyeeji
bwildenhain
C0D3D3V
kebianizao
Lapin0t
abdullah-if
DavidSkrundz
mkubecek
raleeper
YuenSzeHong
Sematre
jaller94
r5d
julien-hadleyjack
git-anony-mouse
mdawar
trassshhub
foghawk
k3ns1n
teridon
mozlima
timendum
ischmidt20
CreaValix
sian1468
arkamar
hyano
KiberInfinity
tejing1
Bricio
lazypete365
Aniruddh-J
blackgear
CplPwnies
cyberfox1691
FestplattenSchnitzel
hatienl0i261299
iphoting
jakeogh
lukasfink1
lyz-code
marieell
mdpauley
Mipsters
mxmehl
ofkz
P-reducible
pycabbage
regarten
Ronnnny
schn0sch
s0u1h
MrRawes
cffswb
danielyli
1-Byte
mehq
dzek69
aaearon
panatexxa
kmark
un-def
goggle
Soebb
Fam0r
bohwaz
dodrian
vvto33
ca-za
connercsbn
diegorodriguezv
ekangmonyet
elyse0
evansp
GiedriusS
HE7086
JordanWeatherby
m4tu4g
MarwenDallel
nevack
putnam
rand-net
vertan
Wikidepia
Yipten
moench-tegeder
christoph-heinrich
HobbyistDev
LunarFang416
sbor23
aurelg
adamanldo
gamer191
vkorablin
Burve
mnn
ZhymabekRoman
mozbugbox
aejdl
ping
sqrtNOT
bubbleguuum
darkxex
miseran
StefanLobbenmeier
crazymoose77756
nomevi
Brett824
pingiun
dosy4ev
EhtishamSabir
Ferdi265
FirefoxMetzger
ftk
lamby
llamasblade
lockmatrix
misaelaguayo
odo2063
pritam20ps05
scy
sheerluck
AxiosDeminence
DjesonPV
eren-kemer
freezboltz
Galiley
haobinliang
Mehavoid
winterbird-code
yashkc2025
aldoridhoni
jacobtruman
masta79
palewire
cgrigis
DavidH-2022
dfaker
jackyyf
ohaiibuzzle
SamantazFox
shreyasminocha
tejasa97
xenov
satan1st
0xGodspeed
5736d79
587021c
basrieter
Bobscorn
CNugteren
columndeeply
DoubleCouponDay
Fabi019
GautamMKGarg
itachi-19
jeroenj
josanabr
LiviaMedeiros
nikita-moor
snapdgn
SuperSonicHub1
tannertechnology
Timendum
tobi1805
TokyoBlackHole
ajayyy
Alienmaster
bsun0000
changren-wcr
ClosedPort22
CrankDatSouljaBoy
cruel-efficiency
endotronic
Generator
gibson042
How-Bout-No
invertico
jahway603
jwoglom
lksj
megapro17
mlampe
MrOctopus
nosoop
puc9
sashashura
schnusch
SG5
the-marenga
tkgmomosheep
vitkhab
glensc
synthpop123
tntmod54321
milkknife
Bnyro
CapacitorSet
stelcodes
skbeh
muddi900
digitall
chengzhicn
mexus
JChris246
redraskal
Spicadox
barsnick
docbender
KurtBestor
Chrissi2812
FrederikNS
gschizas
JC-Chung
mzhou
OndrejBakan
ab4cbef
aionescu
amra
ByteDream
carusocr
chexxor
felixonmars
FrankZ85
FriedrichRehren
gregsadetsky
LeoniePhiline
LowSuggestion912
Matumo
OIRNOIR
OMEGARAZER
oxamun
pmitchell86
qbnu
qulaz
rebane2001
road-master
rohieb
sdht0
seproDev
Hill-98
LXYan2333
mushbite
venkata-krishnas
7vlad7
alexklapheke
arobase-che
bepvte
bergoid
blmarket
brandon-dacrib
c-basalt
CoryTibbettsDev
Cyberes
D0LLYNH0
danog
DataGhost
falbrechtskirchinger
foreignBlade
garret1317
hasezoey
hoaluvn
ItzMaxTV
ivanskodje
jo-nike
kangalio
linsui
makew0rld
menschel
mikf
mrscrapy
NDagestad
Neurognostic
NextFire
nick-cd
permunkle
pzhlkj6612
ringus1
rjy
Schmoaaaaah
sjthespian
theperfectpunk
toomyzoom
truedread
TxI5
unbeatable-101
vampirefrog
vidiot720
viktor-enzell
zhgwn
barthelmannk
berkanteber
OverlordQ
rexlambert22
Ti4eeT4e
AmanSal1
bbilly1
meliber
nnoboa
rdamas
RfadnjdExt
urectanc
nao20010128nao/Lesmiscore
04-pasha-04
aaruni96
aky-01
AmirAflak
ApoorvShah111
at-wat
davinkevin
demon071
denhotte
FinnRG
fireattack
Frankgoji
GD-Slime
hatsomatt
ifan-t
kshitiz305
kylegustavo
mabdelfattah
nathantouze
niemands
Rajeshwaran2001
RedDeffender
Rohxn16
sb0stn
SevenLives
simon300000
snixon
soundchaser128
szabyg
trainman261
trislee
wader
Yalab7
zhallgato
zhong-yiyu
Zprokkel
AS6939
drzraf
handlerug
jiru
madewokherd
xofe
awalgarg
midnightveil
naginatana
Riteo
1100101
aniolpages
bartbroere
CrendKing
Esokrates
HitomaruKonpaku
LoserFox
peci1
saintliao
shubhexists
SirElderling
almx
elivinsky
starius
TravisDupes
amir16yp
Fymyte
Ganesh910
hashFactory
kclauhk
Kyraminol
lstrojny
middlingphys
NickCis
nicodato
prettykool
S-Aarab
sonmezberkay
TSRBerry
114514ns
agibson-fl
alard
alien-developers
antonkesy
ArnauvGilotra
Arthurszzz
Bibhav48
Bl4Cc4t
boredzo
Caesim404
chkuendig
chtk
Danish-H
dasidiot
diman8
divStar
DmitryScaletta
feederbox826
gmes78
gonzalezjo
hui1601
infanf
jazz1611
jingtra
jkmartindale
johnvictorfs
llistochek
marcdumais
martinxyz
michal-repo
mrmedieval
nbr23
Nicals
Noor-5
NurTasin
pompos02
Pranaxcau
pwaldhauer
RaduManole
RalphORama
rrgomes
ruiminggu
rvsit
sefidel
shmohawk
Snack-X
src-tinkerer
stilor
syntaxsurge
t-nil
ufukk
vista-narvas
x11x
xpadev-net
Xpl0itU
YoshichikaAAA
zhijinwuu
alb
hruzgar
kasper93
leoheitmannruiz
luiso1979
nipotan
Offert4324
sta1us
Tomoka1
trwstin

File diff suppressed because it is too large Load Diff

@ -0,0 +1,63 @@
# Collaborators
This is a list of the collaborators of the project and their major contributions. See the [Changelog](Changelog.md) for more details.
You can also find lists of all [contributors of yt-dlp](CONTRIBUTORS) and [authors of youtube-dl](https://github.com/ytdl-org/youtube-dl/blob/master/AUTHORS)
## [pukkandan](https://github.com/pukkandan)
[![ko-fi](https://img.shields.io/badge/_-Ko--fi-red.svg?logo=kofi&labelColor=555555&style=for-the-badge)](https://ko-fi.com/pukkandan)
[![gh-sponsor](https://img.shields.io/badge/_-Github-white.svg?logo=github&labelColor=555555&style=for-the-badge)](https://github.com/sponsors/pukkandan)
* Owner of the fork
## [shirt](https://github.com/shirt-dev)
[![ko-fi](https://img.shields.io/badge/_-Ko--fi-red.svg?logo=kofi&labelColor=555555&style=for-the-badge)](https://ko-fi.com/shirt)
* Multithreading (`-N`) and aria2c support for fragment downloads
* Support for media initialization and discontinuity in HLS
* The self-updater (`-U`)
## [coletdjnz](https://github.com/coletdjnz)
[![gh-sponsor](https://img.shields.io/badge/_-Github-white.svg?logo=github&labelColor=555555&style=for-the-badge)](https://github.com/sponsors/coletdjnz)
* Improved plugin architecture
* Rewrote the networking infrastructure, implemented support for `requests`
* YouTube improvements including: age-gate bypass, private playlists, multiple-clients (to avoid throttling) and a lot of under-the-hood improvements
* Added support for new websites YoutubeWebArchive, MainStreaming, PRX, nzherald, Mediaklikk, StarTV etc
* Improved/fixed support for Patreon, panopto, gfycat, itv, pbs, SouthParkDE etc
## [Ashish0804](https://github.com/Ashish0804) <sub><sup>[Inactive]</sup></sub>
[![ko-fi](https://img.shields.io/badge/_-Ko--fi-red.svg?logo=kofi&labelColor=555555&style=for-the-badge)](https://ko-fi.com/ashish0804)
* Added support for new websites BiliIntl, DiscoveryPlusIndia, OlympicsReplay, PlanetMarathi, ShemarooMe, Utreon, Zee5 etc
* Added playlist/series downloads for Hotstar, ParamountPlus, Rumble, SonyLIV, Trovo, TubiTv, Voot etc
* Improved/fixed support for HiDive, HotStar, Hungama, LBRY, LinkedInLearning, Mxplayer, SonyLiv, TV2, Vimeo, VLive etc
## [bashonly](https://github.com/bashonly)
* `--update-to`, self-updater rewrite, automated/nightly/master releases
* `--cookies-from-browser` support for Firefox containers, external downloader cookie handling overhaul
* Added support for new websites like Dacast, Kick, NBCStations, Triller, VideoKen, Weverse, WrestleUniverse etc
* Improved/fixed support for Anvato, Brightcove, Reddit, SlidesLive, TikTok, Twitter, Vimeo etc
## [Grub4K](https://github.com/Grub4K)
[![gh-sponsor](https://img.shields.io/badge/_-Github-white.svg?logo=github&labelColor=555555&style=for-the-badge)](https://github.com/sponsors/Grub4K) [![ko-fi](https://img.shields.io/badge/_-Ko--fi-red.svg?logo=kofi&labelColor=555555&style=for-the-badge)](https://ko-fi.com/Grub4K)
* `--update-to`, self-updater rewrite, automated/nightly/master releases
* Reworked internals like `traverse_obj`, various core refactors and bugs fixes
* Implemented proper progress reporting for parallel downloads
* Improved/fixed/added Bundestag, crunchyroll, pr0gramm, Twitter, WrestleUniverse etc

@ -1,9 +0,0 @@
include README.md
include LICENSE
include AUTHORS
include ChangeLog
include youtube-dlc.bash-completion
include youtube-dlc.fish
include youtube-dlc.1
recursive-include docs Makefile conf.py *.rst
recursive-include test *

@ -1,141 +1,172 @@
all: youtube-dlc doc man
doc: README.md CONTRIBUTING.md issuetemplates supportedsites
man: README.txt youtube-dlc.1 youtube-dlc.bash-completion youtube-dlc.zsh youtube-dlc.fish
clean:
rm -rf youtube-dlc.1.temp.md youtube-dlc.1 youtube-dlc.bash-completion README.txt MANIFEST build/ dist/ .coverage cover/ youtube-dlc.tar.gz youtube-dlc.zsh youtube-dlc.fish youtube_dlc/extractor/lazy_extractors.py *.dump *.part* *.ytdl *.info.json *.mp4 *.m4a *.flv *.mp3 *.avi *.mkv *.webm *.3gp *.wav *.ape *.swf *.jpg *.png *.spec CONTRIBUTING.md.tmp youtube-dlc youtube-dlc.exe
find . -name "*.pyc" -delete
find . -name "*.class" -delete
all: lazy-extractors yt-dlp doc pypi-files
clean: clean-test clean-dist
clean-all: clean clean-cache
completions: completion-bash completion-fish completion-zsh
doc: README.md CONTRIBUTING.md CONTRIBUTORS issuetemplates supportedsites
ot: offlinetest
tar: yt-dlp.tar.gz
# Keep this list in sync with pyproject.toml includes/artifacts
# intended use: when building a source distribution,
# make pypi-files && python3 -m build -sn .
pypi-files: AUTHORS Changelog.md LICENSE README.md README.txt supportedsites \
completions yt-dlp.1 pyproject.toml setup.cfg devscripts/* test/*
.PHONY: all clean clean-all clean-test clean-dist clean-cache \
completions completion-bash completion-fish completion-zsh \
doc issuetemplates supportedsites ot offlinetest codetest test \
tar pypi-files lazy-extractors install uninstall
clean-test:
rm -rf test/testdata/sigs/player-*.js tmp/ *.annotations.xml *.aria2 *.description *.dump *.frag \
*.frag.aria2 *.frag.urls *.info.json *.live_chat.json *.meta *.part* *.tmp *.temp *.unknown_video *.ytdl \
*.3gp *.ape *.ass *.avi *.desktop *.f4v *.flac *.flv *.gif *.jpeg *.jpg *.lrc *.m4a *.m4v *.mhtml *.mkv *.mov *.mp3 *.mp4 \
*.mpg *.mpga *.oga *.ogg *.opus *.png *.sbv *.srt *.ssa *.swf *.swp *.tt *.ttml *.url *.vtt *.wav *.webloc *.webm *.webp
clean-dist:
rm -rf yt-dlp.1.temp.md yt-dlp.1 README.txt MANIFEST build/ dist/ .coverage cover/ yt-dlp.tar.gz completions/ \
yt_dlp/extractor/lazy_extractors.py *.spec CONTRIBUTING.md.tmp yt-dlp yt-dlp.exe yt_dlp.egg-info/ AUTHORS
clean-cache:
find . \( \
-type d -name .pytest_cache -o -type d -name __pycache__ -o -name "*.pyc" -o -name "*.class" \
\) -prune -exec rm -rf {} \;
completion-bash: completions/bash/yt-dlp
completion-fish: completions/fish/yt-dlp.fish
completion-zsh: completions/zsh/_yt-dlp
lazy-extractors: yt_dlp/extractor/lazy_extractors.py
PREFIX ?= /usr/local
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/man
SHAREDIR ?= $(PREFIX)/share
# make_supportedsites.py doesnot work correctly in python2
PYTHON ?= /usr/bin/env python3
# set SYSCONFDIR to /etc if PREFIX=/usr or PREFIX=/usr/local
SYSCONFDIR = $(shell if [ $(PREFIX) = /usr -o $(PREFIX) = /usr/local ]; then echo /etc; else echo $(PREFIX)/etc; fi)
# set markdown input format to "markdown-smart" for pandoc version 2 and to "markdown" for pandoc prior to version 2
MARKDOWN = $(shell if [ `pandoc -v | head -n1 | cut -d" " -f2 | head -c1` = "2" ]; then echo markdown-smart; else echo markdown; fi)
install: youtube-dlc youtube-dlc.1 youtube-dlc.bash-completion youtube-dlc.zsh youtube-dlc.fish
install -d $(DESTDIR)$(BINDIR)
install -m 755 youtube-dlc $(DESTDIR)$(BINDIR)
install -d $(DESTDIR)$(MANDIR)/man1
install -m 644 youtube-dlc.1 $(DESTDIR)$(MANDIR)/man1
install -d $(DESTDIR)$(SYSCONFDIR)/bash_completion.d
install -m 644 youtube-dlc.bash-completion $(DESTDIR)$(SYSCONFDIR)/bash_completion.d/youtube-dlc
install -d $(DESTDIR)$(SHAREDIR)/zsh/site-functions
install -m 644 youtube-dlc.zsh $(DESTDIR)$(SHAREDIR)/zsh/site-functions/_youtube-dlc
install -d $(DESTDIR)$(SYSCONFDIR)/fish/completions
install -m 644 youtube-dlc.fish $(DESTDIR)$(SYSCONFDIR)/fish/completions/youtube-dlc.fish
GNUTAR ?= tar
# set markdown input format to "markdown-smart" for pandoc version 2+ and to "markdown" for pandoc prior to version 2
PANDOC_VERSION_CMD = pandoc -v 2>/dev/null | head -n1 | cut -d' ' -f2 | head -c1
PANDOC_VERSION != $(PANDOC_VERSION_CMD)
PANDOC_VERSION ?= $(shell $(PANDOC_VERSION_CMD))
MARKDOWN_CMD = if [ "$(PANDOC_VERSION)" = "1" -o "$(PANDOC_VERSION)" = "0" ]; then echo markdown; else echo markdown-smart; fi
MARKDOWN != $(MARKDOWN_CMD)
MARKDOWN ?= $(shell $(MARKDOWN_CMD))
install: lazy-extractors yt-dlp yt-dlp.1 completions
mkdir -p $(DESTDIR)$(BINDIR)
install -m755 yt-dlp $(DESTDIR)$(BINDIR)/yt-dlp
mkdir -p $(DESTDIR)$(MANDIR)/man1
install -m644 yt-dlp.1 $(DESTDIR)$(MANDIR)/man1/yt-dlp.1
mkdir -p $(DESTDIR)$(SHAREDIR)/bash-completion/completions
install -m644 completions/bash/yt-dlp $(DESTDIR)$(SHAREDIR)/bash-completion/completions/yt-dlp
mkdir -p $(DESTDIR)$(SHAREDIR)/zsh/site-functions
install -m644 completions/zsh/_yt-dlp $(DESTDIR)$(SHAREDIR)/zsh/site-functions/_yt-dlp
mkdir -p $(DESTDIR)$(SHAREDIR)/fish/vendor_completions.d
install -m644 completions/fish/yt-dlp.fish $(DESTDIR)$(SHAREDIR)/fish/vendor_completions.d/yt-dlp.fish
uninstall:
rm -f $(DESTDIR)$(BINDIR)/yt-dlp
rm -f $(DESTDIR)$(MANDIR)/man1/yt-dlp.1
rm -f $(DESTDIR)$(SHAREDIR)/bash-completion/completions/yt-dlp
rm -f $(DESTDIR)$(SHAREDIR)/zsh/site-functions/_yt-dlp
rm -f $(DESTDIR)$(SHAREDIR)/fish/vendor_completions.d/yt-dlp.fish
codetest:
flake8 .
test:
#nosetests --with-coverage --cover-package=youtube_dlc --cover-html --verbose --processes 4 test
nosetests --verbose test
$(PYTHON) -m pytest
$(MAKE) codetest
ot: offlinetest
# Keep this list in sync with devscripts/run_tests.sh
offlinetest: codetest
$(PYTHON) -m nose --verbose test \
--exclude test_age_restriction.py \
--exclude test_download.py \
--exclude test_iqiyi_sdk_interpreter.py \
--exclude test_overwrites.py \
--exclude test_socks.py \
--exclude test_subtitles.py \
--exclude test_write_annotations.py \
--exclude test_youtube_lists.py \
--exclude test_youtube_signature.py \
--exclude test_post_hooks.py
tar: youtube-dlc.tar.gz
.PHONY: all clean install test tar bash-completion pypi-files zsh-completion fish-completion ot offlinetest codetest supportedsites
pypi-files: youtube-dlc.bash-completion README.txt youtube-dlc.1 youtube-dlc.fish
youtube-dlc: youtube_dlc/*.py youtube_dlc/*/*.py
$(PYTHON) -m pytest -k "not download"
CODE_FOLDERS_CMD = find yt_dlp -type f -name '__init__.py' | sed 's,/__init__.py,,' | grep -v '/__' | sort
CODE_FOLDERS != $(CODE_FOLDERS_CMD)
CODE_FOLDERS ?= $(shell $(CODE_FOLDERS_CMD))
CODE_FILES_CMD = for f in $(CODE_FOLDERS) ; do echo "$$f" | sed 's,$$,/*.py,' ; done
CODE_FILES != $(CODE_FILES_CMD)
CODE_FILES ?= $(shell $(CODE_FILES_CMD))
yt-dlp: $(CODE_FILES)
mkdir -p zip
for d in youtube_dlc youtube_dlc/downloader youtube_dlc/extractor youtube_dlc/postprocessor ; do \
for d in $(CODE_FOLDERS) ; do \
mkdir -p zip/$$d ;\
cp -pPR $$d/*.py zip/$$d/ ;\
done
touch -t 200001010101 zip/youtube_dlc/*.py zip/youtube_dlc/*/*.py
mv zip/youtube_dlc/__main__.py zip/
cd zip ; zip -q ../youtube-dlc youtube_dlc/*.py youtube_dlc/*/*.py __main__.py
(cd zip && touch -t 200001010101 $(CODE_FILES))
mv zip/yt_dlp/__main__.py zip/
(cd zip && zip -q ../yt-dlp $(CODE_FILES) __main__.py)
rm -rf zip
echo '#!$(PYTHON)' > youtube-dlc
cat youtube-dlc.zip >> youtube-dlc
rm youtube-dlc.zip
chmod a+x youtube-dlc
echo '#!$(PYTHON)' > yt-dlp
cat yt-dlp.zip >> yt-dlp
rm yt-dlp.zip
chmod a+x yt-dlp
README.md: youtube_dlc/*.py youtube_dlc/*/*.py
COLUMNS=80 $(PYTHON) youtube_dlc/__main__.py --help | $(PYTHON) devscripts/make_readme.py
README.md: $(CODE_FILES) devscripts/make_readme.py
COLUMNS=80 $(PYTHON) yt_dlp/__main__.py --ignore-config --help | $(PYTHON) devscripts/make_readme.py
CONTRIBUTING.md: README.md
CONTRIBUTING.md: README.md devscripts/make_contributing.py
$(PYTHON) devscripts/make_contributing.py README.md CONTRIBUTING.md
issuetemplates: devscripts/make_issue_template.py .github/ISSUE_TEMPLATE_tmpl/1_broken_site.md .github/ISSUE_TEMPLATE_tmpl/2_site_support_request.md .github/ISSUE_TEMPLATE_tmpl/3_site_feature_request.md .github/ISSUE_TEMPLATE_tmpl/4_bug_report.md .github/ISSUE_TEMPLATE_tmpl/5_feature_request.md youtube_dlc/version.py
$(PYTHON) devscripts/make_issue_template.py .github/ISSUE_TEMPLATE_tmpl/1_broken_site.md .github/ISSUE_TEMPLATE/1_broken_site.md
$(PYTHON) devscripts/make_issue_template.py .github/ISSUE_TEMPLATE_tmpl/2_site_support_request.md .github/ISSUE_TEMPLATE/2_site_support_request.md
$(PYTHON) devscripts/make_issue_template.py .github/ISSUE_TEMPLATE_tmpl/3_site_feature_request.md .github/ISSUE_TEMPLATE/3_site_feature_request.md
$(PYTHON) devscripts/make_issue_template.py .github/ISSUE_TEMPLATE_tmpl/4_bug_report.md .github/ISSUE_TEMPLATE/4_bug_report.md
$(PYTHON) devscripts/make_issue_template.py .github/ISSUE_TEMPLATE_tmpl/5_feature_request.md .github/ISSUE_TEMPLATE/5_feature_request.md
issuetemplates: devscripts/make_issue_template.py .github/ISSUE_TEMPLATE_tmpl/1_broken_site.yml .github/ISSUE_TEMPLATE_tmpl/2_site_support_request.yml .github/ISSUE_TEMPLATE_tmpl/3_site_feature_request.yml .github/ISSUE_TEMPLATE_tmpl/4_bug_report.yml .github/ISSUE_TEMPLATE_tmpl/5_feature_request.yml yt_dlp/version.py
$(PYTHON) devscripts/make_issue_template.py .github/ISSUE_TEMPLATE_tmpl/1_broken_site.yml .github/ISSUE_TEMPLATE/1_broken_site.yml
$(PYTHON) devscripts/make_issue_template.py .github/ISSUE_TEMPLATE_tmpl/2_site_support_request.yml .github/ISSUE_TEMPLATE/2_site_support_request.yml
$(PYTHON) devscripts/make_issue_template.py .github/ISSUE_TEMPLATE_tmpl/3_site_feature_request.yml .github/ISSUE_TEMPLATE/3_site_feature_request.yml
$(PYTHON) devscripts/make_issue_template.py .github/ISSUE_TEMPLATE_tmpl/4_bug_report.yml .github/ISSUE_TEMPLATE/4_bug_report.yml
$(PYTHON) devscripts/make_issue_template.py .github/ISSUE_TEMPLATE_tmpl/5_feature_request.yml .github/ISSUE_TEMPLATE/5_feature_request.yml
$(PYTHON) devscripts/make_issue_template.py .github/ISSUE_TEMPLATE_tmpl/6_question.yml .github/ISSUE_TEMPLATE/6_question.yml
supportedsites:
$(PYTHON) devscripts/make_supportedsites.py docs/supportedsites.md
$(PYTHON) devscripts/make_supportedsites.py supportedsites.md
README.txt: README.md
pandoc -f $(MARKDOWN) -t plain README.md -o README.txt
youtube-dlc.1: README.md
$(PYTHON) devscripts/prepare_manpage.py youtube-dlc.1.temp.md
pandoc -s -f $(MARKDOWN) -t man youtube-dlc.1.temp.md -o youtube-dlc.1
rm -f youtube-dlc.1.temp.md
yt-dlp.1: README.md devscripts/prepare_manpage.py
$(PYTHON) devscripts/prepare_manpage.py yt-dlp.1.temp.md
pandoc -s -f $(MARKDOWN) -t man yt-dlp.1.temp.md -o yt-dlp.1
rm -f yt-dlp.1.temp.md
youtube-dlc.bash-completion: youtube_dlc/*.py youtube_dlc/*/*.py devscripts/bash-completion.in
completions/bash/yt-dlp: $(CODE_FILES) devscripts/bash-completion.in
mkdir -p completions/bash
$(PYTHON) devscripts/bash-completion.py
bash-completion: youtube-dlc.bash-completion
youtube-dlc.zsh: youtube_dlc/*.py youtube_dlc/*/*.py devscripts/zsh-completion.in
completions/zsh/_yt-dlp: $(CODE_FILES) devscripts/zsh-completion.in
mkdir -p completions/zsh
$(PYTHON) devscripts/zsh-completion.py
zsh-completion: youtube-dlc.zsh
youtube-dlc.fish: youtube_dlc/*.py youtube_dlc/*/*.py devscripts/fish-completion.in
completions/fish/yt-dlp.fish: $(CODE_FILES) devscripts/fish-completion.in
mkdir -p completions/fish
$(PYTHON) devscripts/fish-completion.py
fish-completion: youtube-dlc.fish
lazy-extractors: youtube_dlc/extractor/lazy_extractors.py
_EXTRACTOR_FILES = $(shell find youtube_dlc/extractor -iname '*.py' -and -not -iname 'lazy_extractors.py')
youtube_dlc/extractor/lazy_extractors.py: devscripts/make_lazy_extractors.py devscripts/lazy_load_template.py $(_EXTRACTOR_FILES)
_EXTRACTOR_FILES_CMD = find yt_dlp/extractor -name '*.py' -and -not -name 'lazy_extractors.py'
_EXTRACTOR_FILES != $(_EXTRACTOR_FILES_CMD)
_EXTRACTOR_FILES ?= $(shell $(_EXTRACTOR_FILES_CMD))
yt_dlp/extractor/lazy_extractors.py: devscripts/make_lazy_extractors.py devscripts/lazy_load_template.py $(_EXTRACTOR_FILES)
$(PYTHON) devscripts/make_lazy_extractors.py $@
youtube-dlc.tar.gz: youtube-dlc README.md README.txt youtube-dlc.1 youtube-dlc.bash-completion youtube-dlc.zsh youtube-dlc.fish ChangeLog AUTHORS
@tar -czf youtube-dlc.tar.gz --transform "s|^|youtube-dlc/|" --owner 0 --group 0 \
yt-dlp.tar.gz: all
@$(GNUTAR) -czf yt-dlp.tar.gz --transform "s|^|yt-dlp/|" --owner 0 --group 0 \
--exclude '*.DS_Store' \
--exclude '*.kate-swp' \
--exclude '*.pyc' \
--exclude '*.pyo' \
--exclude '*~' \
--exclude '__pycache__' \
--exclude '.pytest_cache' \
--exclude '.git' \
--exclude 'docs/_build' \
-- \
bin devscripts test youtube_dlc docs \
ChangeLog AUTHORS LICENSE README.md README.txt \
Makefile MANIFEST.in youtube-dlc.1 youtube-dlc.bash-completion \
youtube-dlc.zsh youtube-dlc.fish setup.py setup.cfg \
youtube-dlc
README.md supportedsites.md Changelog.md LICENSE \
CONTRIBUTING.md Collaborators.md CONTRIBUTORS AUTHORS \
Makefile yt-dlp.1 README.txt completions .gitignore \
setup.cfg yt-dlp yt_dlp pyproject.toml devscripts test
AUTHORS: Changelog.md
@if [ -d '.git' ] && command -v git > /dev/null ; then \
echo 'Generating $@ from git commit history' ; \
git shortlog -s -n HEAD | cut -f2 | sort > $@ ; \
fi
CONTRIBUTORS: Changelog.md
@if [ -d '.git' ] && command -v git > /dev/null ; then \
echo 'Updating $@ from git commit history' ; \
$(PYTHON) devscripts/make_changelog.py -v -c > /dev/null ; \
fi

File diff suppressed because it is too large Load Diff

@ -0,0 +1,10 @@
services:
static:
build: static
environment:
channel: ${channel}
origin: ${origin}
version: ${version}
volumes:
- ~/build:/build
- ../..:/yt-dlp

@ -0,0 +1,21 @@
FROM alpine:3.19 as base
RUN apk --update add --no-cache \
build-base \
python3 \
pipx \
;
RUN pipx install pyinstaller
# Requires above step to prepare the shared venv
RUN ~/.local/share/pipx/shared/bin/python -m pip install -U wheel
RUN apk --update add --no-cache \
scons \
patchelf \
binutils \
;
RUN pipx install staticx
WORKDIR /yt-dlp
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT /entrypoint.sh

@ -0,0 +1,13 @@
#!/bin/ash
set -e
source ~/.local/share/pipx/venvs/pyinstaller/bin/activate
python -m devscripts.install_deps --include secretstorage
python -m devscripts.make_lazy_extractors
python devscripts/update-version.py -c "${channel}" -r "${origin}" "${version}"
python -m bundle.pyinstaller
deactivate
source ~/.local/share/pipx/venvs/staticx/bin/activate
staticx /yt-dlp/dist/yt-dlp_linux /build/yt-dlp_linux
deactivate

@ -0,0 +1,59 @@
#!/usr/bin/env python3
# Allow execution from anywhere
import os
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import warnings
from py2exe import freeze
from devscripts.utils import read_version
VERSION = read_version()
def main():
warnings.warn(
'py2exe builds do not support pycryptodomex and needs VC++14 to run. '
'It is recommended to run "pyinst.py" to build using pyinstaller instead')
freeze(
console=[{
'script': './yt_dlp/__main__.py',
'dest_base': 'yt-dlp',
'icon_resources': [(1, 'devscripts/logo.ico')],
}],
version_info={
'version': VERSION,
'description': 'A feature-rich command-line audio/video downloader',
'comments': 'Official repository: <https://github.com/yt-dlp/yt-dlp>',
'product_name': 'yt-dlp',
'product_version': VERSION,
},
options={
'bundle_files': 0,
'compressed': 1,
'optimize': 2,
'dist_dir': './dist',
'excludes': [
# py2exe cannot import Crypto
'Crypto',
'Cryptodome',
# py2exe appears to confuse this with our socks library.
# We don't use pysocks and urllib3.contrib.socks would fail to import if tried.
'urllib3.contrib.socks'
],
'dll_excludes': ['w9xpopen.exe', 'crypt32.dll'],
# Modules that are only imported dynamically must be added here
'includes': ['yt_dlp.compat._legacy', 'yt_dlp.compat._deprecated',
'yt_dlp.utils._legacy', 'yt_dlp.utils._deprecated'],
},
zipfile=None,
)
if __name__ == '__main__':
main()

@ -0,0 +1,132 @@
#!/usr/bin/env python3
# Allow direct execution
import os
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import platform
from PyInstaller.__main__ import run as run_pyinstaller
from devscripts.utils import read_version
OS_NAME, MACHINE, ARCH = sys.platform, platform.machine().lower(), platform.architecture()[0][:2]
if MACHINE in ('x86', 'x86_64', 'amd64', 'i386', 'i686'):
MACHINE = 'x86' if ARCH == '32' else ''
def main():
opts, version = parse_options(), read_version()
onedir = '--onedir' in opts or '-D' in opts
if not onedir and '-F' not in opts and '--onefile' not in opts:
opts.append('--onefile')
name, final_file = exe(onedir)
print(f'Building yt-dlp v{version} for {OS_NAME} {platform.machine()} with options {opts}')
print('Remember to update the version using "devscripts/update-version.py"')
if not os.path.isfile('yt_dlp/extractor/lazy_extractors.py'):
print('WARNING: Building without lazy_extractors. Run '
'"devscripts/make_lazy_extractors.py" to build lazy extractors', file=sys.stderr)
print(f'Destination: {final_file}\n')
opts = [
f'--name={name}',
'--icon=devscripts/logo.ico',
'--upx-exclude=vcruntime140.dll',
'--noconfirm',
'--additional-hooks-dir=yt_dlp/__pyinstaller',
*opts,
'yt_dlp/__main__.py',
]
print(f'Running PyInstaller with {opts}')
run_pyinstaller(opts)
set_version_info(final_file, version)
def parse_options():
# Compatibility with older arguments
opts = sys.argv[1:]
if opts[0:1] in (['32'], ['64']):
if ARCH != opts[0]:
raise Exception(f'{opts[0]}bit executable cannot be built on a {ARCH}bit system')
opts = opts[1:]
return opts
def exe(onedir):
"""@returns (name, path)"""
name = '_'.join(filter(None, (
'yt-dlp',
{'win32': '', 'darwin': 'macos'}.get(OS_NAME, OS_NAME),
MACHINE,
)))
return name, ''.join(filter(None, (
'dist/',
onedir and f'{name}/',
name,
OS_NAME == 'win32' and '.exe'
)))
def version_to_list(version):
version_list = version.split('.')
return list(map(int, version_list)) + [0] * (4 - len(version_list))
def set_version_info(exe, version):
if OS_NAME == 'win32':
windows_set_version(exe, version)
def windows_set_version(exe, version):
from PyInstaller.utils.win32.versioninfo import (
FixedFileInfo,
StringFileInfo,
StringStruct,
StringTable,
VarFileInfo,
VarStruct,
VSVersionInfo,
)
try:
from PyInstaller.utils.win32.versioninfo import SetVersion
except ImportError: # Pyinstaller >= 5.8
from PyInstaller.utils.win32.versioninfo import write_version_info_to_executable as SetVersion
version_list = version_to_list(version)
suffix = MACHINE and f'_{MACHINE}'
SetVersion(exe, VSVersionInfo(
ffi=FixedFileInfo(
filevers=version_list,
prodvers=version_list,
mask=0x3F,
flags=0x0,
OS=0x4,
fileType=0x1,
subtype=0x0,
date=(0, 0),
),
kids=[
StringFileInfo([StringTable('040904B0', [
StringStruct('Comments', 'yt-dlp%s Command Line Interface' % suffix),
StringStruct('CompanyName', 'https://github.com/yt-dlp'),
StringStruct('FileDescription', 'yt-dlp%s' % (MACHINE and f' ({MACHINE})')),
StringStruct('FileVersion', version),
StringStruct('InternalName', f'yt-dlp{suffix}'),
StringStruct('LegalCopyright', 'pukkandan.ytdlp@gmail.com | UNLICENSE'),
StringStruct('OriginalFilename', f'yt-dlp{suffix}.exe'),
StringStruct('ProductName', f'yt-dlp{suffix}'),
StringStruct(
'ProductVersion', f'{version}{suffix} on Python {platform.python_version()}'),
])]), VarFileInfo([VarStruct('Translation', [0, 1200])])
]
))
if __name__ == '__main__':
main()

Binary file not shown.

Binary file not shown.

@ -1,4 +1,4 @@
__youtube_dlc()
__yt_dlp()
{
local cur prev opts fileopts diropts keywords
COMPREPLY=()
@ -26,4 +26,4 @@ __youtube_dlc()
fi
}
complete -F __youtube_dlc youtube-dlc
complete -F __yt_dlp yt-dlp

@ -1,14 +1,15 @@
#!/usr/bin/env python
from __future__ import unicode_literals
#!/usr/bin/env python3
# Allow direct execution
import os
from os.path import dirname as dirn
import sys
sys.path.insert(0, dirn(dirn((os.path.abspath(__file__)))))
import youtube_dlc
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
BASH_COMPLETION_FILE = "youtube-dlc.bash-completion"
import yt_dlp
BASH_COMPLETION_FILE = "completions/bash/yt-dlp"
BASH_COMPLETION_TEMPLATE = "devscripts/bash-completion.in"
@ -26,5 +27,5 @@ def build_completion(opt_parser):
f.write(filled_template)
parser = youtube_dlc.parseOpts()[0]
parser = yt_dlp.parseOpts(ignore_config_files=True)[0]
build_completion(parser)

@ -1,433 +0,0 @@
#!/usr/bin/python3
import argparse
import ctypes
import functools
import shutil
import subprocess
import sys
import tempfile
import threading
import traceback
import os.path
sys.path.insert(0, os.path.dirname(os.path.dirname((os.path.abspath(__file__)))))
from youtube_dlc.compat import (
compat_input,
compat_http_server,
compat_str,
compat_urlparse,
)
# These are not used outside of buildserver.py thus not in compat.py
try:
import winreg as compat_winreg
except ImportError: # Python 2
import _winreg as compat_winreg
try:
import socketserver as compat_socketserver
except ImportError: # Python 2
import SocketServer as compat_socketserver
class BuildHTTPServer(compat_socketserver.ThreadingMixIn, compat_http_server.HTTPServer):
allow_reuse_address = True
advapi32 = ctypes.windll.advapi32
SC_MANAGER_ALL_ACCESS = 0xf003f
SC_MANAGER_CREATE_SERVICE = 0x02
SERVICE_WIN32_OWN_PROCESS = 0x10
SERVICE_AUTO_START = 0x2
SERVICE_ERROR_NORMAL = 0x1
DELETE = 0x00010000
SERVICE_STATUS_START_PENDING = 0x00000002
SERVICE_STATUS_RUNNING = 0x00000004
SERVICE_ACCEPT_STOP = 0x1
SVCNAME = 'youtubedl_builder'
LPTSTR = ctypes.c_wchar_p
START_CALLBACK = ctypes.WINFUNCTYPE(None, ctypes.c_int, ctypes.POINTER(LPTSTR))
class SERVICE_TABLE_ENTRY(ctypes.Structure):
_fields_ = [
('lpServiceName', LPTSTR),
('lpServiceProc', START_CALLBACK)
]
HandlerEx = ctypes.WINFUNCTYPE(
ctypes.c_int, # return
ctypes.c_int, # dwControl
ctypes.c_int, # dwEventType
ctypes.c_void_p, # lpEventData,
ctypes.c_void_p, # lpContext,
)
def _ctypes_array(c_type, py_array):
ar = (c_type * len(py_array))()
ar[:] = py_array
return ar
def win_OpenSCManager():
res = advapi32.OpenSCManagerW(None, None, SC_MANAGER_ALL_ACCESS)
if not res:
raise Exception('Opening service manager failed - '
'are you running this as administrator?')
return res
def win_install_service(service_name, cmdline):
manager = win_OpenSCManager()
try:
h = advapi32.CreateServiceW(
manager, service_name, None,
SC_MANAGER_CREATE_SERVICE, SERVICE_WIN32_OWN_PROCESS,
SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
cmdline, None, None, None, None, None)
if not h:
raise OSError('Service creation failed: %s' % ctypes.FormatError())
advapi32.CloseServiceHandle(h)
finally:
advapi32.CloseServiceHandle(manager)
def win_uninstall_service(service_name):
manager = win_OpenSCManager()
try:
h = advapi32.OpenServiceW(manager, service_name, DELETE)
if not h:
raise OSError('Could not find service %s: %s' % (
service_name, ctypes.FormatError()))
try:
if not advapi32.DeleteService(h):
raise OSError('Deletion failed: %s' % ctypes.FormatError())
finally:
advapi32.CloseServiceHandle(h)
finally:
advapi32.CloseServiceHandle(manager)
def win_service_report_event(service_name, msg, is_error=True):
with open('C:/sshkeys/log', 'a', encoding='utf-8') as f:
f.write(msg + '\n')
event_log = advapi32.RegisterEventSourceW(None, service_name)
if not event_log:
raise OSError('Could not report event: %s' % ctypes.FormatError())
try:
type_id = 0x0001 if is_error else 0x0004
event_id = 0xc0000000 if is_error else 0x40000000
lines = _ctypes_array(LPTSTR, [msg])
if not advapi32.ReportEventW(
event_log, type_id, 0, event_id, None, len(lines), 0,
lines, None):
raise OSError('Event reporting failed: %s' % ctypes.FormatError())
finally:
advapi32.DeregisterEventSource(event_log)
def win_service_handler(stop_event, *args):
try:
raise ValueError('Handler called with args ' + repr(args))
TODO
except Exception as e:
tb = traceback.format_exc()
msg = str(e) + '\n' + tb
win_service_report_event(service_name, msg, is_error=True)
raise
def win_service_set_status(handle, status_code):
svcStatus = SERVICE_STATUS()
svcStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS
svcStatus.dwCurrentState = status_code
svcStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP
svcStatus.dwServiceSpecificExitCode = 0
if not advapi32.SetServiceStatus(handle, ctypes.byref(svcStatus)):
raise OSError('SetServiceStatus failed: %r' % ctypes.FormatError())
def win_service_main(service_name, real_main, argc, argv_raw):
try:
# args = [argv_raw[i].value for i in range(argc)]
stop_event = threading.Event()
handler = HandlerEx(functools.partial(stop_event, win_service_handler))
h = advapi32.RegisterServiceCtrlHandlerExW(service_name, handler, None)
if not h:
raise OSError('Handler registration failed: %s' %
ctypes.FormatError())
TODO
except Exception as e:
tb = traceback.format_exc()
msg = str(e) + '\n' + tb
win_service_report_event(service_name, msg, is_error=True)
raise
def win_service_start(service_name, real_main):
try:
cb = START_CALLBACK(
functools.partial(win_service_main, service_name, real_main))
dispatch_table = _ctypes_array(SERVICE_TABLE_ENTRY, [
SERVICE_TABLE_ENTRY(
service_name,
cb
),
SERVICE_TABLE_ENTRY(None, ctypes.cast(None, START_CALLBACK))
])
if not advapi32.StartServiceCtrlDispatcherW(dispatch_table):
raise OSError('ctypes start failed: %s' % ctypes.FormatError())
except Exception as e:
tb = traceback.format_exc()
msg = str(e) + '\n' + tb
win_service_report_event(service_name, msg, is_error=True)
raise
def main(args=None):
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--install',
action='store_const', dest='action', const='install',
help='Launch at Windows startup')
parser.add_argument('-u', '--uninstall',
action='store_const', dest='action', const='uninstall',
help='Remove Windows service')
parser.add_argument('-s', '--service',
action='store_const', dest='action', const='service',
help='Run as a Windows service')
parser.add_argument('-b', '--bind', metavar='<host:port>',
action='store', default='0.0.0.0:8142',
help='Bind to host:port (default %default)')
options = parser.parse_args(args=args)
if options.action == 'install':
fn = os.path.abspath(__file__).replace('v:', '\\\\vboxsrv\\vbox')
cmdline = '%s %s -s -b %s' % (sys.executable, fn, options.bind)
win_install_service(SVCNAME, cmdline)
return
if options.action == 'uninstall':
win_uninstall_service(SVCNAME)
return
if options.action == 'service':
win_service_start(SVCNAME, main)
return
host, port_str = options.bind.split(':')
port = int(port_str)
print('Listening on %s:%d' % (host, port))
srv = BuildHTTPServer((host, port), BuildHTTPRequestHandler)
thr = threading.Thread(target=srv.serve_forever)
thr.start()
compat_input('Press ENTER to shut down')
srv.shutdown()
thr.join()
def rmtree(path):
for name in os.listdir(path):
fname = os.path.join(path, name)
if os.path.isdir(fname):
rmtree(fname)
else:
os.chmod(fname, 0o666)
os.remove(fname)
os.rmdir(path)
class BuildError(Exception):
def __init__(self, output, code=500):
self.output = output
self.code = code
def __str__(self):
return self.output
class HTTPError(BuildError):
pass
class PythonBuilder(object):
def __init__(self, **kwargs):
python_version = kwargs.pop('python', '3.4')
python_path = None
for node in ('Wow6432Node\\', ''):
try:
key = compat_winreg.OpenKey(
compat_winreg.HKEY_LOCAL_MACHINE,
r'SOFTWARE\%sPython\PythonCore\%s\InstallPath' % (node, python_version))
try:
python_path, _ = compat_winreg.QueryValueEx(key, '')
finally:
compat_winreg.CloseKey(key)
break
except Exception:
pass
if not python_path:
raise BuildError('No such Python version: %s' % python_version)
self.pythonPath = python_path
super(PythonBuilder, self).__init__(**kwargs)
class GITInfoBuilder(object):
def __init__(self, **kwargs):
try:
self.user, self.repoName = kwargs['path'][:2]
self.rev = kwargs.pop('rev')
except ValueError:
raise BuildError('Invalid path')
except KeyError as e:
raise BuildError('Missing mandatory parameter "%s"' % e.args[0])
path = os.path.join(os.environ['APPDATA'], 'Build archive', self.repoName, self.user)
if not os.path.exists(path):
os.makedirs(path)
self.basePath = tempfile.mkdtemp(dir=path)
self.buildPath = os.path.join(self.basePath, 'build')
super(GITInfoBuilder, self).__init__(**kwargs)
class GITBuilder(GITInfoBuilder):
def build(self):
try:
subprocess.check_output(['git', 'clone', 'git://github.com/%s/%s.git' % (self.user, self.repoName), self.buildPath])
subprocess.check_output(['git', 'checkout', self.rev], cwd=self.buildPath)
except subprocess.CalledProcessError as e:
raise BuildError(e.output)
super(GITBuilder, self).build()
class YoutubeDLBuilder(object):
authorizedUsers = ['fraca7', 'phihag', 'rg3', 'FiloSottile', 'ytdl-org']
def __init__(self, **kwargs):
if self.repoName != 'youtube-dlc':
raise BuildError('Invalid repository "%s"' % self.repoName)
if self.user not in self.authorizedUsers:
raise HTTPError('Unauthorized user "%s"' % self.user, 401)
super(YoutubeDLBuilder, self).__init__(**kwargs)
def build(self):
try:
proc = subprocess.Popen([os.path.join(self.pythonPath, 'python.exe'), 'setup.py', 'py2exe'], stdin=subprocess.PIPE, cwd=self.buildPath)
proc.wait()
#subprocess.check_output([os.path.join(self.pythonPath, 'python.exe'), 'setup.py', 'py2exe'],
# cwd=self.buildPath)
except subprocess.CalledProcessError as e:
raise BuildError(e.output)
super(YoutubeDLBuilder, self).build()
class DownloadBuilder(object):
def __init__(self, **kwargs):
self.handler = kwargs.pop('handler')
self.srcPath = os.path.join(self.buildPath, *tuple(kwargs['path'][2:]))
self.srcPath = os.path.abspath(os.path.normpath(self.srcPath))
if not self.srcPath.startswith(self.buildPath):
raise HTTPError(self.srcPath, 401)
super(DownloadBuilder, self).__init__(**kwargs)
def build(self):
if not os.path.exists(self.srcPath):
raise HTTPError('No such file', 404)
if os.path.isdir(self.srcPath):
raise HTTPError('Is a directory: %s' % self.srcPath, 401)
self.handler.send_response(200)
self.handler.send_header('Content-Type', 'application/octet-stream')
self.handler.send_header('Content-Disposition', 'attachment; filename=%s' % os.path.split(self.srcPath)[-1])
self.handler.send_header('Content-Length', str(os.stat(self.srcPath).st_size))
self.handler.end_headers()
with open(self.srcPath, 'rb') as src:
shutil.copyfileobj(src, self.handler.wfile)
super(DownloadBuilder, self).build()
class CleanupTempDir(object):
def build(self):
try:
rmtree(self.basePath)
except Exception as e:
print('WARNING deleting "%s": %s' % (self.basePath, e))
super(CleanupTempDir, self).build()
class Null(object):
def __init__(self, **kwargs):
pass
def start(self):
pass
def close(self):
pass
def build(self):
pass
class Builder(PythonBuilder, GITBuilder, YoutubeDLBuilder, DownloadBuilder, CleanupTempDir, Null):
pass
class BuildHTTPRequestHandler(compat_http_server.BaseHTTPRequestHandler):
actionDict = {'build': Builder, 'download': Builder} # They're the same, no more caching.
def do_GET(self):
path = compat_urlparse.urlparse(self.path)
paramDict = dict([(key, value[0]) for key, value in compat_urlparse.parse_qs(path.query).items()])
action, _, path = path.path.strip('/').partition('/')
if path:
path = path.split('/')
if action in self.actionDict:
try:
builder = self.actionDict[action](path=path, handler=self, **paramDict)
builder.start()
try:
builder.build()
finally:
builder.close()
except BuildError as e:
self.send_response(e.code)
msg = compat_str(e).encode('UTF-8')
self.send_header('Content-Type', 'text/plain; charset=UTF-8')
self.send_header('Content-Length', len(msg))
self.end_headers()
self.wfile.write(msg)
else:
self.send_response(500, 'Unknown build method "%s"' % action)
else:
self.send_response(500, 'Malformed URL')
if __name__ == '__main__':
main()

@ -0,0 +1,151 @@
[
{
"action": "add",
"when": "29cb20bd563c02671b31dd840139e93dd37150a1",
"short": "[priority] **A new release type has been added!**\n * [`nightly`](https://github.com/yt-dlp/yt-dlp/releases/tag/nightly) builds will be made after each push, containing the latest fixes (but also possibly bugs).\n * When using `--update`/`-U`, a release binary will only update to its current channel (either `stable` or `nightly`).\n * The `--update-to` option has been added allowing the user more control over program upgrades (or downgrades).\n * `--update-to` can change the release channel (`stable`, `nightly`) and also upgrade or downgrade to specific tags.\n * **Usage**: `--update-to CHANNEL`, `--update-to TAG`, `--update-to CHANNEL@TAG`"
},
{
"action": "add",
"when": "5038f6d713303e0967d002216e7a88652401c22a",
"short": "[priority] **YouTube throttling fixes!**"
},
{
"action": "remove",
"when": "2e023649ea4e11151545a34dc1360c114981a236"
},
{
"action": "add",
"when": "01aba2519a0884ef17d5f85608dbd2a455577147",
"short": "[priority] YouTube: Improved throttling and signature fixes"
},
{
"action": "change",
"when": "c86e433c35fe5da6cb29f3539eef97497f84ed38",
"short": "[extractor/niconico:series] Fix extraction (#6898)",
"authors": ["sqrtNOT"]
},
{
"action": "change",
"when": "69a40e4a7f6caa5662527ebd2f3c4e8aa02857a2",
"short": "[extractor/youtube:music_search_url] Extract title (#7102)",
"authors": ["kangalio"]
},
{
"action": "change",
"when": "8417f26b8a819cd7ffcd4e000ca3e45033e670fb",
"short": "Add option `--color` (#6904)",
"authors": ["Grub4K"]
},
{
"action": "change",
"when": "b4e0d75848e9447cee2cd3646ce54d4744a7ff56",
"short": "Improve `--download-sections`\n - Support negative time-ranges\n - Add `*from-url` to obey time-ranges in URL",
"authors": ["pukkandan"]
},
{
"action": "change",
"when": "1e75d97db21152acc764b30a688e516f04b8a142",
"short": "[extractor/youtube] Add `ios` to default clients used\n - IOS is affected neither by 403 nor by nsig so helps mitigate them preemptively\n - IOS also has higher bit-rate 'premium' formats though they are not labeled as such",
"authors": ["pukkandan"]
},
{
"action": "change",
"when": "f2ff0f6f1914b82d4a51681a72cc0828115dcb4a",
"short": "[extractor/motherless] Add gallery support, fix groups (#7211)",
"authors": ["rexlambert22", "Ti4eeT4e"]
},
{
"action": "change",
"when": "a4486bfc1dc7057efca9dd3fe70d7fa25c56f700",
"short": "[misc] Revert \"Add automatic duplicate issue detection\"",
"authors": ["pukkandan"]
},
{
"action": "add",
"when": "1ceb657bdd254ad961489e5060f2ccc7d556b729",
"short": "[priority] Security: [[CVE-2023-35934](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-35934)] Fix [Cookie leak](https://github.com/yt-dlp/yt-dlp/security/advisories/GHSA-v8mc-9377-rwjj)\n - `--add-header Cookie:` is deprecated and auto-scoped to input URL domains\n - Cookies are scoped when passed to external downloaders\n - Add `cookies` field to info.json and deprecate `http_headers.Cookie`"
},
{
"action": "change",
"when": "b03fa7834579a01cc5fba48c0e73488a16683d48",
"short": "[ie/twitter] Revert 92315c03774cfabb3a921884326beb4b981f786b",
"authors": ["pukkandan"]
},
{
"action": "change",
"when": "fcd6a76adc49d5cd8783985c7ce35384b72e545f",
"short": "[test] Add tests for socks proxies (#7908)",
"authors": ["coletdjnz"]
},
{
"action": "change",
"when": "4bf912282a34b58b6b35d8f7e6be535770c89c76",
"short": "[rh:urllib] Remove dot segments during URL normalization (#7662)",
"authors": ["coletdjnz"]
},
{
"action": "change",
"when": "59e92b1f1833440bb2190f847eb735cf0f90bc85",
"short": "[rh:urllib] Simplify gzip decoding (#7611)",
"authors": ["Grub4K"]
},
{
"action": "add",
"when": "c1d71d0d9f41db5e4306c86af232f5f6220a130b",
"short": "[priority] **The minimum *recommended* Python version has been raised to 3.8**\nSince Python 3.7 has reached end-of-life, support for it will be dropped soon. [Read more](https://github.com/yt-dlp/yt-dlp/issues/7803)"
},
{
"action": "add",
"when": "61bdf15fc7400601c3da1aa7a43917310a5bf391",
"short": "[priority] Security: [[CVE-2023-40581](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-40581)] [Prevent RCE when using `--exec` with `%q` on Windows](https://github.com/yt-dlp/yt-dlp/security/advisories/GHSA-42h4-v29r-42qg)\n - The shell escape function is now using `\"\"` instead of `\\\"`.\n - `utils.Popen` has been patched to properly quote commands."
},
{
"action": "change",
"when": "8a8b54523addf46dfd50ef599761a81bc22362e6",
"short": "[rh:requests] Add handler for `requests` HTTP library (#3668)\n\n\tAdds support for HTTPS proxies and persistent connections (keep-alive)",
"authors": ["bashonly", "coletdjnz", "Grub4K"]
},
{
"action": "add",
"when": "1d03633c5a1621b9f3a756f0a4f9dc61fab3aeaa",
"short": "[priority] **The release channels have been adjusted!**\n\t* [`master`](https://github.com/yt-dlp/yt-dlp-master-builds) builds are made after each push, containing the latest fixes (but also possibly bugs). This was previously the `nightly` channel.\n\t* [`nightly`](https://github.com/yt-dlp/yt-dlp-nightly-builds) builds are now made once a day, if there were any changes."
},
{
"action": "add",
"when": "f04b5bedad7b281bee9814686bba1762bae092eb",
"short": "[priority] Security: [[CVE-2023-46121](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-46121)] Patch [Generic Extractor MITM Vulnerability via Arbitrary Proxy Injection](https://github.com/yt-dlp/yt-dlp/security/advisories/GHSA-3ch3-jhc6-5r8x)\n\t- Disallow smuggling of arbitrary `http_headers`; extractors now only use specific headers"
},
{
"action": "change",
"when": "15f22b4880b6b3f71f350c64d70976ae65b9f1ca",
"short": "[webvtt] Allow spaces before newlines for CueBlock (#7681)",
"authors": ["TSRBerry"]
},
{
"action": "change",
"when": "4ce57d3b873c2887814cbec03d029533e82f7db5",
"short": "[ie] Support multi-period MPD streams (#6654)",
"authors": ["alard", "pukkandan"]
},
{
"action": "change",
"when": "aa7e9ae4f48276bd5d0173966c77db9484f65a0a",
"short": "[ie/xvideos] Support new URL format (#9502)",
"authors": ["sta1us"]
},
{
"action": "remove",
"when": "22e4dfacb61f62dfbb3eb41b31c7b69ba1059b80"
},
{
"action": "change",
"when": "e3a3ed8a981d9395c4859b6ef56cd02bc3148db2",
"short": "[cleanup:ie] No `from` stdlib imports in extractors",
"authors": ["pukkandan"]
},
{
"action": "add",
"when": "9590cc6b4768e190183d7d071a6c78170889116a",
"short": "[priority] Security: [[CVE-2024-22423](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-22423)] [Prevent RCE when using `--exec` with `%q` on Windows](https://github.com/yt-dlp/yt-dlp/security/advisories/GHSA-hjq6-52gw-2g7p)\n - The shell escape function now properly escapes `%`, `\\` and `\\n`.\n - `utils.Popen` has been patched accordingly."
}
]

@ -0,0 +1,96 @@
{
"$schema": "http://json-schema.org/draft/2020-12/schema",
"type": "array",
"uniqueItems": true,
"items": {
"type": "object",
"oneOf": [
{
"type": "object",
"properties": {
"action": {
"enum": [
"add"
]
},
"when": {
"type": "string",
"pattern": "^([0-9a-f]{40}|\\d{4}\\.\\d{2}\\.\\d{2})$"
},
"hash": {
"type": "string",
"pattern": "^[0-9a-f]{40}$"
},
"short": {
"type": "string"
},
"authors": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"action",
"short"
]
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"remove"
]
},
"when": {
"type": "string",
"pattern": "^([0-9a-f]{40}|\\d{4}\\.\\d{2}\\.\\d{2})$"
},
"hash": {
"type": "string",
"pattern": "^[0-9a-f]{40}$"
}
},
"required": [
"action",
"hash"
]
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"change"
]
},
"when": {
"type": "string",
"pattern": "^([0-9a-f]{40}|\\d{4}\\.\\d{2}\\.\\d{2})$"
},
"hash": {
"type": "string",
"pattern": "^[0-9a-f]{40}$"
},
"short": {
"type": "string"
},
"authors": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"action",
"hash",
"short",
"authors"
]
}
]
}
}

@ -1,6 +1,4 @@
#!/usr/bin/env python
from __future__ import unicode_literals
#!/usr/bin/env python3
"""
This script employs a VERY basic heuristic ('porn' in webpage.lower()) to check
if we are not 'age_limit' tagging some porn site
@ -12,11 +10,14 @@ pass the list filename as the only argument
# Allow direct execution
import os
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import urllib.parse
import urllib.request
from test.helper import gettestcases
from youtube_dlc.utils import compat_urllib_parse_urlparse
from youtube_dlc.utils import compat_urllib_request
if len(sys.argv) > 1:
METHOD = 'LIST'
@ -27,9 +28,9 @@ else:
for test in gettestcases():
if METHOD == 'EURISTIC':
try:
webpage = compat_urllib_request.urlopen(test['url'], timeout=10).read()
webpage = urllib.request.urlopen(test['url'], timeout=10).read()
except Exception:
print('\nFail: {0}'.format(test['name']))
print('\nFail: {}'.format(test['name']))
continue
webpage = webpage.decode('utf8', 'replace')
@ -37,9 +38,9 @@ for test in gettestcases():
RESULT = 'porn' in webpage.lower()
elif METHOD == 'LIST':
domain = compat_urllib_parse_urlparse(test['url']).netloc
domain = urllib.parse.urlparse(test['url']).netloc
if not domain:
print('\nFail: {0}'.format(test['name']))
print('\nFail: {}'.format(test['name']))
continue
domain = '.'.join(domain.split('.')[-2:])
@ -47,11 +48,11 @@ for test in gettestcases():
if RESULT and ('info_dict' not in test or 'age_limit' not in test['info_dict']
or test['info_dict']['age_limit'] != 18):
print('\nPotential missing age_limit check: {0}'.format(test['name']))
print('\nPotential missing age_limit check: {}'.format(test['name']))
elif not RESULT and ('info_dict' in test and 'age_limit' in test['info_dict']
and test['info_dict']['age_limit'] == 18):
print('\nPotential false negative: {0}'.format(test['name']))
print('\nPotential false negative: {}'.format(test['name']))
else:
sys.stdout.write('.')

@ -0,0 +1,48 @@
# Allow direct execution
import os
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import yt_dlp
import yt_dlp.options
create_parser = yt_dlp.options.create_parser
def parse_patched_options(opts):
patched_parser = create_parser()
patched_parser.defaults.update({
'ignoreerrors': False,
'retries': 0,
'fragment_retries': 0,
'extract_flat': False,
'concat_playlist': 'never',
})
yt_dlp.options.create_parser = lambda: patched_parser
try:
return yt_dlp.parse_options(opts)
finally:
yt_dlp.options.create_parser = create_parser
default_opts = parse_patched_options([]).ydl_opts
def cli_to_api(opts, cli_defaults=False):
opts = (yt_dlp.parse_options if cli_defaults else parse_patched_options)(opts).ydl_opts
diff = {k: v for k, v in opts.items() if default_opts[k] != v}
if 'postprocessors' in diff:
diff['postprocessors'] = [pp for pp in diff['postprocessors']
if pp not in default_opts['postprocessors']]
return diff
if __name__ == '__main__':
from pprint import pprint
print('\nThe arguments passed translate to:\n')
pprint(cli_to_api(sys.argv[1:]))
print('\nCombining these with the CLI defaults gives:\n')
pprint(cli_to_api(sys.argv[1:], True))

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

@ -1,112 +0,0 @@
# Unused
#!/usr/bin/env python
from __future__ import unicode_literals
import io
import json
import mimetypes
import netrc
import optparse
import os
import re
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from youtube_dlc.compat import (
compat_basestring,
compat_getpass,
compat_print,
compat_urllib_request,
)
from youtube_dlc.utils import (
make_HTTPS_handler,
sanitized_Request,
)
class GitHubReleaser(object):
_API_URL = 'https://api.github.com/repos/ytdl-org/youtube-dl/releases'
_UPLOADS_URL = 'https://uploads.github.com/repos/ytdl-org/youtube-dl/releases/%s/assets?name=%s'
_NETRC_MACHINE = 'github.com'
def __init__(self, debuglevel=0):
self._init_github_account()
https_handler = make_HTTPS_handler({}, debuglevel=debuglevel)
self._opener = compat_urllib_request.build_opener(https_handler)
def _init_github_account(self):
try:
info = netrc.netrc().authenticators(self._NETRC_MACHINE)
if info is not None:
self._token = info[2]
compat_print('Using GitHub credentials found in .netrc...')
return
else:
compat_print('No GitHub credentials found in .netrc')
except (IOError, netrc.NetrcParseError):
compat_print('Unable to parse .netrc')
self._token = compat_getpass(
'Type your GitHub PAT (personal access token) and press [Return]: ')
def _call(self, req):
if isinstance(req, compat_basestring):
req = sanitized_Request(req)
req.add_header('Authorization', 'token %s' % self._token)
response = self._opener.open(req).read().decode('utf-8')
return json.loads(response)
def list_releases(self):
return self._call(self._API_URL)
def create_release(self, tag_name, name=None, body='', draft=False, prerelease=False):
data = {
'tag_name': tag_name,
'target_commitish': 'master',
'name': name,
'body': body,
'draft': draft,
'prerelease': prerelease,
}
req = sanitized_Request(self._API_URL, json.dumps(data).encode('utf-8'))
return self._call(req)
def create_asset(self, release_id, asset):
asset_name = os.path.basename(asset)
url = self._UPLOADS_URL % (release_id, asset_name)
# Our files are small enough to be loaded directly into memory.
data = open(asset, 'rb').read()
req = sanitized_Request(url, data)
mime_type, _ = mimetypes.guess_type(asset_name)
req.add_header('Content-Type', mime_type or 'application/octet-stream')
return self._call(req)
def main():
parser = optparse.OptionParser(usage='%prog CHANGELOG VERSION BUILDPATH')
options, args = parser.parse_args()
if len(args) != 3:
parser.error('Expected a version and a build directory')
changelog_file, version, build_path = args
with io.open(changelog_file, encoding='utf-8') as inf:
changelog = inf.read()
mobj = re.search(r'(?s)version %s\n{2}(.+?)\n{3}' % version, changelog)
body = mobj.group(1) if mobj else ''
releaser = GitHubReleaser()
new_release = releaser.create_release(
version, name='youtube-dlc %s' % version, body=body)
release_id = new_release['id']
for asset in os.listdir(build_path):
compat_print('Uploading %s...' % asset)
releaser.create_asset(release_id, os.path.join(build_path, asset))
if __name__ == '__main__':
main()

@ -2,4 +2,4 @@
{{commands}}
complete --command youtube-dlc --arguments ":ytfavorites :ytrecommended :ytsubscriptions :ytwatchlater :ythistory"
complete --command yt-dlp --arguments ":ytfavorites :ytrecommended :ytsubscriptions :ytwatchlater :ythistory"

@ -1,16 +1,18 @@
#!/usr/bin/env python
from __future__ import unicode_literals
#!/usr/bin/env python3
import optparse
# Allow direct execution
import os
from os.path import dirname as dirn
import sys
sys.path.insert(0, dirn(dirn((os.path.abspath(__file__)))))
import youtube_dlc
from youtube_dlc.utils import shell_quote
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import optparse
import yt_dlp
from yt_dlp.utils import shell_quote
FISH_COMPLETION_FILE = 'youtube-dlc.fish'
FISH_COMPLETION_FILE = 'completions/fish/yt-dlp.fish'
FISH_COMPLETION_TEMPLATE = 'devscripts/fish-completion.in'
EXTRA_ARGS = {
@ -31,7 +33,7 @@ def build_completion(opt_parser):
for group in opt_parser.option_groups:
for option in group.option_list:
long_option = option.get_opt_string().strip('-')
complete_cmd = ['complete', '--command', 'youtube-dlc', '--long-option', long_option]
complete_cmd = ['complete', '--command', 'yt-dlp', '--long-option', long_option]
if option._short_opts:
complete_cmd += ['--short-option', option._short_opts[0].strip('-')]
if option.help != optparse.SUPPRESS_HELP:
@ -46,5 +48,5 @@ def build_completion(opt_parser):
f.write(filled_template)
parser = youtube_dlc.parseOpts()[0]
parser = yt_dlp.parseOpts(ignore_config_files=True)[0]
build_completion(parser)

@ -1,14 +1,17 @@
from __future__ import unicode_literals
import codecs
import subprocess
#!/usr/bin/env python3
# Allow direct execution
import os
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from youtube_dlc.utils import intlist_to_bytes
from youtube_dlc.aes import aes_encrypt, key_expansion
import codecs
import subprocess
from yt_dlp.aes import aes_encrypt, key_expansion
from yt_dlp.utils import intlist_to_bytes
secret_msg = b'Secret message goes here'

@ -1,43 +0,0 @@
#!/usr/bin/env python3
from __future__ import unicode_literals
import json
import sys
import hashlib
import os.path
if len(sys.argv) <= 1:
print('Specify the version number as parameter')
sys.exit()
version = sys.argv[1]
with open('update/LATEST_VERSION', 'w') as f:
f.write(version)
versions_info = json.load(open('update/versions.json'))
if 'signature' in versions_info:
del versions_info['signature']
new_version = {}
filenames = {
'bin': 'youtube-dlc',
'exe': 'youtube-dlc.exe',
'tar': 'youtube-dlc-%s.tar.gz' % version}
build_dir = os.path.join('..', '..', 'build', version)
for key, filename in filenames.items():
url = 'https://yt-dl.org/downloads/%s/%s' % (version, filename)
fn = os.path.join(build_dir, filename)
with open(fn, 'rb') as f:
data = f.read()
if not data:
raise ValueError('File %s is empty!' % fn)
sha256sum = hashlib.sha256(data).hexdigest()
new_version[key] = (url, sha256sum)
versions_info['versions'][version] = new_version
versions_info['latest'] = version
with open('update/versions.json', 'w') as jsonf:
json.dump(versions_info, jsonf, indent=4, sort_keys=True)

@ -1,22 +0,0 @@
#!/usr/bin/env python3
from __future__ import unicode_literals
import json
versions_info = json.load(open('update/versions.json'))
version = versions_info['latest']
version_dict = versions_info['versions'][version]
# Read template page
with open('download.html.in', 'r', encoding='utf-8') as tmplf:
template = tmplf.read()
template = template.replace('@PROGRAM_VERSION@', version)
template = template.replace('@PROGRAM_URL@', version_dict['bin'][0])
template = template.replace('@PROGRAM_SHA256SUM@', version_dict['bin'][1])
template = template.replace('@EXE_URL@', version_dict['exe'][0])
template = template.replace('@EXE_SHA256SUM@', version_dict['exe'][1])
template = template.replace('@TAR_URL@', version_dict['tar'][0])
template = template.replace('@TAR_SHA256SUM@', version_dict['tar'][1])
with open('download.html', 'w', encoding='utf-8') as dlf:
dlf.write(template)

@ -1,34 +0,0 @@
#!/usr/bin/env python3
from __future__ import unicode_literals, with_statement
import rsa
import json
from binascii import hexlify
try:
input = raw_input
except NameError:
pass
versions_info = json.load(open('update/versions.json'))
if 'signature' in versions_info:
del versions_info['signature']
print('Enter the PKCS1 private key, followed by a blank line:')
privkey = b''
while True:
try:
line = input()
except EOFError:
break
if line == '':
break
privkey += line.encode('ascii') + b'\n'
privkey = rsa.PrivateKey.load_pkcs1(privkey)
signature = hexlify(rsa.pkcs1.sign(json.dumps(versions_info, sort_keys=True).encode('utf-8'), privkey, 'SHA-256')).decode()
print('signature: ' + signature)
versions_info['signature'] = signature
with open('update/versions.json', 'w') as versionsf:
json.dump(versions_info, versionsf, indent=4, sort_keys=True)

@ -1,21 +0,0 @@
#!/usr/bin/env python
# coding: utf-8
from __future__ import with_statement, unicode_literals
import datetime
import glob
import io # For Python 2 compatibility
import os
import re
year = str(datetime.datetime.now().year)
for fn in glob.glob('*.html*'):
with io.open(fn, encoding='utf-8') as f:
content = f.read()
newc = re.sub(r'(?P<copyright>Copyright © 2011-)(?P<year>[0-9]{4})', 'Copyright © 2011-' + year, content)
if content != newc:
tmpFn = fn + '.part'
with io.open(tmpFn, 'wt', encoding='utf-8') as outf:
outf.write(newc)
os.rename(tmpFn, fn)

@ -1,76 +0,0 @@
#!/usr/bin/env python3
from __future__ import unicode_literals
import datetime
import io
import json
import textwrap
atom_template = textwrap.dedent("""\
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<link rel="self" href="http://ytdl-org.github.io/youtube-dl/update/releases.atom" />
<title>youtube-dlc releases</title>
<id>https://yt-dl.org/feed/youtube-dlc-updates-feed</id>
<updated>@TIMESTAMP@</updated>
@ENTRIES@
</feed>""")
entry_template = textwrap.dedent("""
<entry>
<id>https://yt-dl.org/feed/youtube-dlc-updates-feed/youtube-dlc-@VERSION@</id>
<title>New version @VERSION@</title>
<link href="http://ytdl-org.github.io/youtube-dlc" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
Downloads available at <a href="https://yt-dl.org/downloads/@VERSION@/">https://yt-dl.org/downloads/@VERSION@/</a>
</div>
</content>
<author>
<name>The youtube-dlc maintainers</name>
</author>
<updated>@TIMESTAMP@</updated>
</entry>
""")
now = datetime.datetime.now()
now_iso = now.isoformat() + 'Z'
atom_template = atom_template.replace('@TIMESTAMP@', now_iso)
versions_info = json.load(open('update/versions.json'))
versions = list(versions_info['versions'].keys())
versions.sort()
entries = []
for v in versions:
fields = v.split('.')
year, month, day = map(int, fields[:3])
faked = 0
patchlevel = 0
while True:
try:
datetime.date(year, month, day)
except ValueError:
day -= 1
faked += 1
assert day > 0
continue
break
if len(fields) >= 4:
try:
patchlevel = int(fields[3])
except ValueError:
patchlevel = 1
timestamp = '%04d-%02d-%02dT00:%02d:%02dZ' % (year, month, day, faked, patchlevel)
entry = entry_template.replace('@TIMESTAMP@', timestamp)
entry = entry.replace('@VERSION@', v)
entries.append(entry)
entries_str = textwrap.indent(''.join(entries), '\t')
atom_template = atom_template.replace('@ENTRIES@', entries_str)
with io.open('update/releases.atom', 'w', encoding='utf-8') as atom_file:
atom_file.write(atom_template)

@ -1,37 +0,0 @@
#!/usr/bin/env python3
from __future__ import unicode_literals
import sys
import os
import textwrap
# We must be able to import youtube_dlc
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
import youtube_dlc
def main():
with open('supportedsites.html.in', 'r', encoding='utf-8') as tmplf:
template = tmplf.read()
ie_htmls = []
for ie in youtube_dlc.list_extractors(age_limit=None):
ie_html = '<b>{}</b>'.format(ie.IE_NAME)
ie_desc = getattr(ie, 'IE_DESC', None)
if ie_desc is False:
continue
elif ie_desc is not None:
ie_html += ': {}'.format(ie.IE_DESC)
if not ie.working():
ie_html += ' (Currently broken)'
ie_htmls.append('<li>{}</li>'.format(ie_html))
template = template.replace('@SITES@', textwrap.indent('\n'.join(ie_htmls), '\t'))
with open('supportedsites.html', 'w', encoding='utf-8') as sitesf:
sitesf.write(template)
if __name__ == '__main__':
main()

@ -0,0 +1,73 @@
#!/usr/bin/env python3
# Allow execution from anywhere
import os
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import argparse
import re
import subprocess
from pathlib import Path
from devscripts.tomlparse import parse_toml
from devscripts.utils import read_file
def parse_args():
parser = argparse.ArgumentParser(description='Install dependencies for yt-dlp')
parser.add_argument(
'input', nargs='?', metavar='TOMLFILE', default=Path(__file__).parent.parent / 'pyproject.toml',
help='input file (default: %(default)s)')
parser.add_argument(
'-e', '--exclude', metavar='DEPENDENCY', action='append',
help='exclude a dependency')
parser.add_argument(
'-i', '--include', metavar='GROUP', action='append',
help='include an optional dependency group')
parser.add_argument(
'-o', '--only-optional', action='store_true',
help='only install optional dependencies')
parser.add_argument(
'-p', '--print', action='store_true',
help='only print requirements to stdout')
parser.add_argument(
'-u', '--user', action='store_true',
help='install with pip as --user')
return parser.parse_args()
def main():
args = parse_args()
project_table = parse_toml(read_file(args.input))['project']
optional_groups = project_table['optional-dependencies']
excludes = args.exclude or []
targets = []
if not args.only_optional: # `-o` should exclude 'dependencies' and the 'default' group
targets.extend(project_table['dependencies'])
if 'default' not in excludes: # `--exclude default` should exclude entire 'default' group
targets.extend(optional_groups['default'])
for include in filter(None, map(optional_groups.get, args.include or [])):
targets.extend(include)
targets = [t for t in targets if re.match(r'[\w-]+', t).group(0).lower() not in excludes]
if args.print:
for target in targets:
print(target)
return
pip_args = [sys.executable, '-m', 'pip', 'install', '-U']
if args.user:
pip_args.append('--user')
pip_args.extend(targets)
return subprocess.call(pip_args)
if __name__ == '__main__':
sys.exit(main())

@ -1,19 +1,39 @@
# coding: utf-8
from __future__ import unicode_literals
import importlib
import random
import re
from ..utils import (
age_restricted,
bug_reports_message,
classproperty,
variadic,
write_string,
)
# These bloat the lazy_extractors, so allow them to passthrough silently
ALLOWED_CLASSMETHODS = {'extract_from_webpage', 'get_testcases', 'get_webpage_testcases'}
_WARNED = False
class LazyLoadMetaClass(type):
def __getattr__(cls, name):
global _WARNED
if ('_real_class' not in cls.__dict__
and name not in ALLOWED_CLASSMETHODS and not _WARNED):
_WARNED = True
write_string('WARNING: Falling back to normal extractor since lazy extractor '
f'{cls.__name__} does not have attribute {name}{bug_reports_message()}\n')
return getattr(cls.real_class, name)
class LazyLoadExtractor(object):
_module = None
@classmethod
def ie_key(cls):
return cls.__name__[:-2]
class LazyLoadExtractor(metaclass=LazyLoadMetaClass):
@classproperty
def real_class(cls):
if '_real_class' not in cls.__dict__:
cls._real_class = getattr(importlib.import_module(cls._module), cls.__name__)
return cls._real_class
def __new__(cls, *args, **kwargs):
mod = __import__(cls._module, fromlist=(cls.__name__,))
real_cls = getattr(mod, cls.__name__)
instance = real_cls.__new__(real_cls)
instance = cls.real_class.__new__(cls.real_class)
instance.__init__(*args, **kwargs)
return instance

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

@ -0,0 +1,510 @@
from __future__ import annotations
# Allow direct execution
import os
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import enum
import itertools
import json
import logging
import re
from collections import defaultdict
from dataclasses import dataclass
from functools import lru_cache
from pathlib import Path
from devscripts.utils import read_file, run_process, write_file
BASE_URL = 'https://github.com'
LOCATION_PATH = Path(__file__).parent
HASH_LENGTH = 7
logger = logging.getLogger(__name__)
class CommitGroup(enum.Enum):
PRIORITY = 'Important'
CORE = 'Core'
EXTRACTOR = 'Extractor'
DOWNLOADER = 'Downloader'
POSTPROCESSOR = 'Postprocessor'
NETWORKING = 'Networking'
MISC = 'Misc.'
@classmethod
@lru_cache
def subgroup_lookup(cls):
return {
name: group
for group, names in {
cls.MISC: {
'build',
'ci',
'cleanup',
'devscripts',
'docs',
'test',
},
cls.NETWORKING: {
'rh',
},
}.items()
for name in names
}
@classmethod
@lru_cache
def group_lookup(cls):
result = {
'fd': cls.DOWNLOADER,
'ie': cls.EXTRACTOR,
'pp': cls.POSTPROCESSOR,
'upstream': cls.CORE,
}
result.update({item.name.lower(): item for item in iter(cls)})
return result
@classmethod
def get(cls, value: str) -> tuple[CommitGroup | None, str | None]:
group, _, subgroup = (group.strip().lower() for group in value.partition('/'))
result = cls.group_lookup().get(group)
if not result:
if subgroup:
return None, value
subgroup = group
result = cls.subgroup_lookup().get(subgroup)
return result, subgroup or None
@dataclass
class Commit:
hash: str | None
short: str
authors: list[str]
def __str__(self):
result = f'{self.short!r}'
if self.hash:
result += f' ({self.hash[:HASH_LENGTH]})'
if self.authors:
authors = ', '.join(self.authors)
result += f' by {authors}'
return result
@dataclass
class CommitInfo:
details: str | None
sub_details: tuple[str, ...]
message: str
issues: list[str]
commit: Commit
fixes: list[Commit]
def key(self):
return ((self.details or '').lower(), self.sub_details, self.message)
def unique(items):
return sorted({item.strip().lower(): item for item in items if item}.values())
class Changelog:
MISC_RE = re.compile(r'(?:^|\b)(?:lint(?:ing)?|misc|format(?:ting)?|fixes)(?:\b|$)', re.IGNORECASE)
ALWAYS_SHOWN = (CommitGroup.PRIORITY,)
def __init__(self, groups, repo, collapsible=False):
self._groups = groups
self._repo = repo
self._collapsible = collapsible
def __str__(self):
return '\n'.join(self._format_groups(self._groups)).replace('\t', ' ')
def _format_groups(self, groups):
first = True
for item in CommitGroup:
if self._collapsible and item not in self.ALWAYS_SHOWN and first:
first = False
yield '\n<details><summary><h3>Changelog</h3></summary>\n'
group = groups[item]
if group:
yield self.format_module(item.value, group)
if self._collapsible:
yield '\n</details>'
def format_module(self, name, group):
result = f'\n#### {name} changes\n' if name else '\n'
return result + '\n'.join(self._format_group(group))
def _format_group(self, group):
sorted_group = sorted(group, key=CommitInfo.key)
detail_groups = itertools.groupby(sorted_group, lambda item: (item.details or '').lower())
for _, items in detail_groups:
items = list(items)
details = items[0].details
if details == 'cleanup':
items = self._prepare_cleanup_misc_items(items)
prefix = '-'
if details:
if len(items) == 1:
prefix = f'- **{details}**:'
else:
yield f'- **{details}**'
prefix = '\t-'
sub_detail_groups = itertools.groupby(items, lambda item: tuple(map(str.lower, item.sub_details)))
for sub_details, entries in sub_detail_groups:
if not sub_details:
for entry in entries:
yield f'{prefix} {self.format_single_change(entry)}'
continue
entries = list(entries)
sub_prefix = f'{prefix} {", ".join(entries[0].sub_details)}'
if len(entries) == 1:
yield f'{sub_prefix}: {self.format_single_change(entries[0])}'
continue
yield sub_prefix
for entry in entries:
yield f'\t{prefix} {self.format_single_change(entry)}'
def _prepare_cleanup_misc_items(self, items):
cleanup_misc_items = defaultdict(list)
sorted_items = []
for item in items:
if self.MISC_RE.search(item.message):
cleanup_misc_items[tuple(item.commit.authors)].append(item)
else:
sorted_items.append(item)
for commit_infos in cleanup_misc_items.values():
sorted_items.append(CommitInfo(
'cleanup', ('Miscellaneous',), ', '.join(
self._format_message_link(None, info.commit.hash)
for info in sorted(commit_infos, key=lambda item: item.commit.hash or '')),
[], Commit(None, '', commit_infos[0].commit.authors), []))
return sorted_items
def format_single_change(self, info: CommitInfo):
message, sep, rest = info.message.partition('\n')
if '[' not in message:
# If the message doesn't already contain markdown links, try to add a link to the commit
message = self._format_message_link(message, info.commit.hash)
if info.issues:
message = f'{message} ({self._format_issues(info.issues)})'
if info.commit.authors:
message = f'{message} by {self._format_authors(info.commit.authors)}'
if info.fixes:
fix_message = ', '.join(f'{self._format_message_link(None, fix.hash)}' for fix in info.fixes)
authors = sorted({author for fix in info.fixes for author in fix.authors}, key=str.casefold)
if authors != info.commit.authors:
fix_message = f'{fix_message} by {self._format_authors(authors)}'
message = f'{message} (With fixes in {fix_message})'
return message if not sep else f'{message}{sep}{rest}'
def _format_message_link(self, message, hash):
assert message or hash, 'Improperly defined commit message or override'
message = message if message else hash[:HASH_LENGTH]
return f'[{message}]({self.repo_url}/commit/{hash})' if hash else message
def _format_issues(self, issues):
return ', '.join(f'[#{issue}]({self.repo_url}/issues/{issue})' for issue in issues)
@staticmethod
def _format_authors(authors):
return ', '.join(f'[{author}]({BASE_URL}/{author})' for author in authors)
@property
def repo_url(self):
return f'{BASE_URL}/{self._repo}'
class CommitRange:
COMMAND = 'git'
COMMIT_SEPARATOR = '-----'
AUTHOR_INDICATOR_RE = re.compile(r'Authored by:? ', re.IGNORECASE)
MESSAGE_RE = re.compile(r'''
(?:\[(?P<prefix>[^\]]+)\]\ )?
(?:(?P<sub_details>`?[\w.-]+`?): )?
(?P<message>.+?)
(?:\ \((?P<issues>\#\d+(?:,\ \#\d+)*)\))?
''', re.VERBOSE | re.DOTALL)
EXTRACTOR_INDICATOR_RE = re.compile(r'(?:Fix|Add)\s+Extractors?', re.IGNORECASE)
REVERT_RE = re.compile(r'(?:\[[^\]]+\]\s+)?(?i:Revert)\s+([\da-f]{40})')
FIXES_RE = re.compile(r'(?i:Fix(?:es)?(?:\s+bugs?)?(?:\s+in|\s+for)?|Revert|Improve)\s+([\da-f]{40})')
UPSTREAM_MERGE_RE = re.compile(r'Update to ytdl-commit-([\da-f]+)')
def __init__(self, start, end, default_author=None):
self._start, self._end = start, end
self._commits, self._fixes = self._get_commits_and_fixes(default_author)
self._commits_added = []
def __iter__(self):
return iter(itertools.chain(self._commits.values(), self._commits_added))
def __len__(self):
return len(self._commits) + len(self._commits_added)
def __contains__(self, commit):
if isinstance(commit, Commit):
if not commit.hash:
return False
commit = commit.hash
return commit in self._commits
def _get_commits_and_fixes(self, default_author):
result = run_process(
self.COMMAND, 'log', f'--format=%H%n%s%n%b%n{self.COMMIT_SEPARATOR}',
f'{self._start}..{self._end}' if self._start else self._end).stdout
commits, reverts = {}, {}
fixes = defaultdict(list)
lines = iter(result.splitlines(False))
for i, commit_hash in enumerate(lines):
short = next(lines)
skip = short.startswith('Release ') or short == '[version] update'
authors = [default_author] if default_author else []
for line in iter(lambda: next(lines), self.COMMIT_SEPARATOR):
match = self.AUTHOR_INDICATOR_RE.match(line)
if match:
authors = sorted(map(str.strip, line[match.end():].split(',')), key=str.casefold)
commit = Commit(commit_hash, short, authors)
if skip and (self._start or not i):
logger.debug(f'Skipped commit: {commit}')
continue
elif skip:
logger.debug(f'Reached Release commit, breaking: {commit}')
break
revert_match = self.REVERT_RE.fullmatch(commit.short)
if revert_match:
reverts[revert_match.group(1)] = commit
continue
fix_match = self.FIXES_RE.search(commit.short)
if fix_match:
commitish = fix_match.group(1)
fixes[commitish].append(commit)
commits[commit.hash] = commit
for commitish, revert_commit in reverts.items():
reverted = commits.pop(commitish, None)
if reverted:
logger.debug(f'{commitish} fully reverted {reverted}')
else:
commits[revert_commit.hash] = revert_commit
for commitish, fix_commits in fixes.items():
if commitish in commits:
hashes = ', '.join(commit.hash[:HASH_LENGTH] for commit in fix_commits)
logger.info(f'Found fix(es) for {commitish[:HASH_LENGTH]}: {hashes}')
for fix_commit in fix_commits:
del commits[fix_commit.hash]
else:
logger.debug(f'Commit with fixes not in changes: {commitish[:HASH_LENGTH]}')
return commits, fixes
def apply_overrides(self, overrides):
for override in overrides:
when = override.get('when')
if when and when not in self and when != self._start:
logger.debug(f'Ignored {when!r} override')
continue
override_hash = override.get('hash') or when
if override['action'] == 'add':
commit = Commit(override.get('hash'), override['short'], override.get('authors') or [])
logger.info(f'ADD {commit}')
self._commits_added.append(commit)
elif override['action'] == 'remove':
if override_hash in self._commits:
logger.info(f'REMOVE {self._commits[override_hash]}')
del self._commits[override_hash]
elif override['action'] == 'change':
if override_hash not in self._commits:
continue
commit = Commit(override_hash, override['short'], override.get('authors') or [])
logger.info(f'CHANGE {self._commits[commit.hash]} -> {commit}')
self._commits[commit.hash] = commit
self._commits = {key: value for key, value in reversed(self._commits.items())}
def groups(self):
group_dict = defaultdict(list)
for commit in self:
upstream_re = self.UPSTREAM_MERGE_RE.search(commit.short)
if upstream_re:
commit.short = f'[upstream] Merged with youtube-dl {upstream_re.group(1)}'
match = self.MESSAGE_RE.fullmatch(commit.short)
if not match:
logger.error(f'Error parsing short commit message: {commit.short!r}')
continue
prefix, sub_details_alt, message, issues = match.groups()
issues = [issue.strip()[1:] for issue in issues.split(',')] if issues else []
if prefix:
groups, details, sub_details = zip(*map(self.details_from_prefix, prefix.split(',')))
group = next(iter(filter(None, groups)), None)
details = ', '.join(unique(details))
sub_details = list(itertools.chain.from_iterable(sub_details))
else:
group = CommitGroup.CORE
details = None
sub_details = []
if sub_details_alt:
sub_details.append(sub_details_alt)
sub_details = tuple(unique(sub_details))
if not group:
if self.EXTRACTOR_INDICATOR_RE.search(commit.short):
group = CommitGroup.EXTRACTOR
logger.error(f'Assuming [ie] group for {commit.short!r}')
else:
group = CommitGroup.CORE
commit_info = CommitInfo(
details, sub_details, message.strip(),
issues, commit, self._fixes[commit.hash])
logger.debug(f'Resolved {commit.short!r} to {commit_info!r}')
group_dict[group].append(commit_info)
return group_dict
@staticmethod
def details_from_prefix(prefix):
if not prefix:
return CommitGroup.CORE, None, ()
prefix, *sub_details = prefix.split(':')
group, details = CommitGroup.get(prefix)
if group is CommitGroup.PRIORITY and details:
details = details.partition('/')[2].strip()
if details and '/' in details:
logger.error(f'Prefix is overnested, using first part: {prefix}')
details = details.partition('/')[0].strip()
if details == 'common':
details = None
elif group is CommitGroup.NETWORKING and details == 'rh':
details = 'Request Handler'
return group, details, sub_details
def get_new_contributors(contributors_path, commits):
contributors = set()
if contributors_path.exists():
for line in read_file(contributors_path).splitlines():
author, _, _ = line.strip().partition(' (')
authors = author.split('/')
contributors.update(map(str.casefold, authors))
new_contributors = set()
for commit in commits:
for author in commit.authors:
author_folded = author.casefold()
if author_folded not in contributors:
contributors.add(author_folded)
new_contributors.add(author)
return sorted(new_contributors, key=str.casefold)
def create_changelog(args):
logging.basicConfig(
datefmt='%Y-%m-%d %H-%M-%S', format='{asctime} | {levelname:<8} | {message}',
level=logging.WARNING - 10 * args.verbosity, style='{', stream=sys.stderr)
commits = CommitRange(None, args.commitish, args.default_author)
if not args.no_override:
if args.override_path.exists():
overrides = json.loads(read_file(args.override_path))
commits.apply_overrides(overrides)
else:
logger.warning(f'File {args.override_path.as_posix()} does not exist')
logger.info(f'Loaded {len(commits)} commits')
new_contributors = get_new_contributors(args.contributors_path, commits)
if new_contributors:
if args.contributors:
write_file(args.contributors_path, '\n'.join(new_contributors) + '\n', mode='a')
logger.info(f'New contributors: {", ".join(new_contributors)}')
return Changelog(commits.groups(), args.repo, args.collapsible)
def create_parser():
import argparse
parser = argparse.ArgumentParser(
description='Create a changelog markdown from a git commit range')
parser.add_argument(
'commitish', default='HEAD', nargs='?',
help='The commitish to create the range from (default: %(default)s)')
parser.add_argument(
'-v', '--verbosity', action='count', default=0,
help='increase verbosity (can be used twice)')
parser.add_argument(
'-c', '--contributors', action='store_true',
help='update CONTRIBUTORS file (default: %(default)s)')
parser.add_argument(
'--contributors-path', type=Path, default=LOCATION_PATH.parent / 'CONTRIBUTORS',
help='path to the CONTRIBUTORS file')
parser.add_argument(
'--no-override', action='store_true',
help='skip override json in commit generation (default: %(default)s)')
parser.add_argument(
'--override-path', type=Path, default=LOCATION_PATH / 'changelog_override.json',
help='path to the changelog_override.json file')
parser.add_argument(
'--default-author', default='pukkandan',
help='the author to use without a author indicator (default: %(default)s)')
parser.add_argument(
'--repo', default='yt-dlp/yt-dlp',
help='the github repository to use for the operations (default: %(default)s)')
parser.add_argument(
'--collapsible', action='store_true',
help='make changelog collapsible (default: %(default)s)')
return parser
if __name__ == '__main__':
print(create_changelog(create_parser().parse_args()))

@ -1,33 +1,32 @@
#!/usr/bin/env python
from __future__ import unicode_literals
#!/usr/bin/env python3
# import io
import optparse
# import re
import re
def main():
return # This is unused in yt-dlp
parser = optparse.OptionParser(usage='%prog INFILE OUTFILE')
options, args = parser.parse_args()
if len(args) != 2:
parser.error('Expected an input and an output filename')
infile, outfile = args
""" infile, outfile = args
with io.open(infile, encoding='utf-8') as inf:
with open(infile, encoding='utf-8') as inf:
readme = inf.read()
bug_text = re.search( """
# r'(?s)#\s*BUGS\s*[^\n]*\s*(.*?)#\s*COPYRIGHT', readme).group(1)
# dev_text = re.search(
# r'(?s)(#\s*DEVELOPER INSTRUCTIONS.*?)#\s*EMBEDDING youtube-dlc',
""" readme).group(1)
bug_text = re.search(
r'(?s)#\s*BUGS\s*[^\n]*\s*(.*?)#\s*COPYRIGHT', readme).group(1)
dev_text = re.search(
r'(?s)(#\s*DEVELOPER INSTRUCTIONS.*?)#\s*EMBEDDING yt-dlp', readme).group(1)
out = bug_text + dev_text
with io.open(outfile, 'w', encoding='utf-8') as outf:
outf.write(out) """
with open(outfile, 'w', encoding='utf-8') as outf:
outf.write(out)
if __name__ == '__main__':
main()

@ -1,29 +1,72 @@
#!/usr/bin/env python
from __future__ import unicode_literals
#!/usr/bin/env python3
import io
import optparse
# Allow direct execution
import os
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
def main():
parser = optparse.OptionParser(usage='%prog INFILE OUTFILE')
options, args = parser.parse_args()
if len(args) != 2:
parser.error('Expected an input and an output filename')
infile, outfile = args
import re
from devscripts.utils import get_filename_args, read_file, write_file
VERBOSE_TMPL = '''
- type: checkboxes
id: verbose
attributes:
label: Provide verbose output that clearly demonstrates the problem
options:
- label: Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)
required: true
- label: "If using API, add `'verbose': True` to `YoutubeDL` params instead"
required: false
- label: Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below
required: true
- type: textarea
id: log
attributes:
label: Complete Verbose Output
description: |
It should start like this:
placeholder: |
[debug] Command-line config: ['-vU', 'https://www.youtube.com/watch?v=BaW_jenozKc']
[debug] Encodings: locale cp65001, fs utf-8, pref cp65001, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version nightly@... from yt-dlp/yt-dlp [b634ba742] (win_exe)
[debug] Python 3.8.10 (CPython 64bit) - Windows-10-10.0.22000-SP0
[debug] exe versions: ffmpeg N-106550-g072101bd52-20220410 (fdk,setts), ffprobe N-106624-g391ce570c8-20220415, phantomjs 2.1.1
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests
[debug] Loaded 1893 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
yt-dlp is up to date (nightly@... from yt-dlp/yt-dlp-nightly-builds)
[youtube] Extracting URL: https://www.youtube.com/watch?v=BaW_jenozKc
<more lines>
render: shell
validations:
required: true
'''.strip()
with io.open(infile, encoding='utf-8') as inf:
issue_template_tmpl = inf.read()
NO_SKIP = '''
- type: checkboxes
attributes:
label: DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE
description: Fill all fields even if you think it is irrelevant for the issue
options:
- label: I understand that I will be **blocked** if I *intentionally* remove or skip any mandatory\\* field
required: true
'''.strip()
# Get the version from youtube_dlc/version.py without importing the package
exec(compile(open('youtube_dlc/version.py').read(),
'youtube_dlc/version.py', 'exec'))
out = issue_template_tmpl % {'version': locals()['__version__']}
def main():
fields = {'no_skip': NO_SKIP}
fields['verbose'] = VERBOSE_TMPL % fields
fields['verbose_optional'] = re.sub(r'(\n\s+validations:)?\n\s+required: true', '', fields['verbose'])
infile, outfile = get_filename_args(has_infile=True)
write_file(outfile, read_file(infile) % fields)
with io.open(outfile, 'w', encoding='utf-8') as outf:
outf.write(out)
if __name__ == '__main__':
main()

@ -1,100 +1,132 @@
from __future__ import unicode_literals, print_function
#!/usr/bin/env python3
from inspect import getsource
import io
# Allow direct execution
import os
from os.path import dirname as dirn
import shutil
import sys
print('WARNING: Lazy loading extractors is an experimental feature that may not always work', file=sys.stderr)
sys.path.insert(0, dirn(dirn((os.path.abspath(__file__)))))
lazy_extractors_filename = sys.argv[1]
if os.path.exists(lazy_extractors_filename):
os.remove(lazy_extractors_filename)
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from youtube_dlc.extractor import _ALL_CLASSES
from youtube_dlc.extractor.common import InfoExtractor, SearchInfoExtractor
with open('devscripts/lazy_load_template.py', 'rt') as f:
module_template = f.read()
module_contents = [
module_template + '\n' + getsource(InfoExtractor.suitable) + '\n',
'class LazyLoadSearchExtractor(LazyLoadExtractor):\n pass\n']
from inspect import getsource
ie_template = '''
from devscripts.utils import get_filename_args, read_file, write_file
NO_ATTR = object()
STATIC_CLASS_PROPERTIES = [
'IE_NAME', '_ENABLED', '_VALID_URL', # Used for URL matching
'_WORKING', 'IE_DESC', '_NETRC_MACHINE', 'SEARCH_KEY', # Used for --extractor-descriptions
'age_limit', # Used for --age-limit (evaluated)
'_RETURN_TYPE', # Accessed in CLI only with instance (evaluated)
]
CLASS_METHODS = [
'ie_key', 'suitable', '_match_valid_url', # Used for URL matching
'working', 'get_temp_id', '_match_id', # Accessed just before instance creation
'description', # Used for --extractor-descriptions
'is_suitable', # Used for --age-limit
'supports_login', 'is_single_video', # Accessed in CLI only with instance
]
IE_TEMPLATE = '''
class {name}({bases}):
_VALID_URL = {valid_url!r}
_module = '{module}'
_module = {module!r}
'''
make_valid_template = '''
@classmethod
def _make_valid_url(cls):
return {valid_url!r}
'''
def get_base_name(base):
if base is InfoExtractor:
return 'LazyLoadExtractor'
elif base is SearchInfoExtractor:
return 'LazyLoadSearchExtractor'
else:
return base.__name__
def build_lazy_ie(ie, name):
valid_url = getattr(ie, '_VALID_URL', None)
s = ie_template.format(
name=name,
bases=', '.join(map(get_base_name, ie.__bases__)),
valid_url=valid_url,
module=ie.__module__)
if ie.suitable.__func__ is not InfoExtractor.suitable.__func__:
s += '\n' + getsource(ie.suitable)
if hasattr(ie, '_make_valid_url'):
# search extractors
s += make_valid_template.format(valid_url=ie._make_valid_url())
return s
# find the correct sorting and add the required base classes so that subclasses
# can be correctly created
classes = _ALL_CLASSES[:-1]
ordered_cls = []
while classes:
for c in classes[:]:
bases = set(c.__bases__) - set((object, InfoExtractor, SearchInfoExtractor))
stop = False
for b in bases:
if b not in classes and b not in ordered_cls:
if b.__name__ == 'GenericIE':
exit()
classes.insert(0, b)
stop = True
if stop:
break
if all(b in ordered_cls for b in bases):
ordered_cls.append(c)
classes.remove(c)
break
ordered_cls.append(_ALL_CLASSES[-1])
names = []
for ie in ordered_cls:
name = ie.__name__
src = build_lazy_ie(ie, name)
module_contents.append(src)
if ie in _ALL_CLASSES:
names.append(name)
module_contents.append(
'_ALL_CLASSES = [{0}]'.format(', '.join(names)))
module_src = '\n'.join(module_contents) + '\n'
with io.open(lazy_extractors_filename, 'wt', encoding='utf-8') as f:
f.write(module_src)
MODULE_TEMPLATE = read_file('devscripts/lazy_load_template.py')
def main():
lazy_extractors_filename = get_filename_args(default_outfile='yt_dlp/extractor/lazy_extractors.py')
if os.path.exists(lazy_extractors_filename):
os.remove(lazy_extractors_filename)
_ALL_CLASSES = get_all_ies() # Must be before import
import yt_dlp.plugins
from yt_dlp.extractor.common import InfoExtractor, SearchInfoExtractor
# Filter out plugins
_ALL_CLASSES = [cls for cls in _ALL_CLASSES if not cls.__module__.startswith(f'{yt_dlp.plugins.PACKAGE_NAME}.')]
DummyInfoExtractor = type('InfoExtractor', (InfoExtractor,), {'IE_NAME': NO_ATTR})
module_src = '\n'.join((
MODULE_TEMPLATE,
' _module = None',
*extra_ie_code(DummyInfoExtractor),
'\nclass LazyLoadSearchExtractor(LazyLoadExtractor):\n pass\n',
*build_ies(_ALL_CLASSES, (InfoExtractor, SearchInfoExtractor), DummyInfoExtractor),
))
write_file(lazy_extractors_filename, f'{module_src}\n')
def get_all_ies():
PLUGINS_DIRNAME = 'ytdlp_plugins'
BLOCKED_DIRNAME = f'{PLUGINS_DIRNAME}_blocked'
if os.path.exists(PLUGINS_DIRNAME):
# os.rename cannot be used, e.g. in Docker. See https://github.com/yt-dlp/yt-dlp/pull/4958
shutil.move(PLUGINS_DIRNAME, BLOCKED_DIRNAME)
try:
from yt_dlp.extractor.extractors import _ALL_CLASSES
finally:
if os.path.exists(BLOCKED_DIRNAME):
shutil.move(BLOCKED_DIRNAME, PLUGINS_DIRNAME)
return _ALL_CLASSES
def extra_ie_code(ie, base=None):
for var in STATIC_CLASS_PROPERTIES:
val = getattr(ie, var)
if val != (getattr(base, var) if base else NO_ATTR):
yield f' {var} = {val!r}'
yield ''
for name in CLASS_METHODS:
f = getattr(ie, name)
if not base or f.__func__ != getattr(base, name).__func__:
yield getsource(f)
def build_ies(ies, bases, attr_base):
names = []
for ie in sort_ies(ies, bases):
yield build_lazy_ie(ie, ie.__name__, attr_base)
if ie in ies:
names.append(ie.__name__)
yield f'\n_ALL_CLASSES = [{", ".join(names)}]'
def sort_ies(ies, ignored_bases):
"""find the correct sorting and add the required base classes so that subclasses can be correctly created"""
classes, returned_classes = ies[:-1], set()
assert ies[-1].__name__ == 'GenericIE', 'Last IE must be GenericIE'
while classes:
for c in classes[:]:
bases = set(c.__bases__) - {object, *ignored_bases}
restart = False
for b in sorted(bases, key=lambda x: x.__name__):
if b not in classes and b not in returned_classes:
assert b.__name__ != 'GenericIE', 'Cannot inherit from GenericIE'
classes.insert(0, b)
restart = True
if restart:
break
if bases <= returned_classes:
yield c
returned_classes.add(c)
classes.remove(c)
break
yield ies[-1]
def build_lazy_ie(ie, name, attr_base):
bases = ', '.join({
'InfoExtractor': 'LazyLoadExtractor',
'SearchInfoExtractor': 'LazyLoadSearchExtractor',
}.get(base.__name__, base.__name__) for base in ie.__bases__)
s = IE_TEMPLATE.format(name=name, module=ie.__module__, bases=bases)
return s + '\n'.join(extra_ie_code(ie, attr_base))
if __name__ == '__main__':
main()

@ -1,26 +1,93 @@
from __future__ import unicode_literals
#!/usr/bin/env python3
import io
"""
yt-dlp --help | make_readme.py
This must be run in a console of correct width
"""
# Allow direct execution
import os
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import functools
import re
from devscripts.utils import read_file, write_file
README_FILE = 'README.md'
helptext = sys.stdin.read()
if isinstance(helptext, bytes):
helptext = helptext.decode('utf-8')
OPTIONS_START = 'General Options:'
OPTIONS_END = 'CONFIGURATION'
EPILOG_START = 'See full documentation'
ALLOWED_OVERSHOOT = 2
DISABLE_PATCH = object()
def take_section(text, start=None, end=None, *, shift=0):
return text[
text.index(start) + shift if start else None:
text.index(end) + shift if end else None
]
def apply_patch(text, patch):
return text if patch[0] is DISABLE_PATCH else re.sub(*patch, text)
options = take_section(sys.stdin.read(), f'\n {OPTIONS_START}', f'\n{EPILOG_START}', shift=1)
with io.open(README_FILE, encoding='utf-8') as f:
oldreadme = f.read()
max_width = max(map(len, options.split('\n')))
switch_col_width = len(re.search(r'(?m)^\s{5,}', options).group())
delim = f'\n{" " * switch_col_width}'
header = oldreadme[:oldreadme.index('## General Options:')]
footer = oldreadme[oldreadme.index('# CONFIGURATION'):]
PATCHES = (
( # Standardize `--update` message
r'(?m)^( -U, --update\s+).+(\n \s.+)*$',
r'\1Update this program to the latest version',
),
( # Headings
r'(?m)^ (\w.+\n)( (?=\w))?',
r'## \1'
),
( # Fixup `--date` formatting
rf'(?m)( --date DATE.+({delim}[^\[]+)*)\[.+({delim}.+)*$',
(rf'\1[now|today|yesterday][-N[day|week|month|year]].{delim}'
f'E.g. "--date today-2weeks" downloads only{delim}'
'videos uploaded on the same day two weeks ago'),
),
( # Do not split URLs
rf'({delim[:-1]})? (?P<label>\[\S+\] )?(?P<url>https?({delim})?:({delim})?/({delim})?/(({delim})?\S+)+)\s',
lambda mobj: ''.join((delim, mobj.group('label') or '', re.sub(r'\s+', '', mobj.group('url')), '\n'))
),
( # Do not split "words"
rf'(?m)({delim}\S+)+$',
lambda mobj: ''.join((delim, mobj.group(0).replace(delim, '')))
),
( # Allow overshooting last line
rf'(?m)^(?P<prev>.+)${delim}(?P<current>.+)$(?!{delim})',
lambda mobj: (mobj.group().replace(delim, ' ')
if len(mobj.group()) - len(delim) + 1 <= max_width + ALLOWED_OVERSHOOT
else mobj.group())
),
( # Avoid newline when a space is available b/w switch and description
DISABLE_PATCH, # This creates issues with prepare_manpage
r'(?m)^(\s{4}-.{%d})(%s)' % (switch_col_width - 6, delim),
r'\1 '
),
( # Replace brackets with a Markdown link
r'SponsorBlock API \((http.+)\)',
r'[SponsorBlock API](\1)'
),
)
options = helptext[helptext.index(' General Options:'):]
options = re.sub(r'(?m)^ (\w.+)$', r'## \1', options)
options = options + '\n'
readme = read_file(README_FILE)
with io.open(README_FILE, 'w', encoding='utf-8') as f:
f.write(header)
f.write(options)
f.write(footer)
write_file(README_FILE, ''.join((
take_section(readme, end=f'## {OPTIONS_START}'),
functools.reduce(apply_patch, PATCHES, options),
take_section(readme, f'# {OPTIONS_END}'),
)))

@ -1,45 +1,19 @@
#!/usr/bin/env python
from __future__ import unicode_literals
#!/usr/bin/env python3
import io
import optparse
# Allow direct execution
import os
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# Import youtube_dlc
ROOT_DIR = os.path.join(os.path.dirname(__file__), '..')
sys.path.insert(0, ROOT_DIR)
import youtube_dlc
from devscripts.utils import get_filename_args, write_file
from yt_dlp.extractor import list_extractor_classes
def main():
parser = optparse.OptionParser(usage='%prog OUTFILE.md')
options, args = parser.parse_args()
if len(args) != 1:
parser.error('Expected an output filename')
outfile, = args
def gen_ies_md(ies):
for ie in ies:
ie_md = '**{0}**'.format(ie.IE_NAME)
ie_desc = getattr(ie, 'IE_DESC', None)
if ie_desc is False:
continue
if ie_desc is not None:
ie_md += ': {0}'.format(ie.IE_DESC)
if not ie.working():
ie_md += ' (Currently broken)'
yield ie_md
ies = sorted(youtube_dlc.gen_extractors(), key=lambda i: i.IE_NAME.lower())
out = '# Supported sites\n' + ''.join(
' - ' + md + '\n'
for md in gen_ies_md(ies))
with io.open(outfile, 'w', encoding='utf-8') as outf:
outf.write(out)
out = '\n'.join(ie.description() for ie in list_extractor_classes() if ie.IE_DESC is not False)
write_file(get_filename_args(), f'# Supported sites\n{out}\n')
if __name__ == '__main__':

@ -1,6 +0,0 @@
# source this file in your shell to get a POSIX locale (which will break many programs, but that's kind of the point)
export LC_ALL=POSIX
export LANG=POSIX
export LANGUAGE=POSIX

@ -1,78 +1,119 @@
from __future__ import unicode_literals
#!/usr/bin/env python3
# Allow direct execution
import os
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import io
import optparse
import os.path
import re
from devscripts.utils import (
compose_functions,
get_filename_args,
read_file,
write_file,
)
ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
README_FILE = os.path.join(ROOT_DIR, 'README.md')
PREFIX = r'''%youtube-dlc(1)
PREFIX = r'''%yt-dlp(1)
# NAME
youtube\-dl \- download videos from youtube.com or other video platforms
yt\-dlp \- A feature\-rich command\-line audio/video downloader
# SYNOPSIS
**youtube-dlc** \[OPTIONS\] URL [URL...]
**yt-dlp** \[OPTIONS\] URL [URL...]
# DESCRIPTION
'''
def main():
parser = optparse.OptionParser(usage='%prog OUTFILE.md')
options, args = parser.parse_args()
if len(args) != 1:
parser.error('Expected an output filename')
def filter_excluded_sections(readme):
EXCLUDED_SECTION_BEGIN_STRING = re.escape('<!-- MANPAGE: BEGIN EXCLUDED SECTION -->')
EXCLUDED_SECTION_END_STRING = re.escape('<!-- MANPAGE: END EXCLUDED SECTION -->')
return re.sub(
rf'(?s){EXCLUDED_SECTION_BEGIN_STRING}.+?{EXCLUDED_SECTION_END_STRING}\n',
'', readme)
def _convert_code_blocks(readme):
current_code_block = None
for line in readme.splitlines(True):
if current_code_block:
if line == current_code_block:
current_code_block = None
yield '\n'
else:
yield f' {line}'
elif line.startswith('```'):
current_code_block = line.count('`') * '`' + '\n'
yield '\n'
else:
yield line
outfile, = args
with io.open(README_FILE, encoding='utf-8') as f:
readme = f.read()
def convert_code_blocks(readme):
return ''.join(_convert_code_blocks(readme))
readme = re.sub(r'(?s)^.*?(?=# DESCRIPTION)', '', readme)
readme = re.sub(r'\s+youtube-dlc \[OPTIONS\] URL \[URL\.\.\.\]', '', readme)
readme = PREFIX + readme
readme = filter_options(readme)
def move_sections(readme):
MOVE_TAG_TEMPLATE = '<!-- MANPAGE: MOVE "%s" SECTION HERE -->'
sections = re.findall(r'(?m)^%s$' % (
re.escape(MOVE_TAG_TEMPLATE).replace(r'\%', '%') % '(.+)'), readme)
with io.open(outfile, 'w', encoding='utf-8') as outf:
outf.write(readme)
for section_name in sections:
move_tag = MOVE_TAG_TEMPLATE % section_name
if readme.count(move_tag) > 1:
raise Exception(f'There is more than one occurrence of "{move_tag}". This is unexpected')
sections = re.findall(rf'(?sm)(^# {re.escape(section_name)}.+?)(?=^# )', readme)
if len(sections) < 1:
raise Exception(f'The section {section_name} does not exist')
elif len(sections) > 1:
raise Exception(f'There are multiple occurrences of section {section_name}, this is unhandled')
readme = readme.replace(sections[0], '', 1).replace(move_tag, sections[0], 1)
return readme
def filter_options(readme):
ret = ''
in_options = False
for line in readme.split('\n'):
if line.startswith('# '):
if line[2:].startswith('OPTIONS'):
in_options = True
else:
in_options = False
if in_options:
if line.lstrip().startswith('-'):
split = re.split(r'\s{2,}', line.lstrip())
# Description string may start with `-` as well. If there is
# only one piece then it's a description bit not an option.
if len(split) > 1:
option, description = split
split_option = option.split(' ')
if not split_option[-1].startswith('-'): # metavar
option = ' '.join(split_option[:-1] + ['*%s*' % split_option[-1]])
# Pandoc's definition_lists. See http://pandoc.org/README.html
# for more information.
ret += '\n%s\n: %s\n' % (option, description)
continue
ret += line.lstrip() + '\n'
else:
ret += line + '\n'
section = re.search(r'(?sm)^# USAGE AND OPTIONS\n.+?(?=^# )', readme).group(0)
section_new = section.replace('*', R'\*')
options = '# OPTIONS\n'
for line in section_new.split('\n')[1:]:
mobj = re.fullmatch(r'''(?x)
\s{4}(?P<opt>-(?:,\s|[^\s])+)
(?:\s(?P<meta>(?:[^\s]|\s(?!\s))+))?
(\s{2,}(?P<desc>.+))?
''', line)
if not mobj:
options += f'{line.lstrip()}\n'
continue
option, metavar, description = mobj.group('opt', 'meta', 'desc')
# Pandoc's definition_lists. See http://pandoc.org/README.html
option = f'{option} *{metavar}*' if metavar else option
description = f'{description}\n' if description else ''
options += f'\n{option}\n: {description}'
continue
return ret
return readme.replace(section, options, 1)
TRANSFORM = compose_functions(filter_excluded_sections, convert_code_blocks, move_sections, filter_options)
def main():
write_file(get_filename_args(), PREFIX + TRANSFORM(read_file(README_FILE)))
if __name__ == '__main__':

@ -1,78 +0,0 @@
#!/usr/bin/env python
# coding: utf-8
from __future__ import unicode_literals
import sys
import os
import platform
from PyInstaller.utils.win32.versioninfo import (
VarStruct, VarFileInfo, StringStruct, StringTable,
StringFileInfo, FixedFileInfo, VSVersionInfo, SetVersion,
)
import PyInstaller.__main__
arch = sys.argv[1] if len(sys.argv) > 1 else platform.architecture()[0][:2]
assert arch in ('32', '64')
print('Building %sbit version' % arch)
_x86 = '_x86' if arch == '32' else ''
FILE_DESCRIPTION = 'Media Downloader%s' % (' (32 Bit)' if _x86 else '')
SHORT_URLS = {'32': 'git.io/JUGsM', '64': 'git.io/JLh7K'}
root_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
print('Changing working directory to %s' % root_dir)
os.chdir(root_dir)
exec(compile(open('youtube_dlc/version.py').read(), 'youtube_dlc/version.py', 'exec'))
VERSION = locals()['__version__']
VERSION_LIST = VERSION.replace('-', '.').split('.')
VERSION_LIST = list(map(int, VERSION_LIST)) + [0] * (4 - len(VERSION_LIST))
print('Version: %s%s' % (VERSION, _x86))
print('Remember to update the version using devscipts\\update-version.py')
VERSION_FILE = VSVersionInfo(
ffi=FixedFileInfo(
filevers=VERSION_LIST,
prodvers=VERSION_LIST,
mask=0x3F,
flags=0x0,
OS=0x4,
fileType=0x1,
subtype=0x0,
date=(0, 0),
),
kids=[
StringFileInfo([
StringTable(
'040904B0', [
StringStruct('Comments', 'Youtube-dlc%s Command Line Interface.' % _x86),
StringStruct('CompanyName', 'pukkandan@gmail.com'),
StringStruct('FileDescription', FILE_DESCRIPTION),
StringStruct('FileVersion', VERSION),
StringStruct('InternalName', 'youtube-dlc%s' % _x86),
StringStruct(
'LegalCopyright',
'pukkandan@gmail.com | UNLICENSE',
),
StringStruct('OriginalFilename', 'youtube-dlc%s.exe' % _x86),
StringStruct('ProductName', 'Youtube-dlc%s' % _x86),
StringStruct('ProductVersion', '%s%s | %s' % (VERSION, _x86, SHORT_URLS[arch])),
])]),
VarFileInfo([VarStruct('Translation', [0, 1200])])
]
)
PyInstaller.__main__.run([
'--name=youtube-dlc%s' % _x86,
'--onefile',
'--icon=devscripts/cloud.ico',
'--exclude-module=youtube_dl',
'--exclude-module=test',
'--exclude-module=ytdlp_plugins',
'--hidden-import=mutagen',
'youtube_dlc/__main__.py',
])
SetVersion('dist/youtube-dlc%s.exe' % _x86, VERSION_FILE)

@ -1,142 +0,0 @@
# Unused
#!/bin/bash
# IMPORTANT: the following assumptions are made
# * the GH repo is on the origin remote
# * the gh-pages branch is named so locally
# * the git config user.signingkey is properly set
# You will need
# pip install coverage nose rsa wheel
# TODO
# release notes
# make hash on local files
set -e
skip_tests=true
gpg_sign_commits=""
buildserver='localhost:8142'
while true
do
case "$1" in
--run-tests)
skip_tests=false
shift
;;
--gpg-sign-commits|-S)
gpg_sign_commits="-S"
shift
;;
--buildserver)
buildserver="$2"
shift 2
;;
--*)
echo "ERROR: unknown option $1"
exit 1
;;
*)
break
;;
esac
done
if [ -z "$1" ]; then echo "ERROR: specify version number like this: $0 1994.09.06"; exit 1; fi
version="$1"
major_version=$(echo "$version" | sed -n 's#^\([0-9]*\.[0-9]*\.[0-9]*\).*#\1#p')
if test "$major_version" '!=' "$(date '+%Y.%m.%d')"; then
echo "$version does not start with today's date!"
exit 1
fi
if [ ! -z "`git tag | grep "$version"`" ]; then echo 'ERROR: version already present'; exit 1; fi
if [ ! -z "`git status --porcelain | grep -v CHANGELOG`" ]; then echo 'ERROR: the working directory is not clean; commit or stash changes'; exit 1; fi
useless_files=$(find youtube_dlc -type f -not -name '*.py')
if [ ! -z "$useless_files" ]; then echo "ERROR: Non-.py files in youtube_dlc: $useless_files"; exit 1; fi
if [ ! -f "updates_key.pem" ]; then echo 'ERROR: updates_key.pem missing'; exit 1; fi
if ! type pandoc >/dev/null 2>/dev/null; then echo 'ERROR: pandoc is missing'; exit 1; fi
if ! python3 -c 'import rsa' 2>/dev/null; then echo 'ERROR: python3-rsa is missing'; exit 1; fi
if ! python3 -c 'import wheel' 2>/dev/null; then echo 'ERROR: wheel is missing'; exit 1; fi
read -p "Is ChangeLog up to date? (y/n) " -n 1
if [[ ! $REPLY =~ ^[Yy]$ ]]; then exit 1; fi
/bin/echo -e "\n### First of all, testing..."
make clean
if $skip_tests ; then
echo 'SKIPPING TESTS'
else
nosetests --verbose --with-coverage --cover-package=youtube_dlc --cover-html test --stop || exit 1
fi
/bin/echo -e "\n### Changing version in version.py..."
sed -i "s/__version__ = '.*'/__version__ = '$version'/" youtube_dlc/version.py
/bin/echo -e "\n### Changing version in ChangeLog..."
sed -i "s/<unreleased>/$version/" ChangeLog
/bin/echo -e "\n### Committing documentation, templates and youtube_dlc/version.py..."
make README.md CONTRIBUTING.md issuetemplates supportedsites
git add README.md CONTRIBUTING.md .github/ISSUE_TEMPLATE/1_broken_site.md .github/ISSUE_TEMPLATE/2_site_support_request.md .github/ISSUE_TEMPLATE/3_site_feature_request.md .github/ISSUE_TEMPLATE/4_bug_report.md .github/ISSUE_TEMPLATE/5_feature_request.md .github/ISSUE_TEMPLATE/6_question.md docs/supportedsites.md youtube_dlc/version.py ChangeLog
git commit $gpg_sign_commits -m "release $version"
/bin/echo -e "\n### Now tagging, signing and pushing..."
git tag -s -m "Release $version" "$version"
git show "$version"
read -p "Is it good, can I push? (y/n) " -n 1
if [[ ! $REPLY =~ ^[Yy]$ ]]; then exit 1; fi
echo
MASTER=$(git rev-parse --abbrev-ref HEAD)
git push origin $MASTER:master
git push origin "$version"
/bin/echo -e "\n### OK, now it is time to build the binaries..."
REV=$(git rev-parse HEAD)
make youtube-dlc youtube-dlc.tar.gz
read -p "VM running? (y/n) " -n 1
wget "http://$buildserver/build/ytdl-org/youtube-dl/youtube-dlc.exe?rev=$REV" -O youtube-dlc.exe
mkdir -p "build/$version"
mv youtube-dlc youtube-dlc.exe "build/$version"
mv youtube-dlc.tar.gz "build/$version/youtube-dlc-$version.tar.gz"
RELEASE_FILES="youtube-dlc youtube-dlc.exe youtube-dlc-$version.tar.gz"
(cd build/$version/ && md5sum $RELEASE_FILES > MD5SUMS)
(cd build/$version/ && sha1sum $RELEASE_FILES > SHA1SUMS)
(cd build/$version/ && sha256sum $RELEASE_FILES > SHA2-256SUMS)
(cd build/$version/ && sha512sum $RELEASE_FILES > SHA2-512SUMS)
/bin/echo -e "\n### Signing and uploading the new binaries to GitHub..."
for f in $RELEASE_FILES; do gpg --passphrase-repeat 5 --detach-sig "build/$version/$f"; done
ROOT=$(pwd)
python devscripts/create-github-release.py ChangeLog $version "$ROOT/build/$version"
ssh ytdl@yt-dl.org "sh html/update_latest.sh $version"
/bin/echo -e "\n### Now switching to gh-pages..."
git clone --branch gh-pages --single-branch . build/gh-pages
(
set -e
ORIGIN_URL=$(git config --get remote.origin.url)
cd build/gh-pages
"$ROOT/devscripts/gh-pages/add-version.py" $version
"$ROOT/devscripts/gh-pages/update-feed.py"
"$ROOT/devscripts/gh-pages/sign-versions.py" < "$ROOT/updates_key.pem"
"$ROOT/devscripts/gh-pages/generate-download.py"
"$ROOT/devscripts/gh-pages/update-copyright.py"
"$ROOT/devscripts/gh-pages/update-sites.py"
git add *.html *.html.in update
git commit $gpg_sign_commits -m "release $version"
git push "$ROOT" gh-pages
git push "$ORIGIN_URL" gh-pages
)
rm -rf build
make pypi-files
echo "Uploading to PyPi ..."
python setup.py sdist bdist_wheel upload
make clean
/bin/echo -e "\n### DONE!"

@ -1,17 +1,4 @@
@echo off
rem Keep this list in sync with the `offlinetest` target in Makefile
set DOWNLOAD_TESTS="age_restriction^|download^|iqiyi_sdk_interpreter^|socks^|subtitles^|write_annotations^|youtube_lists^|youtube_signature^|post_hooks"
if "%YTDL_TEST_SET%" == "core" (
set test_set="-I test_("%DOWNLOAD_TESTS%")\.py"
set multiprocess_args=""
) else if "%YTDL_TEST_SET%" == "download" (
set test_set="-I test_(?!"%DOWNLOAD_TESTS%").+\.py"
set multiprocess_args="--processes=4 --process-timeout=540"
) else (
echo YTDL_TEST_SET is not set or invalid
exit /b 1
)
nosetests test --verbose %test_set:"=% %multiprocess_args:"=%
>&2 echo run_tests.bat is deprecated. Please use `devscripts/run_tests.py` instead
python %~dp0run_tests.py %~1

@ -0,0 +1,71 @@
#!/usr/bin/env python3
import argparse
import functools
import os
import re
import subprocess
import sys
from pathlib import Path
fix_test_name = functools.partial(re.compile(r'IE(_all|_\d+)?$').sub, r'\1')
def parse_args():
parser = argparse.ArgumentParser(description='Run selected yt-dlp tests')
parser.add_argument(
'test', help='a extractor tests, or one of "core" or "download"', nargs='*')
parser.add_argument(
'-k', help='run a test matching EXPRESSION. Same as "pytest -k"', metavar='EXPRESSION')
return parser.parse_args()
def run_tests(*tests, pattern=None, ci=False):
run_core = 'core' in tests or (not pattern and not tests)
run_download = 'download' in tests
tests = list(map(fix_test_name, tests))
arguments = ['pytest', '-Werror', '--tb=short']
if ci:
arguments.append('--color=yes')
if run_core:
arguments.extend(['-m', 'not download'])
elif run_download:
arguments.extend(['-m', 'download'])
elif pattern:
arguments.extend(['-k', pattern])
else:
arguments.extend(
f'test/test_download.py::TestDownload::test_{test}' for test in tests)
print(f'Running {arguments}', flush=True)
try:
return subprocess.call(arguments)
except FileNotFoundError:
pass
arguments = [sys.executable, '-Werror', '-m', 'unittest']
if run_core:
print('"pytest" needs to be installed to run core tests', file=sys.stderr, flush=True)
return 1
elif run_download:
arguments.append('test.test_download')
elif pattern:
arguments.extend(['-k', pattern])
else:
arguments.extend(
f'test.test_download.TestDownload.test_{test}' for test in tests)
print(f'Running {arguments}', flush=True)
return subprocess.call(arguments)
if __name__ == '__main__':
try:
args = parse_args()
os.chdir(Path(__file__).parent.parent)
sys.exit(run_tests(*args.test, pattern=args.k, ci=bool(os.getenv('CI'))))
except KeyboardInterrupt:
pass

@ -1,22 +1,4 @@
#!/bin/bash
#!/usr/bin/env sh
# Keep this list in sync with the `offlinetest` target in Makefile
DOWNLOAD_TESTS="age_restriction|download|iqiyi_sdk_interpreter|overwrites|socks|subtitles|write_annotations|youtube_lists|youtube_signature|post_hooks"
test_set=""
multiprocess_args=""
case "$YTDL_TEST_SET" in
core)
test_set="-I test_($DOWNLOAD_TESTS)\.py"
;;
download)
test_set="-I test_(?!$DOWNLOAD_TESTS).+\.py"
multiprocess_args="--processes=4 --process-timeout=540"
;;
*)
break
;;
esac
nosetests test --verbose $test_set $multiprocess_args
>&2 echo 'run_tests.sh is deprecated. Please use `devscripts/run_tests.py` instead'
python3 devscripts/run_tests.py "$1"

@ -0,0 +1,36 @@
#!/usr/bin/env python3
# Allow direct execution
import os
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import argparse
import functools
import re
from devscripts.utils import compose_functions, read_file, write_file
VERSION_FILE = 'yt_dlp/version.py'
def parse_options():
parser = argparse.ArgumentParser(description='Set the build variant of the package')
parser.add_argument('variant', help='Name of the variant')
parser.add_argument('-M', '--update-message', default=None, help='Message to show in -U')
return parser.parse_args()
def property_setter(name, value):
return functools.partial(re.sub, rf'(?m)^{name}\s*=\s*.+$', f'{name} = {value!r}')
opts = parse_options()
transform = compose_functions(
property_setter('VARIANT', opts.variant),
property_setter('UPDATE_HINT', opts.update_message)
)
write_file(VERSION_FILE, transform(read_file(VERSION_FILE)))

@ -1,49 +0,0 @@
# Unused
#!/usr/bin/env python
from __future__ import unicode_literals
import itertools
import json
import os
import re
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from youtube_dlc.compat import (
compat_print,
compat_urllib_request,
)
from youtube_dlc.utils import format_bytes
def format_size(bytes):
return '%s (%d bytes)' % (format_bytes(bytes), bytes)
total_bytes = 0
for page in itertools.count(1):
releases = json.loads(compat_urllib_request.urlopen(
'https://api.github.com/repos/ytdl-org/youtube-dl/releases?page=%s' % page
).read().decode('utf-8'))
if not releases:
break
for release in releases:
compat_print(release['name'])
for asset in release['assets']:
asset_name = asset['name']
total_bytes += asset['download_count'] * asset['size']
if all(not re.match(p, asset_name) for p in (
r'^youtube-dlc$',
r'^youtube-dlc-\d{4}\.\d{2}\.\d{2}(?:\.\d+)?\.tar\.gz$',
r'^youtube-dlc\.exe$')):
continue
compat_print(
' %s size: %s downloads: %d'
% (asset_name, format_size(asset['size']), asset['download_count']))
compat_print('total downloads traffic: %s' % format_size(total_bytes))

@ -0,0 +1,189 @@
#!/usr/bin/env python3
"""
Simple parser for spec compliant toml files
A simple toml parser for files that comply with the spec.
Should only be used to parse `pyproject.toml` for `install_deps.py`.
IMPORTANT: INVALID FILES OR MULTILINE STRINGS ARE NOT SUPPORTED!
"""
from __future__ import annotations
import datetime as dt
import json
import re
WS = r'(?:[\ \t]*)'
STRING_RE = re.compile(r'"(?:\\.|[^\\"\n])*"|\'[^\'\n]*\'')
SINGLE_KEY_RE = re.compile(rf'{STRING_RE.pattern}|[A-Za-z0-9_-]+')
KEY_RE = re.compile(rf'{WS}(?:{SINGLE_KEY_RE.pattern}){WS}(?:\.{WS}(?:{SINGLE_KEY_RE.pattern}){WS})*')
EQUALS_RE = re.compile(rf'={WS}')
WS_RE = re.compile(WS)
_SUBTABLE = rf'(?P<subtable>^\[(?P<is_list>\[)?(?P<path>{KEY_RE.pattern})\]\]?)'
EXPRESSION_RE = re.compile(rf'^(?:{_SUBTABLE}|{KEY_RE.pattern}=)', re.MULTILINE)
LIST_WS_RE = re.compile(rf'{WS}((#[^\n]*)?\n{WS})*')
LEFTOVER_VALUE_RE = re.compile(r'[^,}\]\t\n#]+')
def parse_key(value: str):
for match in SINGLE_KEY_RE.finditer(value):
if match[0][0] == '"':
yield json.loads(match[0])
elif match[0][0] == '\'':
yield match[0][1:-1]
else:
yield match[0]
def get_target(root: dict, paths: list[str], is_list=False):
target = root
for index, key in enumerate(paths, 1):
use_list = is_list and index == len(paths)
result = target.get(key)
if result is None:
result = [] if use_list else {}
target[key] = result
if isinstance(result, dict):
target = result
elif use_list:
target = {}
result.append(target)
else:
target = result[-1]
assert isinstance(target, dict)
return target
def parse_enclosed(data: str, index: int, end: str, ws_re: re.Pattern):
index += 1
if match := ws_re.match(data, index):
index = match.end()
while data[index] != end:
index = yield True, index
if match := ws_re.match(data, index):
index = match.end()
if data[index] == ',':
index += 1
if match := ws_re.match(data, index):
index = match.end()
assert data[index] == end
yield False, index + 1
def parse_value(data: str, index: int):
if data[index] == '[':
result = []
indices = parse_enclosed(data, index, ']', LIST_WS_RE)
valid, index = next(indices)
while valid:
index, value = parse_value(data, index)
result.append(value)
valid, index = indices.send(index)
return index, result
if data[index] == '{':
result = {}
indices = parse_enclosed(data, index, '}', WS_RE)
valid, index = next(indices)
while valid:
valid, index = indices.send(parse_kv_pair(data, index, result))
return index, result
if match := STRING_RE.match(data, index):
return match.end(), json.loads(match[0]) if match[0][0] == '"' else match[0][1:-1]
match = LEFTOVER_VALUE_RE.match(data, index)
assert match
value = match[0].strip()
for func in [
int,
float,
dt.time.fromisoformat,
dt.date.fromisoformat,
dt.datetime.fromisoformat,
{'true': True, 'false': False}.get,
]:
try:
value = func(value)
break
except Exception:
pass
return match.end(), value
def parse_kv_pair(data: str, index: int, target: dict):
match = KEY_RE.match(data, index)
if not match:
return None
*keys, key = parse_key(match[0])
match = EQUALS_RE.match(data, match.end())
assert match
index = match.end()
index, value = parse_value(data, index)
get_target(target, keys)[key] = value
return index
def parse_toml(data: str):
root = {}
target = root
index = 0
while True:
match = EXPRESSION_RE.search(data, index)
if not match:
break
if match.group('subtable'):
index = match.end()
path, is_list = match.group('path', 'is_list')
target = get_target(root, list(parse_key(path)), bool(is_list))
continue
index = parse_kv_pair(data, match.start(), target)
assert index is not None
return root
def main():
import argparse
from pathlib import Path
parser = argparse.ArgumentParser()
parser.add_argument('infile', type=Path, help='The TOML file to read as input')
args = parser.parse_args()
with args.infile.open('r', encoding='utf-8') as file:
data = file.read()
def default(obj):
if isinstance(obj, (dt.date, dt.time, dt.datetime)):
return obj.isoformat()
print(json.dumps(parse_toml(data), default=default))
if __name__ == '__main__':
main()

@ -1,31 +1,82 @@
from __future__ import unicode_literals
from datetime import datetime
# import urllib.request
#!/usr/bin/env python3
# response = urllib.request.urlopen('https://blackjack4494.github.io/youtube-dlc/update/LATEST_VERSION')
# old_version = response.read().decode('utf-8')
# Allow direct execution
import os
import sys
exec(compile(open('youtube_dlc/version.py').read(), 'youtube_dlc/version.py', 'exec'))
old_version = locals()['__version__']
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
old_version_list = old_version.replace('-', '.').split(".", 4)
old_ver = '.'.join(old_version_list[:3])
old_rev = old_version_list[3] if len(old_version_list) > 3 else ''
import argparse
import contextlib
import datetime as dt
import sys
ver = datetime.now().strftime("%Y.%m.%d")
rev = str(int(old_rev or 0) + 1) if old_ver == ver else ''
from devscripts.utils import read_version, run_process, write_file
VERSION = '.'.join((ver, rev)) if rev else ver
# VERSION_LIST = [(int(v) for v in ver.split(".") + [rev or 0])]
print('::set-output name=ytdlc_version::' + VERSION)
def get_new_version(version, revision):
if not version:
version = dt.datetime.now(dt.timezone.utc).strftime('%Y.%m.%d')
file_version_py = open('youtube_dlc/version.py', 'rt')
data = file_version_py.read()
data = data.replace(old_version, VERSION)
file_version_py.close()
if revision:
assert revision.isdecimal(), 'Revision must be a number'
else:
old_version = read_version().split('.')
if version.split('.') == old_version[:3]:
revision = str(int((old_version + [0])[3]) + 1)
file_version_py = open('youtube_dlc/version.py', 'wt')
file_version_py.write(data)
file_version_py.close()
return f'{version}.{revision}' if revision else version
def get_git_head():
with contextlib.suppress(Exception):
return run_process('git', 'rev-parse', 'HEAD').stdout.strip()
VERSION_TEMPLATE = '''\
# Autogenerated by devscripts/update-version.py
__version__ = {version!r}
RELEASE_GIT_HEAD = {git_head!r}
VARIANT = None
UPDATE_HINT = None
CHANNEL = {channel!r}
ORIGIN = {origin!r}
_pkg_version = {package_version!r}
'''
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Update the version.py file')
parser.add_argument(
'-c', '--channel', default='stable',
help='Select update channel (default: %(default)s)')
parser.add_argument(
'-r', '--origin', default='local',
help='Select origin/repository (default: %(default)s)')
parser.add_argument(
'-s', '--suffix', default='',
help='Add an alphanumeric suffix to the package version, e.g. "dev"')
parser.add_argument(
'-o', '--output', default='yt_dlp/version.py',
help='The output file to write to (default: %(default)s)')
parser.add_argument(
'version', nargs='?', default=None,
help='A version or revision to use instead of generating one')
args = parser.parse_args()
git_head = get_git_head()
version = (
args.version if args.version and '.' in args.version
else get_new_version(None, args.version))
write_file(args.output, VERSION_TEMPLATE.format(
version=version, git_head=git_head, channel=args.channel, origin=args.origin,
package_version=f'{version}{args.suffix}'))
print(f'version={version} ({args.channel}), head={git_head}')

@ -0,0 +1,26 @@
#!/usr/bin/env python3
# Allow direct execution
import os
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from pathlib import Path
from devscripts.make_changelog import create_changelog, create_parser
from devscripts.utils import read_file, read_version, write_file
# Always run after devscripts/update-version.py, and run before `make doc|pypi-files|tar|all`
if __name__ == '__main__':
parser = create_parser()
parser.description = 'Update an existing changelog file with an entry for a new release'
parser.add_argument(
'--changelog-path', type=Path, default=Path(__file__).parent.parent / 'Changelog.md',
help='path to the Changelog file')
args = parser.parse_args()
new_entry = create_changelog(args)
header, sep, changelog = read_file(args.changelog_path).partition('\n### ')
write_file(args.changelog_path, f'{header}{sep}{read_version()}\n{new_entry}\n{sep}{changelog}')

@ -0,0 +1,47 @@
import argparse
import functools
import subprocess
def read_file(fname):
with open(fname, encoding='utf-8') as f:
return f.read()
def write_file(fname, content, mode='w'):
with open(fname, mode, encoding='utf-8') as f:
return f.write(content)
def read_version(fname='yt_dlp/version.py', varname='__version__'):
"""Get the version without importing the package"""
items = {}
exec(compile(read_file(fname), fname, 'exec'), items)
return items[varname]
def get_filename_args(has_infile=False, default_outfile=None):
parser = argparse.ArgumentParser()
if has_infile:
parser.add_argument('infile', help='Input file')
kwargs = {'nargs': '?', 'default': default_outfile} if default_outfile else {}
parser.add_argument('outfile', **kwargs, help='Output file')
opts = parser.parse_args()
if has_infile:
return opts.infile, opts.outfile
return opts.outfile
def compose_functions(*functions):
return lambda x: functools.reduce(lambda y, f: f(y), functions, x)
def run_process(*args, **kwargs):
kwargs.setdefault('text', True)
kwargs.setdefault('check', True)
kwargs.setdefault('capture_output', True)
if kwargs['text']:
kwargs.setdefault('encoding', 'utf-8')
kwargs.setdefault('errors', 'replace')
return subprocess.run(args, **kwargs)

@ -1,56 +0,0 @@
#!/bin/bash
# Run with as parameter a setup.py that works in the current directory
# e.g. no os.chdir()
# It will run twice, the first time will crash
set -e
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
if [ ! -d wine-py2exe ]; then
sudo apt-get install wine1.3 axel bsdiff
mkdir wine-py2exe
cd wine-py2exe
export WINEPREFIX=`pwd`
axel -a "http://www.python.org/ftp/python/2.7/python-2.7.msi"
axel -a "http://downloads.sourceforge.net/project/py2exe/py2exe/0.6.9/py2exe-0.6.9.win32-py2.7.exe"
#axel -a "http://winetricks.org/winetricks"
# http://appdb.winehq.org/objectManager.php?sClass=version&iId=21957
echo "Follow python setup on screen"
wine msiexec /i python-2.7.msi
echo "Follow py2exe setup on screen"
wine py2exe-0.6.9.win32-py2.7.exe
#echo "Follow Microsoft Visual C++ 2008 Redistributable Package setup on screen"
#bash winetricks vcrun2008
rm py2exe-0.6.9.win32-py2.7.exe
rm python-2.7.msi
#rm winetricks
# http://bugs.winehq.org/show_bug.cgi?id=3591
mv drive_c/Python27/Lib/site-packages/py2exe/run.exe drive_c/Python27/Lib/site-packages/py2exe/run.exe.backup
bspatch drive_c/Python27/Lib/site-packages/py2exe/run.exe.backup drive_c/Python27/Lib/site-packages/py2exe/run.exe "$SCRIPT_DIR/SizeOfImage.patch"
mv drive_c/Python27/Lib/site-packages/py2exe/run_w.exe drive_c/Python27/Lib/site-packages/py2exe/run_w.exe.backup
bspatch drive_c/Python27/Lib/site-packages/py2exe/run_w.exe.backup drive_c/Python27/Lib/site-packages/py2exe/run_w.exe "$SCRIPT_DIR/SizeOfImage_w.patch"
cd -
else
export WINEPREFIX="$( cd wine-py2exe && pwd )"
fi
wine "C:\\Python27\\python.exe" "$1" py2exe > "py2exe.log" 2>&1 || true
echo '# Copying python27.dll' >> "py2exe.log"
cp "$WINEPREFIX/drive_c/windows/system32/python27.dll" build/bdist.win32/winexe/bundle-2.7/
wine "C:\\Python27\\python.exe" "$1" py2exe >> "py2exe.log" 2>&1

@ -1,6 +1,6 @@
#compdef youtube-dlc
#compdef yt-dlp
__youtube_dlc() {
__yt_dlp() {
local curcontext="$curcontext" fileopts diropts cur prev
typeset -A opt_args
fileopts="{{fileopts}}"
@ -27,4 +27,4 @@ __youtube_dlc() {
esac
}
__youtube_dlc
__yt_dlp

@ -1,14 +1,15 @@
#!/usr/bin/env python
from __future__ import unicode_literals
#!/usr/bin/env python3
# Allow direct execution
import os
from os.path import dirname as dirn
import sys
sys.path.insert(0, dirn(dirn((os.path.abspath(__file__)))))
import youtube_dlc
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
ZSH_COMPLETION_FILE = "youtube-dlc.zsh"
import yt_dlp
ZSH_COMPLETION_FILE = "completions/zsh/_yt-dlp"
ZSH_COMPLETION_TEMPLATE = "devscripts/zsh-completion.in"
@ -45,5 +46,5 @@ def build_completion(opt_parser):
f.write(template)
parser = youtube_dlc.parseOpts()[0]
parser = yt_dlp.parseOpts(ignore_config_files=True)[0]
build_completion(parser)

1
docs/.gitignore vendored

@ -1 +0,0 @@
_build/

@ -1,177 +0,0 @@
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = _build
# User-friendly check for sphinx-build
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
endif
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " xml to make Docutils-native XML files"
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
clean:
rm -rf $(BUILDDIR)/*
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/youtube-dlc.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/youtube-dlc.qhc"
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/youtube-dlc"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/youtube-dlc"
@echo "# devhelp"
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
latexpdfja:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through platex and dvipdfmx..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
xml:
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
@echo
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
pseudoxml:
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
@echo
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save