aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlauren n. liberda <lauren@selfisekai.rocks>2023-02-02 14:32:14 +0100
committerGitHub <noreply@github.com>2023-02-02 19:02:14 +0530
commit7543c9c99bcb116b085fdb1f41b84a0ead04c05d (patch)
tree8b26d8dcf5c8c631c2bac8ab3a3f3714aa62974c
parentacacb57c7e173b93c6e0f0c43e61b9b2912719d8 (diff)
downloadhypervideo-pre-7543c9c99bcb116b085fdb1f41b84a0ead04c05d.tar.lz
hypervideo-pre-7543c9c99bcb116b085fdb1f41b84a0ead04c05d.tar.xz
hypervideo-pre-7543c9c99bcb116b085fdb1f41b84a0ead04c05d.zip
[extractor/twitter] Fix graphql extraction on some tweets (#6075)
Authored by: selfisekai
-rw-r--r--yt_dlp/extractor/twitter.py28
1 files changed, 27 insertions, 1 deletions
diff --git a/yt_dlp/extractor/twitter.py b/yt_dlp/extractor/twitter.py
index a4e280c82..d3e52f392 100644
--- a/yt_dlp/extractor/twitter.py
+++ b/yt_dlp/extractor/twitter.py
@@ -770,6 +770,29 @@ class TwitterIE(TwitterBaseIE):
},
'params': {'noplaylist': True},
}, {
+ # id pointing to TweetWithVisibilityResults type entity which wraps the actual Tweet over
+ # note the id different between extraction and url
+ 'url': 'https://twitter.com/s2FAKER/status/1621117700482416640',
+ 'info_dict': {
+ 'id': '1621117577354424321',
+ 'display_id': '1621117700482416640',
+ 'ext': 'mp4',
+ 'title': '뽀 - 아 최우제 이동속도 봐',
+ 'description': '아 최우제 이동속도 봐 https://t.co/dxu2U5vXXB',
+ 'duration': 24.598,
+ 'uploader': '뽀',
+ 'uploader_id': 's2FAKER',
+ 'uploader_url': 'https://twitter.com/s2FAKER',
+ 'upload_date': '20230202',
+ 'timestamp': 1675339553.0,
+ 'thumbnail': r're:https?://pbs\.twimg\.com/.+',
+ 'age_limit': 18,
+ 'tags': [],
+ 'like_count': int,
+ 'repost_count': int,
+ 'comment_count': int,
+ },
+ }, {
# onion route
'url': 'https://twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid.onion/TwitterBlue/status/1484226494708662273',
'only_matching': True,
@@ -811,9 +834,12 @@ class TwitterIE(TwitterBaseIE):
result = traverse_obj(data, (
'threaded_conversation_with_injections_v2', 'instructions', 0, 'entries',
lambda _, v: v['entryId'] == f'tweet-{twid}', 'content', 'itemContent',
- 'tweet_results', 'result'
+ 'tweet_results', 'result', ('tweet', None),
), expected_type=dict, default={}, get_all=False)
+ if result.get('__typename') not in ('Tweet', None):
+ self.report_warning(f'Unknown typename: {result.get("__typename")}', twid, only_once=True)
+
if 'tombstone' in result:
cause = traverse_obj(result, ('tombstone', 'text', 'text'), expected_type=str)
raise ExtractorError(f'Twitter API says: {cause or "Unknown error"}', expected=True)