aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp/extractor/audius.py
diff options
context:
space:
mode:
Diffstat (limited to 'yt_dlp/extractor/audius.py')
-rw-r--r--yt_dlp/extractor/audius.py28
1 files changed, 28 insertions, 0 deletions
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<id>[^\/]+)/?(?:[?#]|$)'
+ _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)