mirror of
https://github.com/thegeneralist01/twitter-openapi
synced 2026-01-11 15:40:26 +01:00
Merge branch 'dev'
Signed-off-by: ふぁ <yuki@yuki0311.com>
This commit is contained in:
commit
fb626cc2ff
23 changed files with 1707 additions and 1352 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -3,4 +3,5 @@ __pycache__/
|
||||||
cookie.json
|
cookie.json
|
||||||
*_generated
|
*_generated
|
||||||
*.jar
|
*.jar
|
||||||
cache/
|
cache/
|
||||||
|
tools/input.js
|
||||||
17
.vscode/settings.json
vendored
17
.vscode/settings.json
vendored
|
|
@ -6,14 +6,23 @@
|
||||||
"yaml.schemas": {
|
"yaml.schemas": {
|
||||||
"https://raw.githubusercontent.com/OAI/OpenAPI-Specification/main/schemas/v3.0/schema.json": "src/**/*.yaml"
|
"https://raw.githubusercontent.com/OAI/OpenAPI-Specification/main/schemas/v3.0/schema.json": "src/**/*.yaml"
|
||||||
},
|
},
|
||||||
|
"[json]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[jsonc]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
"[yaml]": {
|
"[yaml]": {
|
||||||
"editor.defaultFormatter": "redhat.vscode-yaml"
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[markdown]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
},
|
},
|
||||||
// "python.analysis.typeCheckingMode": "basic",
|
// "python.analysis.typeCheckingMode": "basic",
|
||||||
"[python]": {
|
"[python]": {
|
||||||
"editor.codeActionsOnSave": {
|
"editor.codeActionsOnSave": {
|
||||||
"source.organizeImports": "explicit",
|
"source.organizeImports": "explicit",
|
||||||
"source.fixAll": "explicit",
|
"source.fixAll": "explicit"
|
||||||
},
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
7
.vscode/tasks.json
vendored
7
.vscode/tasks.json
vendored
|
|
@ -16,7 +16,6 @@
|
||||||
"command": [
|
"command": [
|
||||||
".venv/Scripts/activate;",
|
".venv/Scripts/activate;",
|
||||||
"python tools/build.py;",
|
"python tools/build.py;",
|
||||||
"scoop reset temurin11-jdk;",
|
|
||||||
"java -jar openapi-generator-cli.jar generate -c test/python/openapi-generator-config.yaml -g python;",
|
"java -jar openapi-generator-cli.jar generate -c test/python/openapi-generator-config.yaml -g python;",
|
||||||
"python -m pip install ./python_generated;"
|
"python -m pip install ./python_generated;"
|
||||||
]
|
]
|
||||||
|
|
@ -32,16 +31,16 @@
|
||||||
"command": [
|
"command": [
|
||||||
"python3 -m venv .venv;",
|
"python3 -m venv .venv;",
|
||||||
".venv/bin/python3 -m pip install -r requirements.txt;",
|
".venv/bin/python3 -m pip install -r requirements.txt;",
|
||||||
"wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.4.0/openapi-generator-cli-7.4.0.jar -O openapi-generator-cli.jar;"
|
"wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.8.0/openapi-generator-cli-7.8.0.jar -O openapi-generator-cli.jar;"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"windows": {
|
"windows": {
|
||||||
"command": [
|
"command": [
|
||||||
"python -m venv .venv;",
|
"python -m venv .venv;",
|
||||||
".venv/Scripts/python -m pip install -r requirements.txt;",
|
".venv/Scripts/python -m pip install -r requirements.txt;",
|
||||||
"Invoke-WebRequest https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.4.0/openapi-generator-cli-7.4.0.jar -OutFile openapi-generator-cli.jar;"
|
"Invoke-WebRequest https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.8.0/openapi-generator-cli-7.8.0.jar -OutFile openapi-generator-cli.jar;"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
807
dist/compatible/openapi-3.0.yaml
vendored
807
dist/compatible/openapi-3.0.yaml
vendored
File diff suppressed because it is too large
Load diff
807
dist/compatible_discriminator/openapi-3.0.yaml
vendored
807
dist/compatible_discriminator/openapi-3.0.yaml
vendored
File diff suppressed because it is too large
Load diff
637
dist/docs/openapi-3.0.yaml
vendored
637
dist/docs/openapi-3.0.yaml
vendored
File diff suppressed because it is too large
Load diff
31
other/error/GenericError.json
Normal file
31
other/error/GenericError.json
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
"errors": [
|
||||||
|
{
|
||||||
|
"message": "_Missing: No status found with that ID.",
|
||||||
|
"locations": [
|
||||||
|
{
|
||||||
|
"line": 2,
|
||||||
|
"column": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": ["threaded_conversation_with_injections_v2"],
|
||||||
|
"extensions": {
|
||||||
|
"name": "GenericError",
|
||||||
|
"source": "Server",
|
||||||
|
"code": 144,
|
||||||
|
"kind": "NonFatal",
|
||||||
|
"tracing": {
|
||||||
|
"trace_id": "e6de8b2b694ae128"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"code": 144,
|
||||||
|
"kind": "NonFatal",
|
||||||
|
"name": "GenericError",
|
||||||
|
"source": "Server",
|
||||||
|
"tracing": {
|
||||||
|
"trace_id": "e6de8b2b694ae128"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"data": {}
|
||||||
|
}
|
||||||
BIN
requirements.txt
BIN
requirements.txt
Binary file not shown.
|
|
@ -11,7 +11,7 @@ paths:
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
default: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
|
default: "Not Implemented"
|
||||||
description: "UserAgent, some APIs may be rejected if changed."
|
description: "UserAgent, some APIs may be rejected if changed."
|
||||||
- name: authorization
|
- name: authorization
|
||||||
in: header
|
in: header
|
||||||
|
|
@ -118,8 +118,8 @@ paths:
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
default: "https://twitter.com/home"
|
default: "https://x.com/home"
|
||||||
description: "https://twitter.com/home"
|
description: "https://x.com/home"
|
||||||
- name: Priority
|
- name: Priority
|
||||||
in: header
|
in: header
|
||||||
required: true
|
required: true
|
||||||
|
|
@ -135,7 +135,7 @@ paths:
|
||||||
components:
|
components:
|
||||||
securitySchemes:
|
securitySchemes:
|
||||||
UserAgent:
|
UserAgent:
|
||||||
description: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
|
description: "Not Implemented"
|
||||||
in: header
|
in: header
|
||||||
name: user-agent
|
name: user-agent
|
||||||
type: apiKey
|
type: apiKey
|
||||||
|
|
@ -211,7 +211,7 @@ components:
|
||||||
name: Sec-Fetch-Site
|
name: Sec-Fetch-Site
|
||||||
type: apiKey
|
type: apiKey
|
||||||
Referer:
|
Referer:
|
||||||
description: "https://twitter.com/home"
|
description: "https://x.com/home"
|
||||||
in: header
|
in: header
|
||||||
name: Referer
|
name: Referer
|
||||||
type: apiKey
|
type: apiKey
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,13 @@
|
||||||
{
|
{
|
||||||
"HomeTimeline": {
|
"HomeTimeline": {
|
||||||
"queryId": "q1x0puFIVMzsbx2Yoh-usA",
|
"queryId": "HJFjzBgCs16TqxewQOeLNg",
|
||||||
"variables": {
|
"variables": {
|
||||||
"count": 20,
|
"count": 20,
|
||||||
"includePromotedContent": true,
|
"includePromotedContent": true,
|
||||||
"latestControlAvailable": true,
|
"latestControlAvailable": true,
|
||||||
"requestContext": "launch",
|
"requestContext": "launch",
|
||||||
"withCommunity": true,
|
"withCommunity": true,
|
||||||
"seenTweetIds": [
|
"seenTweetIds": ["1349129669258448897"]
|
||||||
"1349129669258448897"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
"rweb_tipjar_consumption_enabled": true,
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
|
|
@ -21,7 +19,6 @@
|
||||||
"communities_web_enable_tweet_community_results_fetch": true,
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"articles_preview_enabled": true,
|
"articles_preview_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
|
|
@ -32,7 +29,6 @@
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_media_interstitial_enabled": true,
|
|
||||||
"rweb_video_timestamps_enabled": true,
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
|
|
@ -40,15 +36,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"HomeLatestTimeline": {
|
"HomeLatestTimeline": {
|
||||||
"queryId": "eL8vHLgEw2ZL9X9dKdakLQ",
|
"queryId": "DiTkXJgLqBBxCs7zaYsbtA",
|
||||||
"variables": {
|
"variables": {
|
||||||
"count": 20,
|
"count": 20,
|
||||||
"includePromotedContent": true,
|
"includePromotedContent": true,
|
||||||
"latestControlAvailable": true,
|
"latestControlAvailable": true,
|
||||||
"requestContext": "launch",
|
"requestContext": "launch",
|
||||||
"seenTweetIds": [
|
"seenTweetIds": ["1349129669258448897"]
|
||||||
"1349129669258448897"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
"rweb_tipjar_consumption_enabled": true,
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
|
|
@ -60,7 +54,6 @@
|
||||||
"communities_web_enable_tweet_community_results_fetch": true,
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"articles_preview_enabled": true,
|
"articles_preview_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
|
|
@ -71,7 +64,6 @@
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_media_interstitial_enabled": true,
|
|
||||||
"rweb_video_timestamps_enabled": true,
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
|
|
@ -79,7 +71,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ListLatestTweetsTimeline": {
|
"ListLatestTweetsTimeline": {
|
||||||
"queryId": "GX5ovLTwyoN1Td13GHvhIg",
|
"queryId": "Pa45JvqZuKcW1plybfgBlQ",
|
||||||
"variables": {
|
"variables": {
|
||||||
"listId": "1539453138322673664",
|
"listId": "1539453138322673664",
|
||||||
"count": 20
|
"count": 20
|
||||||
|
|
@ -94,7 +86,6 @@
|
||||||
"communities_web_enable_tweet_community_results_fetch": true,
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"articles_preview_enabled": true,
|
"articles_preview_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
|
|
@ -105,7 +96,6 @@
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_media_interstitial_enabled": true,
|
|
||||||
"rweb_video_timestamps_enabled": true,
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
|
|
@ -113,20 +103,21 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"UserByScreenName": {
|
"UserByScreenName": {
|
||||||
"queryId": "k5XapwcSikNsEsILW5FvgA",
|
"queryId": "Yka-W8dz7RaEuQNkroPkYw",
|
||||||
"variables": {
|
"variables": {
|
||||||
"screen_name": "elonmusk",
|
"screen_name": "elonmusk",
|
||||||
"withSafetyModeUserFields": true
|
"withSafetyModeUserFields": true
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
"hidden_profile_likes_enabled": true,
|
|
||||||
"hidden_profile_subscriptions_enabled": true,
|
"hidden_profile_subscriptions_enabled": true,
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
"responsive_web_graphql_exclude_directive_enabled": true,
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
"verified_phone_label_enabled": false,
|
"verified_phone_label_enabled": false,
|
||||||
"subscriptions_verification_info_is_identity_verified_enabled": true,
|
"subscriptions_verification_info_is_identity_verified_enabled": true,
|
||||||
"subscriptions_verification_info_verified_since_enabled": true,
|
"subscriptions_verification_info_verified_since_enabled": true,
|
||||||
"highlights_tweets_tab_ui_enabled": true,
|
"highlights_tweets_tab_ui_enabled": true,
|
||||||
"responsive_web_twitter_article_notes_tab_enabled": true,
|
"responsive_web_twitter_article_notes_tab_enabled": true,
|
||||||
|
"subscriptions_feature_can_gift_premium": true,
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true
|
"responsive_web_graphql_timeline_navigation_enabled": true
|
||||||
|
|
@ -154,13 +145,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"UsersByRestIds": {
|
"UsersByRestIds": {
|
||||||
"queryId": "itEhGywpgX9b3GJCzOtSrA",
|
"queryId": "GYBpHkmyXjeuX9IeNJmweA",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userIds": [
|
"userIds": ["44196397"]
|
||||||
"44196397"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
"responsive_web_graphql_exclude_directive_enabled": true,
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
"verified_phone_label_enabled": false,
|
"verified_phone_label_enabled": false,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
|
@ -168,14 +158,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ProfileSpotlightsQuery": {
|
"ProfileSpotlightsQuery": {
|
||||||
"queryId": "X-Sw7rvhcUhof35mh5ObKw",
|
"queryId": "-0XdHI-mrHWBQd8-oLo1aA",
|
||||||
"variables": {
|
"variables": {
|
||||||
"screen_name": "elonmusk"
|
"screen_name": "elonmusk"
|
||||||
},
|
},
|
||||||
"features": {}
|
"features": {}
|
||||||
},
|
},
|
||||||
"UserTweets": {
|
"UserTweets": {
|
||||||
"queryId": "5ICa5d9-AitXZrIA3H-4MQ",
|
"queryId": "E3opETHurmVJflFsUBVuUQ",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userId": "44196397",
|
"userId": "44196397",
|
||||||
"count": 40,
|
"count": 40,
|
||||||
|
|
@ -185,31 +175,33 @@
|
||||||
"withV2Timeline": true
|
"withV2Timeline": true
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
"responsive_web_graphql_exclude_directive_enabled": true,
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
"verified_phone_label_enabled": false,
|
"verified_phone_label_enabled": false,
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"articles_preview_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
|
"creator_subscriptions_quote_tweet_preview_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
"rweb_video_timestamps_enabled": true,
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
|
||||||
"responsive_web_enhance_cards_enabled": false
|
"responsive_web_enhance_cards_enabled": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"UserTweetsAndReplies": {
|
"UserTweetsAndReplies": {
|
||||||
"queryId": "UtLStR_BnYUGD7Q453UXQg",
|
"queryId": "bt4TKuFz4T7Ckk-VvQVSow",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userId": "44196397",
|
"userId": "44196397",
|
||||||
"count": 40,
|
"count": 40,
|
||||||
|
|
@ -219,31 +211,33 @@
|
||||||
"withV2Timeline": true
|
"withV2Timeline": true
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
"responsive_web_graphql_exclude_directive_enabled": true,
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
"verified_phone_label_enabled": false,
|
"verified_phone_label_enabled": false,
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"articles_preview_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
|
"creator_subscriptions_quote_tweet_preview_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
"rweb_video_timestamps_enabled": true,
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
|
||||||
"responsive_web_enhance_cards_enabled": false
|
"responsive_web_enhance_cards_enabled": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"UserHighlightsTweets": {
|
"UserHighlightsTweets": {
|
||||||
"queryId": "ZRU-YBvpJ5c-SOS-nb_Lhg",
|
"queryId": "Z-XscDcWUuMO5HalgHf57A",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userId": "44196397",
|
"userId": "44196397",
|
||||||
"count": 40,
|
"count": 40,
|
||||||
|
|
@ -251,31 +245,33 @@
|
||||||
"withVoice": true
|
"withVoice": true
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
"responsive_web_graphql_exclude_directive_enabled": true,
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
"verified_phone_label_enabled": false,
|
"verified_phone_label_enabled": false,
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"articles_preview_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
|
"creator_subscriptions_quote_tweet_preview_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
"rweb_video_timestamps_enabled": true,
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
|
||||||
"responsive_web_enhance_cards_enabled": false
|
"responsive_web_enhance_cards_enabled": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"UserMedia": {
|
"UserMedia": {
|
||||||
"queryId": "tO4LMUYAZbR4T0SqQ85aAw",
|
"queryId": "dexO_2tohK86JDudXXG3Yw",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userId": "44196397",
|
"userId": "44196397",
|
||||||
"count": 40,
|
"count": 40,
|
||||||
|
|
@ -286,31 +282,33 @@
|
||||||
"withV2Timeline": true
|
"withV2Timeline": true
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
"responsive_web_graphql_exclude_directive_enabled": true,
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
"verified_phone_label_enabled": false,
|
"verified_phone_label_enabled": false,
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"articles_preview_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
|
"creator_subscriptions_quote_tweet_preview_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
"rweb_video_timestamps_enabled": true,
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
|
||||||
"responsive_web_enhance_cards_enabled": false
|
"responsive_web_enhance_cards_enabled": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Likes": {
|
"Likes": {
|
||||||
"queryId": "9s8V6sUI8fZLDiN-REkAxA",
|
"queryId": "aeJWz--kknVBOl7wQ7gh7Q",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userId": "44196397",
|
"userId": "44196397",
|
||||||
"count": 20,
|
"count": 20,
|
||||||
|
|
@ -321,62 +319,66 @@
|
||||||
"withV2Timeline": true
|
"withV2Timeline": true
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
"responsive_web_graphql_exclude_directive_enabled": true,
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
"verified_phone_label_enabled": false,
|
"verified_phone_label_enabled": false,
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"articles_preview_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
|
"creator_subscriptions_quote_tweet_preview_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
"rweb_video_timestamps_enabled": true,
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
|
||||||
"responsive_web_enhance_cards_enabled": false
|
"responsive_web_enhance_cards_enabled": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Bookmarks": {
|
"Bookmarks": {
|
||||||
"queryId": "cQxQgX8MJYjWwC0dxpyfYg",
|
"queryId": "QUjXply7fA7fk05FRyajEg",
|
||||||
"variables": {
|
"variables": {
|
||||||
"count": 20,
|
"count": 20,
|
||||||
"includePromotedContent": true
|
"includePromotedContent": true
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
"graphql_timeline_v2_bookmark_timeline": true,
|
"graphql_timeline_v2_bookmark_timeline": true,
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
"responsive_web_graphql_exclude_directive_enabled": true,
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
"verified_phone_label_enabled": false,
|
"verified_phone_label_enabled": false,
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"articles_preview_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
|
"creator_subscriptions_quote_tweet_preview_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
"rweb_video_timestamps_enabled": true,
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
|
||||||
"responsive_web_enhance_cards_enabled": false
|
"responsive_web_enhance_cards_enabled": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"TweetDetail": {
|
"TweetDetail": {
|
||||||
"queryId": "zJvfJs3gSbrVhC0MKjt_OQ",
|
"queryId": "QuBlQ6SxNAQCt6-kBiCXCQ",
|
||||||
"variables": {
|
"variables": {
|
||||||
"focalTweetId": "1349129669258448897",
|
"focalTweetId": "1349129669258448897",
|
||||||
"referrer": "home",
|
"referrer": "home",
|
||||||
|
|
@ -398,7 +400,6 @@
|
||||||
"communities_web_enable_tweet_community_results_fetch": true,
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"articles_preview_enabled": true,
|
"articles_preview_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
|
|
@ -409,7 +410,6 @@
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_media_interstitial_enabled": true,
|
|
||||||
"rweb_video_timestamps_enabled": true,
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
|
|
@ -461,7 +461,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"SearchTimeline": {
|
"SearchTimeline": {
|
||||||
"queryId": "fZK7JipRHWtiZsTodhsTfQ",
|
"queryId": "UN1i3zUiCWa-6r-Uaho4fw",
|
||||||
"variables": {
|
"variables": {
|
||||||
"rawQuery": "elonmusk",
|
"rawQuery": "elonmusk",
|
||||||
"count": 20,
|
"count": 20,
|
||||||
|
|
@ -469,26 +469,28 @@
|
||||||
"product": "Top"
|
"product": "Top"
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
"responsive_web_graphql_exclude_directive_enabled": true,
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
"verified_phone_label_enabled": false,
|
"verified_phone_label_enabled": false,
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"articles_preview_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
|
"creator_subscriptions_quote_tweet_preview_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
"rweb_video_timestamps_enabled": true,
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
|
||||||
"responsive_web_enhance_cards_enabled": false
|
"responsive_web_enhance_cards_enabled": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -524,162 +526,172 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Retweeters": {
|
"Retweeters": {
|
||||||
"queryId": "X-XEqG5qHQSAwmvy00xfyQ",
|
"queryId": "8019obfgnveiPiJuS2Rtow",
|
||||||
"variables": {
|
"variables": {
|
||||||
"tweetId": "1349129669258448897",
|
"tweetId": "1349129669258448897",
|
||||||
"count": 20,
|
"count": 20,
|
||||||
"includePromotedContent": true
|
"includePromotedContent": true
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
"responsive_web_graphql_exclude_directive_enabled": true,
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
"verified_phone_label_enabled": false,
|
"verified_phone_label_enabled": false,
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"articles_preview_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
|
"creator_subscriptions_quote_tweet_preview_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
"rweb_video_timestamps_enabled": true,
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
|
||||||
"responsive_web_enhance_cards_enabled": false
|
"responsive_web_enhance_cards_enabled": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Followers": {
|
"Followers": {
|
||||||
"queryId": "ZG1BQPaRSg04qo55kKaW2g",
|
"queryId": "OSXFkKmGvfw_6pGgGtkWFg",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userId": "44196397",
|
"userId": "44196397",
|
||||||
"count": 20,
|
"count": 20,
|
||||||
"includePromotedContent": false
|
"includePromotedContent": false
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
"responsive_web_graphql_exclude_directive_enabled": true,
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
"verified_phone_label_enabled": false,
|
"verified_phone_label_enabled": false,
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"articles_preview_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
|
"creator_subscriptions_quote_tweet_preview_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
"rweb_video_timestamps_enabled": true,
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
|
||||||
"responsive_web_enhance_cards_enabled": false
|
"responsive_web_enhance_cards_enabled": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Following": {
|
"Following": {
|
||||||
"queryId": "PAnE9toEjRfE-4tozRcsfw",
|
"queryId": "7oQrdmth4zE3EtD42ZxgOA",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userId": "44196397",
|
"userId": "44196397",
|
||||||
"count": 20,
|
"count": 20,
|
||||||
"includePromotedContent": false
|
"includePromotedContent": false
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
"responsive_web_graphql_exclude_directive_enabled": true,
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
"verified_phone_label_enabled": false,
|
"verified_phone_label_enabled": false,
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"articles_preview_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
|
"creator_subscriptions_quote_tweet_preview_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
"rweb_video_timestamps_enabled": true,
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
|
||||||
"responsive_web_enhance_cards_enabled": false
|
"responsive_web_enhance_cards_enabled": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"BlueVerifiedFollowers": {
|
"BlueVerifiedFollowers": {
|
||||||
"queryId": "mg4dFO4kMIKt6tpqPMmFeg",
|
"queryId": "cpPRJUmSz2Fiu1PpIYmEsw",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userId": "1347135745706708993",
|
"userId": "1347135745706708993",
|
||||||
"count": 20,
|
"count": 20,
|
||||||
"includePromotedContent": false
|
"includePromotedContent": false
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
"responsive_web_graphql_exclude_directive_enabled": true,
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
"verified_phone_label_enabled": false,
|
"verified_phone_label_enabled": false,
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"articles_preview_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
|
"creator_subscriptions_quote_tweet_preview_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
"rweb_video_timestamps_enabled": true,
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
|
||||||
"responsive_web_enhance_cards_enabled": false
|
"responsive_web_enhance_cards_enabled": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"FollowersYouKnow": {
|
"FollowersYouKnow": {
|
||||||
"queryId": "citX7s5IAb1C6AVCqUO68g",
|
"queryId": "52sUpz5G7XvESPWgKW9i9Q",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userId": "44196397",
|
"userId": "44196397",
|
||||||
"count": 20,
|
"count": 20,
|
||||||
"includePromotedContent": false
|
"includePromotedContent": false
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
"responsive_web_graphql_exclude_directive_enabled": true,
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
"verified_phone_label_enabled": false,
|
"verified_phone_label_enabled": false,
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"articles_preview_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
|
"creator_subscriptions_quote_tweet_preview_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
"rweb_video_timestamps_enabled": true,
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
|
||||||
"responsive_web_enhance_cards_enabled": false
|
"responsive_web_enhance_cards_enabled": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"CreateTweet": {
|
"CreateTweet": {
|
||||||
"queryId": "8ED1SMuUGkOZVBEjiYUTfw",
|
"queryId": "xT36w0XM3A8jDynpkram2A",
|
||||||
"variables": {
|
"variables": {
|
||||||
"tweet_text": "test",
|
"tweet_text": "test",
|
||||||
"media": {
|
"media": {
|
||||||
|
|
@ -696,26 +708,29 @@
|
||||||
"in_reply_to_tweet_id": "1111111111111111111",
|
"in_reply_to_tweet_id": "1111111111111111111",
|
||||||
"exclude_reply_user_ids": []
|
"exclude_reply_user_ids": []
|
||||||
},
|
},
|
||||||
"dark_request": false
|
"dark_request": false,
|
||||||
|
"disallowed_reply_options": false
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
|
"creator_subscriptions_quote_tweet_preview_enabled": false,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
|
"articles_preview_enabled": true,
|
||||||
"rweb_video_timestamps_enabled": true,
|
"rweb_video_timestamps_enabled": true,
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
"responsive_web_graphql_exclude_directive_enabled": true,
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
"verified_phone_label_enabled": false,
|
"verified_phone_label_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_enhance_cards_enabled": false
|
"responsive_web_enhance_cards_enabled": false
|
||||||
|
|
@ -724,8 +739,7 @@
|
||||||
"FavoriteTweet": {
|
"FavoriteTweet": {
|
||||||
"queryId": "lI07N6Otwv1PhnEgXILM7A",
|
"queryId": "lI07N6Otwv1PhnEgXILM7A",
|
||||||
"variables": {
|
"variables": {
|
||||||
"tweet_id": "1349129669258448897",
|
"tweet_id": "1349129669258448897"
|
||||||
"dark_request": false
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"UnfavoriteTweet": {
|
"UnfavoriteTweet": {
|
||||||
|
|
@ -769,7 +783,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"#=====v1.1====": {
|
"#=====v1.1====": {
|
||||||
"url": "https://twitter.com/i/api/1.1/"
|
"url": "https://x.com/i/api/1.1/"
|
||||||
},
|
},
|
||||||
"friendships/create.json": {
|
"friendships/create.json": {
|
||||||
"include_profile_interstitial_type": 1,
|
"include_profile_interstitial_type": 1,
|
||||||
|
|
@ -831,7 +845,7 @@
|
||||||
"result_type": "events,users,topics"
|
"result_type": "events,users,topics"
|
||||||
},
|
},
|
||||||
"#=====v2====": {
|
"#=====v2====": {
|
||||||
"url": "https://twitter.com/i/api/2"
|
"url": "https://x.com/i/api/2"
|
||||||
},
|
},
|
||||||
"search/adaptive.json": {
|
"search/adaptive.json": {
|
||||||
"include_profile_interstitial_type": 1,
|
"include_profile_interstitial_type": 1,
|
||||||
|
|
@ -871,5 +885,166 @@
|
||||||
"spelling_corrections": 1,
|
"spelling_corrections": 1,
|
||||||
"include_ext_edit_control": true,
|
"include_ext_edit_control": true,
|
||||||
"ext": "mediaStats,highlightedLabel,hasNftAvatar,voiceInfo,birdwatchPivot,enrichments,superFollowMetadata,unmentionInfo,editControl,vibe"
|
"ext": "mediaStats,highlightedLabel,hasNftAvatar,voiceInfo,birdwatchPivot,enrichments,superFollowMetadata,unmentionInfo,editControl,vibe"
|
||||||
|
},
|
||||||
|
"#=====NotImplemented====": {},
|
||||||
|
"DataSaverMode": {
|
||||||
|
"queryId": "xF6sXnKJfS2AOylzxRjf6A"
|
||||||
|
},
|
||||||
|
"PinnedTimelines": {
|
||||||
|
"queryId": "xUjP0kS7EE05CLp3KUD-Eg",
|
||||||
|
"features": {
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
|
"verified_phone_label_enabled": false,
|
||||||
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"responsive_web_graphql_timeline_navigation_enabled": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"getAltTextPromptPreference": {
|
||||||
|
"queryId": "PFIxTk8owMoZgiMccP0r4g"
|
||||||
|
},
|
||||||
|
"ExploreSidebar": {
|
||||||
|
"queryId": "rqiZoeu9EBUhOqZdKY139g",
|
||||||
|
"features": {
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
|
"verified_phone_label_enabled": false,
|
||||||
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
|
"articles_preview_enabled": true,
|
||||||
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
|
"view_counts_everywhere_api_enabled": true,
|
||||||
|
"longform_notetweets_consumption_enabled": true,
|
||||||
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
|
"creator_subscriptions_quote_tweet_preview_enabled": false,
|
||||||
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
|
"standardized_nudges_misinfo": true,
|
||||||
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
|
"responsive_web_enhance_cards_enabled": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"useFetchProfileBlocks_profileExistsQuery": {
|
||||||
|
"queryId": "Z2BA99jFw6TxaJM5v7Irmg"
|
||||||
|
},
|
||||||
|
"ExplorePage": {
|
||||||
|
"queryId": "IK_dxB178qS4T8cvA2G_UA",
|
||||||
|
"features": {
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
|
"verified_phone_label_enabled": false,
|
||||||
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
|
"articles_preview_enabled": true,
|
||||||
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
|
"view_counts_everywhere_api_enabled": true,
|
||||||
|
"longform_notetweets_consumption_enabled": true,
|
||||||
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
|
"creator_subscriptions_quote_tweet_preview_enabled": false,
|
||||||
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
|
"standardized_nudges_misinfo": true,
|
||||||
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
|
"responsive_web_enhance_cards_enabled": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"CommunitiesCreateButtonQuery": {
|
||||||
|
"queryId": "ScODPHsG2d28Xr-rDSBThg"
|
||||||
|
},
|
||||||
|
"CarouselQuery": {
|
||||||
|
"queryId": "xfgycRkhqXy90CmTQZ7Kig"
|
||||||
|
},
|
||||||
|
"CommunitiesRankedTimeline": {
|
||||||
|
"queryId": "ruTkdk9a7c2U99VzD4MtMw",
|
||||||
|
"features": {
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
|
"verified_phone_label_enabled": false,
|
||||||
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
|
"articles_preview_enabled": true,
|
||||||
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
|
"view_counts_everywhere_api_enabled": true,
|
||||||
|
"longform_notetweets_consumption_enabled": true,
|
||||||
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
|
"creator_subscriptions_quote_tweet_preview_enabled": false,
|
||||||
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
|
"standardized_nudges_misinfo": true,
|
||||||
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
|
"responsive_web_enhance_cards_enabled": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BirdwatchFetchGlobalTimeline": {
|
||||||
|
"queryId": "Hu5em3YzOCFtiBOxT3qvEQ",
|
||||||
|
"features": {
|
||||||
|
"rweb_tipjar_consumption_enabled": true,
|
||||||
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
|
"verified_phone_label_enabled": false,
|
||||||
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
|
"communities_web_enable_tweet_community_results_fetch": true,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
|
"articles_preview_enabled": true,
|
||||||
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
|
"view_counts_everywhere_api_enabled": true,
|
||||||
|
"longform_notetweets_consumption_enabled": true,
|
||||||
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
|
"creator_subscriptions_quote_tweet_preview_enabled": false,
|
||||||
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
|
"standardized_nudges_misinfo": true,
|
||||||
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
|
"responsive_web_enhance_cards_enabled": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BirdwatchFetchAuthenticatedUserProfile": {
|
||||||
|
"queryId": "hkYn13HnxM_eVCEGGl-Fdw",
|
||||||
|
"features": {
|
||||||
|
"responsive_web_birdwatch_top_contributor_enabled": true,
|
||||||
|
"responsive_web_birdwatch_mobile_nav_setting_enabled": false,
|
||||||
|
"responsive_web_birdwatch_note_limit_enabled": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"useRelayDelegateDataPendingQuery": {
|
||||||
|
"queryId": "0d3YLrCrAvgiPrMFGc33SA"
|
||||||
|
},
|
||||||
|
"DelegatedAccountListQuery": {
|
||||||
|
"queryId": "R0L__TguknNYVKUvNwmBpA",
|
||||||
|
"features": {
|
||||||
|
"responsive_web_graphql_timeline_navigation_enabled": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"UsersVerifiedAvatars": {
|
||||||
|
"queryId": "aLfvAoX6xy2ojqzOnkbrIA",
|
||||||
|
"features": {
|
||||||
|
"responsive_web_graphql_timeline_navigation_enabled": true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,7 @@ paths:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
oneOf:
|
$ref: "#/components/schemas/OtherResponse"
|
||||||
- $ref: "#/components/schemas/OtherResponse"
|
|
||||||
tags:
|
tags:
|
||||||
- "other"
|
- "other"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,22 +4,26 @@ info:
|
||||||
version: 0.0.1
|
version: 0.0.1
|
||||||
|
|
||||||
paths: {}
|
paths: {}
|
||||||
|
|
||||||
components:
|
components:
|
||||||
schemas:
|
schemas:
|
||||||
ErrorResponse:
|
Errors:
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
- errors
|
- errors
|
||||||
- data
|
|
||||||
properties:
|
properties:
|
||||||
errors:
|
errors:
|
||||||
$ref: "#/components/schemas/Errors"
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: "#/components/schemas/Error"
|
||||||
|
data:
|
||||||
|
$ref: "#/components/schemas/ErrorsData"
|
||||||
|
|
||||||
Errors:
|
ErrorsData:
|
||||||
type: array
|
type: object
|
||||||
items:
|
properties:
|
||||||
$ref: "#/components/schemas/Error"
|
user:
|
||||||
|
type: string # always null
|
||||||
|
pattern: "dummy"
|
||||||
|
|
||||||
Error:
|
Error:
|
||||||
type: object
|
type: object
|
||||||
|
|
@ -32,7 +36,6 @@ components:
|
||||||
- kind
|
- kind
|
||||||
- name
|
- name
|
||||||
- source
|
- source
|
||||||
- retry_after
|
|
||||||
- tracing
|
- tracing
|
||||||
properties:
|
properties:
|
||||||
message:
|
message:
|
||||||
|
|
@ -46,7 +49,7 @@ components:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
extensions:
|
extensions:
|
||||||
$ref: "#/components/schemas/Extensions"
|
$ref: "#/components/schemas/ErrorExtensions"
|
||||||
code:
|
code:
|
||||||
type: integer
|
type: integer
|
||||||
kind:
|
kind:
|
||||||
|
|
@ -71,7 +74,7 @@ components:
|
||||||
column:
|
column:
|
||||||
type: integer
|
type: integer
|
||||||
|
|
||||||
Extensions:
|
ErrorExtensions:
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
- name
|
- name
|
||||||
|
|
@ -84,6 +87,8 @@ components:
|
||||||
type: string
|
type: string
|
||||||
source:
|
source:
|
||||||
type: string
|
type: string
|
||||||
|
retry_after:
|
||||||
|
type: integer
|
||||||
code:
|
code:
|
||||||
type: integer
|
type: integer
|
||||||
kind:
|
kind:
|
||||||
|
|
@ -98,3 +103,4 @@ components:
|
||||||
properties:
|
properties:
|
||||||
trace_id:
|
trace_id:
|
||||||
type: string
|
type: string
|
||||||
|
pattern: "^[0-9a-f]{16}$"
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,6 @@ components:
|
||||||
- "__typename"
|
- "__typename"
|
||||||
- "cursorType"
|
- "cursorType"
|
||||||
- "value"
|
- "value"
|
||||||
- "stopOnEmptyResponse"
|
|
||||||
properties:
|
properties:
|
||||||
__typename:
|
__typename:
|
||||||
$ref: "./typename.yaml#/components/schemas/TypeName" # TimelineTimelineCursor
|
$ref: "./typename.yaml#/components/schemas/TypeName" # TimelineTimelineCursor
|
||||||
|
|
@ -98,7 +97,6 @@ components:
|
||||||
type: string
|
type: string
|
||||||
stopOnEmptyResponse:
|
stopOnEmptyResponse:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
displayTreatment:
|
displayTreatment:
|
||||||
$ref: "#/components/schemas/DisplayTreatment"
|
$ref: "#/components/schemas/DisplayTreatment"
|
||||||
|
|
||||||
|
|
@ -230,7 +228,7 @@ components:
|
||||||
ItemResult:
|
ItemResult:
|
||||||
properties:
|
properties:
|
||||||
__typename:
|
__typename:
|
||||||
$ref: "./typename.yaml#/components/schemas/TypeName" # null | TimelineTweet
|
$ref: "./typename.yaml#/components/schemas/TypeName" # null | TimelineTweet | TweetUnavailable
|
||||||
result:
|
result:
|
||||||
$ref: "./tweet.yaml#/components/schemas/TweetUnion"
|
$ref: "./tweet.yaml#/components/schemas/TweetUnion"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,99 +0,0 @@
|
||||||
openapi: 3.0.3
|
|
||||||
info:
|
|
||||||
title: Twitter OpenAPI
|
|
||||||
version: 0.0.1
|
|
||||||
|
|
||||||
paths: {}
|
|
||||||
components:
|
|
||||||
schemas:
|
|
||||||
Errors:
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- errors
|
|
||||||
properties:
|
|
||||||
errors:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: "#/components/schemas/Error"
|
|
||||||
|
|
||||||
Error:
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- message
|
|
||||||
- locations
|
|
||||||
- path
|
|
||||||
- extensions
|
|
||||||
- code
|
|
||||||
- kind
|
|
||||||
- name
|
|
||||||
- source
|
|
||||||
- retry_after
|
|
||||||
- tracing
|
|
||||||
properties:
|
|
||||||
message:
|
|
||||||
type: string
|
|
||||||
locations:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: "#/components/schemas/Location"
|
|
||||||
path:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
extensions:
|
|
||||||
$ref: "#/components/schemas/ErrorExtensions"
|
|
||||||
code:
|
|
||||||
type: integer
|
|
||||||
kind:
|
|
||||||
type: string
|
|
||||||
name:
|
|
||||||
type: string
|
|
||||||
source:
|
|
||||||
type: string
|
|
||||||
retry_after:
|
|
||||||
type: integer
|
|
||||||
tracing:
|
|
||||||
$ref: "#/components/schemas/Tracing"
|
|
||||||
|
|
||||||
Location:
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- line
|
|
||||||
- column
|
|
||||||
properties:
|
|
||||||
line:
|
|
||||||
type: integer
|
|
||||||
column:
|
|
||||||
type: integer
|
|
||||||
|
|
||||||
ErrorExtensions:
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- name
|
|
||||||
- source
|
|
||||||
- retry_after
|
|
||||||
- code
|
|
||||||
- kind
|
|
||||||
- tracing
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
type: string
|
|
||||||
source:
|
|
||||||
type: string
|
|
||||||
retry_after:
|
|
||||||
type: integer
|
|
||||||
code:
|
|
||||||
type: integer
|
|
||||||
kind:
|
|
||||||
type: string
|
|
||||||
tracing:
|
|
||||||
$ref: "#/components/schemas/Tracing"
|
|
||||||
|
|
||||||
Tracing:
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- trace_id
|
|
||||||
properties:
|
|
||||||
trace_id:
|
|
||||||
type: string
|
|
||||||
pattern: "^[0-9a-f]{16}$"
|
|
||||||
|
|
@ -277,7 +277,21 @@ components:
|
||||||
properties:
|
properties:
|
||||||
type:
|
type:
|
||||||
type: string
|
type: string
|
||||||
enum: [TimelineCoverBehaviorDismiss]
|
enum: [TimelineCoverBehaviorDismiss, TimelineCoverBehaviorNavigate]
|
||||||
|
url:
|
||||||
|
type: TimelineCoverBehaviorUrl
|
||||||
|
|
||||||
|
TimelineCoverBehaviorUrl:
|
||||||
|
required:
|
||||||
|
- "url"
|
||||||
|
- "url_type"
|
||||||
|
properties:
|
||||||
|
url:
|
||||||
|
type: string
|
||||||
|
format: uri
|
||||||
|
url_type:
|
||||||
|
type: string
|
||||||
|
enum: ["ExternalUrl"]
|
||||||
|
|
||||||
Callback:
|
Callback:
|
||||||
required:
|
required:
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,6 @@ paths: {}
|
||||||
components:
|
components:
|
||||||
schemas:
|
schemas:
|
||||||
TimelineV2:
|
TimelineV2:
|
||||||
required:
|
|
||||||
- "timeline"
|
|
||||||
properties:
|
properties:
|
||||||
timeline:
|
timeline:
|
||||||
$ref: "#/components/schemas/Timeline"
|
$ref: "#/components/schemas/Timeline"
|
||||||
|
|
|
||||||
|
|
@ -12,12 +12,14 @@ components:
|
||||||
- $ref: "#/components/schemas/Tweet"
|
- $ref: "#/components/schemas/Tweet"
|
||||||
- $ref: "#/components/schemas/TweetWithVisibilityResults"
|
- $ref: "#/components/schemas/TweetWithVisibilityResults"
|
||||||
- $ref: "#/components/schemas/TweetTombstone"
|
- $ref: "#/components/schemas/TweetTombstone"
|
||||||
|
- $ref: "#/components/schemas/TweetUnavailable"
|
||||||
discriminator:
|
discriminator:
|
||||||
propertyName: __typename
|
propertyName: __typename
|
||||||
mapping": # deprecated
|
mapping": # deprecated
|
||||||
Tweet: "#/components/schemas/Tweet"
|
Tweet: "#/components/schemas/Tweet"
|
||||||
TweetWithVisibilityResults: "#/components/schemas/TweetWithVisibilityResults"
|
TweetWithVisibilityResults: "#/components/schemas/TweetWithVisibilityResults"
|
||||||
TweetTombstone: "#/components/schemas/TweetTombstone"
|
TweetTombstone: "#/components/schemas/TweetTombstone"
|
||||||
|
TweetUnavailable: "#/components/schemas/TweetUnavailable"
|
||||||
|
|
||||||
TweetWithVisibilityResults:
|
TweetWithVisibilityResults:
|
||||||
required:
|
required:
|
||||||
|
|
@ -138,6 +140,13 @@ components:
|
||||||
$ref: "./typename.yaml#/components/schemas/TypeName" # TweetWithVisibilityResults
|
$ref: "./typename.yaml#/components/schemas/TypeName" # TweetWithVisibilityResults
|
||||||
additionalProperties: true # todo
|
additionalProperties: true # todo
|
||||||
|
|
||||||
|
TweetUnavailable: # nsfw tweet
|
||||||
|
properties:
|
||||||
|
__typename:
|
||||||
|
$ref: "./typename.yaml#/components/schemas/TypeName" # TweetUnavailable
|
||||||
|
reason:
|
||||||
|
type: string
|
||||||
|
|
||||||
Tweet:
|
Tweet:
|
||||||
required:
|
required:
|
||||||
- "rest_id"
|
- "rest_id"
|
||||||
|
|
@ -162,7 +171,6 @@ components:
|
||||||
$ref: "#/components/schemas/TweetEditPrespective"
|
$ref: "#/components/schemas/TweetEditPrespective"
|
||||||
is_translatable:
|
is_translatable:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
source:
|
source:
|
||||||
type: string # html (<a href="http://twitter.com/download/android" rel="nofollow">Twitter for Android</a>)
|
type: string # html (<a href="http://twitter.com/download/android" rel="nofollow">Twitter for Android</a>)
|
||||||
legacy:
|
legacy:
|
||||||
|
|
@ -189,6 +197,8 @@ components:
|
||||||
$ref: "#/components/schemas/AuthorCommunityRelationship"
|
$ref: "#/components/schemas/AuthorCommunityRelationship"
|
||||||
article:
|
article:
|
||||||
$ref: "#/components/schemas/Article"
|
$ref: "#/components/schemas/Article"
|
||||||
|
community_results:
|
||||||
|
$ref: "#/components/schemas/Community"
|
||||||
|
|
||||||
TweetEditControl:
|
TweetEditControl:
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -884,10 +894,8 @@ components:
|
||||||
type: string # enum
|
type: string # enum
|
||||||
possibly_sensitive:
|
possibly_sensitive:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
possibly_sensitive_editable:
|
possibly_sensitive_editable:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
quote_count:
|
quote_count:
|
||||||
type: integer
|
type: integer
|
||||||
reply_count:
|
reply_count:
|
||||||
|
|
@ -1289,13 +1297,10 @@ components:
|
||||||
properties:
|
properties:
|
||||||
adult_content:
|
adult_content:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
graphic_violence:
|
graphic_violence:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
other:
|
other:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
|
|
||||||
MediaSizes:
|
MediaSizes:
|
||||||
required:
|
required:
|
||||||
|
|
@ -1464,8 +1469,6 @@ components:
|
||||||
type: integer
|
type: integer
|
||||||
|
|
||||||
AllowDownloadStatus:
|
AllowDownloadStatus:
|
||||||
required:
|
|
||||||
- "allow_download"
|
|
||||||
properties:
|
properties:
|
||||||
allow_download:
|
allow_download:
|
||||||
type: boolean
|
type: boolean
|
||||||
|
|
|
||||||
|
|
@ -35,9 +35,6 @@ components:
|
||||||
- "is_blue_verified"
|
- "is_blue_verified"
|
||||||
- "legacy"
|
- "legacy"
|
||||||
- "rest_id"
|
- "rest_id"
|
||||||
- "super_follow_eligible"
|
|
||||||
- "super_followed_by"
|
|
||||||
- "super_following"
|
|
||||||
- "profile_image_shape"
|
- "profile_image_shape"
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -50,13 +47,11 @@ components:
|
||||||
type: boolean
|
type: boolean
|
||||||
has_nft_avatar:
|
has_nft_avatar:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
id:
|
id:
|
||||||
type: string
|
type: string
|
||||||
pattern: "^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?$" # base64
|
pattern: "^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?$" # base64
|
||||||
is_blue_verified:
|
is_blue_verified:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
legacy:
|
legacy:
|
||||||
$ref: "#/components/schemas/UserLegacy"
|
$ref: "#/components/schemas/UserLegacy"
|
||||||
rest_id:
|
rest_id:
|
||||||
|
|
@ -67,13 +62,10 @@ components:
|
||||||
additionalProperties: true # todo
|
additionalProperties: true # todo
|
||||||
super_follow_eligible:
|
super_follow_eligible:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
super_followed_by:
|
super_followed_by:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
super_following:
|
super_following:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
profile_image_shape:
|
profile_image_shape:
|
||||||
type: string
|
type: string
|
||||||
enum:
|
enum:
|
||||||
|
|
@ -96,6 +88,10 @@ components:
|
||||||
$ref: "#/components/schemas/UserTipJarSettings"
|
$ref: "#/components/schemas/UserTipJarSettings"
|
||||||
legacy_extended_profile:
|
legacy_extended_profile:
|
||||||
$ref: "#/components/schemas/UserLegacyExtendedProfile"
|
$ref: "#/components/schemas/UserLegacyExtendedProfile"
|
||||||
|
has_hidden_likes_on_profile:
|
||||||
|
type: boolean
|
||||||
|
premium_gifting_eligible:
|
||||||
|
type: boolean
|
||||||
|
|
||||||
UserProfessional:
|
UserProfessional:
|
||||||
required:
|
required:
|
||||||
|
|
@ -143,7 +139,6 @@ components:
|
||||||
properties:
|
properties:
|
||||||
is_identity_verified:
|
is_identity_verified:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
reason:
|
reason:
|
||||||
$ref: "#/components/schemas/UserVerificationInfoReason"
|
$ref: "#/components/schemas/UserVerificationInfoReason"
|
||||||
|
|
||||||
|
|
@ -214,6 +209,8 @@ components:
|
||||||
type: string
|
type: string
|
||||||
gofundme_handle:
|
gofundme_handle:
|
||||||
type: string # uri
|
type: string # uri
|
||||||
|
bandcamp_handle:
|
||||||
|
type: string # uri
|
||||||
|
|
||||||
UserLegacyExtendedProfile:
|
UserLegacyExtendedProfile:
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -243,10 +240,6 @@ components:
|
||||||
|
|
||||||
UserLegacy:
|
UserLegacy:
|
||||||
required:
|
required:
|
||||||
- "blocked_by"
|
|
||||||
- "blocking"
|
|
||||||
- "can_dm"
|
|
||||||
- "can_media_tag"
|
|
||||||
- "created_at"
|
- "created_at"
|
||||||
- "default_profile"
|
- "default_profile"
|
||||||
- "default_profile_image"
|
- "default_profile_image"
|
||||||
|
|
@ -254,52 +247,39 @@ components:
|
||||||
- "entities"
|
- "entities"
|
||||||
- "fast_followers_count"
|
- "fast_followers_count"
|
||||||
- "favourites_count"
|
- "favourites_count"
|
||||||
# 31 # - "follow_request_sent"
|
|
||||||
# 31 # - "followed_by"
|
|
||||||
- "followers_count"
|
- "followers_count"
|
||||||
# 31 # - "following"
|
|
||||||
- "friends_count"
|
- "friends_count"
|
||||||
- "has_custom_timelines"
|
- "has_custom_timelines"
|
||||||
- "is_translator"
|
- "is_translator"
|
||||||
- "listed_count"
|
- "listed_count"
|
||||||
- "location"
|
- "location"
|
||||||
- "media_count"
|
- "media_count"
|
||||||
- "muting"
|
|
||||||
- "name"
|
- "name"
|
||||||
- "normal_followers_count"
|
- "normal_followers_count"
|
||||||
# 31 # - "notifications"
|
|
||||||
- "pinned_tweet_ids_str"
|
- "pinned_tweet_ids_str"
|
||||||
- "possibly_sensitive"
|
- "possibly_sensitive"
|
||||||
- "profile_image_url_https"
|
- "profile_image_url_https"
|
||||||
- "profile_interstitial_type"
|
- "profile_interstitial_type"
|
||||||
# 31 # - "protected"
|
|
||||||
- "screen_name"
|
- "screen_name"
|
||||||
- "status"
|
- "status"
|
||||||
- "statuses_count"
|
- "statuses_count"
|
||||||
- "translator_type"
|
- "translator_type"
|
||||||
- "verified"
|
- "verified"
|
||||||
- "want_retweets"
|
|
||||||
properties:
|
properties:
|
||||||
blocked_by:
|
blocked_by:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
blocking:
|
blocking:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
can_dm:
|
can_dm:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
can_media_tag:
|
can_media_tag:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
created_at:
|
created_at:
|
||||||
$ref: "./general.yaml#/components/schemas/TwitterTimeFormat"
|
$ref: "./general.yaml#/components/schemas/TwitterTimeFormat"
|
||||||
default_profile:
|
default_profile:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
default_profile_image:
|
default_profile_image:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
description:
|
description:
|
||||||
type: string
|
type: string
|
||||||
entities:
|
entities:
|
||||||
|
|
@ -309,54 +289,40 @@ components:
|
||||||
type: integer
|
type: integer
|
||||||
favourites_count:
|
favourites_count:
|
||||||
type: integer
|
type: integer
|
||||||
default: 0
|
|
||||||
follow_request_sent:
|
follow_request_sent:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
followed_by:
|
followed_by:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
followers_count:
|
followers_count:
|
||||||
type: integer
|
type: integer
|
||||||
default: 0
|
|
||||||
following:
|
following:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
friends_count:
|
friends_count:
|
||||||
type: integer
|
type: integer
|
||||||
default: 0
|
|
||||||
has_custom_timelines:
|
has_custom_timelines:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
is_translator:
|
is_translator:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
listed_count:
|
listed_count:
|
||||||
type: integer
|
type: integer
|
||||||
default: 0
|
|
||||||
location:
|
location:
|
||||||
type: string
|
type: string
|
||||||
media_count:
|
media_count:
|
||||||
type: integer
|
type: integer
|
||||||
default: 0
|
|
||||||
muting:
|
muting:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
name:
|
name:
|
||||||
type: string
|
type: string
|
||||||
normal_followers_count:
|
normal_followers_count:
|
||||||
type: integer
|
type: integer
|
||||||
default: 0
|
|
||||||
notifications:
|
notifications:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
pinned_tweet_ids_str:
|
pinned_tweet_ids_str:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
possibly_sensitive:
|
possibly_sensitive:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
profile_banner_extensions:
|
profile_banner_extensions:
|
||||||
type: object
|
type: object
|
||||||
profile_banner_url:
|
profile_banner_url:
|
||||||
|
|
@ -371,12 +337,10 @@ components:
|
||||||
type: string
|
type: string
|
||||||
protected:
|
protected:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
screen_name:
|
screen_name:
|
||||||
type: string
|
type: string
|
||||||
statuses_count:
|
statuses_count:
|
||||||
type: integer
|
type: integer
|
||||||
default: 0
|
|
||||||
translator_type:
|
translator_type:
|
||||||
type: string
|
type: string
|
||||||
url:
|
url:
|
||||||
|
|
@ -385,7 +349,6 @@ components:
|
||||||
type: boolean
|
type: boolean
|
||||||
want_retweets:
|
want_retweets:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
|
||||||
verified_type:
|
verified_type:
|
||||||
type: string
|
type: string
|
||||||
enum: ["Business", "Government"]
|
enum: ["Business", "Government"]
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import base64
|
import base64
|
||||||
import concurrent.futures
|
import concurrent.futures
|
||||||
import glob
|
import glob
|
||||||
|
import inspect
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
|
@ -180,6 +181,8 @@ if __name__ == "__main__":
|
||||||
f'cookie.json not found. Please run `{"; ".join(commands)}` first.'
|
f'cookie.json not found. Please run `{"; ".join(commands)}` first.'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if isinstance(cookies, list):
|
||||||
|
cookies = {k["name"]: k["value"] for k in cookies}
|
||||||
cookies_str = "; ".join([f"{k}={v}" for k, v in cookies.items()])
|
cookies_str = "; ".join([f"{k}={v}" for k, v in cookies.items()])
|
||||||
|
|
||||||
with open("src/config/placeholder.json", "r") as f:
|
with open("src/config/placeholder.json", "r") as f:
|
||||||
|
|
@ -208,6 +211,15 @@ if __name__ == "__main__":
|
||||||
task_callback(file, thread=False)
|
task_callback(file, thread=False)
|
||||||
logger.info(f"Match rate: {rate}")
|
logger.info(f"Match rate: {rate}")
|
||||||
|
|
||||||
|
for file in glob.glob("other/**/*.json", recursive=True):
|
||||||
|
with open(file, "r") as f:
|
||||||
|
data = json.load(f)
|
||||||
|
|
||||||
|
try:
|
||||||
|
_ = pt.Errors.from_dict(data)
|
||||||
|
except Exception as e:
|
||||||
|
error_dump(e)
|
||||||
|
|
||||||
api_conf = pt.Configuration(
|
api_conf = pt.Configuration(
|
||||||
api_key={
|
api_key={
|
||||||
"ClientLanguage": "en",
|
"ClientLanguage": "en",
|
||||||
|
|
@ -231,7 +243,7 @@ if __name__ == "__main__":
|
||||||
error_count = 0
|
error_count = 0
|
||||||
|
|
||||||
for x in [pt.DefaultApi, pt.TweetApi, pt.UserApi, pt.UsersApi, pt.UserListApi]:
|
for x in [pt.DefaultApi, pt.TweetApi, pt.UserApi, pt.UsersApi, pt.UserListApi]:
|
||||||
for props, fn in x.__dict__.items():
|
for props, fn in inspect.getmembers(x):
|
||||||
if not callable(fn):
|
if not callable(fn):
|
||||||
continue
|
continue
|
||||||
if props.startswith("__") or not props.endswith("_with_http_info"):
|
if props.startswith("__") or not props.endswith("_with_http_info"):
|
||||||
|
|
@ -284,7 +296,7 @@ if __name__ == "__main__":
|
||||||
|
|
||||||
try:
|
try:
|
||||||
logger.info("Try: Self UserByScreenName Test")
|
logger.info("Try: Self UserByScreenName Test")
|
||||||
kwargs = get_kwargs("UserByScreenName", {"screen_name": "NxWDOyLMd483329"})
|
kwargs = get_kwargs("UserByScreenName", {"screen_name": "ptcpz3"})
|
||||||
res = pt.UserApi(api_client).get_user_by_screen_name_with_http_info(**kwargs)
|
res = pt.UserApi(api_client).get_user_by_screen_name_with_http_info(**kwargs)
|
||||||
data = res.data.to_dict()
|
data = res.data.to_dict()
|
||||||
|
|
||||||
|
|
@ -295,7 +307,7 @@ if __name__ == "__main__":
|
||||||
)
|
)
|
||||||
logger.info(f"Match rate: {rate}")
|
logger.info(f"Match rate: {rate}")
|
||||||
screen_name = data["data"]["user"]["result"]["legacy"]["screen_name"]
|
screen_name = data["data"]["user"]["result"]["legacy"]["screen_name"]
|
||||||
if not screen_name == "NxWDOyLMd483329":
|
if not screen_name == "ptcpz3":
|
||||||
raise Exception("UserByScreenName failed")
|
raise Exception("UserByScreenName failed")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_dump(e)
|
error_dump(e)
|
||||||
|
|
@ -330,10 +342,12 @@ if __name__ == "__main__":
|
||||||
"1720975693524377759",
|
"1720975693524377759",
|
||||||
"1721006592303251551",
|
"1721006592303251551",
|
||||||
"1739194269477331076",
|
"1739194269477331076",
|
||||||
"1697450269259522256",
|
# "1697450269259522256",
|
||||||
"1697450278742884799",
|
# "1697450278742884799",
|
||||||
"1749500209061663043",
|
"1749500209061663043",
|
||||||
"1759056048764469303",
|
"1759056048764469303",
|
||||||
|
"1349129669258448897",
|
||||||
|
"1810188416812019999",
|
||||||
]
|
]
|
||||||
for id in ids:
|
for id in ids:
|
||||||
try:
|
try:
|
||||||
|
|
@ -342,6 +356,13 @@ if __name__ == "__main__":
|
||||||
res = pt.TweetApi(api_client).get_tweet_detail_with_http_info(**kwargs)
|
res = pt.TweetApi(api_client).get_tweet_detail_with_http_info(**kwargs)
|
||||||
data = res.data.to_dict()
|
data = res.data.to_dict()
|
||||||
|
|
||||||
|
save_cache(
|
||||||
|
{
|
||||||
|
"raw": res.raw_data.decode("utf-8"),
|
||||||
|
"type": res.data.__class__.__name__,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
rate = match_rate(
|
rate = match_rate(
|
||||||
data,
|
data,
|
||||||
json.loads(res.raw_data),
|
json.loads(res.raw_data),
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ import json
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import openapi_client as pt
|
import openapi_client as pt
|
||||||
|
import urllib3
|
||||||
|
|
||||||
|
|
||||||
def get_kwargs(key, additional):
|
def get_kwargs(key, additional):
|
||||||
|
|
@ -19,6 +20,8 @@ if __name__ == "__main__":
|
||||||
if Path("cookie.json").exists():
|
if Path("cookie.json").exists():
|
||||||
with open("cookie.json", "r") as f:
|
with open("cookie.json", "r") as f:
|
||||||
cookies = json.load(f)
|
cookies = json.load(f)
|
||||||
|
if isinstance(cookies, list):
|
||||||
|
cookies = {k["name"]: k["value"] for k in cookies}
|
||||||
cookies_str = "; ".join([f"{k}={v}" for k, v in cookies.items()])
|
cookies_str = "; ".join([f"{k}={v}" for k, v in cookies.items()])
|
||||||
|
|
||||||
with open("src/config/placeholder.json", "r") as f:
|
with open("src/config/placeholder.json", "r") as f:
|
||||||
|
|
@ -31,9 +34,17 @@ if __name__ == "__main__":
|
||||||
"GuestToken": cookies["gt"],
|
"GuestToken": cookies["gt"],
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
latest_user_agent_res = urllib3.PoolManager().request(
|
||||||
|
"GET",
|
||||||
|
"https://raw.githubusercontent.com/fa0311/latest-user-agent/main/output.json",
|
||||||
|
)
|
||||||
|
|
||||||
|
latest_user_agent = json.loads(latest_user_agent_res.data.decode("utf-8"))
|
||||||
|
|
||||||
api_conf.access_token = "AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA"
|
api_conf.access_token = "AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA"
|
||||||
api_client = pt.ApiClient(configuration=api_conf, cookie=cookies_str)
|
api_client = pt.ApiClient(configuration=api_conf, cookie=cookies_str)
|
||||||
api_client.user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
|
api_client.user_agent = latest_user_agent["chrome-fetch"]
|
||||||
|
|
||||||
pt.TweetApi(api_client).get_user_tweets_with_http_info(
|
pt.TweetApi(api_client).get_user_tweets_with_http_info(
|
||||||
**get_kwargs("UserTweets", {}),
|
**get_kwargs("UserTweets", {}),
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ from hooks import (
|
||||||
AddSecuritySchemesOnSecuritySchemes,
|
AddSecuritySchemesOnSecuritySchemes,
|
||||||
RemoveErrorHandle,
|
RemoveErrorHandle,
|
||||||
SetResponsesHeader,
|
SetResponsesHeader,
|
||||||
|
SetUserAgentOnSecuritySchemes,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -40,7 +41,10 @@ class Config:
|
||||||
additionalHooks.append(RemoveErrorHandle())
|
additionalHooks.append(RemoveErrorHandle())
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"openapi": [AddSecuritySchemesOnSecuritySchemes()],
|
"openapi": [
|
||||||
|
AddSecuritySchemesOnSecuritySchemes(),
|
||||||
|
SetUserAgentOnSecuritySchemes(),
|
||||||
|
],
|
||||||
"schemas": [],
|
"schemas": [],
|
||||||
"other": [],
|
"other": [],
|
||||||
"request": {
|
"request": {
|
||||||
|
|
|
||||||
130
tools/generater.py
Normal file
130
tools/generater.py
Normal file
|
|
@ -0,0 +1,130 @@
|
||||||
|
# https://github.com/tsukumijima/KonomiTV/blob/master/server/misc/TwitterAPIQueryGenerator.py
|
||||||
|
# https://github.com/tsukumijima/KonomiTV/blob/master/License.txt
|
||||||
|
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
# Usage: poetry run python -m misc.TwitterAPIQueryGenerator
|
||||||
|
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
import urllib.parse
|
||||||
|
|
||||||
|
from rich import print
|
||||||
|
from rich.rule import Rule
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
print(Rule(characters="="))
|
||||||
|
print(
|
||||||
|
"Chrome DevTools の Network タブで「表示されているものをすべてfetch としてコピー」したコードを`input.js`に貼り付けてください。"
|
||||||
|
)
|
||||||
|
print("Enter を押すと続行します。")
|
||||||
|
print(Rule(characters="="))
|
||||||
|
input()
|
||||||
|
|
||||||
|
with open("./tools/input.js", "r") as f:
|
||||||
|
fetch_code_raw = f.read()
|
||||||
|
|
||||||
|
print(Rule(characters="="))
|
||||||
|
|
||||||
|
splited = fetch_code_raw.split("\n")
|
||||||
|
fetch_code_list = []
|
||||||
|
code = ""
|
||||||
|
for line in splited:
|
||||||
|
if line.startswith("fetch("):
|
||||||
|
if code:
|
||||||
|
fetch_code_list.append(code)
|
||||||
|
code = line
|
||||||
|
else:
|
||||||
|
code += line + "\n"
|
||||||
|
fetch_code_list.append(code)
|
||||||
|
|
||||||
|
for fetch_code in fetch_code_list:
|
||||||
|
# query_idとendpointを抽出
|
||||||
|
query_id_match = re.search(r'/i/api/graphql/([^/]+)/([^"?]+)', fetch_code)
|
||||||
|
if not query_id_match:
|
||||||
|
print("query_id と endpoint の抽出に失敗しました。")
|
||||||
|
print(Rule(characters="="))
|
||||||
|
return
|
||||||
|
query_id = query_id_match.group(1)
|
||||||
|
endpoint = query_id_match.group(2)
|
||||||
|
|
||||||
|
# リクエストメソッドを判定
|
||||||
|
method_match = re.search(r'"method"\s*:\s*"(GET|POST)"', fetch_code)
|
||||||
|
if not method_match:
|
||||||
|
print("リクエストメソッドの判定に失敗しました。")
|
||||||
|
print(Rule(characters="="))
|
||||||
|
return
|
||||||
|
method = method_match.group(1)
|
||||||
|
|
||||||
|
if method == "POST":
|
||||||
|
# POST リクエストの場合、fetch() コードの第二引数にある {} で囲まれたオブジェクトを正規表現で抽出したものを JSON としてパース
|
||||||
|
body_match = re.search(r'"body"\s*:\s*"({.*})"', fetch_code, re.DOTALL)
|
||||||
|
if not body_match:
|
||||||
|
print("body の抽出に失敗しました。")
|
||||||
|
print(Rule(characters="="))
|
||||||
|
return
|
||||||
|
body_json_str = body_match.group(1).replace("\\", "")
|
||||||
|
body_json = json.loads(body_json_str)
|
||||||
|
features = body_json.get("features", None)
|
||||||
|
variables = body_json.get("variables", None)
|
||||||
|
else:
|
||||||
|
# GET リクエストの場合、まず URL を抽出
|
||||||
|
url_match = re.search(r'"(https?://[^"]+)"', fetch_code)
|
||||||
|
if not url_match:
|
||||||
|
print("URL の抽出に失敗しました。")
|
||||||
|
print(Rule(characters="="))
|
||||||
|
return
|
||||||
|
url = url_match.group(1)
|
||||||
|
|
||||||
|
# URL をパースして query string を取得
|
||||||
|
parsed_url = urllib.parse.urlparse(url)
|
||||||
|
query_string = parsed_url.query
|
||||||
|
|
||||||
|
# query string を dict 形式にパース
|
||||||
|
query_dict = urllib.parse.parse_qs(query_string)
|
||||||
|
|
||||||
|
# features を取得
|
||||||
|
features_json_str = query_dict.get("features", [None])[0]
|
||||||
|
if features_json_str is None:
|
||||||
|
features = None
|
||||||
|
variables = None
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
features = json.loads(features_json_str)
|
||||||
|
except json.JSONDecodeError:
|
||||||
|
print(
|
||||||
|
"features の JSON パースに失敗しました。features は None として続行します。"
|
||||||
|
)
|
||||||
|
features = None
|
||||||
|
variables = None
|
||||||
|
|
||||||
|
with open("./src/config/placeholder.json", "r") as f:
|
||||||
|
placeholder = json.load(f)
|
||||||
|
|
||||||
|
def check(a, b, msg):
|
||||||
|
if isinstance(a, dict) and isinstance(b, dict):
|
||||||
|
for k in {*a.keys(), *b.keys()}:
|
||||||
|
if k not in b:
|
||||||
|
print(f"{msg} key: {k} が存在しません。")
|
||||||
|
elif k not in a:
|
||||||
|
print(f"{msg} key: {k} が存在しません。")
|
||||||
|
else:
|
||||||
|
check(a[k], b[k], msg)
|
||||||
|
|
||||||
|
check(
|
||||||
|
variables,
|
||||||
|
placeholder.get(endpoint, {}).get("variables", {}),
|
||||||
|
f"{endpoint} の variables が不一致です。",
|
||||||
|
)
|
||||||
|
|
||||||
|
with open("./src/config/placeholder.json", "w") as f:
|
||||||
|
placeholder[endpoint] = placeholder.get(endpoint, {})
|
||||||
|
placeholder[endpoint]["queryId"] = query_id
|
||||||
|
if features:
|
||||||
|
placeholder[endpoint]["features"] = features
|
||||||
|
json.dump(placeholder, f, indent=4)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
import urllib3
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -60,6 +61,13 @@ class HookBase:
|
||||||
with open("src/config/placeholder.json", mode="r", encoding="utf-8") as f:
|
with open("src/config/placeholder.json", mode="r", encoding="utf-8") as f:
|
||||||
return yaml.safe_load(f)
|
return yaml.safe_load(f)
|
||||||
|
|
||||||
|
def load_user_agent(self) -> str:
|
||||||
|
user_agent = urllib3.PoolManager().request(
|
||||||
|
"GET",
|
||||||
|
"https://raw.githubusercontent.com/fa0311/latest-user-agent/main/output.json",
|
||||||
|
)
|
||||||
|
return json.loads(user_agent.data)["chrome-fetch"]
|
||||||
|
|
||||||
|
|
||||||
# HookBase extends
|
# HookBase extends
|
||||||
|
|
||||||
|
|
@ -106,6 +114,14 @@ class AddSecuritySchemesOnSecuritySchemes(OpenapiHookBase):
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
class SetUserAgentOnSecuritySchemes(OpenapiHookBase):
|
||||||
|
def hook(self, value: dict):
|
||||||
|
value = super().hook(value)
|
||||||
|
param = value["components"]["securitySchemes"]
|
||||||
|
param["UserAgent"]["description"] = self.load_user_agent()
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
# SchemasHookBase extends
|
# SchemasHookBase extends
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -151,6 +167,15 @@ class AddSecuritySchemesOnHeader(RequestHookBase):
|
||||||
return path, value
|
return path, value
|
||||||
|
|
||||||
|
|
||||||
|
class SetUserAgentOnHeader(RequestHookBase):
|
||||||
|
def hook(self, path: str, value: dict):
|
||||||
|
path, value = super().hook(path, value)
|
||||||
|
component = self.load_component("security_schemes")
|
||||||
|
param = component["paths"]["/parameters"]["get"]["parameters"]
|
||||||
|
value["parameters"].extend(param)
|
||||||
|
return path, value
|
||||||
|
|
||||||
|
|
||||||
class ReplaceQueryIdPlaceholder(RequestHookBase):
|
class ReplaceQueryIdPlaceholder(RequestHookBase):
|
||||||
def hook(self, path: str, value: dict):
|
def hook(self, path: str, value: dict):
|
||||||
path, value = super().hook(path, value)
|
path, value = super().hook(path, value)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue