added an IE for ex.fm
[youtube-dl] / youtube_dl / extractor / exfm.py
1 import re
2 import json
3 import time
4
5 from .common import InfoExtractor
6
7
8 class ExfmIE(InfoExtractor):
9     _VALID_URL = r'(?:http://)?(?:www\.)?ex\.fm/song/([^/]+)'
10     _SOUNDCLOUD_URL_ = r'(?:http://)?(?:www\.)?api\.soundcloud.com/tracks/([^/]+)/stream'
11
12     def _real_extract(self, url):
13         mobj = re.match(self._VALID_URL, url)
14         video_id = mobj.group(1)
15         info_url = "http://ex.fm/api/v3/song/%s" %(video_id)
16         webpage = self._download_webpage(info_url, video_id)
17         info = json.loads(webpage)
18         song_url = re.match(self._SOUNDCLOUD_URL_,info['song']['url'])
19         if song_url is not None:
20                 song_url = song_url.group() + "?client_id=b45b1aa10f1ac2941910a7f0d10f8e28"
21         else:
22                 song_url = info['song']['url']
23         return [{
24             'id':          video_id,
25             'url':         song_url,
26             'ext':         'mp3',
27             'title':       info['song']['title'],
28             'thumbnail':   info['song']['image']['large'],
29             'uploader':    info['song']['artist'],
30             'view_count':  info['song']['loved_count'],
31         }]