Added function & tests for getting user profile (#65)
This commit is contained in:
parent
c99d203308
commit
adc85e2e51
@ -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']
|
||||
|
@ -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):
|
||||
|
Loading…
x
Reference in New Issue
Block a user