- for k in x["format"]:
- if type(x["format"][k]) is list:
- for z in x["format"][k]:
- formats.append({ 'format': z['type'],
- 'url' : z['$text']
- })
- else:
- formats.append({ 'format': k,
- 'url' : x["format"][k]['$text']
- })
-
- entries.append({ "title":song_title,
- "id":song_id,
- "duration": song_duration ,
- "formats":formats})
- formats = []
+ entries = []
+ for audio in story.get('audio', []):
+ title = audio.get('title', {}).get('$text')
+ duration = int_or_none(audio.get('duration', {}).get('$text'))
+ formats = []
+ for format_id, formats_entry in audio.get('format', {}).items():
+ if not formats_entry:
+ continue
+ if isinstance(formats_entry, list):
+ formats_entry = formats_entry[0]
+ format_url = formats_entry.get('$text')
+ if not format_url:
+ continue
+ if format_id in KNOWN_FORMATS:
+ formats.append({
+ 'url': format_url,
+ 'format_id': format_id,
+ 'ext': formats_entry.get('type'),
+ 'quality': quality(format_id),
+ })
+ self._sort_formats(formats)
+ entries.append({
+ 'id': audio['id'],
+ 'title': title,
+ 'duration': duration,
+ 'formats': formats,
+ })