Merge remote-tracking branch 'yasoob/master'

This commit is contained in:
Philipp Hagemeister 2013-07-20 11:23:56 +02:00
commit b390d85d95
3 changed files with 42 additions and 0 deletions

View File

@ -9,6 +9,7 @@ notifications:
- filippo.valsorda@gmail.com - filippo.valsorda@gmail.com
- phihag@phihag.de - phihag@phihag.de
- jaime.marquinez.ferrandiz+travis@gmail.com - jaime.marquinez.ferrandiz+travis@gmail.com
- yasoob.khld@gmail.com
# irc: # irc:
# channels: # channels:
# - "irc.freenode.org#youtube-dl" # - "irc.freenode.org#youtube-dl"

View File

@ -19,6 +19,7 @@
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,40 @@
import re
import json
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'
_TEST = {
u'url': u'http://ex.fm/song/1bgtzg',
u'file': u'1bgtzg.mp3',
u'md5': u'8a7967a3fef10e59a1d6f86240fd41cf',
u'info_dict': {
u"title": u"We Can't Stop",
u"uploader": u"Miley Cyrus",
u'thumbnail': u'http://i1.sndcdn.com/artworks-000049666230-w9i7ef-t500x500.jpg?9d68d37'
}
}
def _real_extract(self, url):
mobj = re.match(self._VALID_URL, url)
song_id = mobj.group(1)
info_url = "http://ex.fm/api/v3/song/%s" %(song_id)
webpage = self._download_webpage(info_url, song_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': song_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'],
}]