Browse Source

[soundcloud] Improve formats extraction and extract audio bitrate

master-ytdl-org
Sergey M․ 8 years ago
parent
commit
3a194cb4ec
No known key found for this signature in database GPG Key ID: 2C393E0F18A9236D
1 changed files with 26 additions and 26 deletions
  1. +26
    -26
      youtube_dl/extractor/soundcloud.py

+ 26
- 26
youtube_dl/extractor/soundcloud.py View File

@ -181,46 +181,46 @@ class SoundcloudIE(InfoExtractor):
}) })
for key, stream_url in format_dict.items(): for key, stream_url in format_dict.items():
abr = int_or_none(self._search_regex(
r'_(\d+)_url', key, 'audio bitrate', default=None))
if key.startswith('http'): if key.startswith('http'):
formats.append({
stream_formats = [{
'format_id': key, 'format_id': key,
'ext': ext, 'ext': ext,
'url': stream_url, 'url': stream_url,
'vcodec': 'none',
})
}]
elif key.startswith('rtmp'): elif key.startswith('rtmp'):
# The url doesn't have an rtmp app, we have to extract the playpath # The url doesn't have an rtmp app, we have to extract the playpath
url, path = stream_url.split('mp3:', 1) url, path = stream_url.split('mp3:', 1)
formats.append({
stream_formats = [{
'format_id': key, 'format_id': key,
'url': url, 'url': url,
'play_path': 'mp3:' + path, 'play_path': 'mp3:' + path,
'ext': 'flv', 'ext': 'flv',
'vcodec': 'none',
})
}]
elif key.startswith('hls'): elif key.startswith('hls'):
m3u8_formats = self._extract_m3u8_formats(
stream_formats = self._extract_m3u8_formats(
stream_url, track_id, 'mp3', entry_protocol='m3u8_native', stream_url, track_id, 'mp3', entry_protocol='m3u8_native',
m3u8_id=key, fatal=False) m3u8_id=key, fatal=False)
for f in m3u8_formats:
f['vcodec'] = 'none'
formats.extend(m3u8_formats)
if not formats:
# We fallback to the stream_url in the original info, this
# cannot be always used, sometimes it can give an HTTP 404 error
formats.append({
'format_id': 'fallback',
'url': info['stream_url'] + '?client_id=' + self._CLIENT_ID,
'ext': ext,
'vcodec': 'none',
})
for f in formats:
if f['format_id'].startswith('http'):
f['protocol'] = 'http'
if f['format_id'].startswith('rtmp'):
f['protocol'] = 'rtmp'
else:
continue
for f in stream_formats:
f['abr'] = abr
formats.extend(stream_formats)
if not formats:
# We fallback to the stream_url in the original info, this
# cannot be always used, sometimes it can give an HTTP 404 error
formats.append({
'format_id': 'fallback',
'url': info['stream_url'] + '?client_id=' + self._CLIENT_ID,
'ext': ext,
})
for f in formats:
f['vcodec'] = 'none'
self._check_formats(formats, track_id) self._check_formats(formats, track_id)
self._sort_formats(formats) self._sort_formats(formats)


Loading…
Cancel
Save