[MiomioTv] Add new extractor
authortiktok <tiktok7@users.noreply.github.com>
Mon, 23 Mar 2015 00:42:17 +0000 (01:42 +0100)
committertiktok <tiktok7@users.noreply.github.com>
Mon, 23 Mar 2015 00:42:17 +0000 (01:42 +0100)
docs/supportedsites.md
youtube_dl/extractor/__init__.py
youtube_dl/extractor/miomio_tv.py [new file with mode: 0644]

index 062cb3d626443e7f69059aaea10c3ec3a30a7f28..53d280677b834386da3407bd8fbb093214740570 100644 (file)
  - **Mgoon**
  - **Minhateca**
  - **MinistryGrid**
  - **Mgoon**
  - **Minhateca**
  - **MinistryGrid**
+ - **Miomio.tv**
  - **mitele.es**
  - **mixcloud**
  - **MLB**
  - **mitele.es**
  - **mixcloud**
  - **MLB**
index ffcc7d9ab3c8fa44b99e5660ab179b84ace94429..37015477336e0e16d726725c620ef03eefdf95fe 100644 (file)
@@ -265,6 +265,7 @@ from .mdr import MDRIE
 from .metacafe import MetacafeIE
 from .metacritic import MetacriticIE
 from .mgoon import MgoonIE
 from .metacafe import MetacafeIE
 from .metacritic import MetacriticIE
 from .mgoon import MgoonIE
+from .miomio_tv import MiomioTvIE
 from .minhateca import MinhatecaIE
 from .ministrygrid import MinistryGridIE
 from .mit import TechTVMITIE, MITIE, OCWMITIE
 from .minhateca import MinhatecaIE
 from .ministrygrid import MinistryGridIE
 from .mit import TechTVMITIE, MITIE, OCWMITIE
diff --git a/youtube_dl/extractor/miomio_tv.py b/youtube_dl/extractor/miomio_tv.py
new file mode 100644 (file)
index 0000000..355774f
--- /dev/null
@@ -0,0 +1,70 @@
+# coding: utf-8
+from __future__ import unicode_literals
+
+from .common import InfoExtractor
+
+
+class MiomioTvIE(InfoExtractor):
+    IE_NAME = 'miomio.tv'
+    _VALID_URL = r'https?://(?:www\.)?miomio\.tv/watch/cc(?P<id>[0-9]+)'
+    _TEST = {
+        'url': 'http://www.miomio.tv/watch/cc179734/',
+        'md5': '48de02137d0739c15b440a224ad364b9',
+        'info_dict': {
+            'id': '179734',
+            'title': u'\u624b\u7ed8\u52a8\u6f2b\u9b3c\u6ce3\u4f46\u4e01\u5168\u7a0b\u753b\u6cd5',
+            'ext': 'flv'
+        }
+    }
+
+    def _real_extract(self, url):
+        video_id = self._match_id(url)
+        webpage = self._download_webpage(url, video_id)
+
+        title = self._html_search_regex(r'<meta\s+name="description"\s+content="\s*([^"]*)\s*"', webpage, 'title')
+        ref_path = self._search_regex(r'src="(/mioplayer/.*?)"', webpage, 'ref_path')
+        referer = 'http://www.miomio.tv{}'.format(ref_path)
+        xml_config = self._search_regex(r'flashvars="type=sina&amp;(.*?)&amp;cid=', webpage, 'xml config')
+        self._request_webpage("http://www.miomio.tv/mioplayer/mioplayerconfigfiles/xml.php?id={}&r=cc{}".format(id, 945), video_id)
+        xml_url = 'http://www.miomio.tv/mioplayer/mioplayerconfigfiles/sina.php?{}'.format(xml_config)
+        vidconfig = self._download_xml(xml_url, video_id)
+
+        file_els = vidconfig.findall('.//durl')
+
+        entries = []
+
+        for file_el in file_els:
+            segment_id = file_el.find('order').text.strip()
+            segment_title = '_'.join([title, segment_id])
+            segment_duration = file_el.find('length').text.strip()
+            segment_url = file_el.find('url').text.strip()
+
+            entries.append({
+                'id': segment_id,
+                'title': segment_title,
+                'duration': segment_duration,
+                'url': segment_url
+            })
+
+        http_headers = {
+            'Referer': referer,
+            'Accept-Language': 'en,en-US;q=0.7,de;q=0.3',
+            'Accept-Encoding': 'gzip, deflate',
+            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
+        }
+
+        if len(entries) == 1:
+            return {
+                'id': video_id,
+                'title': title,
+                'url': entries[0]['url'],
+                'http_headers': http_headers
+            }
+
+        return {
+            '_type': 'multi_video',
+            'id': video_id,
+            'title': title,
+            'entries': entries,
+            'http_headers': http_headers
+        }