diff --git a/.github/workflows/test-build.yaml b/.github/workflows/test-build.yaml index 295dace..76109a1 100644 --- a/.github/workflows/test-build.yaml +++ b/.github/workflows/test-build.yaml @@ -39,7 +39,7 @@ jobs: - name: Get Openapi Generator run: | - wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.10.0/openapi-generator-cli-7.10.0.jar -O openapi-generator-cli.jar --no-verbose + wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.12.0/openapi-generator-cli-7.12.0.jar -O openapi-generator-cli.jar --no-verbose if: steps.openapi-generator-cache.outputs.cache-hit != 'true' # Python Setup diff --git a/.github/workflows/test-python.yaml b/.github/workflows/test-python.yaml index ae9334a..c734485 100644 --- a/.github/workflows/test-python.yaml +++ b/.github/workflows/test-python.yaml @@ -40,7 +40,7 @@ jobs: - name: Get Openapi Generator run: | - wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.10.0/openapi-generator-cli-7.10.0.jar -O openapi-generator-cli.jar --no-verbose + wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.12.0/openapi-generator-cli-7.12.0.jar -O openapi-generator-cli.jar --no-verbose if: steps.openapi-generator-cache.outputs.cache-hit != 'true' # Python Setup diff --git a/.vscode/launch.json b/.vscode/launch.json index 20128e2..4a6a859 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -31,6 +31,15 @@ "MULTI_THREAD": "True", "CUESOR_TEST_COUNT": "3" } + }, + { + "name": "test-guest", + "type": "debugpy", + "request": "launch", + "program": "test/python/test_serialize_guest.py", + "console": "integratedTerminal", + "justMyCode": false, + "preLaunchTask": "build-task" } ] -} \ No newline at end of file +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json index e299978..e163218 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -39,21 +39,21 @@ "command": [ "python3.10 -m venv .venv;", ".venv/bin/python3 -m pip install -r requirements.txt;", - "curl https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.10.0/openapi-generator-cli-7.10.0.jar -o openapi-generator-cli.jar;" + "curl https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.12.0/openapi-generator-cli-7.12.0.jar -o openapi-generator-cli.jar;" ] }, "linux": { "command": [ "python3 -m venv .venv;", ".venv/bin/python3 -m pip install -r requirements.txt;", - "wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.10.0/openapi-generator-cli-7.10.0.jar -O openapi-generator-cli.jar;" + "wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.12.0/openapi-generator-cli-7.12.0.jar -O openapi-generator-cli.jar;" ] }, "windows": { "command": [ "python -m venv .venv;", ".venv/Scripts/python -m pip install -r requirements.txt;", - "Invoke-WebRequest https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.10.0/openapi-generator-cli-7.10.0.jar -OutFile openapi-generator-cli.jar;" + "Invoke-WebRequest https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.12.0/openapi-generator-cli-7.12.0.jar -OutFile openapi-generator-cli.jar;" ] } } diff --git a/dist/compatible/openapi-3.0.yaml b/dist/compatible/openapi-3.0.yaml index 5bc3722..bddf6bd 100644 --- a/dist/compatible/openapi-3.0.yaml +++ b/dist/compatible/openapi-3.0.yaml @@ -991,6 +991,7 @@ components: TimelinePrompt: '#/components/schemas/TimelinePrompt' TimelineTimelineCursor: '#/components/schemas/TimelineTimelineCursor' TimelineTombstone: '#/components/schemas/TimelineTombstone' + TimelineTrend: '#/components/schemas/TimelineTrend' TimelineTweet: '#/components/schemas/TimelineTweet' TimelineUser: '#/components/schemas/TimelineUser' propertyName: __typename @@ -1002,6 +1003,7 @@ components: - $ref: '#/components/schemas/TimelineMessagePrompt' - $ref: '#/components/schemas/TimelineCommunity' - $ref: '#/components/schemas/TimelineTombstone' + - $ref: '#/components/schemas/TimelineTrend' ItemResult: properties: __typename: @@ -1332,6 +1334,8 @@ components: - itemContent ModuleItem: properties: + dispensable: + type: boolean entryId: pattern: ^(([a-z]+|[0-9]+|[0-9a-f]+)(-|$))+ type: string @@ -1680,6 +1684,16 @@ components: - startIndex - endIndex type: object + ThumbnailImage: + properties: + original_img_height: + type: integer + original_img_url: + format: uri + type: string + original_img_width: + type: integer + type: object Timeline: properties: instructions: @@ -2016,6 +2030,36 @@ components: type: $ref: '#/components/schemas/SocialContextUnionType' type: object + TimelineTrend: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + images: + items: + $ref: '#/components/schemas/TrendImage' + type: array + is_ai_trend: + type: boolean + itemType: + $ref: '#/components/schemas/ContentItemType' + name: + type: string + social_context: + $ref: '#/components/schemas/SocialContextUnion' + thumbnail_image: + $ref: '#/components/schemas/ThumbnailImage' + trend_metadata: + $ref: '#/components/schemas/TrendMetadata' + trend_url: + $ref: '#/components/schemas/SocialContextLandingUrl' + required: + - __typename + - itemType + - name + - trend_url + - trend_metadata + - thumbnail_image + - images TimelineTweet: properties: __typename: @@ -2151,6 +2195,17 @@ components: required: - trace_id type: object + TrendImage: + properties: + url: + format: uri + type: string + type: object + TrendMetadata: + properties: + url: + $ref: '#/components/schemas/SocialContextLandingUrl' + type: object TrendResults: properties: rest_id: @@ -4277,8 +4332,8 @@ paths: name: pathQueryId required: true schema: - default: L7vvM2UluPgWOW4GDvWyvw - example: L7vvM2UluPgWOW4GDvWyvw + default: 1vFR5f4iSCQZLzjdSsNYwA + example: 1vFR5f4iSCQZLzjdSsNYwA type: string - in: query name: variables @@ -4291,36 +4346,40 @@ paths: name: features required: true schema: - default: '{"graphql_timeline_v2_bookmark_timeline": true, "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": + default: '{"graphql_timeline_v2_bookmark_timeline": true, "profile_label_improvements_pcf_label_in_post_enabled": + true, "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, "premium_content_api_read_enabled": false, "communities_web_enable_tweet_community_results_fetch": + true, "c9s_tweet_anatomy_moderator_badge_enabled": true, "responsive_web_grok_analyze_button_fetch_trends_enabled": + false, "responsive_web_grok_analyze_post_followups_enabled": true, "responsive_web_jetfuel_frame": + false, "responsive_web_grok_share_attachment_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": + "tweet_awards_web_tipping_enabled": false, "responsive_web_grok_analysis_button_from_backend": + 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}' - example: '{"graphql_timeline_v2_bookmark_timeline": true, "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, "longform_notetweets_inline_media_enabled": true, "responsive_web_grok_image_annotation_enabled": + true, "responsive_web_enhance_cards_enabled": false}' + example: '{"graphql_timeline_v2_bookmark_timeline": true, "profile_label_improvements_pcf_label_in_post_enabled": + true, "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, "premium_content_api_read_enabled": false, "communities_web_enable_tweet_community_results_fetch": + true, "c9s_tweet_anatomy_moderator_badge_enabled": true, "responsive_web_grok_analyze_button_fetch_trends_enabled": + false, "responsive_web_grok_analyze_post_followups_enabled": true, "responsive_web_jetfuel_frame": + false, "responsive_web_grok_share_attachment_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": + "tweet_awards_web_tipping_enabled": false, "responsive_web_grok_analysis_button_from_backend": + 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}' + true, "longform_notetweets_inline_media_enabled": true, "responsive_web_grok_image_annotation_enabled": + true, "responsive_web_enhance_cards_enabled": false}' type: string responses: '200': @@ -5450,7 +5509,7 @@ paths: 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, "responsive_web_grok_analysis_button_from_backend": - true, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_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_grok_image_annotation_enabled": @@ -5467,7 +5526,7 @@ paths: 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, "responsive_web_grok_analysis_button_from_backend": - true, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_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_grok_image_annotation_enabled": @@ -5546,7 +5605,7 @@ paths: 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, "responsive_web_grok_analysis_button_from_backend": - true, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_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_grok_image_annotation_enabled": @@ -5563,7 +5622,7 @@ paths: 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, "responsive_web_grok_analysis_button_from_backend": - true, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_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_grok_image_annotation_enabled": @@ -5612,8 +5671,8 @@ paths: name: pathQueryId required: true schema: - default: 8RCkxWhvFsJ8XZeNf_z5IQ - example: 8RCkxWhvFsJ8XZeNf_z5IQ + default: Jb0jbeTT4W5Bcuo7IpFa4Q + example: Jb0jbeTT4W5Bcuo7IpFa4Q type: string - in: query name: variables @@ -5630,40 +5689,40 @@ paths: name: features required: true schema: - default: '{"profile_label_improvements_pcf_label_in_post_enabled": false, + default: '{"profile_label_improvements_pcf_label_in_post_enabled": true, "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, "premium_content_api_read_enabled": false, "communities_web_enable_tweet_community_results_fetch": true, "c9s_tweet_anatomy_moderator_badge_enabled": true, "responsive_web_grok_analyze_button_fetch_trends_enabled": - false, "responsive_web_grok_analyze_post_followups_enabled": true, "responsive_web_grok_share_attachment_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": + false, "responsive_web_grok_analyze_post_followups_enabled": true, "responsive_web_jetfuel_frame": + false, "responsive_web_grok_share_attachment_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": + "tweet_awards_web_tipping_enabled": false, "responsive_web_grok_analysis_button_from_backend": + 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}' - example: '{"profile_label_improvements_pcf_label_in_post_enabled": false, + true, "longform_notetweets_inline_media_enabled": true, "responsive_web_grok_image_annotation_enabled": + true, "responsive_web_enhance_cards_enabled": false}' + example: '{"profile_label_improvements_pcf_label_in_post_enabled": true, "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, "premium_content_api_read_enabled": false, "communities_web_enable_tweet_community_results_fetch": true, "c9s_tweet_anatomy_moderator_badge_enabled": true, "responsive_web_grok_analyze_button_fetch_trends_enabled": - false, "responsive_web_grok_analyze_post_followups_enabled": true, "responsive_web_grok_share_attachment_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": + false, "responsive_web_grok_analyze_post_followups_enabled": true, "responsive_web_jetfuel_frame": + false, "responsive_web_grok_share_attachment_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": + "tweet_awards_web_tipping_enabled": false, "responsive_web_grok_analysis_button_from_backend": + 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}' + true, "longform_notetweets_inline_media_enabled": true, "responsive_web_grok_image_annotation_enabled": + true, "responsive_web_enhance_cards_enabled": false}' type: string - in: query name: fieldToggles @@ -5741,7 +5800,7 @@ paths: 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, "responsive_web_grok_analysis_button_from_backend": - true, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_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_grok_image_annotation_enabled": @@ -5758,7 +5817,7 @@ paths: 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, "responsive_web_grok_analysis_button_from_backend": - true, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_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_grok_image_annotation_enabled": @@ -5893,7 +5952,7 @@ paths: 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, "responsive_web_grok_analysis_button_from_backend": - true, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_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_grok_image_annotation_enabled": @@ -5910,7 +5969,7 @@ paths: 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, "responsive_web_grok_analysis_button_from_backend": - true, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_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_grok_image_annotation_enabled": @@ -5987,7 +6046,7 @@ paths: 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, "responsive_web_grok_analysis_button_from_backend": - true, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_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_grok_image_annotation_enabled": @@ -6004,7 +6063,7 @@ paths: 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, "responsive_web_grok_analysis_button_from_backend": - true, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_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_grok_image_annotation_enabled": @@ -6085,7 +6144,7 @@ paths: 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, "responsive_web_grok_analysis_button_from_backend": - true, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_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_grok_image_annotation_enabled": @@ -6102,7 +6161,7 @@ paths: 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, "responsive_web_grok_analysis_button_from_backend": - true, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_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_grok_image_annotation_enabled": @@ -6151,105 +6210,6 @@ paths: type: string tags: - tweet - /graphql/{pathQueryId}/TweetResultByRestId: - get: - description: get TweetResultByRestId - operationId: getTweetResultByRestId - parameters: - - in: path - name: pathQueryId - required: true - schema: - default: 7xflPyRiUxGVbJd4uWmbfg - example: 7xflPyRiUxGVbJd4uWmbfg - type: string - - in: query - name: variables - required: true - schema: - default: '{"tweetId": "1691730070669517096", "withCommunity": false, "includePromotedContent": - false, "withVoice": false}' - example: '{"tweetId": "1691730070669517096", "withCommunity": false, "includePromotedContent": - false, "withVoice": false}' - type: string - - in: query - name: features - required: true - schema: - default: '{"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, "tweetypie_unmention_optimization_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, "tweet_with_visibility_results_prefer_gql_media_interstitial_enabled": - true, "rweb_video_timestamps_enabled": true, "longform_notetweets_rich_text_read_enabled": - true, "longform_notetweets_inline_media_enabled": true, "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, "responsive_web_enhance_cards_enabled": - false}' - example: '{"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, "tweetypie_unmention_optimization_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, "tweet_with_visibility_results_prefer_gql_media_interstitial_enabled": - true, "rweb_video_timestamps_enabled": true, "longform_notetweets_rich_text_read_enabled": - true, "longform_notetweets_inline_media_enabled": true, "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, "responsive_web_enhance_cards_enabled": - false}' - type: string - - in: query - name: fieldToggles - required: true - schema: - default: '{"withArticleRichContentState": true, "withArticlePlainText": - false}' - example: '{"withArticleRichContentState": true, "withArticlePlainText": - false}' - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/TweetResultByRestIdResponse' - description: Successful operation - headers: - x-connection-hash: - schema: - type: string - x-rate-limit-limit: - schema: - type: integer - x-rate-limit-remaining: - schema: - type: integer - x-rate-limit-reset: - schema: - type: integer - x-response-time: - schema: - type: integer - x-tfe-preserve-body: - schema: - type: boolean - x-transaction-id: - schema: - type: string - x-twitter-response-tags: - schema: - type: string /graphql/{pathQueryId}/UnfavoriteTweet: post: description: unfavorite Tweet @@ -6613,7 +6573,7 @@ paths: 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, "responsive_web_grok_analysis_button_from_backend": - true, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_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_grok_image_annotation_enabled": @@ -6630,7 +6590,7 @@ paths: 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, "responsive_web_grok_analysis_button_from_backend": - true, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_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_grok_image_annotation_enabled": @@ -6716,7 +6676,7 @@ paths: 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, "responsive_web_grok_analysis_button_from_backend": - true, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_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_grok_image_annotation_enabled": @@ -6733,7 +6693,7 @@ paths: 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, "responsive_web_grok_analysis_button_from_backend": - true, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_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_grok_image_annotation_enabled": @@ -6789,8 +6749,8 @@ paths: name: pathQueryId required: true schema: - default: bZ1YnUB32SSAfKXRwDM3jw - example: bZ1YnUB32SSAfKXRwDM3jw + default: pZXwh96YGRqmBbbxu7Vk2Q + example: pZXwh96YGRqmBbbxu7Vk2Q type: string - in: query name: variables @@ -6805,40 +6765,40 @@ paths: name: features required: true schema: - default: '{"profile_label_improvements_pcf_label_in_post_enabled": false, + default: '{"profile_label_improvements_pcf_label_in_post_enabled": true, "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, "premium_content_api_read_enabled": false, "communities_web_enable_tweet_community_results_fetch": true, "c9s_tweet_anatomy_moderator_badge_enabled": true, "responsive_web_grok_analyze_button_fetch_trends_enabled": - false, "responsive_web_grok_analyze_post_followups_enabled": true, "responsive_web_grok_share_attachment_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": + false, "responsive_web_grok_analyze_post_followups_enabled": true, "responsive_web_jetfuel_frame": + false, "responsive_web_grok_share_attachment_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": + "tweet_awards_web_tipping_enabled": false, "responsive_web_grok_analysis_button_from_backend": + 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}' - example: '{"profile_label_improvements_pcf_label_in_post_enabled": false, + true, "longform_notetweets_inline_media_enabled": true, "responsive_web_grok_image_annotation_enabled": + true, "responsive_web_enhance_cards_enabled": false}' + example: '{"profile_label_improvements_pcf_label_in_post_enabled": true, "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, "premium_content_api_read_enabled": false, "communities_web_enable_tweet_community_results_fetch": true, "c9s_tweet_anatomy_moderator_badge_enabled": true, "responsive_web_grok_analyze_button_fetch_trends_enabled": - false, "responsive_web_grok_analyze_post_followups_enabled": true, "responsive_web_grok_share_attachment_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": + false, "responsive_web_grok_analyze_post_followups_enabled": true, "responsive_web_jetfuel_frame": + false, "responsive_web_grok_share_attachment_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": + "tweet_awards_web_tipping_enabled": false, "responsive_web_grok_analysis_button_from_backend": + 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}' + true, "longform_notetweets_inline_media_enabled": true, "responsive_web_grok_image_annotation_enabled": + true, "responsive_web_enhance_cards_enabled": false}' type: string - in: query name: fieldToggles diff --git a/dist/docs/openapi-3.0.yaml b/dist/docs/openapi-3.0.yaml index 5bcf3cc..036d214 100644 --- a/dist/docs/openapi-3.0.yaml +++ b/dist/docs/openapi-3.0.yaml @@ -991,6 +991,7 @@ components: TimelinePrompt: '#/components/schemas/TimelinePrompt' TimelineTimelineCursor: '#/components/schemas/TimelineTimelineCursor' TimelineTombstone: '#/components/schemas/TimelineTombstone' + TimelineTrend: '#/components/schemas/TimelineTrend' TimelineTweet: '#/components/schemas/TimelineTweet' TimelineUser: '#/components/schemas/TimelineUser' propertyName: __typename @@ -1002,6 +1003,7 @@ components: - $ref: '#/components/schemas/TimelineMessagePrompt' - $ref: '#/components/schemas/TimelineCommunity' - $ref: '#/components/schemas/TimelineTombstone' + - $ref: '#/components/schemas/TimelineTrend' ItemResult: properties: __typename: @@ -1332,6 +1334,8 @@ components: - itemContent ModuleItem: properties: + dispensable: + type: boolean entryId: pattern: ^(([a-z]+|[0-9]+|[0-9a-f]+)(-|$))+ type: string @@ -1680,6 +1684,16 @@ components: - startIndex - endIndex type: object + ThumbnailImage: + properties: + original_img_height: + type: integer + original_img_url: + format: uri + type: string + original_img_width: + type: integer + type: object Timeline: properties: instructions: @@ -2016,6 +2030,36 @@ components: type: $ref: '#/components/schemas/SocialContextUnionType' type: object + TimelineTrend: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + images: + items: + $ref: '#/components/schemas/TrendImage' + type: array + is_ai_trend: + type: boolean + itemType: + $ref: '#/components/schemas/ContentItemType' + name: + type: string + social_context: + $ref: '#/components/schemas/SocialContextUnion' + thumbnail_image: + $ref: '#/components/schemas/ThumbnailImage' + trend_metadata: + $ref: '#/components/schemas/TrendMetadata' + trend_url: + $ref: '#/components/schemas/SocialContextLandingUrl' + required: + - __typename + - itemType + - name + - trend_url + - trend_metadata + - thumbnail_image + - images TimelineTweet: properties: __typename: @@ -2151,6 +2195,17 @@ components: required: - trace_id type: object + TrendImage: + properties: + url: + format: uri + type: string + type: object + TrendMetadata: + properties: + url: + $ref: '#/components/schemas/SocialContextLandingUrl' + type: object TrendResults: properties: rest_id: @@ -4277,8 +4332,8 @@ paths: name: pathQueryId required: true schema: - default: L7vvM2UluPgWOW4GDvWyvw - example: L7vvM2UluPgWOW4GDvWyvw + default: 1vFR5f4iSCQZLzjdSsNYwA + example: 1vFR5f4iSCQZLzjdSsNYwA type: string - content: application/json: @@ -4347,6 +4402,14 @@ paths: default: true example: true type: boolean + premium_content_api_read_enabled: + default: false + example: false + type: boolean + profile_label_improvements_pcf_label_in_post_enabled: + default: true + example: true + type: boolean responsive_web_edit_tweet_api_enabled: default: true example: true @@ -4367,6 +4430,30 @@ paths: default: true example: true type: boolean + responsive_web_grok_analysis_button_from_backend: + default: false + example: false + type: boolean + responsive_web_grok_analyze_button_fetch_trends_enabled: + default: false + example: false + type: boolean + responsive_web_grok_analyze_post_followups_enabled: + default: true + example: true + type: boolean + responsive_web_grok_image_annotation_enabled: + default: true + example: true + type: boolean + responsive_web_grok_share_attachment_enabled: + default: true + example: true + type: boolean + responsive_web_jetfuel_frame: + default: false + example: false + type: boolean responsive_web_twitter_article_tweet_consumption_enabled: default: true example: true @@ -4401,14 +4488,20 @@ paths: type: boolean required: - graphql_timeline_v2_bookmark_timeline + - profile_label_improvements_pcf_label_in_post_enabled - rweb_tipjar_consumption_enabled - responsive_web_graphql_exclude_directive_enabled - verified_phone_label_enabled - creator_subscriptions_tweet_preview_api_enabled - responsive_web_graphql_timeline_navigation_enabled - responsive_web_graphql_skip_user_profile_image_extensions_enabled + - premium_content_api_read_enabled - communities_web_enable_tweet_community_results_fetch - c9s_tweet_anatomy_moderator_badge_enabled + - responsive_web_grok_analyze_button_fetch_trends_enabled + - responsive_web_grok_analyze_post_followups_enabled + - responsive_web_jetfuel_frame + - responsive_web_grok_share_attachment_enabled - articles_preview_enabled - responsive_web_edit_tweet_api_enabled - graphql_is_translatable_rweb_tweet_is_translatable_enabled @@ -4416,6 +4509,7 @@ paths: - longform_notetweets_consumption_enabled - responsive_web_twitter_article_tweet_consumption_enabled - tweet_awards_web_tipping_enabled + - responsive_web_grok_analysis_button_from_backend - creator_subscriptions_quote_tweet_preview_enabled - freedom_of_speech_not_reach_fetch_enabled - standardized_nudges_misinfo @@ -4423,6 +4517,7 @@ paths: - rweb_video_timestamps_enabled - longform_notetweets_rich_text_read_enabled - longform_notetweets_inline_media_enabled + - responsive_web_grok_image_annotation_enabled - responsive_web_enhance_cards_enabled type: object in: query @@ -6200,8 +6295,8 @@ paths: example: true type: boolean responsive_web_grok_analysis_button_from_backend: - default: true - example: true + default: false + example: false type: boolean responsive_web_grok_analyze_button_fetch_trends_enabled: default: false @@ -6451,8 +6546,8 @@ paths: example: true type: boolean responsive_web_grok_analysis_button_from_backend: - default: true - example: true + default: false + example: false type: boolean responsive_web_grok_analyze_button_fetch_trends_enabled: default: false @@ -6585,8 +6680,8 @@ paths: name: pathQueryId required: true schema: - default: 8RCkxWhvFsJ8XZeNf_z5IQ - example: 8RCkxWhvFsJ8XZeNf_z5IQ + default: Jb0jbeTT4W5Bcuo7IpFa4Q + example: Jb0jbeTT4W5Bcuo7IpFa4Q type: string - content: application/json: @@ -6681,8 +6776,8 @@ paths: example: false type: boolean profile_label_improvements_pcf_label_in_post_enabled: - default: false - example: false + default: true + example: true type: boolean responsive_web_edit_tweet_api_enabled: default: true @@ -6704,6 +6799,10 @@ paths: default: true example: true type: boolean + responsive_web_grok_analysis_button_from_backend: + default: false + example: false + type: boolean responsive_web_grok_analyze_button_fetch_trends_enabled: default: false example: false @@ -6712,10 +6811,18 @@ paths: default: true example: true type: boolean + responsive_web_grok_image_annotation_enabled: + default: true + example: true + type: boolean responsive_web_grok_share_attachment_enabled: default: true example: true type: boolean + responsive_web_jetfuel_frame: + default: false + example: false + type: boolean responsive_web_twitter_article_tweet_consumption_enabled: default: true example: true @@ -6761,6 +6868,7 @@ paths: - c9s_tweet_anatomy_moderator_badge_enabled - responsive_web_grok_analyze_button_fetch_trends_enabled - responsive_web_grok_analyze_post_followups_enabled + - responsive_web_jetfuel_frame - responsive_web_grok_share_attachment_enabled - articles_preview_enabled - responsive_web_edit_tweet_api_enabled @@ -6769,6 +6877,7 @@ paths: - longform_notetweets_consumption_enabled - responsive_web_twitter_article_tweet_consumption_enabled - tweet_awards_web_tipping_enabled + - responsive_web_grok_analysis_button_from_backend - creator_subscriptions_quote_tweet_preview_enabled - freedom_of_speech_not_reach_fetch_enabled - standardized_nudges_misinfo @@ -6776,6 +6885,7 @@ paths: - rweb_video_timestamps_enabled - longform_notetweets_rich_text_read_enabled - longform_notetweets_inline_media_enabled + - responsive_web_grok_image_annotation_enabled - responsive_web_enhance_cards_enabled type: object in: query @@ -6933,8 +7043,8 @@ paths: example: true type: boolean responsive_web_grok_analysis_button_from_backend: - default: true - example: true + default: false + example: false type: boolean responsive_web_grok_analyze_button_fetch_trends_enabled: default: false @@ -7233,8 +7343,8 @@ paths: example: true type: boolean responsive_web_grok_analysis_button_from_backend: - default: true - example: true + default: false + example: false type: boolean responsive_web_grok_analyze_button_fetch_trends_enabled: default: false @@ -7472,8 +7582,8 @@ paths: example: true type: boolean responsive_web_grok_analysis_button_from_backend: - default: true - example: true + default: false + example: false type: boolean responsive_web_grok_analyze_button_fetch_trends_enabled: default: false @@ -7736,8 +7846,8 @@ paths: example: true type: boolean responsive_web_grok_analysis_button_from_backend: - default: true - example: true + default: false + example: false type: boolean responsive_web_grok_analyze_button_fetch_trends_enabled: default: false @@ -7890,232 +8000,6 @@ paths: type: string tags: - tweet - /graphql/{pathQueryId}/TweetResultByRestId: - get: - description: get TweetResultByRestId - operationId: getTweetResultByRestId - parameters: - - in: path - name: pathQueryId - required: true - schema: - default: 7xflPyRiUxGVbJd4uWmbfg - example: 7xflPyRiUxGVbJd4uWmbfg - type: string - - content: - application/json: - schema: - properties: - includePromotedContent: - default: false - example: false - type: boolean - tweetId: - default: '1691730070669517096' - example: '1691730070669517096' - type: string - withCommunity: - default: false - example: false - type: boolean - withVoice: - default: false - example: false - type: boolean - required: - - tweetId - - withCommunity - - includePromotedContent - - withVoice - type: object - in: query - name: variables - required: true - - content: - application/json: - schema: - properties: - articles_preview_enabled: - default: true - example: true - type: boolean - c9s_tweet_anatomy_moderator_badge_enabled: - default: true - example: true - type: boolean - communities_web_enable_tweet_community_results_fetch: - default: true - example: true - type: boolean - creator_subscriptions_quote_tweet_preview_enabled: - default: false - example: false - type: boolean - creator_subscriptions_tweet_preview_api_enabled: - default: true - example: true - type: boolean - freedom_of_speech_not_reach_fetch_enabled: - default: true - example: true - type: boolean - graphql_is_translatable_rweb_tweet_is_translatable_enabled: - default: true - example: true - type: boolean - longform_notetweets_consumption_enabled: - default: true - example: true - type: boolean - longform_notetweets_inline_media_enabled: - default: true - example: true - type: boolean - longform_notetweets_rich_text_read_enabled: - default: true - example: true - type: boolean - responsive_web_edit_tweet_api_enabled: - default: true - example: true - type: boolean - responsive_web_enhance_cards_enabled: - default: false - example: false - type: boolean - responsive_web_graphql_exclude_directive_enabled: - default: true - example: true - type: boolean - responsive_web_graphql_skip_user_profile_image_extensions_enabled: - default: false - example: false - type: boolean - responsive_web_graphql_timeline_navigation_enabled: - default: true - example: true - type: boolean - responsive_web_twitter_article_tweet_consumption_enabled: - default: true - example: true - type: boolean - rweb_tipjar_consumption_enabled: - default: true - example: true - type: boolean - rweb_video_timestamps_enabled: - default: true - example: true - type: boolean - standardized_nudges_misinfo: - default: true - example: true - type: boolean - tweet_awards_web_tipping_enabled: - default: false - example: false - type: boolean - tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled: - default: true - example: true - type: boolean - tweet_with_visibility_results_prefer_gql_media_interstitial_enabled: - default: true - example: true - type: boolean - tweetypie_unmention_optimization_enabled: - default: true - example: true - type: boolean - verified_phone_label_enabled: - default: false - example: false - type: boolean - view_counts_everywhere_api_enabled: - default: true - example: true - type: boolean - required: - - creator_subscriptions_tweet_preview_api_enabled - - communities_web_enable_tweet_community_results_fetch - - c9s_tweet_anatomy_moderator_badge_enabled - - articles_preview_enabled - - tweetypie_unmention_optimization_enabled - - responsive_web_edit_tweet_api_enabled - - graphql_is_translatable_rweb_tweet_is_translatable_enabled - - view_counts_everywhere_api_enabled - - longform_notetweets_consumption_enabled - - responsive_web_twitter_article_tweet_consumption_enabled - - tweet_awards_web_tipping_enabled - - creator_subscriptions_quote_tweet_preview_enabled - - freedom_of_speech_not_reach_fetch_enabled - - standardized_nudges_misinfo - - tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled - - tweet_with_visibility_results_prefer_gql_media_interstitial_enabled - - rweb_video_timestamps_enabled - - longform_notetweets_rich_text_read_enabled - - longform_notetweets_inline_media_enabled - - rweb_tipjar_consumption_enabled - - responsive_web_graphql_exclude_directive_enabled - - verified_phone_label_enabled - - responsive_web_graphql_skip_user_profile_image_extensions_enabled - - responsive_web_graphql_timeline_navigation_enabled - - responsive_web_enhance_cards_enabled - type: object - in: query - name: features - required: true - - content: - application/json: - schema: - properties: - withArticlePlainText: - default: false - example: false - type: boolean - withArticleRichContentState: - default: true - example: true - type: boolean - required: - - withArticleRichContentState - - withArticlePlainText - type: object - in: query - name: fieldToggles - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/TweetResultByRestIdResponse' - description: Successful operation - headers: - x-connection-hash: - schema: - type: string - x-rate-limit-limit: - schema: - type: integer - x-rate-limit-remaining: - schema: - type: integer - x-rate-limit-reset: - schema: - type: integer - x-response-time: - schema: - type: integer - x-tfe-preserve-body: - schema: - type: boolean - x-transaction-id: - schema: - type: string - x-twitter-response-tags: - schema: - type: string /graphql/{pathQueryId}/UnfavoriteTweet: post: description: unfavorite Tweet @@ -8824,8 +8708,8 @@ paths: example: true type: boolean responsive_web_grok_analysis_button_from_backend: - default: true - example: true + default: false + example: false type: boolean responsive_web_grok_analyze_button_fetch_trends_enabled: default: false @@ -9087,8 +8971,8 @@ paths: example: true type: boolean responsive_web_grok_analysis_button_from_backend: - default: true - example: true + default: false + example: false type: boolean responsive_web_grok_analyze_button_fetch_trends_enabled: default: false @@ -9235,8 +9119,8 @@ paths: name: pathQueryId required: true schema: - default: bZ1YnUB32SSAfKXRwDM3jw - example: bZ1YnUB32SSAfKXRwDM3jw + default: pZXwh96YGRqmBbbxu7Vk2Q + example: pZXwh96YGRqmBbbxu7Vk2Q type: string - content: application/json: @@ -9326,8 +9210,8 @@ paths: example: false type: boolean profile_label_improvements_pcf_label_in_post_enabled: - default: false - example: false + default: true + example: true type: boolean responsive_web_edit_tweet_api_enabled: default: true @@ -9349,6 +9233,10 @@ paths: default: true example: true type: boolean + responsive_web_grok_analysis_button_from_backend: + default: false + example: false + type: boolean responsive_web_grok_analyze_button_fetch_trends_enabled: default: false example: false @@ -9357,10 +9245,18 @@ paths: default: true example: true type: boolean + responsive_web_grok_image_annotation_enabled: + default: true + example: true + type: boolean responsive_web_grok_share_attachment_enabled: default: true example: true type: boolean + responsive_web_jetfuel_frame: + default: false + example: false + type: boolean responsive_web_twitter_article_tweet_consumption_enabled: default: true example: true @@ -9406,6 +9302,7 @@ paths: - c9s_tweet_anatomy_moderator_badge_enabled - responsive_web_grok_analyze_button_fetch_trends_enabled - responsive_web_grok_analyze_post_followups_enabled + - responsive_web_jetfuel_frame - responsive_web_grok_share_attachment_enabled - articles_preview_enabled - responsive_web_edit_tweet_api_enabled @@ -9414,6 +9311,7 @@ paths: - longform_notetweets_consumption_enabled - responsive_web_twitter_article_tweet_consumption_enabled - tweet_awards_web_tipping_enabled + - responsive_web_grok_analysis_button_from_backend - creator_subscriptions_quote_tweet_preview_enabled - freedom_of_speech_not_reach_fetch_enabled - standardized_nudges_misinfo @@ -9421,6 +9319,7 @@ paths: - rweb_video_timestamps_enabled - longform_notetweets_rich_text_read_enabled - longform_notetweets_inline_media_enabled + - responsive_web_grok_image_annotation_enabled - responsive_web_enhance_cards_enabled type: object in: query diff --git a/requirements.txt b/requirements.txt index 5080eaa..40d25e0 100644 Binary files a/requirements.txt and b/requirements.txt differ diff --git a/src/config/placeholder.json b/src/config/placeholder.json index c673e68..6cd9b5a 100644 --- a/src/config/placeholder.json +++ b/src/config/placeholder.json @@ -31,7 +31,7 @@ "longform_notetweets_consumption_enabled": true, "responsive_web_twitter_article_tweet_consumption_enabled": true, "tweet_awards_web_tipping_enabled": false, - "responsive_web_grok_analysis_button_from_backend": true, + "responsive_web_grok_analysis_button_from_backend": false, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": true, "standardized_nudges_misinfo": true, @@ -74,7 +74,7 @@ "longform_notetweets_consumption_enabled": true, "responsive_web_twitter_article_tweet_consumption_enabled": true, "tweet_awards_web_tipping_enabled": false, - "responsive_web_grok_analysis_button_from_backend": true, + "responsive_web_grok_analysis_button_from_backend": false, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": true, "standardized_nudges_misinfo": true, @@ -114,7 +114,7 @@ "longform_notetweets_consumption_enabled": true, "responsive_web_twitter_article_tweet_consumption_enabled": true, "tweet_awards_web_tipping_enabled": false, - "responsive_web_grok_analysis_button_from_backend": true, + "responsive_web_grok_analysis_button_from_backend": false, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": true, "standardized_nudges_misinfo": true, @@ -221,7 +221,7 @@ "longform_notetweets_consumption_enabled": true, "responsive_web_twitter_article_tweet_consumption_enabled": true, "tweet_awards_web_tipping_enabled": false, - "responsive_web_grok_analysis_button_from_backend": true, + "responsive_web_grok_analysis_button_from_backend": false, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": true, "standardized_nudges_misinfo": true, @@ -237,7 +237,7 @@ } }, "UserTweetsAndReplies": { - "queryId": "bZ1YnUB32SSAfKXRwDM3jw", + "queryId": "pZXwh96YGRqmBbbxu7Vk2Q", "variables": { "userId": "44196397", "count": 40, @@ -247,7 +247,7 @@ "withV2Timeline": true }, "features": { - "profile_label_improvements_pcf_label_in_post_enabled": false, + "profile_label_improvements_pcf_label_in_post_enabled": true, "rweb_tipjar_consumption_enabled": true, "responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": false, @@ -259,6 +259,7 @@ "c9s_tweet_anatomy_moderator_badge_enabled": true, "responsive_web_grok_analyze_button_fetch_trends_enabled": false, "responsive_web_grok_analyze_post_followups_enabled": true, + "responsive_web_jetfuel_frame": false, "responsive_web_grok_share_attachment_enabled": true, "articles_preview_enabled": true, "responsive_web_edit_tweet_api_enabled": true, @@ -267,6 +268,7 @@ "longform_notetweets_consumption_enabled": true, "responsive_web_twitter_article_tweet_consumption_enabled": true, "tweet_awards_web_tipping_enabled": false, + "responsive_web_grok_analysis_button_from_backend": false, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": true, "standardized_nudges_misinfo": true, @@ -274,6 +276,7 @@ "rweb_video_timestamps_enabled": true, "longform_notetweets_rich_text_read_enabled": true, "longform_notetweets_inline_media_enabled": true, + "responsive_web_grok_image_annotation_enabled": true, "responsive_web_enhance_cards_enabled": false }, "fieldToggles": { @@ -355,7 +358,7 @@ "longform_notetweets_consumption_enabled": true, "responsive_web_twitter_article_tweet_consumption_enabled": true, "tweet_awards_web_tipping_enabled": false, - "responsive_web_grok_analysis_button_from_backend": true, + "responsive_web_grok_analysis_button_from_backend": false, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": true, "standardized_nudges_misinfo": true, @@ -371,7 +374,7 @@ } }, "Likes": { - "queryId": "8RCkxWhvFsJ8XZeNf_z5IQ", + "queryId": "Jb0jbeTT4W5Bcuo7IpFa4Q", "variables": { "userId": "44196397", "count": 20, @@ -382,7 +385,7 @@ "withV2Timeline": true }, "features": { - "profile_label_improvements_pcf_label_in_post_enabled": false, + "profile_label_improvements_pcf_label_in_post_enabled": true, "rweb_tipjar_consumption_enabled": true, "responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": false, @@ -394,6 +397,7 @@ "c9s_tweet_anatomy_moderator_badge_enabled": true, "responsive_web_grok_analyze_button_fetch_trends_enabled": false, "responsive_web_grok_analyze_post_followups_enabled": true, + "responsive_web_jetfuel_frame": false, "responsive_web_grok_share_attachment_enabled": true, "articles_preview_enabled": true, "responsive_web_edit_tweet_api_enabled": true, @@ -402,6 +406,7 @@ "longform_notetweets_consumption_enabled": true, "responsive_web_twitter_article_tweet_consumption_enabled": true, "tweet_awards_web_tipping_enabled": false, + "responsive_web_grok_analysis_button_from_backend": false, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": true, "standardized_nudges_misinfo": true, @@ -409,6 +414,7 @@ "rweb_video_timestamps_enabled": true, "longform_notetweets_rich_text_read_enabled": true, "longform_notetweets_inline_media_enabled": true, + "responsive_web_grok_image_annotation_enabled": true, "responsive_web_enhance_cards_enabled": false }, "fieldToggles": { @@ -416,21 +422,27 @@ } }, "Bookmarks": { - "queryId": "L7vvM2UluPgWOW4GDvWyvw", + "queryId": "1vFR5f4iSCQZLzjdSsNYwA", "variables": { "count": 20, "includePromotedContent": true }, "features": { "graphql_timeline_v2_bookmark_timeline": true, + "profile_label_improvements_pcf_label_in_post_enabled": true, "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, + "premium_content_api_read_enabled": false, "communities_web_enable_tweet_community_results_fetch": true, "c9s_tweet_anatomy_moderator_badge_enabled": true, + "responsive_web_grok_analyze_button_fetch_trends_enabled": false, + "responsive_web_grok_analyze_post_followups_enabled": true, + "responsive_web_jetfuel_frame": false, + "responsive_web_grok_share_attachment_enabled": true, "articles_preview_enabled": true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": true, @@ -438,6 +450,7 @@ "longform_notetweets_consumption_enabled": true, "responsive_web_twitter_article_tweet_consumption_enabled": true, "tweet_awards_web_tipping_enabled": false, + "responsive_web_grok_analysis_button_from_backend": false, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": true, "standardized_nudges_misinfo": true, @@ -445,6 +458,7 @@ "rweb_video_timestamps_enabled": true, "longform_notetweets_rich_text_read_enabled": true, "longform_notetweets_inline_media_enabled": true, + "responsive_web_grok_image_annotation_enabled": true, "responsive_web_enhance_cards_enabled": false } }, @@ -483,7 +497,7 @@ "longform_notetweets_consumption_enabled": true, "responsive_web_twitter_article_tweet_consumption_enabled": true, "tweet_awards_web_tipping_enabled": false, - "responsive_web_grok_analysis_button_from_backend": true, + "responsive_web_grok_analysis_button_from_backend": false, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": true, "standardized_nudges_misinfo": true, @@ -571,7 +585,7 @@ "longform_notetweets_consumption_enabled": true, "responsive_web_twitter_article_tweet_consumption_enabled": true, "tweet_awards_web_tipping_enabled": false, - "responsive_web_grok_analysis_button_from_backend": true, + "responsive_web_grok_analysis_button_from_backend": false, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": true, "standardized_nudges_misinfo": true, @@ -653,7 +667,7 @@ "longform_notetweets_consumption_enabled": true, "responsive_web_twitter_article_tweet_consumption_enabled": true, "tweet_awards_web_tipping_enabled": false, - "responsive_web_grok_analysis_button_from_backend": true, + "responsive_web_grok_analysis_button_from_backend": false, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": true, "standardized_nudges_misinfo": true, @@ -1073,7 +1087,7 @@ "longform_notetweets_consumption_enabled": true, "responsive_web_twitter_article_tweet_consumption_enabled": true, "tweet_awards_web_tipping_enabled": false, - "responsive_web_grok_analysis_button_from_backend": true, + "responsive_web_grok_analysis_button_from_backend": false, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": true, "standardized_nudges_misinfo": true, @@ -1128,16 +1142,22 @@ "queryId": "xfgycRkhqXy90CmTQZ7Kig" }, "CommunitiesRankedTimeline": { - "queryId": "NVJIUjvGDC3o814fGgkU3g", + "queryId": "EPoSkfcuBVl14JujJXhPHA", "features": { + "profile_label_improvements_pcf_label_in_post_enabled": true, "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, + "premium_content_api_read_enabled": false, "communities_web_enable_tweet_community_results_fetch": true, "c9s_tweet_anatomy_moderator_badge_enabled": true, + "responsive_web_grok_analyze_button_fetch_trends_enabled": false, + "responsive_web_grok_analyze_post_followups_enabled": true, + "responsive_web_jetfuel_frame": false, + "responsive_web_grok_share_attachment_enabled": true, "articles_preview_enabled": true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": true, @@ -1145,6 +1165,7 @@ "longform_notetweets_consumption_enabled": true, "responsive_web_twitter_article_tweet_consumption_enabled": true, "tweet_awards_web_tipping_enabled": false, + "responsive_web_grok_analysis_button_from_backend": false, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": true, "standardized_nudges_misinfo": true, @@ -1152,6 +1173,7 @@ "rweb_video_timestamps_enabled": true, "longform_notetweets_rich_text_read_enabled": true, "longform_notetweets_inline_media_enabled": true, + "responsive_web_grok_image_annotation_enabled": true, "responsive_web_enhance_cards_enabled": false }, "variables": { @@ -1160,16 +1182,22 @@ } }, "BirdwatchFetchGlobalTimeline": { - "queryId": "9TNlnKM4cSOwNE4txrtnJQ", + "queryId": "J6wd8tw7uKgdjJnkZg5kBg", "features": { + "profile_label_improvements_pcf_label_in_post_enabled": true, "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, + "premium_content_api_read_enabled": false, "communities_web_enable_tweet_community_results_fetch": true, "c9s_tweet_anatomy_moderator_badge_enabled": true, + "responsive_web_grok_analyze_button_fetch_trends_enabled": false, + "responsive_web_grok_analyze_post_followups_enabled": true, + "responsive_web_jetfuel_frame": false, + "responsive_web_grok_share_attachment_enabled": true, "articles_preview_enabled": true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": true, @@ -1177,6 +1205,7 @@ "longform_notetweets_consumption_enabled": true, "responsive_web_twitter_article_tweet_consumption_enabled": true, "tweet_awards_web_tipping_enabled": false, + "responsive_web_grok_analysis_button_from_backend": false, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": true, "standardized_nudges_misinfo": true, @@ -1184,6 +1213,7 @@ "rweb_video_timestamps_enabled": true, "longform_notetweets_rich_text_read_enabled": true, "longform_notetweets_inline_media_enabled": true, + "responsive_web_grok_image_annotation_enabled": true, "responsive_web_enhance_cards_enabled": false } }, @@ -1242,16 +1272,22 @@ "queryId": "_gBQBgClVuMQb8efxWkbbQ" }, "GenericTimelineById": { - "queryId": "eob7MfQ-OPla82tbCSxZUA", + "queryId": "5u36Lskx1dfACjC_WHmH3Q", "features": { + "profile_label_improvements_pcf_label_in_post_enabled": true, "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, + "premium_content_api_read_enabled": false, "communities_web_enable_tweet_community_results_fetch": true, "c9s_tweet_anatomy_moderator_badge_enabled": true, + "responsive_web_grok_analyze_button_fetch_trends_enabled": false, + "responsive_web_grok_analyze_post_followups_enabled": true, + "responsive_web_jetfuel_frame": false, + "responsive_web_grok_share_attachment_enabled": true, "articles_preview_enabled": true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": true, @@ -1259,6 +1295,7 @@ "longform_notetweets_consumption_enabled": true, "responsive_web_twitter_article_tweet_consumption_enabled": true, "tweet_awards_web_tipping_enabled": false, + "responsive_web_grok_analysis_button_from_backend": false, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": true, "standardized_nudges_misinfo": true, @@ -1266,6 +1303,7 @@ "rweb_video_timestamps_enabled": true, "longform_notetweets_rich_text_read_enabled": true, "longform_notetweets_inline_media_enabled": true, + "responsive_web_grok_image_annotation_enabled": true, "responsive_web_enhance_cards_enabled": false } }, @@ -1312,9 +1350,9 @@ "queryId": "9bDdJ6AL26RLkcUShEcF-A" }, "ListsManagementPageTimeline": { - "queryId": "BM3FLgok8ytu4s5h56E0Ww", + "queryId": "Ly8-jWQCO-MDBeYZM1Tigg", "features": { - "profile_label_improvements_pcf_label_in_post_enabled": false, + "profile_label_improvements_pcf_label_in_post_enabled": true, "rweb_tipjar_consumption_enabled": true, "responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": false, @@ -1326,6 +1364,7 @@ "c9s_tweet_anatomy_moderator_badge_enabled": true, "responsive_web_grok_analyze_button_fetch_trends_enabled": false, "responsive_web_grok_analyze_post_followups_enabled": true, + "responsive_web_jetfuel_frame": false, "responsive_web_grok_share_attachment_enabled": true, "articles_preview_enabled": true, "responsive_web_edit_tweet_api_enabled": true, @@ -1334,6 +1373,7 @@ "longform_notetweets_consumption_enabled": true, "responsive_web_twitter_article_tweet_consumption_enabled": true, "tweet_awards_web_tipping_enabled": false, + "responsive_web_grok_analysis_button_from_backend": false, "creator_subscriptions_quote_tweet_preview_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": true, "standardized_nudges_misinfo": true, @@ -1341,10 +1381,182 @@ "rweb_video_timestamps_enabled": true, "longform_notetweets_rich_text_read_enabled": true, "longform_notetweets_inline_media_enabled": true, + "responsive_web_grok_image_annotation_enabled": true, "responsive_web_enhance_cards_enabled": false } }, "useFetchProfileSections_canViewExpandedProfileQuery": { "queryId": "vqu78dKcEkW-UAYLw5rriA" + }, + "affiliatesQuery": { + "queryId": "lre2gA0kvs0gf4XRNei6Qw" + }, + "UserPreferences": { + "queryId": "xFxU-O8hEYe74ovNVU74jA" + }, + "CommunitiesFetchOneQuery": { + "queryId": "qoO_JjXzufVpsHld_wO9bw", + "features": { + "profile_label_improvements_pcf_label_in_post_enabled": true, + "responsive_web_graphql_exclude_directive_enabled": true, + "responsive_web_graphql_skip_user_profile_image_extensions_enabled": false, + "responsive_web_graphql_timeline_navigation_enabled": true, + "rweb_tipjar_consumption_enabled": true, + "verified_phone_label_enabled": false + } + }, + "CommunityQuery": { + "queryId": "YDYGxdoPEu0zNC2eWP_0MQ", + "features": { + "c9s_list_members_action_api_enabled": false, + "c9s_superc9s_indication_enabled": false + } + }, + "CommunityTweetsTimeline": { + "queryId": "9Aek_FuJnKEtOZuUzMb--A", + "features": { + "profile_label_improvements_pcf_label_in_post_enabled": true, + "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, + "premium_content_api_read_enabled": false, + "communities_web_enable_tweet_community_results_fetch": true, + "c9s_tweet_anatomy_moderator_badge_enabled": true, + "responsive_web_grok_analyze_button_fetch_trends_enabled": false, + "responsive_web_grok_analyze_post_followups_enabled": true, + "responsive_web_jetfuel_frame": false, + "responsive_web_grok_share_attachment_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, + "responsive_web_grok_analysis_button_from_backend": 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_grok_image_annotation_enabled": true, + "responsive_web_enhance_cards_enabled": false + } + }, + "CommunityMediaTimeline": { + "queryId": "AeGLWU3FS7hlZsvwRtMTRg", + "features": { + "profile_label_improvements_pcf_label_in_post_enabled": true, + "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, + "premium_content_api_read_enabled": false, + "communities_web_enable_tweet_community_results_fetch": true, + "c9s_tweet_anatomy_moderator_badge_enabled": true, + "responsive_web_grok_analyze_button_fetch_trends_enabled": false, + "responsive_web_grok_analyze_post_followups_enabled": true, + "responsive_web_jetfuel_frame": false, + "responsive_web_grok_share_attachment_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, + "responsive_web_grok_analysis_button_from_backend": 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_grok_image_annotation_enabled": true, + "responsive_web_enhance_cards_enabled": false + } + }, + "CommunityAboutTimeline": { + "queryId": "Cr3qPw53XABLDuzCFJmnhA", + "features": { + "profile_label_improvements_pcf_label_in_post_enabled": true, + "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, + "premium_content_api_read_enabled": false, + "communities_web_enable_tweet_community_results_fetch": true, + "c9s_tweet_anatomy_moderator_badge_enabled": true, + "responsive_web_grok_analyze_button_fetch_trends_enabled": false, + "responsive_web_grok_analyze_post_followups_enabled": true, + "responsive_web_jetfuel_frame": false, + "responsive_web_grok_share_attachment_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, + "responsive_web_grok_analysis_button_from_backend": 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_grok_image_annotation_enabled": true, + "responsive_web_enhance_cards_enabled": false + } + }, + "CommunityHashtagsTimeline": { + "queryId": "zD5okPf_YV2nYIC8MIPBOQ", + "features": { + "profile_label_improvements_pcf_label_in_post_enabled": true, + "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, + "premium_content_api_read_enabled": false, + "communities_web_enable_tweet_community_results_fetch": true, + "c9s_tweet_anatomy_moderator_badge_enabled": true, + "responsive_web_grok_analyze_button_fetch_trends_enabled": false, + "responsive_web_grok_analyze_post_followups_enabled": true, + "responsive_web_jetfuel_frame": false, + "responsive_web_grok_share_attachment_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, + "responsive_web_grok_analysis_button_from_backend": 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_grok_image_annotation_enabled": true, + "responsive_web_enhance_cards_enabled": false + } + }, + "isEligibleForVoButtonUpsellQuery": { + "queryId": "BuWF9hiwmUyFdGo3J4DqbA" } } diff --git a/src/openapi/paths/tweet.yaml b/src/openapi/paths/tweet.yaml index 7375ed4..1feff9a 100644 --- a/src/openapi/paths/tweet.yaml +++ b/src/openapi/paths/tweet.yaml @@ -18,19 +18,19 @@ paths: tags: - "tweet" - /graphql/{pathQueryId}/TweetResultByRestId: - get: - operationId: getTweetResultByRestId - description: get TweetResultByRestId - responses: - "200": - description: Successful operation - content: - application/json: - schema: - $ref: "#/components/schemas/TweetResultByRestIdResponse" - # tags: - # - "tweet" + # /graphql/{pathQueryId}/TweetResultByRestId: + # get: + # operationId: getTweetResultByRestId + # description: get TweetResultByRestId + # responses: + # "200": + # description: Successful operation + # content: + # application/json: + # schema: + # $ref: "#/components/schemas/TweetResultByRestIdResponse" + # # tags: + # # - "tweet" /graphql/{pathQueryId}/Favoriters: get: diff --git a/src/openapi/schemas/content.yaml b/src/openapi/schemas/content.yaml index 8ce397c..57fc456 100644 --- a/src/openapi/schemas/content.yaml +++ b/src/openapi/schemas/content.yaml @@ -129,6 +129,8 @@ components: pattern: "^(([a-z]+|[0-9]+|[0-9a-f]+)(-|$))+" item: $ref: "#/components/schemas/ModuleEntry" + dispensable: + type: boolean ModuleEntry: required: @@ -163,6 +165,7 @@ components: - $ref: "#/components/schemas/TimelineMessagePrompt" - $ref: "#/components/schemas/TimelineCommunity" - $ref: "#/components/schemas/TimelineTombstone" + - $ref: "#/components/schemas/TimelineTrend" discriminator: propertyName: __typename @@ -174,6 +177,7 @@ components: TimelineMessagePrompt: "#/components/schemas/TimelineMessagePrompt" TimelineCommunity: "#/components/schemas/TimelineCommunity" TimelineTombstone: "#/components/schemas/TimelineTombstone" + TimelineTrend: "#/components/schemas/TimelineTrend" ContentItemType: type: string @@ -450,3 +454,60 @@ components: urlType: type: string enum: [ExternalUrl] + + # {"itemType": "TimelineTrend", "__typename": "TimelineTrend", "social_context": {"type": "TimelineGeneralContext", "contextType": "Facepile", "text": "18 hours ago \\u00b7 Sports \\u00b7 64K posts", "contextImageUrls": ["https://pbs.twimg.com/profile_images/1889603596309639168/KSBuQ9vL_normal.png", "https://pbs.twimg.com/profile_images/1638484441101221890/dp7HU1PB_normal.jpg", "https://pbs.twimg.com/profile_images/1605131756310614017/05qwHae-_normal.jpg"]}, "is_ai_trend": true, "name": "Manchester United Unveils Plans for \\u00a32bn Stadium with 100,000 Capacity", "trend_url": {"url": "twitter://trending/1899449402634424550", "urlType": "DeepLink"}, "trend_metadata": {"url": {"url": "twitter://trending/1899449402634424550", "urlType": "DeepLink"}}, "thumbnail_image": {"original_img_url": "https://pbs.twimg.com/media/Glv52LAXgAAzZcC.jpg", "original_img_width": 3072, "original_img_height": 4096}, "images": [{"url": "https://pbs.twimg.com/media/Glv52LAXgAAzZcC.jpg"}]} + + TimelineTrend: + required: + - "__typename" + - "itemType" + - "name" + - "trend_url" + - "trend_metadata" + - "thumbnail_image" + - "images" + properties: + __typename: + $ref: "./typename.yaml#/components/schemas/TypeName" # TimelineTrend + itemType: + $ref: "#/components/schemas/ContentItemType" # TimelineTrend + social_context: + $ref: "#/components/schemas/SocialContextUnion" + is_ai_trend: + type: boolean + name: + type: string + trend_url: + $ref: "#/components/schemas/SocialContextLandingUrl" + trend_metadata: + $ref: "#/components/schemas/TrendMetadata" + thumbnail_image: + $ref: "#/components/schemas/ThumbnailImage" + images: + type: array + items: + $ref: "#/components/schemas/TrendImage" + + TrendMetadata: + type: object + properties: + url: + $ref: "#/components/schemas/SocialContextLandingUrl" + + ThumbnailImage: + type: object + properties: + original_img_url: + type: string + format: uri + original_img_width: + type: integer + original_img_height: + type: integer + + TrendImage: + type: object + properties: + url: + type: string + format: uri diff --git a/test/python/test_serialize.py b/test/python/test_serialize.py index 3c9ed5a..ffe4a1d 100644 --- a/test/python/test_serialize.py +++ b/test/python/test_serialize.py @@ -388,6 +388,7 @@ def error_dump(e): "1875050002046726519", "1848219562136801480", "1881993128288399684", + "1899104692577489182" ] for id in ids: try: diff --git a/test/python/test_serialize_guest.py b/test/python/test_serialize_guest.py index 21a1fe6..ff8454a 100644 --- a/test/python/test_serialize_guest.py +++ b/test/python/test_serialize_guest.py @@ -1,5 +1,6 @@ import json -from pathlib import Path +import re +from urllib.parse import urlencode, urlparse import openapi_client as pt import urllib3 @@ -16,13 +17,133 @@ def get_kwargs(key, additional): return kwargs + + +class SessionManager: + def __init__(self) -> None: + header = "https://raw.githubusercontent.com/fa0311/latest-user-agent/refs/heads/main/header.json" + self.http = urllib3.PoolManager() + self.chorome_header = json.loads(self.http.request("GET", header).data) + + + def child(self): + return SessionManagerChild(self.http,self.chorome_header) + +class SessionManagerChild: + def __init__(self, http, chorome_header) -> None: + self.http = http + self.chorome_header = chorome_header + self.session = {} + + def cookie_normalize(self, cookie: list[str]) -> dict[str, str]: + value = {x.split("; ")[0].split("=")[0]: x.split("; ")[0].split("=")[1] for x in cookie} + return {key: value[key] for key in value if len(value[key]) > 0} + + def cookie_to_str(self, cookie: dict[str, str]) -> str: + return "; ".join([f"{key}={value}" for key, value in cookie.items()]) + + def getHader(self, additionals={}) -> dict[str, str]: + ignore = ["host", "connection"] + base = {key: value for key, value in self.chorome_header["chrome"].items() if key not in ignore} + return base | {"cookie": self.cookie_to_str(self.session)} | additionals + + def update_normalize(self, cookie: list[str]): + self.update(self.cookie_normalize(cookie)) + + def update(self, cookie: dict[str, str]): + self.session.update(cookie) + + def pop(self, key: str): + self.session.pop(key) + + def get(self, key: str): + return self.session.get(key) + + def to_str(self): + return self.cookie_to_str(self.session) + + +def get_guest_token(): + twitter_url = "https://x.com/elonmusk" + http = urllib3.PoolManager() + chrome = SessionManager() + x = chrome.child() + twitter = chrome.child() + + + + def regex(str: str, **kwargs) -> str: + return str.format( + quote=r"[\'\"]", + space=r"\s*", + dot=r"\.", + any=r".*?", + target=r"([\s\S]*?)", + **kwargs + ) + + + def redirect(method: str, url: str, body: str = None, headers: dict[str, str] = {}) -> urllib3.HTTPResponse: + for _ in range(10): + if urlparse(url).netloc == "x.com": + res = http.request(method, url, headers=x.getHader(headers), body=body, redirect=False) + x.update_normalize(res.headers._container["set-cookie"][1:]) + elif urlparse(url).netloc == "twitter.com": + res = http.request(method, url, headers=twitter.getHader(headers), body=body, redirect=False) + twitter.update_normalize(res.headers._container["set-cookie"][1:]) + else: + raise Exception("Invalid domain") + + method = "GET" + body = None + headers = {} + location = "document{dot}location{space}={space}{quote}{target}{quote}" + submit = "document{dot}forms{dot}{target}{dot}submit" + form = "{target}" + input = "" + + if res.status >= 300 and res.status < 400: + new_path = res.headers._container["location"][1] + if new_path.startswith("/"): + domain = f"{urlparse(url).scheme}://{urlparse(url).netloc}" + url = f"{domain}{new_path}" + else: + url = new_path + + elif re.findall(regex(location), res.data.decode()): + url = re.findall(regex(location), res.data.decode())[0] + elif re.findall(regex(submit), res.data.decode()): + name = re.findall(regex(submit), res.data.decode()) + form_html = re.findall(regex(form, name=name[0]), res.data.decode()) + input_html = re.findall(regex(input), form_html[0][1]) + method = "POST" + url = form_html[0][0] + body = urlencode({k:v for k,v in input_html}) + headers = {"content-type": "application/x-www-form-urlencoded"} + elif res.status == 200: + return res + else: + raise Exception("Failed to redirect") + else: + raise Exception("Failed to redirect") + + res = redirect("GET", twitter_url) + reg = "document{dot}cookie{space}={space}{quote}{target}{quote}" + if re.findall(regex(reg), res.data.decode()): + find = re.findall(regex(reg), res.data.decode()) + x.update_normalize(find) + + if x.get("gt") is None: + raise Exception("Failed to get guest token") + + + return x + + + if __name__ == "__main__": - if Path("cookie.json").exists(): - with open("cookie.json", "r") as 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 = get_guest_token() + cookies_str = cookies.to_str() with open("src/config/placeholder.json", "r") as f: placeholder = json.load(f) @@ -31,7 +152,7 @@ def get_kwargs(key, additional): api_key={ "ClientLanguage": "en", "ActiveUser": "yes", - "GuestToken": cookies["gt"], + "GuestToken": cookies.get("gt"), }, ) @@ -46,15 +167,15 @@ def get_kwargs(key, additional): api_client = pt.ApiClient(configuration=api_conf, cookie=cookies_str) api_client.user_agent = latest_user_agent["chrome-fetch"] - pt.TweetApi(api_client).get_user_tweets_with_http_info( + res = pt.TweetApi(api_client).get_user_tweets_with_http_info( **get_kwargs("UserTweets", {}), - ) - pt.TweetApi(api_client).get_user_highlights_tweets_with_http_info( + ).model_dump_json() + res = pt.TweetApi(api_client).get_user_highlights_tweets_with_http_info( **get_kwargs("UserHighlightsTweets", {}), - ) - pt.DefaultApi(api_client).get_tweet_result_by_rest_id_with_http_info( + ).model_dump_json() + res = pt.DefaultApi(api_client).get_tweet_result_by_rest_id_with_http_info( **get_kwargs("TweetResultByRestId", {}), - ) - pt.UserApi(api_client).get_user_by_screen_name_with_http_info( + ).model_dump_json() + res = pt.UserApi(api_client).get_user_by_screen_name_with_http_info( **get_kwargs("UserByScreenName", {}) - ) + ).model_dump_json()