diff --git a/yt_dlp/extractor/audius.py b/yt_dlp/extractor/audius.py index 2cbc97fcd..b4b718790 100644 --- a/yt_dlp/extractor/audius.py +++ b/yt_dlp/extractor/audius.py @@ -245,3 +245,31 @@ class AudiusPlaylistIE(AudiusBaseIE): return self.playlist_result(entries, playlist_id, playlist_data.get('playlist_name', title), playlist_data.get('description')) + + +class AudiusProfileIE(AudiusPlaylistIE): + IE_NAME = 'audius:artist' + IE_DESC = 'Audius.co profile/artist pages' + _VALID_URL = r'https?://(?:www)?audius\.co/(?P[^\/]+)/?(?:[?#]|$)' + _TEST = { + 'url': 'https://audius.co/pzl/', + 'info_dict': { + 'id': 'ezRo7', + 'description': 'TAMALE\n\nContact: officialpzl@gmail.com', + 'title': 'pzl', + }, + 'playlist_count': 24, + } + + def _real_extract(self, url): + self._select_api_base() + profile_id = self._match_id(url) + try: + _profile_data = self._api_request('/full/users/handle/' + profile_id, profile_id) + except ExtractorError as e: + raise ExtractorError('Could not download profile info; ' + str(e)) + profile_audius_id = _profile_data[0]['id'] + profile_bio = _profile_data[0].get('bio') + + api_call = self._api_request('/full/users/handle/%s/tracks' % profile_id, profile_id) + return self.playlist_result(self._build_playlist(api_call), profile_audius_id, profile_id, profile_bio) diff --git a/yt_dlp/extractor/extractors.py b/yt_dlp/extractor/extractors.py index b835ca72c..1671124ba 100644 --- a/yt_dlp/extractor/extractors.py +++ b/yt_dlp/extractor/extractors.py @@ -94,7 +94,8 @@ from .audiomack import AudiomackIE, AudiomackAlbumIE from .audius import ( AudiusIE, AudiusTrackIE, - AudiusPlaylistIE + AudiusPlaylistIE, + AudiusProfileIE, ) from .awaan import ( AWAANIE,