ytdl-org/youtube-dl · error · ExtractorError

%s: No songs found, try using proxy

Error message

%s: No songs found, try using proxy

What it means

Raised by MySpacePlaylistIE when the playlist page HTML contains zero "music:song" content entries. Because MySpace serves region-dependent pages, the message explicitly suggests a proxy. It is expected=True, so it fails that playlist cleanly.

Source

Thrown at youtube_dl/extractor/myspace.py:200

        'playlist_count': 14,
        'skip': 'this album is only available in some countries',
    }, {
        'url': 'https://myspace.com/killsorrow/music/album/the-demo-18596029',
        'info_dict': {
            'title': 'The Demo',
            'id': '18596029',
        },
        'playlist_count': 5,
    }]

    def _real_extract(self, url):
        mobj = re.match(self._VALID_URL, url)
        playlist_id = mobj.group('id')
        display_id = mobj.group('title') + playlist_id
        webpage = self._download_webpage(url, display_id)
        tracks_paths = re.findall(r'"music:song" content="(.*?)"', webpage)
        if not tracks_paths:
            raise ExtractorError(
                '%s: No songs found, try using proxy' % display_id,
                expected=True)
        entries = [
            self.url_result(t_path, ie=MySpaceIE.ie_key())
            for t_path in tracks_paths]
        return {
            '_type': 'playlist',
            'id': playlist_id,
            'display_id': display_id,
            'title': self._og_search_title(webpage),
            'entries': entries,
        }

View on GitHub (pinned to 956b8c5855)

Solutions

  1. Retry with a proxy: --proxy <us-proxy-url> as the message suggests.
  2. Verify the playlist URL still lists tracks in a browser (it may simply be deleted or made private).
  3. Update youtube-dl / use yt-dlp in case the page markup changed.

Example fix

# before
youtube-dl https://myspace.com/<artist>/mixtape/...

# after
youtube-dl --proxy http://us-proxy:8080 https://myspace.com/<artist>/mixtape/...
Defensive patterns

Strategy: retry

Validate before calling

import requests
html = requests.get(playlist_url, proxies=us_proxy).text
if '"music:song" content=' not in html:
    print('no tracks visible — playlist deleted or region-served')  # skip extractor

Try / catch

except ExtractorError as e:
    if e.expected and 'No songs found' in str(e):
        retry(url, proxy=get_us_proxy())  # message itself suggests proxy
    else:
        raise

Prevention

When it happens

Trigger: Downloading a MySpace playlist whose webpage has no matches for the regex '"music:song" content="(.*?)"'.

Common situations: Requests routed through IPs (often non-US or datacenter) for which MySpace returns an empty/alternate page; deleted playlists; extractor markup drift on older versions.

Related errors


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