mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-26 01:01:25 +01:00
Compare commits
2 Commits
9c32f15b7b
...
b0b090669d
Author | SHA1 | Date | |
---|---|---|---|
|
b0b090669d | ||
|
e5a621ebdf |
|
@ -14,17 +14,17 @@ from ..utils.traversal import traverse_obj, value
|
||||||
|
|
||||||
|
|
||||||
class BandlabBaseIE(InfoExtractor):
|
class BandlabBaseIE(InfoExtractor):
|
||||||
_API_HEADERS = {
|
|
||||||
'accept': 'application/json',
|
|
||||||
'referer': 'https://www.bandlab.com/',
|
|
||||||
'x-client-id': 'BandLab-Web',
|
|
||||||
'x-client-version': '10.1.124',
|
|
||||||
}
|
|
||||||
|
|
||||||
def _call_api(self, endpoint, asset_id, **kwargs):
|
def _call_api(self, endpoint, asset_id, **kwargs):
|
||||||
|
headers = kwargs.pop('headers', None) or {}
|
||||||
return self._download_json(
|
return self._download_json(
|
||||||
f'https://www.bandlab.com/api/v1.3/{endpoint}/{asset_id}',
|
f'https://www.bandlab.com/api/v1.3/{endpoint}/{asset_id}',
|
||||||
asset_id, headers=self._API_HEADERS, **kwargs)
|
asset_id, headers={
|
||||||
|
'accept': 'application/json',
|
||||||
|
'referer': 'https://www.bandlab.com/',
|
||||||
|
'x-client-id': 'BandLab-Web',
|
||||||
|
'x-client-version': '10.1.124',
|
||||||
|
**headers,
|
||||||
|
}, **kwargs)
|
||||||
|
|
||||||
def _parse_revision(self, revision_data, url=None):
|
def _parse_revision(self, revision_data, url=None):
|
||||||
return {
|
return {
|
||||||
|
@ -102,8 +102,8 @@ class BandlabBaseIE(InfoExtractor):
|
||||||
|
|
||||||
class BandlabIE(BandlabBaseIE):
|
class BandlabIE(BandlabBaseIE):
|
||||||
_VALID_URL = [
|
_VALID_URL = [
|
||||||
r'https?://(?:www\.)?bandlab.com/(?:track|post|revision)/(?P<id>[\da-f_-]+)',
|
r'https?://(?:www\.)?bandlab.com/(?P<url_type>track|post|revision)/(?P<id>[\da-f_-]+)',
|
||||||
r'https?://(?:www\.)?bandlab.com/embed/\?(?:[^#]*&)?id=(?P<id>[\da-f-]+)',
|
r'https?://(?:www\.)?bandlab.com/(?P<url_type>embed)/\?(?:[^#]*&)?id=(?P<id>[\da-f-]+)',
|
||||||
]
|
]
|
||||||
_EMBED_REGEX = [rf'<iframe[^>]+src=[\'"](?P<url>{_VALID_URL[1]})[\'"]']
|
_EMBED_REGEX = [rf'<iframe[^>]+src=[\'"](?P<url>{_VALID_URL[1]})[\'"]']
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
|
@ -279,11 +279,11 @@ class BandlabIE(BandlabBaseIE):
|
||||||
}]
|
}]
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
display_id = self._match_id(url)
|
display_id, url_type = self._match_valid_url(url).group('id', 'url_type')
|
||||||
|
|
||||||
qs = parse_qs(url)
|
qs = parse_qs(url)
|
||||||
revision_id = traverse_obj(qs, (('revId', 'id'), 0, any))
|
revision_id = traverse_obj(qs, (('revId', 'id'), 0, any))
|
||||||
if 'bandlab.com/revision/' in url:
|
if url_type == 'revision':
|
||||||
revision_id = display_id
|
revision_id = display_id
|
||||||
|
|
||||||
revision_data = None
|
revision_data = None
|
||||||
|
@ -301,7 +301,7 @@ class BandlabIE(BandlabBaseIE):
|
||||||
return self._parse_video(post_data, url=url)
|
return self._parse_video(post_data, url=url)
|
||||||
if post_type == 'Track':
|
if post_type == 'Track':
|
||||||
return self._parse_track(post_data, url=url)
|
return self._parse_track(post_data, url=url)
|
||||||
raise ExtractorError('Could not extract data')
|
raise ExtractorError(f'Could not extract data for post type {post_type!r}')
|
||||||
|
|
||||||
if not revision_data:
|
if not revision_data:
|
||||||
revision_data = self._call_api(
|
revision_data = self._call_api(
|
||||||
|
@ -415,8 +415,8 @@ class BandlabPlaylistIE(BandlabBaseIE):
|
||||||
if not playlist_data.get('errorCode'):
|
if not playlist_data.get('errorCode'):
|
||||||
playlist_type = endpoint
|
playlist_type = endpoint
|
||||||
break
|
break
|
||||||
if playlist_data.get('errorCode'):
|
if error_code := playlist_data.get('errorCode'):
|
||||||
raise ExtractorError('Could not find playlist data')
|
raise ExtractorError(f'Could not find playlist data. Error code: {error_code!r}')
|
||||||
|
|
||||||
return self.playlist_result(
|
return self.playlist_result(
|
||||||
self._entries(playlist_data), playlist_id,
|
self._entries(playlist_data), playlist_id,
|
||||||
|
@ -426,7 +426,7 @@ class BandlabPlaylistIE(BandlabBaseIE):
|
||||||
'uploader': ('creator', 'name', {str}),
|
'uploader': ('creator', 'name', {str}),
|
||||||
'uploader_id': ('creator', 'username', {str}),
|
'uploader_id': ('creator', 'username', {str}),
|
||||||
'timestamp': ('createdOn', {parse_iso8601}),
|
'timestamp': ('createdOn', {parse_iso8601}),
|
||||||
'release_date': ('releaseDate', {lambda x: x and x.replace('-', '')}),
|
'release_date': ('releaseDate', {lambda x: x.replace('-', '')}, filter),
|
||||||
'thumbnail': ('picture', ('original', 'url'), {url_or_none}, any),
|
'thumbnail': ('picture', ('original', 'url'), {url_or_none}, any),
|
||||||
'like_count': ('counters', 'likes', {int_or_none}),
|
'like_count': ('counters', 'likes', {int_or_none}),
|
||||||
'comment_count': ('counters', 'comments', {int_or_none}),
|
'comment_count': ('counters', 'comments', {int_or_none}),
|
||||||
|
|
Loading…
Reference in New Issue
Block a user