From 59fc531f7824725bec716f5517cba48c9f95bc44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Marqui=CC=81nez=20Ferra=CC=81ndiz?= Date: Mon, 1 Jul 2013 21:08:54 +0200 Subject: [PATCH] Add InstagramIE (related #904) --- youtube_dl/extractor/__init__.py | 1 + youtube_dl/extractor/instagram.py | 42 +++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 youtube_dl/extractor/instagram.py diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py index ac2e5f0e7..41efc57d4 100644 --- a/youtube_dl/extractor/__init__.py +++ b/youtube_dl/extractor/__init__.py @@ -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 index 000000000..6ae704efd --- /dev/null +++ b/youtube_dl/extractor/instagram.py @@ -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'', + webpage, u'thumbnail URL', fatal=False) + html_title = self._html_search_regex( + r'(.+?)', + 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 + }]