5 changed files with 83 additions and 1 deletions
Split View
Diff Options
-
2test/test_download.py
-
10test/test_playlists.py
-
1youtube_dl/extractor/__init__.py
-
69youtube_dl/extractor/everyonesmixtape.py
-
2youtube_dl/extractor/youtube.py
@ -0,0 +1,69 @@ |
|||
from __future__ import unicode_literals |
|||
|
|||
import re |
|||
|
|||
from .common import InfoExtractor |
|||
from ..utils import ( |
|||
compat_urllib_request, |
|||
ExtractorError, |
|||
) |
|||
|
|||
|
|||
class EveryonesMixtapeIE(InfoExtractor): |
|||
_VALID_URL = r'https?://(?:www\.)?everyonesmixtape\.com/#/mix/(?P<id>[0-9a-zA-Z]+)(?:/(?P<songnr>[0-9]))?$' |
|||
|
|||
_TEST = { |
|||
'url': 'http://everyonesmixtape.com/#/mix/m7m0jJAbMQi/5', |
|||
'file': '5bfseWNmlds.mp4', |
|||
"info_dict": { |
|||
"title": "Passion Pit - \"Sleepyhead\" (Official Music Video)", |
|||
"uploader": "FKR.TV", |
|||
"uploader_id": "frenchkissrecords", |
|||
"description": "Music video for \"Sleepyhead\" from Passion Pit's debut EP Chunk Of Change.\nBuy on iTunes: https://itunes.apple.com/us/album/chunk-of-change-ep/id300087641\n\nDirected by The Wilderness.\n\nhttp://www.passionpitmusic.com\nhttp://www.frenchkissrecords.com", |
|||
"upload_date": "20081015" |
|||
}, |
|||
'params': { |
|||
'skip_download': True, # This is simply YouTube |
|||
} |
|||
} |
|||
|
|||
def _real_extract(self, url): |
|||
mobj = re.match(self._VALID_URL, url) |
|||
playlist_id = mobj.group('id') |
|||
|
|||
pllist_url = 'http://everyonesmixtape.com/mixtape.php?a=getMixes&u=-1&linked=%s&explore=' % playlist_id |
|||
pllist_req = compat_urllib_request.Request(pllist_url) |
|||
pllist_req.add_header('X-Requested-With', 'XMLHttpRequest') |
|||
|
|||
playlist_list = self._download_json( |
|||
pllist_req, playlist_id, note='Downloading playlist metadata') |
|||
try: |
|||
playlist_no = next(playlist['id'] |
|||
for playlist in playlist_list |
|||
if playlist['code'] == playlist_id) |
|||
except StopIteration: |
|||
raise ExtractorError('Playlist id not found') |
|||
|
|||
pl_url = 'http://everyonesmixtape.com/mixtape.php?a=getMix&id=%s&userId=null&code=' % playlist_no |
|||
pl_req = compat_urllib_request.Request(pl_url) |
|||
pl_req.add_header('X-Requested-With', 'XMLHttpRequest') |
|||
playlist = self._download_json( |
|||
pl_req, playlist_id, note='Downloading playlist info') |
|||
|
|||
entries = [{ |
|||
'_type': 'url', |
|||
'url': t['url'], |
|||
'title': t['title'], |
|||
} for t in playlist['tracks']] |
|||
|
|||
if mobj.group('songnr'): |
|||
songnr = int(mobj.group('songnr')) - 1 |
|||
return entries[songnr] |
|||
|
|||
playlist_title = playlist['mixData']['name'] |
|||
return { |
|||
'_type': 'playlist', |
|||
'id': playlist_id, |
|||
'title': playlist_title, |
|||
'entries': entries, |
|||
} |
Write
Preview
Loading…
Cancel
Save