[audius] Fix extractor

pull/45/head
pukkandan 4 years ago
parent 82e3f6ebda
commit c55256c5a3

@ -80,8 +80,9 @@
- **AudioBoom** - **AudioBoom**
- **audiomack** - **audiomack**
- **audiomack:album** - **audiomack:album**
- **Audius** - **Audius**: Audius.co
- **audius:playlist** - **audius:playlist**: Audius.co playlists
- **audius:track**: Audius track ID or API link. Prepend with "audius:"
- **AWAAN** - **AWAAN**
- **awaan:live** - **awaan:live**
- **awaan:season** - **awaan:season**

@ -76,6 +76,7 @@ class AudiusBaseIE(InfoExtractor):
class AudiusIE(AudiusBaseIE): class AudiusIE(AudiusBaseIE):
_VALID_URL = r'''(?x)https?://(?:www\.)?(?:audius\.co/(?P<uploader>[\w\d-]+)(?!/album|/playlist)/(?P<title>\S+))''' _VALID_URL = r'''(?x)https?://(?:www\.)?(?:audius\.co/(?P<uploader>[\w\d-]+)(?!/album|/playlist)/(?P<title>\S+))'''
IE_DESC = 'Audius.co'
_TESTS = [ _TESTS = [
{ {
# URL from Chrome address bar which replace backslash to forward slash # URL from Chrome address bar which replace backslash to forward slash
@ -124,11 +125,15 @@ class AudiusIE(AudiusBaseIE):
def _real_extract(self, url): def _real_extract(self, url):
mobj = re.match(self._VALID_URL, url) mobj = re.match(self._VALID_URL, url)
uploader, title, track_id = mobj.groups() track_id = try_get(mobj, lambda x: x.group('track_id'))
if track_id is None: if track_id is None:
title = mobj.group('title')
# uploader = mobj.group('uploader')
url = self._prepare_url(url, title) url = self._prepare_url(url, title)
track_data = self._resolve_url(url, title) track_data = self._resolve_url(url, title)
else: # API link else: # API link
title = None
# uploader = None
track_data = self._api_request('/tracks/%s' % track_id, track_id) track_data = self._api_request('/tracks/%s' % track_id, track_id)
if not isinstance(track_data, dict): if not isinstance(track_data, dict):
@ -167,9 +172,26 @@ class AudiusIE(AudiusBaseIE):
} }
class AudiusTrackIE(AudiusIE):
_VALID_URL = r'''(?x)(?:audius:)(?:https?://(?:www\.)?.+/v1/tracks/)?(?P<track_id>\w+)'''
IE_NAME = 'audius:track'
IE_DESC = 'Audius track ID or API link. Prepend with "audius:"'
_TESTS = [
{
'url': 'audius:9RWlo',
'only_matching': True
},
{
'url': 'audius:http://discoveryprovider.audius.prod-us-west-2.staked.cloud/v1/tracks/9RWlo',
'only_matching': True
},
]
class AudiusPlaylistIE(AudiusBaseIE): class AudiusPlaylistIE(AudiusBaseIE):
_VALID_URL = r'https?://(?:www\.)?audius\.co/(?P<uploader>[\w\d-]+)/(?:album|playlist)/(?P<title>\S+)' _VALID_URL = r'https?://(?:www\.)?audius\.co/(?P<uploader>[\w\d-]+)/(?:album|playlist)/(?P<title>\S+)'
IE_NAME = 'audius:playlist' IE_NAME = 'audius:playlist'
IE_DESC = 'Audius.co playlists'
_TEST = { _TEST = {
'url': 'https://audius.co/test_acc/playlist/test-playlist-22910', 'url': 'https://audius.co/test_acc/playlist/test-playlist-22910',
'info_dict': { 'info_dict': {
@ -189,14 +211,15 @@ class AudiusPlaylistIE(AudiusBaseIE):
if not track_id: if not track_id:
raise ExtractorError('Unable to get track ID from playlist') raise ExtractorError('Unable to get track ID from playlist')
entries.append(self.url_result( entries.append(self.url_result(
'%s%s/tracks/%s' % (self._API_BASE, self._API_V, track_id), 'audius:%s' % track_id,
ie=AudiusIE.ie_key(), video_id=track_id)) ie=AudiusTrackIE.ie_key(), video_id=track_id))
return entries return entries
def _real_extract(self, url): def _real_extract(self, url):
self._select_api_base() self._select_api_base()
mobj = re.match(self._VALID_URL, url) mobj = re.match(self._VALID_URL, url)
uploader, title = mobj.groups() title = mobj.group('title')
# uploader = mobj.group('uploader')
url = self._prepare_url(url, title) url = self._prepare_url(url, title)
playlist_response = self._resolve_url(url, title) playlist_response = self._resolve_url(url, title)

@ -90,7 +90,11 @@ from .atvat import ATVAtIE
from .audimedia import AudiMediaIE from .audimedia import AudiMediaIE
from .audioboom import AudioBoomIE from .audioboom import AudioBoomIE
from .audiomack import AudiomackIE, AudiomackAlbumIE from .audiomack import AudiomackIE, AudiomackAlbumIE
from .audius import AudiusIE, AudiusPlaylistIE from .audius import (
AudiusIE,
AudiusTrackIE,
AudiusPlaylistIE
)
from .awaan import ( from .awaan import (
AWAANIE, AWAANIE,
AWAANVideoIE, AWAANVideoIE,

Loading…
Cancel
Save