[twitter] allow setting custom features per API endpoint

This commit is contained in:
Mike Fährmann
2023-04-03 16:18:31 +02:00
parent 5ca9d55595
commit e6cb92864a

View File

@@ -1079,7 +1079,7 @@ class TwitterAPI():
"responsive_web_graphql_timeline_navigation_enabled": True, "responsive_web_graphql_timeline_navigation_enabled": True,
} }
self.features_pagination = { self.features_pagination = {
"graphql_timeline_v2_bookmark_timeline": False, "blue_business_profile_image_shape_enabled": False,
"responsive_web_twitter_blue_verified_badge_is_enabled": True, "responsive_web_twitter_blue_verified_badge_is_enabled": True,
"responsive_web_graphql_exclude_directive_enabled": True, "responsive_web_graphql_exclude_directive_enabled": True,
"verified_phone_label_enabled": False, "verified_phone_label_enabled": False,
@@ -1196,8 +1196,11 @@ class TwitterAPI():
variables = { variables = {
"count": 100, "count": 100,
} }
features = self.features_pagination.copy()
features["graphql_timeline_v2_bookmark_timeline"] = False
return self._pagination_tweets( return self._pagination_tweets(
endpoint, variables, ("bookmark_timeline", "timeline"), False) endpoint, variables, ("bookmark_timeline", "timeline"), False,
features=features)
def list_latest_tweets_timeline(self, list_id): def list_latest_tweets_timeline(self, list_id):
endpoint = "/graphql/FDI9EiIp54KxEOWGiv3B4A/ListLatestTweetsTimeline" endpoint = "/graphql/FDI9EiIp54KxEOWGiv3B4A/ListLatestTweetsTimeline"
@@ -1452,15 +1455,17 @@ class TwitterAPI():
params["cursor"] = cursor params["cursor"] = cursor
def _pagination_tweets(self, endpoint, variables, def _pagination_tweets(self, endpoint, variables,
path=None, stop_tweets=True, features=True): path=None, stop_tweets=True, features=None):
extr = self.extractor extr = self.extractor
variables.update(self.variables) variables.update(self.variables)
original_retweets = (extr.retweets == "original") original_retweets = (extr.retweets == "original")
pinned_tweet = extr.pinned pinned_tweet = extr.pinned
params = {"variables": None} params = {"variables": None}
if features is None:
features = self.features_pagination
if features: if features:
params["features"] = self._json_dumps(self.features_pagination) params["features"] = self._json_dumps(features)
while True: while True:
params["variables"] = self._json_dumps(variables) params["variables"] = self._json_dumps(variables)