'license': 'all-rights-reserved',
},
},
+ # no album art, use avatar pic for thumbnail
+ {
+ 'url': 'https://soundcloud.com/garyvee/sideways-prod-mad-real',
+ 'md5': '59c7872bc44e5d99b7211891664760c2',
+ 'info_dict': {
+ 'id': '309699954',
+ 'ext': 'mp3',
+ 'title': 'Sideways (Prod. Mad Real)',
+ 'description': 'md5:d41d8cd98f00b204e9800998ecf8427e',
+ 'uploader': 'garyvee',
+ 'upload_date': '20170226',
+ 'duration': 207,
+ 'thumbnail': r're:https?://.*\.jpg',
+ 'license': 'all-rights-reserved',
+ },
+ 'params': {
+ 'skip_download': True,
+ },
+ },
]
- _CLIENT_ID = 'JlZIsxg2hY5WnBgtn3jfS0UYCl0K8DOg'
- _IPHONE_CLIENT_ID = '376f225bf427445fc4bfb6b99b72e0bf'
+ _CLIENT_ID = 'LvWovRaJZlWCHql0bISuum8Bd2KX79mb'
@staticmethod
def _extract_urls(webpage):
name = full_title or track_id
if quiet:
self.report_extraction(name)
- thumbnail = info.get('artwork_url')
+ thumbnail = info.get('artwork_url') or info.get('user', {}).get('avatar_url')
if isinstance(thumbnail, compat_str):
thumbnail = thumbnail.replace('-large', '-t500x500')
- ext = 'mp3'
result = {
'id': track_id,
'uploader': info.get('user', {}).get('username'),
track_id, 'Downloading track url', query=query)
for key, stream_url in format_dict.items():
- abr = int_or_none(self._search_regex(
- r'_(\d+)_url', key, 'audio bitrate', default=None))
+ ext, abr = 'mp3', None
+ mobj = re.search(r'_([^_]+)_(\d+)_url', key)
+ if mobj:
+ ext, abr = mobj.groups()
+ abr = int(abr)
if key.startswith('http'):
stream_formats = [{
'format_id': key,
}]
elif key.startswith('hls'):
stream_formats = self._extract_m3u8_formats(
- stream_url, track_id, 'mp3', entry_protocol='m3u8_native',
+ stream_url, track_id, ext, entry_protocol='m3u8_native',
m3u8_id=key, fatal=False)
else:
continue
- for f in stream_formats:
- f['abr'] = abr
+ if abr:
+ for f in stream_formats:
+ f['abr'] = abr
formats.extend(stream_formats)
formats.append({
'format_id': 'fallback',
'url': update_url_query(info['stream_url'], query),
- 'ext': ext,
+ 'ext': 'mp3',
})
for f in formats: