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
132.41k stars 10.04k forks source link

Some youtube/tv links not working #11485

Open laggingreflex opened 7 years ago

laggingreflex commented 7 years ago

What is the purpose of your issue?

It doesn't work on some youtube.com/tv links

Hrxn commented 7 years ago

But using the URL scheme from the last example always works?

laggingreflex commented 7 years ago

@Hrxn Yup. At least in the URLs I've tested so far (~10)

Hrxn commented 7 years ago

Good. So at least we have a viable workaround, processing links is the easy part.

montanaflynn commented 7 years ago

Any update on this?

Here's a stacktrace:

youtube-dl -g --verbose "https://www.youtube.com/tv#/watch/video/control?v=jhyANGHDDH8"
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'-g', u'--verbose', u'https://www.youtube.com/tv#/watch/video/control?v=jhyANGHDDH8']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2017.06.18
[debug] Python version 2.7.13 - Darwin-16.6.0-x86_64-i386-64bit
[debug] exe versions: ffmpeg 3.2, ffprobe 3.2, rtmpdump 2.4
[debug] Proxy map: {}
WARNING: Unable to download webpage: HTTP Error 404: Not Found
ERROR: Unable to download webpage: HTTP Error 404: Not Found (caused by HTTPError()); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 502, in _request_webpage
    return self._downloader.urlopen(url_or_request)
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 2129, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 435, in open
    response = meth(req, response)
  File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 548, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 473, in error
    return self._call_chain(*args)
  File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 407, in _call_chain
    result = func(*args)
  File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 556, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
Zebrazilla commented 6 years ago

This is still the case. Any possibility for a fix, even just a quick workaround?

Zebrazilla commented 6 years ago

The hacky, ugly, temporary solution that I've employed for now is to add the following to the youtube extractor URL regex: |tv\#/watch/video/control|tv\#/watch/video/idle

added to the following line, just behind 'watch|movie': (?:(?:watch|movie)(?:_popup)?(?:\.php)?/?)? # preceding watch(_popup|.php) or nothing (like /?v=xxxx)

Both control and idle seems to happen for me depending on focus of the window, so added both.