Add InstagramIE (related #904)
authorJaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com>
Mon, 1 Jul 2013 19:08:54 +0000 (21:08 +0200)
committerJaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com>
Mon, 1 Jul 2013 19:08:54 +0000 (21:08 +0200)
youtube_dl/extractor/__init__.py
youtube_dl/extractor/instagram.py [new file with mode: 0644]

index ac2e5f0e781a55caa830cc05628a96ed615da089..41efc57d4d7470ccb24797050964612a4351008d 100644 (file)
@@ -25,6 +25,7 @@ from .howcast import HowcastIE
 from .hypem import HypemIE
 from .ina import InaIE
 from .infoq import InfoQIE
+from .instagram import InstagramIE
 from .jukebox import JukeboxIE
 from .justintv import JustinTVIE
 from .keek import KeekIE
diff --git a/youtube_dl/extractor/instagram.py b/youtube_dl/extractor/instagram.py
new file mode 100644 (file)
index 0000000..6ae704e
--- /dev/null
@@ -0,0 +1,42 @@
+import re
+
+from .common import InfoExtractor
+
+class InstagramIE(InfoExtractor):
+    _VALID_URL = r'(?:http://)?instagram.com/p/(.*?)/'
+    _TEST = {
+        u'url': u'http://instagram.com/p/aye83DjauH/#',
+        u'file': u'aye83DjauH.mp4',
+        u'md5': u'0d2da106a9d2631273e192b372806516',
+        u'info_dict': {
+            u"uploader_id": u"naomipq", 
+            u"title": u"Video by naomipq"
+        }
+    }
+
+    def _real_extract(self, url):
+        mobj = re.match(self._VALID_URL, url)
+        video_id = mobj.group(1)
+        webpage = self._download_webpage(url, video_id)
+        video_url = self._html_search_regex(
+            r'<meta property="og:video" content="(.+?)"',
+            webpage, u'video URL')
+        thumbnail_url = self._html_search_regex(
+            r'<meta property="og:image" content="(.+?)" />',
+            webpage, u'thumbnail URL', fatal=False)
+        html_title = self._html_search_regex(
+            r'<title>(.+?)</title>',
+            webpage, u'title', flags=re.DOTALL)
+        title = re.sub(u'(?: *\(Videos?\))? \u2022 Instagram$', '', html_title).strip()
+        uploader_id = self._html_search_regex(r'content="(.*?)\'s video on Instagram',
+            webpage, u'uploader name', fatal=False)
+        ext = 'mp4'
+
+        return [{
+            'id':        video_id,
+            'url':       video_url,
+            'ext':       ext,
+            'title':     title,
+            'thumbnail': thumbnail_url,
+            'uploader_id' : uploader_id
+        }]