diff --git a/instaloader/instaloader.py b/instaloader/instaloader.py index bffa3cf..ddf8f8a 100644 --- a/instaloader/instaloader.py +++ b/instaloader/instaloader.py @@ -255,7 +255,8 @@ class Instaloader: return {'id': comment.id, 'created_at': int(comment.created_at_utc.replace(tzinfo=timezone.utc).timestamp()), 'text': comment.text, - 'owner': comment.owner._asdict()} + 'owner': comment.owner._asdict(), + 'likes_count': comment.likes_count} def _postcomment_asdict(comment): return {**_postcommentanswer_asdict(comment), @@ -272,11 +273,13 @@ class Instaloader: for x, y in zip(comments_list[:-1], comments_list[1:]): if x['id'] != y['id']: unique_comments_list.append(y) - elif combine_answers: - combined_answers = unique_comments_list[-1].get('answers') or list() - if 'answers' in y: - combined_answers.extend(y['answers']) - unique_comments_list[-1]['answers'] = get_unique_comments(combined_answers) + else: + unique_comments_list[-1]['likes_count'] = y.get('likes_count') + if combine_answers: + combined_answers = unique_comments_list[-1].get('answers') or list() + if 'answers' in y: + combined_answers.extend(y['answers']) + unique_comments_list[-1]['answers'] = get_unique_comments(combined_answers) return unique_comments_list filename += '_comments.json' try: diff --git a/instaloader/structures.py b/instaloader/structures.py index b638d9d..824cabf 100644 --- a/instaloader/structures.py +++ b/instaloader/structures.py @@ -17,11 +17,12 @@ PostSidecarNode.is_video.__doc__ = "Whether this node is a video." PostSidecarNode.display_url.__doc__ = "URL of image or video thumbnail." PostSidecarNode.video_url.__doc__ = "URL of video or None." -PostCommentAnswer = namedtuple('PostCommentAnswer', ['id', 'created_at_utc', 'text', 'owner']) +PostCommentAnswer = namedtuple('PostCommentAnswer', ['id', 'created_at_utc', 'text', 'owner', 'likes_count']) PostCommentAnswer.id.__doc__ = "ID number of comment." PostCommentAnswer.created_at_utc.__doc__ = ":class:`~datetime.datetime` when comment was created (UTC)." PostCommentAnswer.text.__doc__ = "Comment text." PostCommentAnswer.owner.__doc__ = "Owner :class:`Profile` of the comment." +PostCommentAnswer.likes_count.__doc__ = "Number of likes on comment." PostComment = namedtuple('PostComment', (*PostCommentAnswer._fields, 'answers')) # type: ignore for field in PostCommentAnswer._fields: @@ -340,7 +341,8 @@ class Post: return PostCommentAnswer(id=int(node['id']), created_at_utc=datetime.utcfromtimestamp(node['created_at']), text=node['text'], - owner=Profile(self._context, node['owner'])) + owner=Profile(self._context, node['owner']), + likes_count=node['edge_liked_by']['count']) def _postcommentanswers(node): if 'edge_threaded_comments' not in node: