about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPhilipp Hagemeister <phihag@phihag.de>2013-07-20 11:23:56 +0200
committerPhilipp Hagemeister <phihag@phihag.de>2013-07-20 11:23:56 +0200
commitb390d85d95fd9031668f2ae61b3f5594f4d297a7 (patch)
tree5bba1a33482eac39abcf1cfce947cf4b15a728d5
parentbe925dc64c92fefddbc0ed307ed3b83042c116ad (diff)
parent8e5e059d7d787b5618ab7269b44f66c4a2f509ec (diff)
downloadyoutube-dl-b390d85d95fd9031668f2ae61b3f5594f4d297a7.tar.gz
youtube-dl-b390d85d95fd9031668f2ae61b3f5594f4d297a7.tar.xz
youtube-dl-b390d85d95fd9031668f2ae61b3f5594f4d297a7.zip
Merge remote-tracking branch 'yasoob/master'
-rw-r--r--.travis.yml1
-rw-r--r--youtube_dl/extractor/__init__.py1
-rw-r--r--youtube_dl/extractor/exfm.py40
3 files changed, 42 insertions, 0 deletions
diff --git a/.travis.yml b/.travis.yml
index 7f1fa8a3c..45b71f11b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -9,6 +9,7 @@ notifications:
     - filippo.valsorda@gmail.com
     - phihag@phihag.de
     - jaime.marquinez.ferrandiz+travis@gmail.com
+    - yasoob.khld@gmail.com
 #  irc:
 #    channels:
 #      - "irc.freenode.org#youtube-dl"
diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py
index 749fa6558..b4a1c20e9 100644
--- a/youtube_dl/extractor/__init__.py
+++ b/youtube_dl/extractor/__init__.py
@@ -19,6 +19,7 @@ from .dreisat import DreiSatIE
 from .ehow import EHowIE
 from .eighttracks import EightTracksIE
 from .escapist import EscapistIE
+from .exfm import ExfmIE
 from .facebook import FacebookIE
 from .flickr import FlickrIE
 from .freesound import FreesoundIE
diff --git a/youtube_dl/extractor/exfm.py b/youtube_dl/extractor/exfm.py
new file mode 100644
index 000000000..81c620531
--- /dev/null
+++ b/youtube_dl/extractor/exfm.py
@@ -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'],
+        }]