youtube-dl: Tele5: Download fails, "Unable to extract video ID"

Checklist

  • I’m reporting a broken site support
  • I’ve verified that I’m running youtube-dl version 2020.03.24
  • 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

[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--merge-output-format', 'mkv', 'https://www.tele5.de/filme/mega-alligators/', '--verbose']
[debug] Encodings: locale cp1252, fs utf-8, out utf-8, pref cp1252
[debug] youtube-dl version 2019.11.28
[debug] Python version 3.6.3 (CPython) - Windows-7-6.1.7601-SP1
[debug] exe versions: ffmpeg N-82664-g801b5c1, ffprobe N-82664-g801b5c1
[debug] Proxy map: {}
[Tele5] mega-alligators: Downloading webpage
ERROR: Unable to extract video id; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update
  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
  File "d:\bin\python36\lib\site-packages\youtube_dl\YoutubeDL.py", line 796, in extract_info
    ie_result = ie.extract(url)
  File "d:\bin\python36\lib\site-packages\youtube_dl\extractor\common.py", line 530, in extract
    ie_result = self._real_extract(url)
  File "d:\bin\python36\lib\site-packages\youtube_dl\extractor\tele5.py", line 53, in _real_extract
    r'\bdata-id\s*=\s*["\'](\d{6,})'), webpage, 'video id')
  File "d:\bin\python36\lib\site-packages\youtube_dl\extractor\common.py", line 1014, in _html_search_regex
    res = self._search_regex(pattern, string, name, default, fatal, flags, group)
  File "d:\bin\python36\lib\site-packages\youtube_dl\extractor\common.py", line 1005, in _search_regex
    raise RegexNotFoundError('Unable to extract %s' % _name)
youtube_dl.utils.RegexNotFoundError: Unable to extract video id; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version;
 see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

Description

Tele5 changed something on their backend tonight. Yesterday I was able to download just fine, but today it just gives that error. This happens with all movies on https://www.tele5.de/filme/online/ as of today, even those that I was able to successfully download yesterday.

Note this is not a duplicate of #22810 as the error message is different so I thought it would be better to open a new issue instead of piggybacking on the old one.

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 19 (11 by maintainers)

Commits related to this issue

Most upvoted comments

@martin54 this fix fails on playlist items but with a small change it works great and preserves the video ids.

    def _real_extract(self, url):
        qs = compat_urlparse.parse_qs(compat_urlparse.urlparse(url).query)
        video_id = (qs.get('vid') or qs.get('ve_id') or [None])[0]

        if not video_id:
            display_id = self._match_id(url)
            webpage = self._download_webpage(url, display_id)
            video_id = self._html_search_regex(
                (r'id\s*=\s*["\']video-player["\'][^>]+data-id\s*=\s*["\']([^"\']+)',
                 r'\s+id\s*=\s*["\']player_([^"\']{6,})',
                 r'\bdata-id\s*=\s*["\']([^"\']{6,})'), webpage, 'JWplayer video id')  # NEW: get new JWplayer video id

        # NEW: translate the new JWplayer video id into the old nexx video id:
        info = self._download_json('https://cdn.jwplayer.com/v2/media/%s' % video_id, self._match_id(url))  # when video id is in the url display id isn't initialised
        video_id = info['playlist'][0]['nexx_id']  # TODO: no idea, how to use: info.get()
        if not video_id:
            error = '%s: Cannot get nexx video id' % display_id
            raise ExtractorError(error, expected=True)  # Needs: from ..utils import ExtractorError

        return self.url_result(
            'https://api.nexx.cloud/v3/759/videos/byid/%s' % video_id,
            ie=NexxIE.ie_key(), video_id=video_id)

My bad I completely missed that, I’ve got a fix that works based on JWPlatformIE rather than the NexxIE as that seemed a more straight forward approach.