soimort/you-get · error · NotImplementedError
Audio #%s not found in playlist #%s
Error message
Audio #%s not found in playlist #%s
What it means
Raised as NotImplementedError at the end of lizhi_download (src/you_get/extractors/lizhi.py:64) via the for/else construct. The URL parsed fine (radio_id + audio_id), but after enumerating every episode of the radio via lizhi_extract_playlist_info, no episode's id equals the requested audio_id — the episode does not exist in that radio.
Source
Thrown at src/you_get/extractors/lizhi.py:64
if not radio_id:
raise NotImplementedError('%s not supported' % url)
for audio_id, title, url in lizhi_extract_playlist_info(radio_id):
lizhi_download_audio(audio_id, title, url, output_dir=output_dir, info_only=info_only)
def lizhi_download(url, output_dir='.', info_only=False, **kwargs):
# Sample URL: http://www.lizhi.fm/549759/18864883431656710/
m = re.search(r'/(?P<radio_id>\d+)/(?P<audio_id>\d+)', url)
if not m:
raise NotImplementedError('%s not supported' % url)
radio_id = m.group('radio_id')
audio_id = m.group('audio_id')
# Look for the audio_id among the full list of episodes
for aid, title, url in lizhi_extract_playlist_info(radio_id):
if aid == audio_id:
lizhi_download_audio(audio_id, title, url, output_dir=output_dir, info_only=info_only)
break
else:
raise NotImplementedError('Audio #%s not found in playlist #%s' % (audio_id, radio_id))
site_info = "lizhi.fm"
download = lizhi_download
download_playlist = lizhi_download_playlist
View on GitHub (pinned to 049548f3f3)
Solutions
- Re-copy the episode URL from the lizhi.fm page so both ids are exact.
- Enumerate the radio with lizhi_download_playlist (or log lizhi_extract_playlist_info(radio_id)) and confirm the audio id is listed.
- If the id is visibly correct but not returned, the API response changed — inspect and update lizhi_extract_playlist_info or upgrade you-get.
Defensive patterns
Strategy: try-catch
Validate before calling
from you_get.extractors.lizhi import lizhi_extract_playlist_info
def lizhi_audio_in_playlist(url):
import re
m = re.search(r'/(?P<radio_id>\d+)/(?P<audio_id>\d+)', url)
if not m:
return False
ids = {aid for aid, _, _ in lizhi_extract_playlist_info(m.group('radio_id'))}
return m.group('audio_id') in ids Try / catch
try:
lizhi_download(url, output_dir)
except NotImplementedError as e:
if 'not found in playlist' in str(e):
# wrong/deleted episode id: re-source URL, don't retry
log_missing_episode(url)
else:
raise Prevention
- Copy episode URLs directly from the site rather than editing ids by hand.
- Cross-check the audio id against the radio's episode list before batch jobs.
When it happens
Trigger: A /<radio_id>/<audio_id>/ URL where audio_id is not present in the API-returned episode list for radio_id: typo in audio_id, deleted episode, or the episode list API (lizhi.fm/.radio) returning a partial/changed payload so the id never matches.
Common situations: Hand-edited or mistyped audio ids; episodes removed by the uploader; lizhi API schema changes making lizhi_extract_playlist_info yield different id values.
Related errors
- Playlist is not supported for
- You can download it with -l flag
- Unknown url pattern
- No video found in this playlist
- %s not supported
AI-assisted analysis of soimort/you-get@049548f3f3 (2026-08-15).
Data as JSON: /api/errors/f1b8209478fa1e89.
Report an issue: GitHub.