Added function & tests for getting user profile (#65)

This commit is contained in:
Dylan 2023-03-05 21:23:27 +00:00
parent c99d203308
commit adc85e2e51
2 changed files with 23 additions and 1 deletions

View File

@ -7,6 +7,7 @@ import msgs
from flask.testing import FlaskClient
client = FlaskClient(twitfix.app)
testUser="https://twitter.com/jack"
testTextTweet="https://twitter.com/jack/status/20"
testVideoTweet="https://twitter.com/Twitter/status/1263145271946551300"
testMediaTweet="https://twitter.com/Twitter/status/1118295916874739714"
@ -40,6 +41,12 @@ def test_textTweetExtract():
assert 'extended_entities' not in tweet
assert tweet["is_quote_status"]==False
def test_textUserExtract():
user = twExtract.extractUser(testUser)
assert user["screen_name"]=="jack"
assert user["id"]==12
assert user["created_at"] == "Tue Mar 21 20:50:14 +0000 2006"
def test_videoTweetExtract():
tweet = twExtract.extractStatus(testVideoTweet)
assert tweet["full_text"]==videoVNF_compare['description']

View File

@ -7,7 +7,7 @@ from . import twExtractError
guestToken=None
pathregex = r"\w{1,15}\/(status|statuses)\/(\d{2,20})"
userregex = r"^https?:\/\/(?:www\.)?twitter\.com\/(?:#!\/)?@?([^/?#]*)(?:[?#].*)?$"
def getGuestToken():
global guestToken
if guestToken is None:
@ -50,6 +50,21 @@ def extractStatus(url):
except Exception as e:
return extractStatus_fallback(url)
def extractUser(url):
m = re.search(userregex, url)
if m is None:
raise twExtractError.TwExtractError(400, "Invalid URL")
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})
output = user.json()
if "errors" in output:
# pick the first error and create a twExtractError
error = output["errors"][0]
raise twExtractError.TwExtractError(error["code"], error["message"])
return output
def lambda_handler(event, context):
if ("queryStringParameters" not in event):