ytdl-org / youtube-dl

Command-line program to download videos from YouTube.com and other video sites
http://ytdl-org.github.io/youtube-dl/
The Unlicense
131.46k stars 9.96k forks source link

This Old House: Index Error: list index out of range #17242

Open pjtait opened 6 years ago

pjtait commented 6 years ago

Please follow the guide below


Make sure you are using the latest version: run youtube-dl --version and ensure your version is 2018.08.04. If it's not, read this FAQ entry and update. Issues with outdated version will be rejected.

Before submitting an issue make sure you have:

What is the purpose of your issue?


The following sections concretize particular purposed issues, you can erase any section (the contents between triple ---) not applicable to your issue


If the purpose of this issue is a bug report, site support request or you are not completely sure provide the full verbose output as follows:

Add the -v flag to your command line you run youtube-dl with (youtube-dl -v <your command line>), copy the whole output and insert it here. It should look similar to one below (replace it with your log inserted between triple ```):

> youtube-dl -v -u XXXXXX -p XXXXXX https://www.thisoldhouse.com/watch/dorchester-house-house-history-and-kitchen-plans
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'-v', u'-u', u'PRIVATE', u'-p', u'PRIVATE', u'https://www.thisoldhouse.com/watch/dorchester-house-house-history-and-kitchen-plans']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2018.08.04
[debug] Python version 2.7.15 (CPython) - Linux-4.17.12-1-default-x86_64-with-glibc2.2.5
[debug] exe versions: ffmpeg 4.0.1, ffprobe 4.0.1
[debug] Proxy map: {}
[ThisOldHouse] dorchester-house-house-history-and-kitchen-plans: Downloading webpage
Traceback (most recent call last):
  File "/usr/lib64/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib64/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/usr/bin/youtube-dl/__main__.py", line 19, in <module>
  File "/usr/bin/youtube-dl/youtube_dl/__init__.py", line 472, in main

  File "/usr/bin/youtube-dl/youtube_dl/__init__.py", line 462, in _real_main

  File "/usr/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 2001, in download
  File "/usr/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 792, in extract_info
  File "/usr/bin/youtube-dl/youtube_dl/extractor/common.py", line 502, in extract
  File "/usr/bin/youtube-dl/youtube_dl/extractor/thisoldhouse.py", line 43, in _real_extract
IndexError: list index out of range

If the purpose of this issue is a site support request please provide all kinds of example URLs support for which should be included (replace following example URLs by yours):

Note that youtube-dl does not support sites dedicated to copyright infringement. In order for site support request to be accepted all provided example URLs should not violate any copyrights.


Description of your issue, suggested solution and other information

Explanation of your issue in arbitrary form goes here. Please make sure the description is worded well enough to be understood. Provide 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.

This is just one example from the This Old House Insider TV archives. You can use the 30-day free trial to verify, or, if a developer contacts me privately, I can provide temporary use of my credentials.

Or give me some hints on how to fix this myself.

pjtait commented 6 years ago

Using PDB, I found in thisoldhouse.py ThisOldHouseIE._real_extract() that drupal_settings doesn't contain jwplatform key, and the comScore list has no entries:

(Pdb) pp drupal_settings {u'ajaxPageState': {u'css': {u'https://fonts.googleapis.com/css?family=Lato:300,300i,400,400i,700,700i,900|Roboto+Slab:300,400,700': 1, u'modules/field/theme/field.css': 1, u'modules/system/system.base.css': 1, u'modules/system/system.theme.css': 1, u'sites/all/modules/contrib/ajax_links_api/ajax_links_api.css': 1, u'sites/all/modules/contrib/amazon/amazon.css': 1, u'sites/all/modules/contrib/ckeditor/css/ckeditor.css': 1, u'sites/all/modules/contrib/date/date_popup/themes/datepicker.1.7.css': 1, u'sites/all/modules/contrib/pet/pet.css': 1, u'sites/all/modules/contrib/picture/picture_wysiwyg.css': 1, u'sites/all/modules/contrib/quote/quote.css': 1, u'sites/all/modules/contrib/views/css/views.css': 1, u'sites/all/modules/custom/st_ads_config/css/st_ads_config.css': 1, u'sites/all/themes/sloth/css/sloth.css': 1}, u'js': {u'//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js': 1, u'//native.sharethrough.com/assets/sfp.js': 1, u'//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-578ce1f7396d9e94': 1, u'misc/drupal.js': 1, u'misc/jquery.once.js': 1, u'sites/all/libraries/DropKick/dropkick.js': 1, u'sites/all/modules/contrib/ajax_links_api/ajax_links_api.js': 1, u'sites/all/modules/contrib/dropkick/dropkick.js': 1, u'sites/all/modules/contrib/google_analytics/googleanalytics.js': 1, u'sites/all/modules/contrib/picture/lazysizes/lazysizes.min.js': 1, u'sites/all/modules/contrib/picture/lazysizes/plugins/aspectratio/ls.aspectratio.min.js': 1, u'sites/all/modules/contrib/picture/picture.min.js': 1, u'sites/all/modules/contrib/picture/picturefill/picturefill.min.js': 1, u'sites/all/modules/contrib/quote/quote.js': 1, u'sites/all/modules/custom/st_ad_report/js/st_ad_report.js': 1, u'sites/all/modules/custom/st_ads_config/js/st_ads_config.js': 1, u'sites/all/modules/custom/st_dfp_ads/js/st_ga.js': 1, u'sites/all/themes/sloth/js/add_floating.js': 1, u'sites/all/themes/sloth/js/addthis.js': 1, u'sites/all/themes/sloth/js/dfp_lazy_load.js': 1, u'sites/all/themes/sloth/js/global.js': 1, u'sites/all/themes/sloth/js/library/jRespond.min.js': 1, u'sites/all/themes/sloth/js/library/jquery.appear.js': 1, u'sites/all/themes/sloth/js/library/jquery.matchHeight-min.js': 1, u'sites/all/themes/sloth/js/library/jquery.touchSwipe.min.js': 1, u'sites/all/themes/sloth/js/library/sticky-kit.min.js': 1, u'sites/all/themes/sloth/js/navigation.js': 1, u'sites/all/themes/sloth/js/smooth_scroll.js': 1, u'sites/all/themes/sloth/js/st_ad_refresh.js': 1, u'sites/all/themes/sloth/js/st_ads_misc.js': 1, u'sites/all/themes/sloth/js/st_amazon_units.js': 1, u'sites/all/themes/sloth/js/st_dfp_ads.js': 1, u'sites/all/themes/sloth/js/st_prebid_units.js': 1, u'sites/all/themes/sloth/js/st_prebid_video_units.js': 1, u'sites/all/themes/sloth/js/toh_exelator_data.js': 1, u'sites/all/themes/sloth/scripts/sticky-footer.js': 1, u'sites/all/themes/sloth/vendor/foundation/js/foundation/foundation.accordion.js': 1, u'sites/all/themes/sloth/vendor/foundation/js/foundation/foundation.alert.js': 1, u'sites/all/themes/sloth/vendor/foundation/js/foundation/foundation.equalizer.js': 1, u'sites/all/themes/sloth/vendor/foundation/js/foundation/foundation.js': 1, u'sites/all/themes/sloth/vendor/foundation/js/foundation/foundation.reveal.js': 1, u'sites/all/themes/sloth/vendor/foundation/js/foundation/foundation.tab.js': 1, u'sites/all/themes/sloth/vendor/modernizr/modernizr.js': 1}, u'theme': u'sloth', u'theme_token': u'Nw0g4AVmTatcv8LP3su6gjz_baKR7vcyNtaNYi0wkDE'}, u'ajax_links_api': {u'html5': 0, u'negative_triggers': u'#toolbar a', u'scripts_included': 0, u'selector': u'#content', u'trigger': u'.ajax-link', u'vpager': 0}, u'basePath': u'/', u'comScore': [], u'dropkick': {u'mobile_support': True, u'selector': u'.theme-sloth select, .views-exposed-widgets select'}, u'googleanalytics': {u'trackDownload': 1, u'trackDownloadExtensions': u'7z|aac|arc|arj|asf|asx|avi|bin|csv|doc(x|m)?|dot(x|m)?|exe|flv|gif|gz|gzip|hqx|jar|jpe?g|js|mp(2|3|4|e?g)|mov(ie)?|msi|msp|pdf|phps|png|ppt(x|m)?|pot(x|m)?|pps(x|m)?|ppam|sld(x|m)?|thmx|qtm?|ra(m|r)?|sea|sit|tar|tgz|torrent|txt|wav|wma|wmv|wpd|xls(x|m|b)?|xlt(x|m)|xlam|xml|z|zip', u'trackMailto': 1, u'trackOutbound': 1}, u'hide_submit': {u'hide_submit_abtext': u'', u'hide_submit_atext': u'', u'hide_submit_css': u'hide-submit-disable', u'hide_submit_hide_css': u'hide-submit-processing', u'hide_submit_hide_fx': 1, u'hide_submit_hide_text': u'Processing...', u'hide_submit_indicator_style': u'expand-left', u'hide_submit_method': u'disable', u'hide_submit_reset_time': 5000, u'hide_submit_spinner_color': u'#000', u'hide_submit_spinner_lines': 12, u'hide_submit_status': True}, u'jwp_video_ad': {u'base_url': u'https://www.thisoldhouse.com', u'exclude': u'31916,31911,31906,31901,31896,31891', u'size': u'1000x1', u'slot': u'/142694468/toh'}, u'members_only_content': False, u'no_related_video': False, u'no_video_ads': False, u'pathPrefix': u'', u'quote_nest': u'2', u'refresh_ad_settings': {u'active_view_time': 1, u'data_collect_for_report': 0, u'disable_interstitial_ad': 0, u'disable_refresh_native_ad': 0, u'refresh_time': 30, u'report_keyword': u'header_ad_1', u'viewport_buffer': 25}, u'short_domain_name': u'thisoldhouse.com', u'st_dfp_ads': {u'targeting_list': {u'CONTENTTYPE': u'page', u'DOMAIN': u'www.thisoldhouse.com', u'FURL': u'/learn', u'REF_0': u'thisoldhouse.com', u'SECTION1': u'learn', u'SECTION2': u'nid36411', u'TLD': u'thisoldhouse.com', u'USERTYPE': u'anonymous'}}, u'st_disqus': {u'api_key': u'xMIVVt1tv5a3Va8Q7RPvxQfjGZAOu309zguRCvI8oDQHl3sr84lHMrCV3eYQWvzw', u'identifier': u'node/page/36411', u'remote_auth_s3': u'W10= 8a6eebba1df4bd5b6b5455fccb6cae9df6da3a04 1534304877', u'shortname': u'toh', u'sso': {u'button': None, u'height': 600, u'logout': u'https://www.thisoldhouse.com/user/logout?destination=node/36411', u'name': u'This Old House', u'url': u'https://www.thisoldhouse.com/user/login?destination=user/login/success', u'width': 800}, u'url': u'https://www.thisoldhouse.com/learn'}, u'toh_counters_status': {u'show': 0}, u'urlIsAjaxTrusted': {u'/learn': True, u'/site-search': True}}

mateuszmarek commented 6 years ago

Hi @pjtait

I've had the same issue. This means video_id cannot be found. I've checked the regexps and they are fine, but you have to be logged in for them to work! If you're using cookie file, make sure it's exported after logging in (obviously) but also check for entries starting with #Http_only. I have used firefox plugin cookies.txt which gave me these (malformed?) lines. Removing the prefix fixed the issue!

pjtait commented 6 years ago

I did supply username and password in the command, so I should have been logged in OK, I think. However, I wasn't aware of the need for a cookie file - is there any documentation describing the procedure for using this?

mateuszmarek commented 6 years ago

@pjtait I believe they are alternatives. I've tried user and password without success, that's why I switched to cookies. The error was the same in both cases which i guess is expected as without logging in regexps cannot find video_id. It seems that the problem is mainly with user/pass login but also error message could be improved a bit suggesting a login problem or breaking changes in TOH website