From bc1164719f78101c277f2f1b140a3e66f8050b12 Mon Sep 17 00:00:00 2001 From: Laura Liberda Date: Sat, 12 Dec 2020 23:05:16 +0100 Subject: [PATCH] [funkwhale] improve album data extraction --- haruhi_dl/extractor/funkwhale.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/haruhi_dl/extractor/funkwhale.py b/haruhi_dl/extractor/funkwhale.py index 07c7a89a8..3a72bd402 100644 --- a/haruhi_dl/extractor/funkwhale.py +++ b/haruhi_dl/extractor/funkwhale.py @@ -5,8 +5,10 @@ from .common import SelfhostedInfoExtractor from ..utils import ( compat_str, compat_urllib_parse_urlencode, + int_or_none, try_get, parse_iso8601, + str_or_none, ) @@ -71,6 +73,7 @@ class FunkwhaleBaseExtractor(SelfhostedInfoExtractor): 'tags': track_data.get('tags'), } info_dict.update(self._uploader_data_to_info_dict(track_data.get('attributed_to'))) + info_dict.update(self._album_to_info_dict(track_data.get('album'), track_data)) return info_dict def _uploader_data_to_info_dict(self, uploader_data): @@ -82,6 +85,18 @@ class FunkwhaleBaseExtractor(SelfhostedInfoExtractor): 'uploader_url': 'https://%s/@%s' % (uploader_data.get('domain'), uploader_data.get('preferred_username')), } + def _album_to_info_dict(self, album_data, track_data={}): + if album_data is None: + return {} + return { + 'track': str_or_none(track_data.get('title')), + 'track_number': int_or_none(track_data.get('position')), + 'album': str_or_none(album_data.get('title')), + 'artist': str_or_none(track_data.get('artist', {}).get('name')), + 'album_artist': str_or_none(album_data.get('artist', {}).get('name')), + 'release_year': int_or_none(album_data.get('release_date', '')[:4]), + } + class FunkwhaleTrackSHIE(FunkwhaleBaseExtractor): IE_NAME = 'funkwhale:track' @@ -298,4 +313,5 @@ class FunkwhaleAlbumSHIE(FunkwhaleBaseExtractor): 'entries': entries, 'thumbnails': thumbnails, } + info_dict.update(self._album_to_info_dict(album_data)) return info_dict