]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/everyonesmixtape.py
1 from __future__
import unicode_literals
5 from . common
import InfoExtractor
12 class EveryonesMixtapeIE ( InfoExtractor
):
13 _VALID_URL
= r
'https?://(?:www\.)?everyonesmixtape\.com/#/mix/(?P<id>[0-9a-zA-Z]+)(?:/(?P<songnr>[0-9]))?$'
16 'url' : 'http://everyonesmixtape.com/#/mix/m7m0jJAbMQi/5' ,
20 "title" : "Passion Pit - \" Sleepyhead \" (Official Music Video)" ,
22 "uploader_id" : "frenchkissrecords" ,
23 "description" : "Music video for \" Sleepyhead \" from Passion Pit's debut EP Chunk Of Change. \n Buy on iTunes: https://itunes.apple.com/us/album/chunk-of-change-ep/id300087641 \n\n Directed by The Wilderness. \n\n http://www.passionpitmusic.com \n http://www.frenchkissrecords.com" ,
24 "upload_date" : "20081015"
27 'skip_download' : True , # This is simply YouTube
30 'url' : 'http://everyonesmixtape.com/#/mix/m7m0jJAbMQi' ,
38 def _real_extract ( self
, url
):
39 mobj
= re
. match ( self
._ VALID
_U RL
, url
)
40 playlist_id
= mobj
. group ( 'id' )
42 pllist_url
= 'http://everyonesmixtape.com/mixtape.php?a=getMixes&u=-1&linked= %s &explore=' % playlist_id
43 pllist_req
= compat_urllib_request
. Request ( pllist_url
)
44 pllist_req
. add_header ( 'X-Requested-With' , 'XMLHttpRequest' )
46 playlist_list
= self
._ download
_ json
(
47 pllist_req
, playlist_id
, note
= 'Downloading playlist metadata' )
49 playlist_no
= next ( playlist
[ 'id' ]
50 for playlist
in playlist_list
51 if playlist
[ 'code' ] == playlist_id
)
53 raise ExtractorError ( 'Playlist id not found' )
55 pl_url
= 'http://everyonesmixtape.com/mixtape.php?a=getMix&id= %s &userId=null&code=' % playlist_no
56 pl_req
= compat_urllib_request
. Request ( pl_url
)
57 pl_req
. add_header ( 'X-Requested-With' , 'XMLHttpRequest' )
58 playlist
= self
._ download
_ json
(
59 pl_req
, playlist_id
, note
= 'Downloading playlist info' )
65 } for t
in playlist
[ 'tracks' ]]
67 if mobj
. group ( 'songnr' ):
68 songnr
= int ( mobj
. group ( 'songnr' )) - 1
69 return entries
[ songnr
]
71 playlist_title
= playlist
[ 'mixData' ][ 'name' ]
75 'title' : playlist_title
,