ytdl-org/youtube-dl · error · ExtractorError

Unknown navigationType

Error message

Unknown navigationType

What it means

Raised by TVNowShowIE (playlist extractor) when the show's navigation type from the API is neither 'season' nor one of the handled navigation values (e.g. the 'staffel'/annual branches above). Unlike most errors here it is NOT marked expected=True, so youtube-dl treats it as an extractor bug/failure rather than normal content unavailability.

Source

Thrown at youtube_dl/extractor/tvnow.py:484

                        continue
                    month_number = int_or_none(list(month_dict.keys())[0])
                    if month_number is None:
                        continue
                    entries.append(self.url_result(
                        '%s/%04d-%02d' % (base_url, year, month_number),
                        ie=TVNowAnnualIE.ie_key()))
        elif navigation == 'season':
            for item in items:
                if not isinstance(item, dict):
                    continue
                season_number = int_or_none(item.get('season'))
                if season_number is None:
                    continue
                entries.append(self.url_result(
                    '%s/staffel-%d' % (base_url, season_number),
                    ie=TVNowSeasonIE.ie_key()))
        else:
            raise ExtractorError('Unknown navigationType')

        return self.playlist_result(entries, show_id)

View on GitHub (pinned to 956b8c5855)

Solutions

  1. Update youtube-dl / switch to yt-dlp — newer builds handle additional navigationTypes.
  2. Extract the concrete season URL (…/staffel-N) directly with TVNowSeasonIE instead of the show root.
  3. Report the URL as a bug to the tracker so the missing navigationType is added.
  4. As a last resort, enumerate episode URLs manually from the website.
Defensive patterns

Strategy: validation

Validate before calling

resp = call_tvnow_show_api(show_id)
nav = resp.get('navigation') or resp.get('navigationType')
if nav not in ('season', 'staffel', 'annual'):
    raise ValueError('Unsupported navigationType: %r — extract season URLs directly' % nav)

Type guard

def known_navigation(nav) -> bool:
    return nav in ('season', 'staffel', 'annual')

Try / catch

try:
    ydl.extract_info(show_url)
except ExtractorError as e:
    if 'Unknown navigationType' in str(e):
        fallback_to_season_urls(show_url)  # enumerate /staffel-N links manually
    else:
        raise

Prevention

When it happens

Trigger: Extracting a tvnow show URL where the API response's navigation field (config/boards payload) has an unexpected value such as 'episode', 'movie', or a newly introduced type the extractor does not enumerate.

Common situations: TVNow introducing a new show layout (e.g. single-movie shows, new collections) after this youtube-dl version shipped; non-season-structured shows like one-off specials.

Related errors


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