mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	[xiami] Improve extraction (closes #11699)
* Relax _VALID_URLs * Improve track metadata extraction
This commit is contained in:
		| @@ -16,7 +16,9 @@ class XiamiBaseIE(InfoExtractor): | ||||
|         return webpage | ||||
|  | ||||
|     def _extract_track(self, track, track_id=None): | ||||
|         title = track['title'] | ||||
|         track_name = track.get('songName') or track.get('name') or track['subName'] | ||||
|         artist = track.get('artist') or track.get('artist_name') or track.get('singers') | ||||
|         title = '%s - %s' % (artist, track_name) if artist else track_name | ||||
|         track_url = self._decrypt(track['location']) | ||||
|  | ||||
|         subtitles = {} | ||||
| @@ -31,9 +33,10 @@ class XiamiBaseIE(InfoExtractor): | ||||
|             'thumbnail': track.get('pic') or track.get('album_pic'), | ||||
|             'duration': int_or_none(track.get('length')), | ||||
|             'creator': track.get('artist', '').split(';')[0], | ||||
|             'track': title, | ||||
|             'album': track.get('album_name'), | ||||
|             'artist': track.get('artist'), | ||||
|             'track': track_name, | ||||
|             'track_number': int_or_none(track.get('track')), | ||||
|             'album': track.get('album_name') or track.get('title'), | ||||
|             'artist': artist, | ||||
|             'subtitles': subtitles, | ||||
|         } | ||||
|  | ||||
| @@ -68,14 +71,14 @@ class XiamiBaseIE(InfoExtractor): | ||||
| class XiamiSongIE(XiamiBaseIE): | ||||
|     IE_NAME = 'xiami:song' | ||||
|     IE_DESC = '虾米音乐' | ||||
|     _VALID_URL = r'https?://(?:www\.)?xiami\.com/song/(?P<id>[0-9]+)' | ||||
|     _VALID_URL = r'https?://(?:www\.)?xiami\.com/song/(?P<id>[^/?#&]+)' | ||||
|     _TESTS = [{ | ||||
|         'url': 'http://www.xiami.com/song/1775610518', | ||||
|         'md5': '521dd6bea40fd5c9c69f913c232cb57e', | ||||
|         'info_dict': { | ||||
|             'id': '1775610518', | ||||
|             'ext': 'mp3', | ||||
|             'title': 'Woman', | ||||
|             'title': 'HONNE - Woman', | ||||
|             'thumbnail': r're:http://img\.xiami\.net/images/album/.*\.jpg', | ||||
|             'duration': 265, | ||||
|             'creator': 'HONNE', | ||||
| @@ -95,7 +98,7 @@ class XiamiSongIE(XiamiBaseIE): | ||||
|         'info_dict': { | ||||
|             'id': '1775256504', | ||||
|             'ext': 'mp3', | ||||
|             'title': '悟空', | ||||
|             'title': '戴荃 - 悟空', | ||||
|             'thumbnail': r're:http://img\.xiami\.net/images/album/.*\.jpg', | ||||
|             'duration': 200, | ||||
|             'creator': '戴荃', | ||||
| @@ -109,6 +112,26 @@ class XiamiSongIE(XiamiBaseIE): | ||||
|             }, | ||||
|         }, | ||||
|         'skip': 'Georestricted', | ||||
|     }, { | ||||
|         'url': 'http://www.xiami.com/song/1775953850', | ||||
|         'info_dict': { | ||||
|             'id': '1775953850', | ||||
|             'ext': 'mp3', | ||||
|             'title': 'До Скону - Чума Пожирает Землю', | ||||
|             'thumbnail': r're:http://img\.xiami\.net/images/album/.*\.jpg', | ||||
|             'duration': 683, | ||||
|             'creator': 'До Скону', | ||||
|             'track': 'Чума Пожирает Землю', | ||||
|             'track_number': 7, | ||||
|             'album': 'Ад', | ||||
|             'artist': 'До Скону', | ||||
|         }, | ||||
|         'params': { | ||||
|             'skip_download': True, | ||||
|         }, | ||||
|     }, { | ||||
|         'url': 'http://www.xiami.com/song/xLHGwgd07a1', | ||||
|         'only_matching': True, | ||||
|     }] | ||||
|  | ||||
|     def _real_extract(self, url): | ||||
| @@ -124,7 +147,7 @@ class XiamiPlaylistBaseIE(XiamiBaseIE): | ||||
| class XiamiAlbumIE(XiamiPlaylistBaseIE): | ||||
|     IE_NAME = 'xiami:album' | ||||
|     IE_DESC = '虾米音乐 - 专辑' | ||||
|     _VALID_URL = r'https?://(?:www\.)?xiami\.com/album/(?P<id>[0-9]+)' | ||||
|     _VALID_URL = r'https?://(?:www\.)?xiami\.com/album/(?P<id>[^/?#&]+)' | ||||
|     _TYPE = '1' | ||||
|     _TESTS = [{ | ||||
|         'url': 'http://www.xiami.com/album/2100300444', | ||||
| @@ -136,28 +159,34 @@ class XiamiAlbumIE(XiamiPlaylistBaseIE): | ||||
|     }, { | ||||
|         'url': 'http://www.xiami.com/album/512288?spm=a1z1s.6843761.1110925389.6.hhE9p9', | ||||
|         'only_matching': True, | ||||
|     }, { | ||||
|         'url': 'http://www.xiami.com/album/URVDji2a506', | ||||
|         'only_matching': True, | ||||
|     }] | ||||
|  | ||||
|  | ||||
| class XiamiArtistIE(XiamiPlaylistBaseIE): | ||||
|     IE_NAME = 'xiami:artist' | ||||
|     IE_DESC = '虾米音乐 - 歌手' | ||||
|     _VALID_URL = r'https?://(?:www\.)?xiami\.com/artist/(?P<id>[0-9]+)' | ||||
|     _VALID_URL = r'https?://(?:www\.)?xiami\.com/artist/(?P<id>[^/?#&]+)' | ||||
|     _TYPE = '2' | ||||
|     _TEST = { | ||||
|     _TESTS = [{ | ||||
|         'url': 'http://www.xiami.com/artist/2132?spm=0.0.0.0.dKaScp', | ||||
|         'info_dict': { | ||||
|             'id': '2132', | ||||
|         }, | ||||
|         'playlist_count': 20, | ||||
|         'skip': 'Georestricted', | ||||
|     } | ||||
|     }, { | ||||
|         'url': 'http://www.xiami.com/artist/bC5Tk2K6eb99', | ||||
|         'only_matching': True, | ||||
|     }] | ||||
|  | ||||
|  | ||||
| class XiamiCollectionIE(XiamiPlaylistBaseIE): | ||||
|     IE_NAME = 'xiami:collection' | ||||
|     IE_DESC = '虾米音乐 - 精选集' | ||||
|     _VALID_URL = r'https?://(?:www\.)?xiami\.com/collect/(?P<id>[0-9]+)' | ||||
|     _VALID_URL = r'https?://(?:www\.)?xiami\.com/collect/(?P<id>[^/?#&]+)' | ||||
|     _TYPE = '3' | ||||
|     _TEST = { | ||||
|         'url': 'http://www.xiami.com/collect/156527391?spm=a1z1s.2943601.6856193.12.4jpBnr', | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․