mirror of
https://github.com/l1ving/youtube-dl
synced 2025-03-13 07:17:29 +08:00
[Bandcamp] Extract additional fields
* [bandcamp] Add additional extraction fields
This commit is contained in:
parent
1f393a3241
commit
cc2e170d86
@ -16,6 +16,7 @@ from ..utils import (
|
|||||||
int_or_none,
|
int_or_none,
|
||||||
parse_filesize,
|
parse_filesize,
|
||||||
unescapeHTML,
|
unescapeHTML,
|
||||||
|
unified_strdate,
|
||||||
update_url_query,
|
update_url_query,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -47,6 +48,18 @@ class BandcampIE(InfoExtractor):
|
|||||||
mobj = re.match(self._VALID_URL, url)
|
mobj = re.match(self._VALID_URL, url)
|
||||||
title = mobj.group('title')
|
title = mobj.group('title')
|
||||||
webpage = self._download_webpage(url, title)
|
webpage = self._download_webpage(url, title)
|
||||||
|
release_date = self._search_regex(
|
||||||
|
r'"?(?:album_)?release_date"?\s*?:\s*?"(.*?)"',
|
||||||
|
webpage, 'release date', fatal=False)
|
||||||
|
release_date = unified_strdate(release_date)
|
||||||
|
album = self._search_regex(
|
||||||
|
r'album_title\s*:\s*"((?:\\.|[^"\\])+?)"',
|
||||||
|
webpage, 'album', default=None)
|
||||||
|
artist = self._search_regex(
|
||||||
|
r'artist\s*:\s*"((?:\\.|[^"\\])+?)"',
|
||||||
|
webpage, 'artist', fatal=False)
|
||||||
|
if release_date:
|
||||||
|
release_year = release_date[:4]
|
||||||
m_download = re.search(r'freeDownloadPage: "(.*?)"', webpage)
|
m_download = re.search(r'freeDownloadPage: "(.*?)"', webpage)
|
||||||
if not m_download:
|
if not m_download:
|
||||||
m_trackinfo = re.search(r'trackinfo: (.+),\s*?\n', webpage)
|
m_trackinfo = re.search(r'trackinfo: (.+),\s*?\n', webpage)
|
||||||
@ -76,7 +89,14 @@ class BandcampIE(InfoExtractor):
|
|||||||
'id': track_id,
|
'id': track_id,
|
||||||
'title': data['title'],
|
'title': data['title'],
|
||||||
'formats': formats,
|
'formats': formats,
|
||||||
|
'release_date': release_date,
|
||||||
'duration': float_or_none(data.get('duration')),
|
'duration': float_or_none(data.get('duration')),
|
||||||
|
'track': data.get('title'),
|
||||||
|
'track_number': int_or_none(data.get('track_num')),
|
||||||
|
'track_id': track_id,
|
||||||
|
'album': album,
|
||||||
|
'artist': artist,
|
||||||
|
'release_year': release_year,
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
raise ExtractorError('No free songs found')
|
raise ExtractorError('No free songs found')
|
||||||
@ -86,6 +106,10 @@ class BandcampIE(InfoExtractor):
|
|||||||
r'(?ms)var TralbumData = .*?[{,]\s*id: (?P<id>\d+),?$',
|
r'(?ms)var TralbumData = .*?[{,]\s*id: (?P<id>\d+),?$',
|
||||||
webpage, 'video id')
|
webpage, 'video id')
|
||||||
|
|
||||||
|
track_number = self._search_regex(
|
||||||
|
r'"track_num":(?P<track_number>\d+),',
|
||||||
|
webpage, 'track number', fatal=False)
|
||||||
|
|
||||||
download_webpage = self._download_webpage(
|
download_webpage = self._download_webpage(
|
||||||
download_link, video_id, 'Downloading free downloads page')
|
download_link, video_id, 'Downloading free downloads page')
|
||||||
|
|
||||||
@ -145,9 +169,15 @@ class BandcampIE(InfoExtractor):
|
|||||||
'title': title,
|
'title': title,
|
||||||
'thumbnail': info.get('thumb_url'),
|
'thumbnail': info.get('thumb_url'),
|
||||||
'uploader': info.get('artist'),
|
'uploader': info.get('artist'),
|
||||||
|
'release_date': release_date,
|
||||||
'artist': artist,
|
'artist': artist,
|
||||||
'track': track,
|
'track': track,
|
||||||
'formats': formats,
|
'formats': formats,
|
||||||
|
'track_number': int_or_none(track_number),
|
||||||
|
'track_id': video_id,
|
||||||
|
'album': album,
|
||||||
|
'artist': artist,
|
||||||
|
'release_year': release_year,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -233,5 +263,6 @@ class BandcampAlbumIE(InfoExtractor):
|
|||||||
'uploader_id': uploader_id,
|
'uploader_id': uploader_id,
|
||||||
'id': playlist_id,
|
'id': playlist_id,
|
||||||
'title': title,
|
'title': title,
|
||||||
|
'album': title,
|
||||||
'entries': entries,
|
'entries': entries,
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user