From ce7f3dd8e619c847ae7d3e65c416600247fe7a5c Mon Sep 17 00:00:00 2001 From: Dylan Date: Sun, 21 Jan 2024 22:07:33 +0000 Subject: [PATCH] API returns errors properly now --- twExtract/__init__.py | 8 ++++++++ twitfix.py | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/twExtract/__init__.py b/twExtract/__init__.py index 98748af..c6656cd 100644 --- a/twExtract/__init__.py +++ b/twExtract/__init__.py @@ -203,13 +203,21 @@ def extractStatusV2(url,workaroundTokens): entries=output['data']['tweet_results'] tweetEntry=None for entry in entries: + if 'result' not in entry: + continue result = entry['result'] if '__typename' in result and result['__typename'] == 'TweetWithVisibilityResults': result=result['tweet'] + elif '__typename' in result and result['__typename'] == 'TweetUnavailable': + if 'reason' in result: + return {'error':'Tweet unavailable: '+result['reason']} + return {'error':'Tweet unavailable'} if 'rest_id' in result and result['rest_id'] == twid: tweetEntry=result break tweet=tweetEntry + if tweet is None: + return {'error':'Tweet not found (404); May be due to invalid tweet, changes in Twitter\'s API, or a protected account.'} except Exception as e: continue return tweet diff --git a/twitfix.py b/twitfix.py index fc2fdf4..c3620f6 100644 --- a/twitfix.py +++ b/twitfix.py @@ -166,6 +166,12 @@ def twitfix(sub_path): tweet = None if tweet is None: tweet = twExtract.extractStatusV2(twitter_url,workaroundTokens=config['config']['workaroundTokens'].split(',')) + if 'error' in tweet: + response = make_response(jsonify(tweet), 500) + response.headers['Content-Type'] = 'application/json' + response.cache_control.max_age = 3600 + response.cache_control.public = True + return response tweetL = tweet["legacy"] if "user_result" in tweet["core"]: userL = tweet["core"]["user_result"]["result"]["legacy"]