Fix tests & poll extract
This commit is contained in:
parent
051909ba86
commit
1e9265ed26
@ -9,28 +9,28 @@ def test_twextract_syndicationAPI():
|
|||||||
assert utils.stripEndTCO(utils.stripEndTCO(tweet["full_text"]))==testMediaTweet_compare['text']
|
assert utils.stripEndTCO(utils.stripEndTCO(tweet["full_text"]))==testMediaTweet_compare['text']
|
||||||
|
|
||||||
def test_twextract_extractStatusV2Anon():
|
def test_twextract_extractStatusV2Anon():
|
||||||
tweet = twExtract.extractStatusV2AnonLegacy(testTextTweet,None)
|
tweet = twExtract.extractStatusV2Anon(testTextTweet,None)['legacy']
|
||||||
assert utils.stripEndTCO(tweet["full_text"])==testTextTweet_compare['text']
|
assert utils.stripEndTCO(tweet["full_text"])==testTextTweet_compare['text']
|
||||||
tweet = twExtract.extractStatusV2AnonLegacy(testVideoTweet,None)
|
tweet = twExtract.extractStatusV2Anon(testVideoTweet,None)['legacy']
|
||||||
assert utils.stripEndTCO(tweet["full_text"])==testVideoTweet_compare['text']
|
assert utils.stripEndTCO(tweet["full_text"])==testVideoTweet_compare['text']
|
||||||
tweet = twExtract.extractStatusV2AnonLegacy(testMediaTweet,None)
|
tweet = twExtract.extractStatusV2Anon(testMediaTweet,None)['legacy']
|
||||||
assert utils.stripEndTCO(tweet["full_text"])==testMediaTweet_compare['text']
|
assert utils.stripEndTCO(tweet["full_text"])==testMediaTweet_compare['text']
|
||||||
tweet = twExtract.extractStatusV2AnonLegacy(testMultiMediaTweet,None)
|
tweet = twExtract.extractStatusV2Anon(testMultiMediaTweet,None)['legacy']
|
||||||
assert utils.stripEndTCO(tweet["full_text"])[:94]==testMultiMediaTweet_compare['text'][:94]
|
assert utils.stripEndTCO(tweet["full_text"])[:94]==testMultiMediaTweet_compare['text'][:94]
|
||||||
|
|
||||||
|
|
||||||
def test_twextract_v2API():
|
def test_twextract_v2API():
|
||||||
tweet = twExtract.extractStatusV2Legacy(testMediaTweet,workaroundTokens=tokens)
|
tweet = twExtract.extractStatusV2(testMediaTweet,workaroundTokens=tokens)['legacy']
|
||||||
assert utils.stripEndTCO(tweet["full_text"])==testMediaTweet_compare['text']
|
assert utils.stripEndTCO(tweet["full_text"])==testMediaTweet_compare['text']
|
||||||
|
|
||||||
def test_twextract_v2AndroidAPI():
|
def test_twextract_v2AndroidAPI():
|
||||||
tweet = twExtract.extractStatusV2AndroidLegacy(testMediaTweet,workaroundTokens=tokens)
|
tweet = twExtract.extractStatusV2Android(testMediaTweet,workaroundTokens=tokens)['legacy']
|
||||||
assert utils.stripEndTCO(tweet["full_text"])==testMediaTweet_compare['text']
|
assert utils.stripEndTCO(tweet["full_text"])==testMediaTweet_compare['text']
|
||||||
|
|
||||||
## Tweet retrieve tests ##
|
## Tweet retrieve tests ##
|
||||||
def test_twextract_textTweetExtract():
|
def test_twextract_textTweetExtract():
|
||||||
tweet = twExtract.extractStatus(testTextTweet,workaroundTokens=tokens)
|
tweet = twExtract.extractStatus(testTextTweet,workaroundTokens=tokens)
|
||||||
assert utils.stripEndTCO(tweet["full_text"])==testTextTweet_compare['text']
|
assert utils.stripEndTCO(tweet["legacy"]["full_text"])==testTextTweet_compare['text']
|
||||||
assert tweet["user"]["screen_name"]=="jack"
|
assert tweet["user"]["screen_name"]=="jack"
|
||||||
assert 'extended_entities' not in tweet
|
assert 'extended_entities' not in tweet
|
||||||
|
|
||||||
@ -58,7 +58,7 @@ def test_twextract_UserExtractWeirdURLs():
|
|||||||
|
|
||||||
def test_twextract_videoTweetExtract():
|
def test_twextract_videoTweetExtract():
|
||||||
tweet = twExtract.extractStatus(testVideoTweet,workaroundTokens=tokens)
|
tweet = twExtract.extractStatus(testVideoTweet,workaroundTokens=tokens)
|
||||||
assert utils.stripEndTCO(tweet["full_text"])==testVideoTweet_compare['text']
|
assert utils.stripEndTCO(tweet["legacy"]["full_text"])==testVideoTweet_compare['text']
|
||||||
assert 'extended_entities' in tweet
|
assert 'extended_entities' in tweet
|
||||||
assert len(tweet['extended_entities']["media"])==1
|
assert len(tweet['extended_entities']["media"])==1
|
||||||
video = tweet['extended_entities']["media"][0]
|
video = tweet['extended_entities']["media"][0]
|
||||||
@ -68,7 +68,7 @@ def test_twextract_videoTweetExtract():
|
|||||||
|
|
||||||
def test_twextract_mediaTweetExtract():
|
def test_twextract_mediaTweetExtract():
|
||||||
tweet = twExtract.extractStatus(testMediaTweet,workaroundTokens=tokens)
|
tweet = twExtract.extractStatus(testMediaTweet,workaroundTokens=tokens)
|
||||||
assert utils.stripEndTCO(tweet["full_text"])==testMediaTweet_compare['text']
|
assert utils.stripEndTCO(tweet['legacy']["full_text"])==testMediaTweet_compare['text']
|
||||||
assert 'extended_entities' in tweet
|
assert 'extended_entities' in tweet
|
||||||
assert len(tweet['extended_entities']["media"])==1
|
assert len(tweet['extended_entities']["media"])==1
|
||||||
video = tweet['extended_entities']["media"][0]
|
video = tweet['extended_entities']["media"][0]
|
||||||
@ -79,7 +79,7 @@ def test_twextract_mediaTweetExtract():
|
|||||||
|
|
||||||
def test_twextract_multimediaTweetExtract():
|
def test_twextract_multimediaTweetExtract():
|
||||||
tweet = twExtract.extractStatus(testMultiMediaTweet,workaroundTokens=tokens)
|
tweet = twExtract.extractStatus(testMultiMediaTweet,workaroundTokens=tokens)
|
||||||
assert utils.stripEndTCO(tweet["full_text"])[:94]==testMultiMediaTweet_compare['text'][:94]
|
assert utils.stripEndTCO(tweet['legacy']["full_text"])[:94]==testMultiMediaTweet_compare['text'][:94]
|
||||||
assert 'extended_entities' in tweet
|
assert 'extended_entities' in tweet
|
||||||
assert len(tweet['extended_entities']["media"])==3
|
assert len(tweet['extended_entities']["media"])==3
|
||||||
video = tweet['extended_entities']["media"][0]
|
video = tweet['extended_entities']["media"][0]
|
||||||
|
@ -321,11 +321,33 @@ def extractStatusV2Anon(url,x):
|
|||||||
result = entry['result']
|
result = entry['result']
|
||||||
if '__typename' in result and result['__typename'] == 'TweetWithVisibilityResults':
|
if '__typename' in result and result['__typename'] == 'TweetWithVisibilityResults':
|
||||||
result=result['tweet']
|
result=result['tweet']
|
||||||
|
elif '__typename' in result and result['__typename'] == 'TweetUnavailable':
|
||||||
|
if 'reason' in result:
|
||||||
|
raise TwExtractError(400, "Extract error: "+result['reason'])
|
||||||
|
raise TwExtractError(400, "Extract error")
|
||||||
if 'rest_id' in result and result['rest_id'] == twid:
|
if 'rest_id' in result and result['rest_id'] == twid:
|
||||||
tweetEntry=result
|
tweetEntry=result
|
||||||
tweet=tweetEntry
|
tweet=tweetEntry
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise TwExtractError(400, "Extract error")
|
raise TwExtractError(400, "Extract error")
|
||||||
|
if 'card' in tweet and 'legacy' in tweet['card']:
|
||||||
|
tweet['card'] = tweet['card']['legacy']
|
||||||
|
return tweet
|
||||||
|
|
||||||
|
def fixTweetData(tweet):
|
||||||
|
try:
|
||||||
|
if 'user' not in tweet:
|
||||||
|
tweet['user'] = tweet['core']['user_results']['result']['legacy']
|
||||||
|
except:
|
||||||
|
print("fixTweetData error: No user")
|
||||||
|
pass
|
||||||
|
|
||||||
|
try:
|
||||||
|
if 'extended_entities' not in tweet and 'extended_entities' in tweet['legacy']:
|
||||||
|
tweet['extended_entities'] = tweet['legacy']['extended_entities']
|
||||||
|
except:
|
||||||
|
print("fixTweetData error: extended_entities")
|
||||||
|
pass
|
||||||
return tweet
|
return tweet
|
||||||
|
|
||||||
def extractStatus(url,workaroundTokens=None):
|
def extractStatus(url,workaroundTokens=None):
|
||||||
@ -337,7 +359,7 @@ def extractStatus(url,workaroundTokens=None):
|
|||||||
print(f"{method.__name__} method failed: Legacy not found for {url}")
|
print(f"{method.__name__} method failed: Legacy not found for {url}")
|
||||||
# try another method
|
# try another method
|
||||||
continue
|
continue
|
||||||
return result
|
return fixTweetData(result)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"{method.__name__} method failed: {str(e)} for {url}")
|
print(f"{method.__name__} method failed: {str(e)} for {url}")
|
||||||
continue
|
continue
|
||||||
|
10
vxApi.py
10
vxApi.py
@ -112,12 +112,18 @@ def getApiResponse(tweet,include_txt=False,include_zip=False):
|
|||||||
combinedMediaUrl = combinedMediaUrl[:-1]
|
combinedMediaUrl = combinedMediaUrl[:-1]
|
||||||
|
|
||||||
pollData = None
|
pollData = None
|
||||||
|
card = None
|
||||||
if 'card' in tweet and 'legacy' in tweet['card'] and tweet['card']['legacy']['name'].startswith("poll"):
|
if 'card' in tweet and 'legacy' in tweet['card'] and tweet['card']['legacy']['name'].startswith("poll"):
|
||||||
cardName = tweet['card']['legacy']['name']
|
card = tweet['card']['legacy']
|
||||||
|
elif 'card' in tweet and 'binding_values' in tweet['card']:
|
||||||
|
card = tweet['card']
|
||||||
|
|
||||||
|
if card != None:
|
||||||
|
cardName = card['name']
|
||||||
pollData={} # format: {"options":["name":"Option 1 Name","votes":5,"percent":50]}
|
pollData={} # format: {"options":["name":"Option 1 Name","votes":5,"percent":50]}
|
||||||
pollData["options"] = []
|
pollData["options"] = []
|
||||||
totalVotes = 0
|
totalVotes = 0
|
||||||
bindingValues = tweet['card']['legacy']['binding_values']
|
bindingValues = card['binding_values']
|
||||||
pollValues = {}
|
pollValues = {}
|
||||||
for i in bindingValues:
|
for i in bindingValues:
|
||||||
key = i["key"]
|
key = i["key"]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user