]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/eighttracks.py
2cfbcd363c0db4f2505d8da7120d7c3161a7b0a9
   6 from .common 
import InfoExtractor
 
  12 class EightTracksIE(InfoExtractor
): 
  14     _VALID_URL 
= r
'https?://8tracks.com/(?P<user>[^/]+)/(?P<id>[^/#]+)(?:#.*)?$' 
  16         u
"name": u
"EightTracks", 
  17         u
"url": u
"http://8tracks.com/ytdl/youtube-dl-test-tracks-a", 
  20                 u
"file": u
"11885610.m4a", 
  21                 u
"md5": u
"96ce57f24389fc8734ce47f4c1abcc55", 
  23                     u
"title": u
"youtue-dl project<>\"' - youtube-dl test track 1 \"'/\\\u00e4\u21ad", 
  24                     u
"uploader_id": u
"ytdl" 
  28                 u
"file": u
"11885608.m4a", 
  29                 u
"md5": u
"4ab26f05c1f7291ea460a3920be8021f", 
  31                     u
"title": u
"youtube-dl project - youtube-dl test track 2 \"'/\\\u00e4\u21ad", 
  32                     u
"uploader_id": u
"ytdl" 
  36                 u
"file": u
"11885679.m4a", 
  37                 u
"md5": u
"d30b5b5f74217410f4689605c35d1fd7", 
  39                     u
"title": u
"youtube-dl project as well - youtube-dl test track 3 \"'/\\\u00e4\u21ad", 
  40                     u
"uploader_id": u
"ytdl" 
  44                 u
"file": u
"11885680.m4a", 
  45                 u
"md5": u
"4eb0a669317cd725f6bbd336a29f923a", 
  47                     u
"title": u
"youtube-dl project as well - youtube-dl test track 4 \"'/\\\u00e4\u21ad", 
  48                     u
"uploader_id": u
"ytdl" 
  52                 u
"file": u
"11885682.m4a", 
  53                 u
"md5": u
"1893e872e263a2705558d1d319ad19e8", 
  55                     u
"title": u
"PH - youtube-dl test track 5 \"'/\\\u00e4\u21ad", 
  56                     u
"uploader_id": u
"ytdl" 
  60                 u
"file": u
"11885683.m4a", 
  61                 u
"md5": u
"b673c46f47a216ab1741ae8836af5899", 
  63                     u
"title": u
"PH - youtube-dl test track 6 \"'/\\\u00e4\u21ad", 
  64                     u
"uploader_id": u
"ytdl" 
  68                 u
"file": u
"11885684.m4a", 
  69                 u
"md5": u
"1d74534e95df54986da7f5abf7d842b7", 
  71                     u
"title": u
"phihag - youtube-dl test track 7 \"'/\\\u00e4\u21ad", 
  72                     u
"uploader_id": u
"ytdl" 
  76                 u
"file": u
"11885685.m4a", 
  77                 u
"md5": u
"f081f47af8f6ae782ed131d38b9cd1c0", 
  79                     u
"title": u
"phihag - youtube-dl test track 8 \"'/\\\u00e4\u21ad", 
  80                     u
"uploader_id": u
"ytdl" 
  87     def _real_extract(self
, url
): 
  88         mobj 
= re
.match(self
._VALID
_URL
, url
) 
  90             raise ExtractorError(u
'Invalid URL: %s' % url
) 
  91         playlist_id 
= mobj
.group('id') 
  93         webpage 
= self
._download
_webpage
(url
, playlist_id
) 
  95         json_like 
= self
._search
_regex
(r
"PAGE.mix = (.*?);\n", webpage
, u
'trax information', flags
=re
.DOTALL
) 
  96         data 
= json
.loads(json_like
) 
  98         session 
= str(random
.randint(0, 1000000000)) 
 100         track_count 
= data
['tracks_count'] 
 101         first_url 
= 'http://8tracks.com/sets/%s/play?player=sm&mix_id=%s&format=jsonh' % (session
, mix_id
) 
 104         for i 
in range(track_count
): 
 105             api_json 
= self
._download
_webpage
(next_url
, playlist_id
, 
 106                 note
=u
'Downloading song information %s/%s' % (str(i
+1), track_count
), 
 107                 errnote
=u
'Failed to download song information') 
 108             api_data 
= json
.loads(api_json
) 
 109             track_data 
= api_data
[u
'set']['track'] 
 111                 'id': track_data
['id'], 
 112                 'url': track_data
['track_file_stream_url'], 
 113                 'title': track_data
['performer'] + u
' - ' + track_data
['name'], 
 114                 'raw_title': track_data
['name'], 
 115                 'uploader_id': data
['user']['login'], 
 119             next_url 
= 'http://8tracks.com/sets/%s/next?player=sm&mix_id=%s&format=jsonh&track_id=%s' % (session
, mix_id
, track_data
['id'])