[allmyvideos] Support multiple formats
[youtube-dl] / youtube_dl / extractor / allmyvideos.py
index 7764d4a14957888c40d0a2d2800e666acbd8a4c1..e6c60e7e46e3c2b4752f1c72ad7374df10ee616a 100644 (file)
@@ -1,6 +1,7 @@
 # coding: utf-8
 from __future__ import unicode_literals
 
+import os.path
 import re
 
 from .common import InfoExtractor
@@ -16,7 +17,7 @@ class AllmyvideosIE(InfoExtractor):
 
     _TEST = {
         'url': 'http://allmyvideos.net/jih3nce3x6wn',
-        'md5': '8f26c1e7102556a0d7f24306d32c2092',
+        'md5': '710883dee1bfc370ecf9fa6a89307c88',
         'info_dict': {
             'id': 'jih3nce3x6wn',
             'ext': 'mp4',
@@ -30,22 +31,29 @@ class AllmyvideosIE(InfoExtractor):
 
         orig_webpage = self._download_webpage(url, video_id)
         fields = re.findall(r'type="hidden" name="(.+?)"\s* value="?(.+?)">', orig_webpage)
-        data = {}
-        for name, value in fields:
-            data[name] = value
+        data = dict(fields)
 
         post = compat_urllib_parse.urlencode(data)
         headers = {
             b'Content-Type': b'application/x-www-form-urlencoded',
         }
         req = compat_urllib_request.Request(url, post, headers)
-        webpage = self._download_webpage(req, video_id, note='Downloading video page ...')
+        webpage = self._download_webpage(
+            req, video_id, note='Downloading video page ...')
+
+        title = os.path.splitext(data['fname'])[0]
 
         #Could be several links with different quality
         links = re.findall(r'"file" : "?(.+?)",', webpage)
+        # Assume the links are ordered in quality
+        formats = [{
+            'url': l,
+            'quality': i,
+        } for i, l in enumerate(links)]
+        self._sort_formats(formats)
 
         return {
             'id': video_id,
-            'title': data['fname'][:len(data['fname'])-4],  #Remove .mp4 extension
-            'url': links[len(links)-1]                      #Choose the higher quality link
-        }
\ No newline at end of file
+            'title': title,
+            'formats': formats,
+        }