added an IE for ex.fm

This commit is contained in:
M.Yasoob Khalid 2013-07-18 12:30:21 +05:00
parent e1fb245690
commit b6ef402905
2 changed files with 32 additions and 0 deletions

View file

@ -19,6 +19,7 @@ from .dreisat import DreiSatIE
from .ehow import EHowIE from .ehow import EHowIE
from .eighttracks import EightTracksIE from .eighttracks import EightTracksIE
from .escapist import EscapistIE from .escapist import EscapistIE
from .exfm import ExfmIE
from .facebook import FacebookIE from .facebook import FacebookIE
from .flickr import FlickrIE from .flickr import FlickrIE
from .freesound import FreesoundIE from .freesound import FreesoundIE

View file

@ -0,0 +1,31 @@
import re
import json
import time
from .common import InfoExtractor
class ExfmIE(InfoExtractor):
_VALID_URL = r'(?:http://)?(?:www\.)?ex\.fm/song/([^/]+)'
_SOUNDCLOUD_URL_ = r'(?:http://)?(?:www\.)?api\.soundcloud.com/tracks/([^/]+)/stream'
def _real_extract(self, url):
mobj = re.match(self._VALID_URL, url)
video_id = mobj.group(1)
info_url = "http://ex.fm/api/v3/song/%s" %(video_id)
webpage = self._download_webpage(info_url, video_id)
info = json.loads(webpage)
song_url = re.match(self._SOUNDCLOUD_URL_,info['song']['url'])
if song_url is not None:
song_url = song_url.group() + "?client_id=b45b1aa10f1ac2941910a7f0d10f8e28"
else:
song_url = info['song']['url']
return [{
'id': video_id,
'url': song_url,
'ext': 'mp3',
'title': info['song']['title'],
'thumbnail': info['song']['image']['large'],
'uploader': info['song']['artist'],
'view_count': info['song']['loved_count'],
}]