Merge remote-tracking branch 'Dineshs91/f4m-2.0'
[youtube-dl] / youtube_dl / extractor / tapely.py
index 2c1178b1baedd592cabff19d386a836ab4f2aa1a..f1f43d0a7113cbf40e5dfd3ffb71af5e900fab78 100644 (file)
@@ -4,10 +4,12 @@ from __future__ import unicode_literals
 import re
 
 from .common import InfoExtractor
+from ..compat import (
+    compat_urllib_request,
+)
 from ..utils import (
-    ExtractorError,
     clean_html,
-    compat_urllib_request,
+    ExtractorError,
     float_or_none,
     parse_iso8601,
 )
@@ -17,6 +19,7 @@ class TapelyIE(InfoExtractor):
     _VALID_URL = r'https?://(?:www\.)?tape\.ly/(?P<id>[A-Za-z0-9\-_]+)(?:/(?P<songnr>\d+))?'
     _API_URL = 'http://tape.ly/showtape?id={0:}'
     _S3_SONG_URL = 'http://mytape.s3.amazonaws.com/{0:}'
+    _SOUNDCLOUD_SONG_URL = 'http://api.soundcloud.com{0:}'
     _TESTS = [
         {
             'url': 'http://tape.ly/my-grief-as-told-by-water',
@@ -49,6 +52,7 @@ class TapelyIE(InfoExtractor):
         request = compat_urllib_request.Request(playlist_url)
         request.add_header('X-Requested-With', 'XMLHttpRequest')
         request.add_header('Accept', 'application/json')
+        request.add_header('Referer', url)
 
         playlist = self._download_json(request, display_id)
 
@@ -68,9 +72,15 @@ class TapelyIE(InfoExtractor):
                 })
                 entries.append(entry)
             elif song['source'] == 'YT':
-                _, _, yt_id = song['filename'].split('/')
+                self.to_screen('YouTube video detected')
+                yt_id = song['filename'].replace('/youtube/', '')
                 entry.update(self.url_result(yt_id, 'Youtube', video_id=yt_id))
                 entries.append(entry)
+            elif song['source'] == 'SC':
+                self.to_screen('SoundCloud song detected')
+                sc_url = self._SOUNDCLOUD_SONG_URL.format(song['filename'])
+                entry.update(self.url_result(sc_url, 'Soundcloud'))
+                entries.append(entry)
             else:
                 self.report_warning('Unknown song source: %s' % song['source'])