]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/exfm.py
4 from .common
import InfoExtractor
7 class ExfmIE(InfoExtractor
):
10 _VALID_URL
= r
'(?:http://)?(?:www\.)?ex\.fm/song/([^/]+)'
11 _SOUNDCLOUD_URL
= r
'(?:http://)?(?:www\.)?api\.soundcloud\.com/tracks/([^/]+)/stream'
14 u
'url': u
'http://ex.fm/song/eh359',
15 u
'file': u
'44216187.mp3',
16 u
'md5': u
'e45513df5631e6d760970b14cc0c11e7',
18 u
"title": u
"Test House \"Love Is Not Enough\" (Extended Mix) DeadJournalist Exclusive",
19 u
"uploader": u
"deadjournalist",
20 u
'upload_date': u
'20120424',
21 u
'description': u
'Test House \"Love Is Not Enough\" (Extended Mix) DeadJournalist Exclusive',
23 u
'note': u
'Soundcloud song',
24 u
'skip': u
'The site is down too often',
27 u
'url': u
'http://ex.fm/song/wddt8',
28 u
'file': u
'wddt8.mp3',
29 u
'md5': u
'966bd70741ac5b8570d8e45bfaed3643',
31 u
'title': u
'Safe and Sound',
32 u
'uploader': u
'Capital Cities',
34 u
'skip': u
'The site is down too often',
38 def _real_extract(self
, url
):
39 mobj
= re
.match(self
._VALID
_URL
, url
)
40 song_id
= mobj
.group(1)
41 info_url
= "http://ex.fm/api/v3/song/%s" %(song_id)
42 webpage
= self
._download
_webpage
(info_url
, song_id
)
43 info
= json
.loads(webpage
)
44 song_url
= info
['song']['url']
45 if re
.match(self
._SOUNDCLOUD
_URL
, song_url
) is not None:
46 self
.to_screen('Soundcloud song detected')
47 return self
.url_result(song_url
.replace('/stream',''), 'Soundcloud')
52 'title': info
['song']['title'],
53 'thumbnail': info
['song']['image']['large'],
54 'uploader': info
['song']['artist'],
55 'view_count': info
['song']['loved_count'],