В Youtube освен достъпните за всички клипове има и такива, предназначени за определена аудитория. При опит за създаване на локално копие на филм-приказката „Садко“ получихме странен резултат:
$ youtube-dl -f 135+140 --all-subs https://youtu.be/zedi4fgeMeI
[youtube] zedi4fgeMeI: Downloading webpage
[youtube] zedi4fgeMeI: Downloading embed webpage
[youtube] zedi4fgeMeI: Refetching age-gated info webpage
ERROR: Content Warning
This video may be inappropriate for some users.
Sign in to confirm your age
|
Използването на ключа --username не подобри ситуацията:
$ youtube-dl -f 135+140 --all-subs https://youtu.be/zedi4fgeMeI --username="myemail@gmail.com"
Type account password and press [Return]:
[youtube] Downloading login page
[youtube] Looking up account info
[youtube] Logging in
WARNING: Unable to log in: HTTP Error 400: Bad Request
[youtube] zedi4fgeMeI: Downloading webpage
[youtube] zedi4fgeMeI: Downloading embed webpage
[youtube] zedi4fgeMeI: Refetching age-gated info webpage
ERROR: Content Warning
This video may be inappropriate for some users.
Sign in to confirm your age
|
Сигурни сме, че паролата е въведена правилно. В профила ни годината на раждане е въведена правилно и преклонната ни възраст би трябвало да означава, че всички ограничения са излишни. Най-вероятно проблемите са заради двуфакторната автентикация (2FA), с която в този случай youtube-dl не се справя. Когато клипът се гледа през браузър всичко е наред, защото автентикацията е записана в бисквитките. За наш късмет Дейв Париш е намерил решение, което да ни помогне в този случай:
Дейв не е намерил подходяща добавка за Firefox, но за Chrome (Chromium) съществува EditThisCookie, с която ще експортираме бисквитките:
2. Youtube-dl разпознава само формата на Netscape, затова в опциите на добавката трябва да изберем този формат (най-долу):
3. Копираме (експорт) на бисквитките от youtube.com, google.com и myaccount.google.com, като последователно ги записваме в текстови файл. Трябва да получим нещо подобно на това:
# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by EditThisCookie
.youtube.com FALSE / FALSE 1592746624.181169 APISID xxxxxxxxx
.youtube.com FALSE / FALSE 1529675666.4735 GPS 1
.youtube.com FALSE / FALSE 1592746624.181027 HSID xxxxx
.youtube.com FALSE / FALSE 1592746624.956381 LOGIN_INFO xxxxx
.youtube.com FALSE / FALSE 1550712605.073926 PREF xxxxx
.youtube.com FALSE / TRUE 1592746624.181263 SAPISID xxxxx
.youtube.com FALSE / FALSE 1592746624.180932 SID xxxxx
.youtube.com FALSE / TRUE 1592746624.181105 SSID xxxxxx
.youtube.com FALSE / FALSE 1531743283.040211 VISITOR_INFO1_LIVE xxxxx
.youtube.com FALSE / FALSE 0 YSC xxxxx
# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by EditThisCookie
.google.com FALSE / FALSE 1592746624.009486 APISID xxxxx
.google.com FALSE / FALSE 1592746624.009335 HSID xxxxx
.google.com FALSE / FALSE 1545488676.021505 NID xxxxxx
.google.com FALSE / TRUE 1592746624.009559 SAPISID xxxxx
.google.com FALSE / FALSE 1592746624.009103 SID xxxxxx
.google.com FALSE / FALSE 1537454702.826293 SIDCC xxxxxx
.google.com FALSE / TRUE 1592746624.009422 SSID xxxxxx
accounts.google.com TRUE / TRUE 1592746624.009627 xxxxx
myaccount.google.com TRUE / TRUE 1592746624.106059 GAPS xxxxx
myaccount.google.com TRUE / TRUE 1592746624.009204 LSID xxxxx
myaccount.google.com TRUE / TRUE 1801458753.849165 SMSV xxxxxx
# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by EditThisCookie
.google.com FALSE / FALSE 1592746624.009486 APISID xxxxx
.google.com FALSE / FALSE 1592746624.009335 HSID xxxxx
.google.com FALSE / FALSE 1545488676.021505 NID xxxxx
.google.com FALSE / TRUE 1592746624.009559 SAPISID xxxxx
.google.com FALSE / FALSE 1592746624.009103 SID xxxxx
.google.com FALSE / FALSE 1537454702.826293 SIDCC xxxxxx
.google.com FALSE / TRUE 1592746624.009422 SSID xxxxxx
|
4. Youtube-dl все още не може да „разчете“ подготвения файл, тъй като всички интервали трябва да бъдат заменени с табулатори, затова трябва да го обработим с curl:
$ curl -b cookiefile.txt --cookie-jar newcookiefile.txt 'https://youtube.com'
|
5. Сега вече можем да използваме новосъздадения файл с бисквитките, при което всичко вече е нормално:
$ youtube-dl -f 135+140 --all-subs https://youtu.be/zedi4fgeMeI --cookies=newcookiefile.txt
[youtube] zedi4fgeMeI: Downloading webpage
[youtube] zedi4fgeMeI: Downloading video info webpage
[info] Writing video subtitles to: Садко _ Sadko-zedi4fgeMeI.en.vtt
[download] Destination: Садко _ Sadko-zedi4fgeMeI.f135.mp4
[download] 100% of 367.32MiB in 01:19
[download] Destination: Садко _ Sadko-zedi4fgeMeI.f140.m4a
[download] 100% of 76.96MiB in 00:16
[ffmpeg] Merging formats into "Садко _ Sadko-zedi4fgeMeI.mp4"
Deleting original file Садко _ Sadko-zedi4fgeMeI.f135.mp4 (pass -k to keep)
Deleting original file Садко _ Sadko-zedi4fgeMeI.f140.m4a (pass -k to keep)
|
Успех!
Източници:
Коментари
Публикуване на коментар