ytdl-org/youtube-dl · error · ExtractorError

This video is not available in your country.

Error message

This video is not available in your country.

What it means

Raised by TriluliluExtractor when the media JSON's 'errors' map contains a truthy 'geoblock' key: the media is restricted to Romanian IPs. Expected=True; distinct from the friends-only case and the adult (xxx_unlogged) case handled just below.

Source

Thrown at youtube_dl/extractor/trilulilu.py:57

            'upload_date': '20151204',
            'uploader': 'VEVOmixt',
            'timestamp': 1449187937,
            'view_count': int,
            'like_count': int,
            'comment_count': int,
        },
    }]

    def _real_extract(self, url):
        display_id = self._match_id(url)
        media_info = self._download_json('http://m.trilulilu.ro/%s?format=json' % display_id, display_id)

        age_limit = 0
        errors = media_info.get('errors', {})
        if errors.get('friends'):
            raise ExtractorError('This video is private.', expected=True)
        elif errors.get('geoblock'):
            raise ExtractorError('This video is not available in your country.', expected=True)
        elif errors.get('xxx_unlogged'):
            age_limit = 18

        media_class = media_info.get('class')
        if media_class not in ('video', 'audio'):
            raise ExtractorError('not a video or an audio')

        user = media_info.get('user', {})

        thumbnail = media_info.get('cover_url')
        if thumbnail:
            thumbnail.format(width='1600', height='1200')

        # TODO: get correct ext for audio files
        stream_type = media_info.get('stream_type')
        formats = [{
            'url': media_info['href'],
            'ext': stream_type,

View on GitHub (pinned to 956b8c5855)

Solutions

  1. Use a Romanian VPN/exit IP and retry
  2. Verify the media plays in a browser from Romania
  3. In batch jobs, catch this expected error and tag the URL geo-blocked
  4. If the whole site is unresponsive, trilulilu may be offline — check the domain first
Defensive patterns

Strategy: retry

Validate before calling

info = json.load(urllib.request.urlopen('http://m.trilulilu.ro/%s?format=json' % display_id))
if info.get('errors', {}).get('geoblock'):
    use_ro_exit()  # needed before extraction will succeed

Try / catch

try:
    ydl.extract_info(url)
except ExtractorError as e:
    if e.expected and 'not available in your country' in str(e):
        retry_with_ro_exit(url)

Prevention

When it happens

Trigger: Extracting a geoblocked trilulilu.ro media id from outside Romania; the JSON API returns errors.geoblock instead of stream data.

Common situations: Downloading Romanian-hosted content from abroad; local-licensing restrictions on music clips.

Related errors


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