Commit 069a9b56 authored by nanahira's avatar nanahira

new thing

parent de16a5e8
Pipeline #22556 canceled with stages
in 29 seconds
......@@ -81,49 +81,47 @@ def getTwitterSession(useCookie):
def doSearch(screen_name):
global isHealthy
twitter_b = getTwitterSession(True)
searchurl_v2 = "https://api.twitter.com/2/search/adaptive.json"
searchurl_v2 = "https://twitter.com/i/api/graphql/nK1dw4oV3k4w5TdtcAdSww/SearchTimeline"
params_v2 = {
"q": "from:@{}".format(screen_name),
"count": 1,
# "spelling_corrections": 0,
"tweet_search_mode": "live",
"include_profile_interstitial_type": 1,
"include_blocked_by": 1,
"include_blocking": 1,
"include_followed_by": 1,
"include_want_retweets": 1,
"include_mute_edge": 1,
"include_can_dm": 1,
"include_can_media_tag": 1,
"skip_status": 1,
"cards_platform": "Web-12",
"include_cards": 1,
"include_ext_alt_text": 'true',
"include_quote_count": 'true',
"include_ext_limited_action_results": 'false',
"include_reply_count": 1,
"tweet_mode": "extended",
"include_ext_collab_control": 'false',
"include_ext_views": 'true',
"include_entities": 'true',
"include_user_entities": 'true',
"include_ext_media_color": 'true',
"include_ext_media_availability": 'true',
"include_ext_sensitive_media_warning": 'true',
"include_ext_trusted_friends_metadata": 'true',
"send_error_codes": 'true',
"simple_quoted_tweet": 'true',
"query_source": "recent_search_click",
"pc": 1,
"spelling_corrections": 1,
"include_ext_edit_control": 'true',
"ext": 'mediaStats,highlightedLabel,hasNftAvatar,voiceInfo,birdwatchPivot,enrichments,superFollowMetadata,unmentionInfo,editControl,collab_control,vibe',
"features": json.dumps({
"rweb_lists_timeline_redesign_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,
"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": False,
"tweet_awards_web_tipping_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,
"longform_notetweets_rich_text_read_enabled": True,
"longform_notetweets_inline_media_enabled": True,
"responsive_web_media_download_video_enabled": False,
"responsive_web_enhance_cards_enabled": False
}),
"variables": json.dumps({
"count": 20,
"querySource": "typed_query",
"product": "Top",
"rawQuery": "from:@" + screen_name,
}),
"fieldToggles": json.dumps({
"withArticleRichContentState": False
})
}
response = twitter_b.get(searchurl_v2, params=params_v2)
print("Search: " + response.text)
search_v2 = response.json()
isHealthy = 'globalObjects' in search_v2
isHealthy = 'data' in search_v2
if isHealthy:
return search_v2["globalObjects"]["tweets"]
return search_v2["data"]["search_by_raw_query"]["search_timeline"]["timeline"]["instructions"]
else:
print("Search error: " + response.text)
return None
......@@ -211,8 +209,25 @@ def searchban(screen_name):
# returnjson["profile"]["has_tweets"] = True
# check whether the user has any tweets
usertlurl = "https://api.twitter.com/1.1/statuses/user_timeline.json"
params = {"screen_name": screen_name, "count": 200}
#usertlurl = "https://api.twitter.com/1.1/statuses/user_timeline.json"
#params = {"screen_name": screen_name, "count": 200}
usertlurl = 'https://twitter.com/i/api/graphql/oUZZZ8Oddwxs8Cd3iW3UEA/UserByScreenName'
params = {
'variables': json.dumps({
'screen_name': screen_name,
'withSafetyModeUserFields': True,
}),
'features': json.dumps({
"hidden_profile_likes_enabled": False,
"responsive_web_graphql_exclude_directive_enabled": True,
"verified_phone_label_enabled": False,
"subscriptions_verification_info_verified_since_enabled": True,
"highlights_tweets_tab_ui_enabled": True,
"creator_subscriptions_tweet_preview_api_enabled": True,
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": False,
"responsive_web_graphql_timeline_navigation_enabled": True
})
}
usertl_b = twitter_b.get(usertlurl, params=params)
usertl = usertl_b
......@@ -231,8 +246,8 @@ def searchban(screen_name):
if usertl.status_code == 200:
returnjson["profile"]["exists"] = True
returnjson["profile"]["id"] = usertl_json[0]["user"]["id_str"]
returnjson["profile"]["screen_name"] = usertl_json[0]["user"]["screen_name"]
returnjson["profile"]["id"] = usertl_json['data']["user"]["result"]["rest_id"]
returnjson["profile"]["screen_name"] = usertl_json['data']["user"]["result"]["legacy"]["screen_name"]
# returnjson["profile"]["protected"] = usertl_json["protected"]
elif usertl.status_code == 403:
returnjson["profile"]["suspended"] = True
......@@ -284,17 +299,35 @@ def searchban(screen_name):
if returnjson["tests"]["typeahead"] == False:
print("{} is search suggestion banned, checking search ban.".format(screen_name))
search_tweets = doSearch(screen_name)
if search_tweets is None:
search_result = doSearch(screen_name)
if search_result is None:
returnjson["tests"]["search"] = '_error'
hasFailure = True
elif search_tweets == {}:
returnjson["tests"]["search"] = False
print("{} is search banned.".format(screen_name))
# returnjson["tests"]["typeahead"] = False
else:
returnjson["tests"]["search"] = str(search_tweets[list(search_tweets.keys())[0]]["id"])
print("{} is not search banned.".format(screen_name))
found_id = None
for item in search_result:
if item['type'] != 'TimelineAddEntries':
continue
for entry_item in item['entries']:
if not entry_item['entryId'].startswith('tweet-'):
continue
found_id = entry_item['content']['itemContent']['tweet_results']['result']['rest_id']
break
if found_id:
break
if found_id:
returnjson["tests"]["search"] = found_id
print("{} is not search banned: {}".format(screen_name, found_id))
else:
returnjson["tests"]["search"] = False
print("{} is search banned.".format(screen_name))
#elif search_tweets == {}:
# returnjson["tests"]["search"] = False
# print("{} is search banned.".format(screen_name))
# # returnjson["tests"]["typeahead"] = False
#else:
# returnjson["tests"]["search"] = str(search_tweets[list(search_tweets.keys())[0]]["id"])
# print("{} is not search banned.".format(screen_name))
else:
returnjson["tests"]["search"] = "_implied_good"
print("{} is not search suggestion banned, skipped search ban check.".format(screen_name))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment