2
0
Эх сурвалжийг харах

Merge remote-tracking branch 'xavierbeynon/audiomack'

Philipp Hagemeister 11 жил өмнө
parent
commit
7fc54e5262

+ 1 - 0
youtube_dl/__init__.py

@@ -82,6 +82,7 @@ __authors__  = (
     'Dennis Scheiba',
     'Dennis Scheiba',
     'Damon Timm',
     'Damon Timm',
     'winwon',
     'winwon',
+    'Xavier Beynon'
 )
 )
 
 
 __license__ = 'Public Domain'
 __license__ = 'Public Domain'

+ 1 - 0
youtube_dl/extractor/__init__.py

@@ -20,6 +20,7 @@ from .arte import (
     ArteTVDDCIE,
     ArteTVDDCIE,
     ArteTVEmbedIE,
     ArteTVEmbedIE,
 )
 )
+from .audiomack import AudiomackIE
 from .auengine import AUEngineIE
 from .auengine import AUEngineIE
 from .bambuser import BambuserIE, BambuserChannelIE
 from .bambuser import BambuserIE, BambuserChannelIE
 from .bandcamp import BandcampIE, BandcampAlbumIE
 from .bandcamp import BandcampIE, BandcampAlbumIE

+ 67 - 0
youtube_dl/extractor/audiomack.py

@@ -0,0 +1,67 @@
+# coding: utf-8
+from __future__ import unicode_literals
+
+from .common import InfoExtractor
+from .soundcloud import SoundcloudIE
+from ..utils import ExtractorError
+import datetime
+import time
+
+
+class AudiomackIE(InfoExtractor):
+    _VALID_URL = r'https?://(?:www\.)?audiomack\.com/song/(?P<id>[\w/-]+)'
+    IE_NAME = 'audiomack'
+    _TESTS = [
+        #hosted on audiomack
+        {
+            'url': 'http://www.audiomack.com/song/roosh-williams/extraordinary',
+            'info_dict':
+            {
+                'id' : 'roosh-williams/extraordinary',
+                'ext': 'mp3',
+                'title': 'Roosh Williams - Extraordinary'
+            }
+        },
+        #hosted on soundcloud via audiomack
+        {
+            'url': 'http://www.audiomack.com/song/xclusiveszone/take-kare',
+            'file': '172419696.mp3',
+            'info_dict':
+            {
+                'ext': 'mp3',
+                'title': 'Young Thug ft Lil Wayne - Take Kare',
+                "upload_date": "20141016",
+                "description": "New track produced by London On Da Track called “Take Kare\"\n\nhttp://instagram.com/theyoungthugworld\nhttps://www.facebook.com/ThuggerThuggerCashMoney\n",
+                "uploader": "Young Thug World"
+            }
+        }
+    ]
+
+    def _real_extract(self, url):
+        #id is what follows /song/ in url, usually the uploader name + title
+        id = self._match_id(url)
+
+        #Call the api, which gives us a json doc with the real url inside
+        rightnow = int(time.time())
+        apiresponse = self._download_json("http://www.audiomack.com/api/music/url/song/"+id+"?_="+str(rightnow), id)
+
+        if "url" not in apiresponse:
+            raise ExtractorError("Unable to deduce api url of song")
+        realurl = apiresponse["url"]
+
+        #Audiomack wraps a lot of soundcloud tracks in their branded wrapper
+        # - if so, pass the work off to the soundcloud extractor
+        if SoundcloudIE.suitable(realurl):
+            return {'_type': 'url', 'url': realurl, 'ie_key': 'Soundcloud'}
+        else:
+            #Pull out metadata
+            page = self._download_webpage(url, id)
+            artist = self._html_search_regex(r'<span class="artist">(.*)</span>', page, "artist")
+            songtitle = self._html_search_regex(r'<h1 class="profile-title song-title"><span class="artist">.*</span>(.*)</h1>', page, "title")
+            title = artist+" - "+songtitle
+            return {
+                'id': id,  # ignore id, which is not useful in song name
+                'title': title,
+                'url': realurl,
+                'ext': 'mp3'
+            }