diff options
| author | Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com> | 2014-02-10 20:58:34 +0100 | 
|---|---|---|
| committer | Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com> | 2014-02-10 21:00:37 +0100 | 
| commit | af6ba6a1c41aa1e8a5ea8b969e1be44b5cf2dd13 (patch) | |
| tree | 2d42c350f4fd6ea5135a4ff217b966c6dacffde5 | |
| parent | 85409a0c69fcd654eaf432d0dcc7f546fb488371 (diff) | |
[exfm] Modernize
| -rw-r--r-- | youtube_dl/extractor/exfm.py | 76 | 
1 files changed, 39 insertions, 37 deletions
| diff --git a/youtube_dl/extractor/exfm.py b/youtube_dl/extractor/exfm.py index 682901d16..4de02aee9 100644 --- a/youtube_dl/extractor/exfm.py +++ b/youtube_dl/extractor/exfm.py @@ -1,56 +1,58 @@ +from __future__ import unicode_literals +  import re -import json  from .common import InfoExtractor  class ExfmIE(InfoExtractor): -    IE_NAME = u'exfm' -    IE_DESC = u'ex.fm' -    _VALID_URL = r'(?:http://)?(?:www\.)?ex\.fm/song/([^/]+)' -    _SOUNDCLOUD_URL = r'(?:http://)?(?:www\.)?api\.soundcloud\.com/tracks/([^/]+)/stream' +    IE_NAME = 'exfm' +    IE_DESC = 'ex.fm' +    _VALID_URL = r'http://(?:www\.)?ex\.fm/song/(?P<id>[^/]+)' +    _SOUNDCLOUD_URL = r'http://(?:www\.)?api\.soundcloud\.com/tracks/([^/]+)/stream'      _TESTS = [          { -            u'url': u'http://ex.fm/song/eh359', -            u'file': u'44216187.mp3', -            u'md5': u'e45513df5631e6d760970b14cc0c11e7', -            u'info_dict': { -                u"title": u"Test House \"Love Is Not Enough\" (Extended Mix) DeadJournalist Exclusive", -                u"uploader": u"deadjournalist", -                u'upload_date': u'20120424', -                u'description': u'Test House \"Love Is Not Enough\" (Extended Mix) DeadJournalist Exclusive', +            'url': 'http://ex.fm/song/eh359', +            'md5': 'e45513df5631e6d760970b14cc0c11e7', +            'info_dict': { +                'id': '44216187', +                'ext': 'mp3', +                'title': 'Test House "Love Is Not Enough" (Extended Mix) DeadJournalist Exclusive', +                'uploader': 'deadjournalist', +                'upload_date': '20120424', +                'description': 'Test House \"Love Is Not Enough\" (Extended Mix) DeadJournalist Exclusive',              }, -            u'note': u'Soundcloud song', -            u'skip': u'The site is down too often', +            'note': 'Soundcloud song', +            'skip': 'The site is down too often',          },          { -            u'url': u'http://ex.fm/song/wddt8', -            u'file': u'wddt8.mp3', -            u'md5': u'966bd70741ac5b8570d8e45bfaed3643', -            u'info_dict': { -                u'title': u'Safe and Sound', -                u'uploader': u'Capital Cities', +            'url': 'http://ex.fm/song/wddt8', +            'md5': '966bd70741ac5b8570d8e45bfaed3643', +            'info_dict': { +                'id': 'wddt8', +                'ext': 'mp3', +                'title': 'Safe and Sound', +                'uploader': 'Capital Cities',              }, -            u'skip': u'The site is down too often', +            'skip': 'The site is down too often',          },      ]      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 = info['song']['url'] +        song_id = mobj.group('id') +        info_url = "http://ex.fm/api/v3/song/%s" % song_id +        info = self._download_json(info_url, song_id)['song'] +        song_url = info['url']          if re.match(self._SOUNDCLOUD_URL, song_url) is not None:              self.to_screen('Soundcloud song detected') -            return self.url_result(song_url.replace('/stream',''), 'Soundcloud') -        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'], -        }] +            return self.url_result(song_url.replace('/stream', ''), 'Soundcloud') +        return { +            'id': song_id, +            'url': song_url, +            'ext': 'mp3', +            'title': info['title'], +            'thumbnail': info['image']['large'], +            'uploader': info['artist'], +            'view_count': info['loved_count'], +        } | 
