From 0c22608dc79fb848983497702c652faea3c30055 Mon Sep 17 00:00:00 2001 From: JustAnotherArchivist Date: Thu, 1 Jul 2021 17:58:45 +0000 Subject: [PATCH] Extract video view count Also fix the broken ext values sent to Twitter Closes #246 --- snscrape/modules/twitter.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/snscrape/modules/twitter.py b/snscrape/modules/twitter.py index 8e58685..2b3d033 100644 --- a/snscrape/modules/twitter.py +++ b/snscrape/modules/twitter.py @@ -80,6 +80,7 @@ class Video(Medium): thumbnailUrl: str variants: typing.List[VideoVariant] duration: float + views: typing.Optional[int] = None @dataclasses.dataclass @@ -364,6 +365,8 @@ class TwitterAPIScraper(snscrape.base.Scraper): } if medium['type'] == 'video': mKwargs['duration'] = medium['video_info']['duration_millis'] / 1000 + if (ext := medium['ext']) and (mediaStats := ext['mediaStats']) and isinstance(r := mediaStats['r'], dict) and 'ok' in r and isinstance(r['ok'], dict): + mKwargs['views'] = int(r['ok']['viewCount']) cls = Video elif medium['type'] == 'animated_gif': cls = Gif @@ -497,7 +500,7 @@ class TwitterSearchScraper(TwitterAPIScraper): 'cursor': None, 'pc': '1', 'spelling_corrections': '1', - 'ext': 'ext=mediaStats%2ChighlightedLabel', + 'ext': 'mediaStats,highlightedLabel', } params = paginationParams.copy() del params['cursor'] @@ -630,7 +633,7 @@ class TwitterProfileScraper(TwitterUserScraper): 'userId': userId, 'count': '100', 'cursor': None, - 'ext': 'ext=mediaStats%2ChighlightedLabel', + 'ext': 'mediaStats,highlightedLabel', } params = paginationParams.copy() del params['cursor'] @@ -703,7 +706,7 @@ class TwitterTweetScraper(TwitterAPIScraper): 'count': '20', 'cursor': None, 'include_ext_has_birdwatch_notes': 'false', - 'ext': 'mediaStats%2ChighlightedLabel', + 'ext': 'mediaStats,highlightedLabel', } params = paginationParams.copy() del params['cursor']