[indavideo] Sign download URLs
authorAndrás Veres-Szentkirályi <vsza@vsza.hu>
Fri, 25 May 2018 17:46:05 +0000 (19:46 +0200)
committerSergey M <dstftw@gmail.com>
Fri, 25 May 2018 17:46:05 +0000 (00:46 +0700)
youtube_dl/extractor/indavideo.py

index 11cf3c60964fe55c21282ecccf48a7d80ae4bac5..15b766fb2af13eea40fa373cf12dfd19ae99f394 100644 (file)
@@ -2,10 +2,12 @@
 from __future__ import unicode_literals
 
 from .common import InfoExtractor
+from ..compat import compat_str
 from ..utils import (
     int_or_none,
     parse_age_limit,
     parse_iso8601,
+    update_url_query,
 )
 
 
@@ -58,11 +60,10 @@ class IndavideoEmbedIE(InfoExtractor):
             if flv_url not in video_urls:
                 video_urls.append(flv_url)
 
-        formats = [{
-            'url': video_url,
-            'height': int_or_none(self._search_regex(
-                r'\.(\d{3,4})\.mp4(?:\?|$)', video_url, 'height', default=None)),
-        } for video_url in video_urls]
+        filesh = video.get('filesh')
+        formats = [
+            self.video_url_to_format(video_url, filesh)
+            for video_url in video_urls]
         self._sort_formats(formats)
 
         timestamp = video.get('date')
@@ -90,6 +91,18 @@ class IndavideoEmbedIE(InfoExtractor):
             'formats': formats,
         }
 
+    def video_url_to_format(self, video_url, filesh):
+        height = int_or_none(self._search_regex(
+            r'\.(\d{3,4})\.mp4(?:\?|$)', video_url, 'height', default=None))
+        if height and filesh:
+            token = filesh.get(compat_str(height))
+            if token is not None:
+                video_url = update_url_query(video_url, {'token': token})
+        return {
+            'url': video_url,
+            'height': height,
+        }
+
 
 class IndavideoIE(InfoExtractor):
     _VALID_URL = r'https?://(?:.+?\.)?indavideo\.hu/video/(?P<id>[^/#?]+)'