diff --git a/youtube_dl/extractor/instagram.py b/youtube_dl/extractor/instagram.py index d08e1cba1..76ebecc92 100644 --- a/youtube_dl/extractor/instagram.py +++ b/youtube_dl/extractor/instagram.py @@ -126,6 +126,9 @@ class InstagramIE(InfoExtractor): uploader_id, like_count, comment_count, comments, height, width) = [None] * 11 + ext = 'mp4' + media_type = 'Video' + shared_data = self._parse_json( self._search_regex( r'window\._sharedData\s*=\s*({.+?});', @@ -148,10 +151,15 @@ class InstagramIE(InfoExtractor): elif media.get('display_resources'): display_resource = media['display_resources'][-1] # choosing highest resolution + media_url = display_resource.get('src') height = int_or_none(display_resource.get('config_height')) width = int_or_none(display_resource.get('config_width')) + if media_url: + ext = media_url.split('?', 1)[0].rsplit('.', 1)[-1] + media_type = 'Image' + description = try_get( media, lambda x: x['edge_media_to_caption']['edges'][0]['node']['text'], compat_str) or media.get('caption') @@ -228,8 +236,8 @@ class InstagramIE(InfoExtractor): return { 'id': video_id, 'formats': formats, - 'ext': 'mp4', - 'title': 'Video by %s' % uploader_id, + 'ext': ext, + 'title': '%s by %s' % (media_type, uploader_id), 'description': description, 'thumbnail': thumbnail, 'timestamp': timestamp,