blackjack4494 / youtube-dlc

Command-line program to download various media from YouTube.com and other sites
https://blackjack4494.github.io/youtube-dlc/
The Unlicense
1.21k stars 13 forks source link

all-subs options throw error #163

Open quekky opened 3 years ago

quekky commented 3 years ago

Checklist

Verbose log

youtube-dlc -v --write-sub --convert-subs srt --all-subs --embed-subs --add-metadata F8Nack_25vE
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['-v', '--write-sub', '--convert-subs', 'srt', '--all-subs', '--embed-subs', '--add-metadata', 'F8Nack_25vE']
[debug] Loading archive file None
[debug] Encodings: locale cp1252, fs utf-8, out utf-8, pref cp1252
[debug] youtube-dlc version 2020.09.30
[debug] Python version 3.8.5 (CPython) - Windows-10-10.0.19041-SP0
[debug] exe versions: ffmpeg git-2020-08-28-ccc7120, ffprobe git-2020-08-28-ccc7120
[debug] Proxy map: {}
[youtube] F8Nack_25vE: Downloading webpage
[debug] Default format spec: bestvideo+bestaudio/best
[info] Writing video subtitles to: Michael Ball - Past & Present Tour - FULL SHOW _ The Shows Must Go On-F8Nack_25vE.en.vtt
[info] Writing video subtitles to: Michael Ball - Past & Present Tour - FULL SHOW _ The Shows Must Go On-F8Nack_25vE.live_chat.json
Traceback (most recent call last):
  File "youtube_dlc\__main__.py", line 19, in <module>
  File "youtube_dlc\__init__.py", line 487, in main
  File "youtube_dlc\__init__.py", line 477, in _real_main
  File "youtube_dlc\YoutubeDL.py", line 2095, in download
  File "youtube_dlc\YoutubeDL.py", line 841, in extract_info
  File "youtube_dlc\YoutubeDL.py", line 896, in process_ie_result
  File "youtube_dlc\YoutubeDL.py", line 1691, in process_video_result
  File "youtube_dlc\YoutubeDL.py", line 1893, in process_info
KeyError: 'url'
[8044] Failed to execute script __main__

Description

If I remove the "--all-subs" option, there's no error and file downloads fine

blackjack4494 commented 3 years ago

I tried your video but it didn't work. It says not available. Must have been a live stream and or is now private. However if I use any other video link I get no error at all when using --all-subs.

quekky commented 3 years ago

The link is time limited for a few days only

Try this link. The error only occur for videos with chapters and subs. I'm using Windows, not sure if it errors on linux

youtube-dlc -v --write-sub --convert-subs srt --all-subs --embed-subs --add-metadata  Ja28sjNxKgc
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['-v', '--write-sub', '--convert-subs', 'srt', '--all-subs', '--embed-subs', '--add-metadata', 'Ja28sjNxKgc']
[debug] Loading archive file None
[debug] Encodings: locale cp1252, fs utf-8, out utf-8, pref cp1252
[debug] youtube-dlc version 2020.09.30
[debug] Python version 3.8.5 (CPython) - Windows-10-10.0.19041-SP0
[debug] exe versions: ffmpeg git-2020-08-28-ccc7120, ffprobe git-2020-08-28-ccc7120
[debug] Proxy map: {}
[youtube] Ja28sjNxKgc: Downloading webpage
[youtube] {18} signature length 113, html5 player 4c375770
[youtube] Ja28sjNxKgc: Downloading player https://www.youtube.com/s/player/4c375770/player_ias.vflset/en_US/base.js
[youtube] {313} signature length 113, html5 player 4c375770
[youtube] {271} signature length 113, html5 player 4c375770
[youtube] {137} signature length 113, html5 player 4c375770
[youtube] {248} signature length 113, html5 player 4c375770
[youtube] {136} signature length 113, html5 player 4c375770
[youtube] {247} signature length 113, html5 player 4c375770
[youtube] {135} signature length 113, html5 player 4c375770
[youtube] {244} signature length 113, html5 player 4c375770
[youtube] {134} signature length 113, html5 player 4c375770
[youtube] {243} signature length 113, html5 player 4c375770
[youtube] {133} signature length 109, html5 player 4c375770
[youtube] Ja28sjNxKgc: Downloading player https://www.youtube.com/s/player/4c375770/player_ias.vflset/en_US/base.js
[youtube] {242} signature length 113, html5 player 4c375770
[youtube] {160} signature length 109, html5 player 4c375770
[youtube] {278} signature length 113, html5 player 4c375770
[youtube] {140} signature length 113, html5 player 4c375770
[youtube] {249} signature length 113, html5 player 4c375770
[youtube] {250} signature length 113, html5 player 4c375770
[youtube] {251} signature length 113, html5 player 4c375770
[debug] Default format spec: bestvideo+bestaudio/best
[info] Writing video subtitles to: [4K] 신곡 최초공개 신인여돌 위클리(WEEEKLY) _ BLACKPINK BTS SEVENTEEN NCT ATEEZ _ Cover Dance Medley _ COUNTDANCE-Ja28sjNxKgc.en.vtt
[info] Writing video subtitles to: [4K] 신곡 최초공개 신인여돌 위클리(WEEEKLY) _ BLACKPINK BTS SEVENTEEN NCT ATEEZ _ Cover Dance Medley _ COUNTDANCE-Ja28sjNxKgc.live_chat.json
Traceback (most recent call last):
  File "youtube_dlc\__main__.py", line 19, in <module>
  File "youtube_dlc\__init__.py", line 487, in main
  File "youtube_dlc\__init__.py", line 477, in _real_main
  File "youtube_dlc\YoutubeDL.py", line 2095, in download
  File "youtube_dlc\YoutubeDL.py", line 841, in extract_info
  File "youtube_dlc\YoutubeDL.py", line 896, in process_ie_result
  File "youtube_dlc\YoutubeDL.py", line 1691, in process_video_result
  File "youtube_dlc\YoutubeDL.py", line 1893, in process_info
