about summary refs log tree commit diff
path: root/youtube_dl/extractor/instagram.py
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2017-11-15 22:14:54 +0700
committerSergey M․ <dstftw@gmail.com>2017-11-15 22:14:54 +0700
commit9cbd4dda10ad248a5268ec1e0e563cf97024a8b9 (patch)
tree611ccc66319b46ad1db973783e0d746aa4895b2a /youtube_dl/extractor/instagram.py
parent08e45b39e76419f63aa43d5008257789d8a30bf8 (diff)
downloadyoutube-dl-9cbd4dda10ad248a5268ec1e0e563cf97024a8b9.tar.gz
youtube-dl-9cbd4dda10ad248a5268ec1e0e563cf97024a8b9.tar.xz
youtube-dl-9cbd4dda10ad248a5268ec1e0e563cf97024a8b9.zip
[instagram] Fix description, timestamp and counters extraction (closes #14755)
Diffstat (limited to 'youtube_dl/extractor/instagram.py')
-rw-r--r--youtube_dl/extractor/instagram.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/youtube_dl/extractor/instagram.py b/youtube_dl/extractor/instagram.py
index 20db31f86..a77f619d2 100644
--- a/youtube_dl/extractor/instagram.py
+++ b/youtube_dl/extractor/instagram.py
@@ -130,13 +130,21 @@ class InstagramIE(InfoExtractor):
                 video_url = media.get('video_url')
                 height = int_or_none(media.get('dimensions', {}).get('height'))
                 width = int_or_none(media.get('dimensions', {}).get('width'))
-                description = media.get('caption')
+                description = try_get(
+                    media, lambda x: x['edge_media_to_caption']['edges'][0]['node']['text'],
+                    compat_str) or media.get('caption')
                 thumbnail = media.get('display_src')
-                timestamp = int_or_none(media.get('date'))
+                timestamp = int_or_none(media.get('taken_at_timestamp') or media.get('date'))
                 uploader = media.get('owner', {}).get('full_name')
                 uploader_id = media.get('owner', {}).get('username')
-                like_count = int_or_none(media.get('likes', {}).get('count'))
-                comment_count = int_or_none(media.get('comments', {}).get('count'))
+
+                def get_count(key, kind):
+                    return int_or_none(try_get(
+                        media, (lambda x: x['edge_media_%s' % key]['count'],
+                                lambda x: x['%ss' % kind]['count'])))
+                like_count = get_count('preview_like', 'like')
+                comment_count = get_count('to_comment', 'comment')
+
                 comments = [{
                     'author': comment.get('user', {}).get('username'),
                     'author_id': comment.get('user', {}).get('id'),