ytdl-org/youtube-dl · error · ExtractorError

Found song but don't know how to download it

Error message

Found song but don't know how to download it

What it means

Raised by MySpaceIE when the page identifies a song (the media branch matched) but none of the stream URL fields ('stream-url', 'hls-stream-url', 'http-stream-url'), 'vevo-id', or 'youtube-id' are present in the page's data. The extractor knows there is media but has no route to it. It is not marked expected, so it reads as an extraction bug.

Source

Thrown at youtube_dl/extractor/myspace.py:138

            def search_data(name):
                return self._search_regex(
                    r'''data-%s=([\'"])(?P<data>.*?)\1''' % name,
                    song_data, name, default='', group='data')
            formats = formats_from_stream_urls(
                search_data('stream-url'), search_data('hls-stream-url'),
                search_data('http-stream-url'))
            if not formats:
                vevo_id = search_data('vevo-id')
                youtube_id = search_data('youtube-id')
                if vevo_id:
                    self.to_screen('Vevo video detected: %s' % vevo_id)
                    return self.url_result('vevo:%s' % vevo_id, ie='Vevo')
                elif youtube_id:
                    self.to_screen('Youtube video detected: %s' % youtube_id)
                    return self.url_result(youtube_id, ie='Youtube')
                else:
                    raise ExtractorError(
                        'Found song but don\'t know how to download it')
            self._sort_formats(formats)
            return {
                'id': video_id,
                'title': self._og_search_title(webpage),
                'uploader': search_data('artist-name'),
                'uploader_id': search_data('artist-username'),
                'thumbnail': self._og_search_thumbnail(webpage),
                'duration': int_or_none(search_data('duration')),
                'formats': formats,
            }
        else:
            video = self._parse_json(self._search_regex(
                r'context = ({.*?});', webpage, 'context'),
                video_id)['video']
            formats = formats_from_stream_urls(
                video.get('streamUrl'), video.get('hlsStreamUrl'),
                video.get('mp4StreamUrl'), int_or_none(video.get('width')),

View on GitHub (pinned to 956b8c5855)

Solutions

  1. Update youtube-dl, preferably switch to yt-dlp, for current MySpace parsing.
  2. Check the track page in a browser while logged in — session-only playback cannot be downloaded anonymously.
  3. If the song mirrors on Vevo/YouTube, search and download from there directly.

Example fix

pip install -U yt-dlp
Defensive patterns

Strategy: try-catch

Try / catch

except ExtractorError as e:
    if "don't know how to download it" in str(e):
        try_alternative_source(track_name)  # e.g. search YouTube/Vevo mirrors
    else:
        raise

Prevention

When it happens

Trigger: A MySpace music page where search_data() returns nothing for every stream URL key and both vevo-id and youtube-id fallbacks are absent.

Common situations: MySpace page markup/API changes after the extractor's last update; tracks only playable via authenticated sessions; deleted or region-limited tracks whose page shell still renders.

Related errors


AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14). Data as JSON: /api/errors/c0b2d9d7c0f99b54. Report an issue: GitHub.