KeyError: 'url'
[9984] Failed to execute script __main__
blackjack4494 commented 3 years ago

Okay I see. I may know what triggers this.

blackjack4494 commented 3 years ago

Huh. I am a bit lost tho it may be because I haven't spent a lot of time on this.

The live chat fix somehow introduced another error.

# subtitles
video_subtitles = self.extract_subtitles(
    video_id, video_webpage, has_live_chat_replay)

When I simply replace has_live_chat_replay with False there is no problem whatsoever.

[info] Writing video subtitles to: [4K] 신곡 최초공개 신인여돌 위클리(WEEEKLY) BLACKPINK BTS SEVENTEEN NCT ATEEZ Cover Dance Medley _ COUNTDANCE-Ja28sjNxKgc.en.vtt [debug] Invoking downloader on 'https://r5---sn-5hne6nsy.googlevideo.com/videoplayback?expire=1602570146&ei=QvOEX9jGCcr4gAeHpq3QBw&ip=n.o.p.e&id=o-AFpQMrijoXr1qf8PkeFHDSWqYjp-e8sOoMN8byXyPhGh&itag=18&source=youtube&requiressl=yes&mh=8M&mm=31%2C26&mn=sn-5hne6nsy%2Csn-4g5edney&ms=au%2Conr&mv=m&mvi=5&pl=24&initcwndbps=2625000&vprv=1&mime=video%2Fmp4&gir=yes&clen=33385567&ratebypass=yes&dur=370.567&lmt=1601902535104014&mt=1602548429&fvip=5&fexp=23915654&c=WEB&txp=5530434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cratebypass%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIga_VG5oEyPOT5sjgVbQuUMiBGUc55iHvfT_8gLgjB-IQCIQDiCpPfpmN4VPbO5WdWa4_s63nGe30TJyHebbQakKcFgA%3D%3D&sig=AOq0QJ8wRgIhAPbHXkLgm24bMcbOZErR8w0AsDGKLxn_uID2fuWBhBusAiEAm0G5qymEGKpS-HqGxppX5Y8MN-Fyfvi6dRPbS3-ZJjY=' [download] Destination: [4K] 신곡 최초공개 신인여돌 위클리(WEEEKLY) BLACKPINK BTS SEVENTEEN NCT ATEEZ Cover Dance Medley COUNTDANCE-Ja28sjNxKgc.mp4 [download] 100% of 31.84MiB in 00:01 [ffmpeg] Adding metadata to '[4K] 신곡 최초공개 신인여돌 위클리(WEEEKLY) BLACKPINK BTS SEVENTEEN NCT ATEEZ Cover Dance Medley COUNTDANCE-Ja28sjNxKgc.mp4' [debug] ffmpeg command line: ffmpeg -y -loglevel "repeat+info" -i "file:[4K] 신곡 최초공개 신인여돌 위클리(WEEEKLY) BLACKPINK BTS SEVENTEEN NCT ATEEZ Cover Dance Medley COUNTDANCE-Ja28sjNxKgc.mp4" -i "file:[4K] 신곡 최초공 개 신인여돌 위클리(WEEEKLY) BLACKPINK BTS SEVENTEEN NCT ATEEZ Cover Dance Medley COUNTDANCE-Ja28sjNxKgc.meta" -map 0 -c copy -metadata "title=[4K] 신곡 최초공개 신인여돌 위클리(WEEEKLY) | BLACKPINK BTS SEVENTEEN NCT ATEEZ | Cover Dance Medley | COUNTDANCE" -metadata "date=20201005" -metadata "description=[4K] 신곡 최초공개 신인여돌 위클리(WEEEKLY) | BLACKPINK BTS SEVENTEEN NCT ATEEZ | Cover Dance Medley | COUNTDANCE

If I change something else related to is_live everything works normal again but live streams cannot be downloaded then.
It's just tricky for some reason.
I somehow blame youtube for this 😄 They leave the live stream chat info on videos that aren't live anymore and do not have any chat anymore..