From b0bf814a88b43a89b9161cc40c1d7a2e526c9770 Mon Sep 17 00:00:00 2001 From: Dylan Date: Sat, 25 Mar 2023 02:54:07 +0000 Subject: [PATCH] twExtract changes for user getting --- twExtract/__init__.py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/twExtract/__init__.py b/twExtract/__init__.py index 645b075..82c6227 100644 --- a/twExtract/__init__.py +++ b/twExtract/__init__.py @@ -4,14 +4,15 @@ import json import requests import re from . import twExtractError - +bearer="Bearer AAAAAAAAAAAAAAAAAAAAAPYXBAAAAAAACLXUNDekMxqa8h%2F40K4moUkGsoc%3DTYfbDKbT3jJPCEVnMYqilB28NHfOPqkca3qaAxGfsyKCs0wRbw" guestToken=None pathregex = r"\w{1,15}\/(status|statuses)\/(\d{2,20})" userregex = r"^https?:\/\/(?:www\.)?twitter\.com\/(?:#!\/)?@?([^/?#]*)(?:[?#/].*)?$" +userIDregex = r"\/i\/user\/(\d+)" def getGuestToken(): global guestToken if guestToken is None: - r = requests.post("https://api.twitter.com/1.1/guest/activate.json", headers={"Authorization":"Bearer AAAAAAAAAAAAAAAAAAAAAPYXBAAAAAAACLXUNDekMxqa8h%2F40K4moUkGsoc%3DTYfbDKbT3jJPCEVnMYqilB28NHfOPqkca3qaAxGfsyKCs0wRbw"}) + r = requests.post("https://api.twitter.com/1.1/guest/activate.json", headers={"Authorization":bearer}) guestToken = json.loads(r.text)["guest_token"] return guestToken @@ -40,7 +41,7 @@ def extractStatus(url): # get guest token guestToken = getGuestToken() # get tweet - tweet = requests.get("https://api.twitter.com/1.1/statuses/show/" + twid + ".json?tweet_mode=extended&cards_platform=Web-12&include_cards=1&include_reply_count=1&include_user_entities=0", headers={"Authorization":"Bearer AAAAAAAAAAAAAAAAAAAAAPYXBAAAAAAACLXUNDekMxqa8h%2F40K4moUkGsoc%3DTYfbDKbT3jJPCEVnMYqilB28NHfOPqkca3qaAxGfsyKCs0wRbw", "x-guest-token":guestToken}) + tweet = requests.get("https://api.twitter.com/1.1/statuses/show/" + twid + ".json?tweet_mode=extended&cards_platform=Web-12&include_cards=1&include_reply_count=1&include_user_entities=0", headers={"Authorization":bearer, "x-guest-token":guestToken}) output = tweet.json() if "errors" in output: # pick the first error and create a twExtractError @@ -51,14 +52,22 @@ def extractStatus(url): return extractStatus_fallback(url) def extractUser(url): - m = re.search(userregex, url) + useId=True + m = re.search(userIDregex, url) if m is None: - raise twExtractError.TwExtractError(400, "Invalid URL") + m = re.search(userregex, url) + if m is None: + raise twExtractError.TwExtractError(400, "Invalid URL") + else: + useId=False screen_name = m.group(1) # get guest token guestToken = getGuestToken() # get user - user = requests.get(f"https://api.twitter.com/1.1/users/show.json?screen_name={screen_name}",headers={"Authorization":"Bearer AAAAAAAAAAAAAAAAAAAAAPYXBAAAAAAACLXUNDekMxqa8h%2F40K4moUkGsoc%3DTYfbDKbT3jJPCEVnMYqilB28NHfOPqkca3qaAxGfsyKCs0wRbw", "x-guest-token":guestToken}) + if not useId: + user = requests.get(f"https://api.twitter.com/1.1/users/show.json?screen_name={screen_name}",headers={"Authorization":bearer, "x-guest-token":guestToken}) + else: + user = requests.get(f"https://api.twitter.com/1.1/users/show.json?user_id={screen_name}",headers={"Authorization":bearer, "x-guest-token":guestToken}) output = user.json() if "errors" in output: # pick the first error and create a twExtractError @@ -66,6 +75,9 @@ def extractUser(url): raise twExtractError.TwExtractError(error["code"], error["message"]) return output +#def extractUserByID(id): + + def lambda_handler(event, context): if ("queryStringParameters" not in event): return {