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
|
from flask.testing import FlaskClient
|
||||||
client = FlaskClient(twitfix.app)
|
client = FlaskClient(twitfix.app)
|
||||||
|
|
||||||
|
testUser="https://twitter.com/jack"
|
||||||
testTextTweet="https://twitter.com/jack/status/20"
|
testTextTweet="https://twitter.com/jack/status/20"
|
||||||
testVideoTweet="https://twitter.com/Twitter/status/1263145271946551300"
|
testVideoTweet="https://twitter.com/Twitter/status/1263145271946551300"
|
||||||
testMediaTweet="https://twitter.com/Twitter/status/1118295916874739714"
|
testMediaTweet="https://twitter.com/Twitter/status/1118295916874739714"
|
||||||
@ -40,6 +41,12 @@ def test_textTweetExtract():
|
|||||||
assert 'extended_entities' not in tweet
|
assert 'extended_entities' not in tweet
|
||||||
assert tweet["is_quote_status"]==False
|
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():
|
def test_videoTweetExtract():
|
||||||
tweet = twExtract.extractStatus(testVideoTweet)
|
tweet = twExtract.extractStatus(testVideoTweet)
|
||||||
assert tweet["full_text"]==videoVNF_compare['description']
|
assert tweet["full_text"]==videoVNF_compare['description']
|
||||||
|
@ -7,7 +7,7 @@ from . import twExtractError
|
|||||||
|
|
||||||
guestToken=None
|
guestToken=None
|
||||||
pathregex = r"\w{1,15}\/(status|statuses)\/(\d{2,20})"
|
pathregex = r"\w{1,15}\/(status|statuses)\/(\d{2,20})"
|
||||||
|
userregex = r"^https?:\/\/(?:www\.)?twitter\.com\/(?:#!\/)?@?([^/?#]*)(?:[?#].*)?$"
|
||||||
def getGuestToken():
|
def getGuestToken():
|
||||||
global guestToken
|
global guestToken
|
||||||
if guestToken is None:
|
if guestToken is None:
|
||||||
@ -50,6 +50,21 @@ def extractStatus(url):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
return extractStatus_fallback(url)
|
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):
|
def lambda_handler(event, context):
|
||||||
if ("queryStringParameters" not in event):
|
if ("queryStringParameters" not in event):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user