|
|
|
@ -20,7 +20,7 @@ class MixcloudBaseIE(InfoExtractor):
|
|
|
|
|
def _call_api(self, object_type, object_fields, display_id, username, slug=None):
|
|
|
|
|
lookup_key = object_type + 'Lookup'
|
|
|
|
|
return self._download_json(
|
|
|
|
|
'https://www.mixcloud.com/graphql', display_id, query={
|
|
|
|
|
'https://app.mixcloud.com/graphql', display_id, query={
|
|
|
|
|
'query': '''{
|
|
|
|
|
%s(lookup: {username: "%s"%s}) {
|
|
|
|
|
%s
|
|
|
|
@ -46,7 +46,15 @@ class MixcloudIE(MixcloudBaseIE):
|
|
|
|
|
'view_count': int,
|
|
|
|
|
'timestamp': 1321359578,
|
|
|
|
|
'upload_date': '20111115',
|
|
|
|
|
'uploader_url': 'https://www.mixcloud.com/dholbach/',
|
|
|
|
|
'artist': 'Submorphics & Chino , Telekinesis, Porter Robinson, Enei, Breakage ft Jess Mills',
|
|
|
|
|
'duration': 3723,
|
|
|
|
|
'tags': [],
|
|
|
|
|
'comment_count': int,
|
|
|
|
|
'repost_count': int,
|
|
|
|
|
'like_count': int,
|
|
|
|
|
},
|
|
|
|
|
'params': {'skip_download': 'm3u8'},
|
|
|
|
|
}, {
|
|
|
|
|
'url': 'http://www.mixcloud.com/gillespeterson/caribou-7-inch-vinyl-mix-chat/',
|
|
|
|
|
'info_dict': {
|
|
|
|
@ -60,7 +68,14 @@ class MixcloudIE(MixcloudBaseIE):
|
|
|
|
|
'view_count': int,
|
|
|
|
|
'timestamp': 1422987057,
|
|
|
|
|
'upload_date': '20150203',
|
|
|
|
|
'uploader_url': 'https://www.mixcloud.com/gillespeterson/',
|
|
|
|
|
'duration': 2992,
|
|
|
|
|
'tags': [],
|
|
|
|
|
'comment_count': int,
|
|
|
|
|
'repost_count': int,
|
|
|
|
|
'like_count': int,
|
|
|
|
|
},
|
|
|
|
|
'params': {'skip_download': '404 playback error on site'},
|
|
|
|
|
}, {
|
|
|
|
|
'url': 'https://beta.mixcloud.com/RedLightRadio/nosedrip-15-red-light-radio-01-18-2016/',
|
|
|
|
|
'only_matching': True,
|
|
|
|
@ -259,9 +274,9 @@ class MixcloudPlaylistBaseIE(MixcloudBaseIE):
|
|
|
|
|
cloudcast_url = cloudcast.get('url')
|
|
|
|
|
if not cloudcast_url:
|
|
|
|
|
continue
|
|
|
|
|
slug = try_get(cloudcast, lambda x: x['slug'], compat_str)
|
|
|
|
|
item_slug = try_get(cloudcast, lambda x: x['slug'], compat_str)
|
|
|
|
|
owner_username = try_get(cloudcast, lambda x: x['owner']['username'], compat_str)
|
|
|
|
|
video_id = '%s_%s' % (owner_username, slug) if slug and owner_username else None
|
|
|
|
|
video_id = f'{owner_username}_{item_slug}' if item_slug and owner_username else None
|
|
|
|
|
entries.append(self.url_result(
|
|
|
|
|
cloudcast_url, MixcloudIE.ie_key(), video_id))
|
|
|
|
|
|
|
|
|
@ -284,7 +299,7 @@ class MixcloudUserIE(MixcloudPlaylistBaseIE):
|
|
|
|
|
'info_dict': {
|
|
|
|
|
'id': 'dholbach_uploads',
|
|
|
|
|
'title': 'Daniel Holbach (uploads)',
|
|
|
|
|
'description': 'md5:b60d776f0bab534c5dabe0a34e47a789',
|
|
|
|
|
'description': 'md5:a3f468a60ac8c3e1f8616380fc469b2b',
|
|
|
|
|
},
|
|
|
|
|
'playlist_mincount': 36,
|
|
|
|
|
}, {
|
|
|
|
@ -292,7 +307,7 @@ class MixcloudUserIE(MixcloudPlaylistBaseIE):
|
|
|
|
|
'info_dict': {
|
|
|
|
|
'id': 'dholbach_uploads',
|
|
|
|
|
'title': 'Daniel Holbach (uploads)',
|
|
|
|
|
'description': 'md5:b60d776f0bab534c5dabe0a34e47a789',
|
|
|
|
|
'description': 'md5:a3f468a60ac8c3e1f8616380fc469b2b',
|
|
|
|
|
},
|
|
|
|
|
'playlist_mincount': 36,
|
|
|
|
|
}, {
|
|
|
|
@ -300,7 +315,7 @@ class MixcloudUserIE(MixcloudPlaylistBaseIE):
|
|
|
|
|
'info_dict': {
|
|
|
|
|
'id': 'dholbach_favorites',
|
|
|
|
|
'title': 'Daniel Holbach (favorites)',
|
|
|
|
|
'description': 'md5:b60d776f0bab534c5dabe0a34e47a789',
|
|
|
|
|
'description': 'md5:a3f468a60ac8c3e1f8616380fc469b2b',
|
|
|
|
|
},
|
|
|
|
|
# 'params': {
|
|
|
|
|
# 'playlist_items': '1-100',
|
|
|
|
@ -323,9 +338,9 @@ class MixcloudUserIE(MixcloudPlaylistBaseIE):
|
|
|
|
|
'info_dict': {
|
|
|
|
|
'id': 'FirstEar_stream',
|
|
|
|
|
'title': 'First Ear (stream)',
|
|
|
|
|
'description': 'Curators of good music\r\n\r\nfirstearmusic.com',
|
|
|
|
|
'description': 'we maraud for ears',
|
|
|
|
|
},
|
|
|
|
|
'playlist_mincount': 271,
|
|
|
|
|
'playlist_mincount': 269,
|
|
|
|
|
}]
|
|
|
|
|
|
|
|
|
|
_TITLE_KEY = 'displayName'
|
|
|
|
|