Very very quick fix for API changes
This commit is contained in:
parent
9f8f3ea41e
commit
f2cec8521f
1
.github/workflows/deploy.yml
vendored
1
.github/workflows/deploy.yml
vendored
@ -69,3 +69,4 @@ jobs:
|
|||||||
VXTWITTER_WORKAROUND_CONSUMER_SECRET: ${{ secrets.VXTWITTER_WORKAROUND_CONSUMER_SECRET }}
|
VXTWITTER_WORKAROUND_CONSUMER_SECRET: ${{ secrets.VXTWITTER_WORKAROUND_CONSUMER_SECRET }}
|
||||||
VXTWITTER_WORKAROUND_TOKEN: ${{ secrets.VXTWITTER_WORKAROUND_TOKEN }}
|
VXTWITTER_WORKAROUND_TOKEN: ${{ secrets.VXTWITTER_WORKAROUND_TOKEN }}
|
||||||
VXTWITTER_WORKAROUND_TOKEN_SECRET: ${{ secrets.VXTWITTER_WORKAROUND_TOKEN_SECRET }}
|
VXTWITTER_WORKAROUND_TOKEN_SECRET: ${{ secrets.VXTWITTER_WORKAROUND_TOKEN_SECRET }}
|
||||||
|
VXTWITTER_WORKAROUND_TOKENS: ${{ secrets.VXTWITTER_WORKAROUND_TOKENS }}
|
@ -15,6 +15,7 @@ elif ('RUNNING_SERVERLESS' in os.environ and os.environ['RUNNING_SERVERLESS'] ==
|
|||||||
"url": os.environ["VXTWITTER_URL"],
|
"url": os.environ["VXTWITTER_URL"],
|
||||||
"combination_method": os.environ["VXTWITTER_COMBINATION_METHOD"], # can either be 'local' or a URL to a server handling requests in the same format
|
"combination_method": os.environ["VXTWITTER_COMBINATION_METHOD"], # can either be 'local' or a URL to a server handling requests in the same format
|
||||||
"gifConvertAPI":os.environ["VXTWITTER_GIF_CONVERT_API"],
|
"gifConvertAPI":os.environ["VXTWITTER_GIF_CONVERT_API"],
|
||||||
|
"workaroundTokens":os.environ["VXTWITTER_WORKAROUND_TOKENS"],
|
||||||
"workaroundKeys":{
|
"workaroundKeys":{
|
||||||
"consumerKey":os.environ["VXTWITTER_WORKAROUND_CONSUMER_KEY"],
|
"consumerKey":os.environ["VXTWITTER_WORKAROUND_CONSUMER_KEY"],
|
||||||
"consumerSecret":os.environ["VXTWITTER_WORKAROUND_CONSUMER_SECRET"],
|
"consumerSecret":os.environ["VXTWITTER_WORKAROUND_CONSUMER_SECRET"],
|
||||||
|
@ -31,6 +31,7 @@ provider:
|
|||||||
VXTWITTER_WORKAROUND_CONSUMER_SECRET: ${env:VXTWITTER_WORKAROUND_CONSUMER_SECRET, ''}
|
VXTWITTER_WORKAROUND_CONSUMER_SECRET: ${env:VXTWITTER_WORKAROUND_CONSUMER_SECRET, ''}
|
||||||
VXTWITTER_WORKAROUND_TOKEN: ${env:VXTWITTER_WORKAROUND_TOKEN, ''}
|
VXTWITTER_WORKAROUND_TOKEN: ${env:VXTWITTER_WORKAROUND_TOKEN, ''}
|
||||||
VXTWITTER_WORKAROUND_TOKEN_SECRET: ${env:VXTWITTER_WORKAROUND_TOKEN_SECRET, ''}
|
VXTWITTER_WORKAROUND_TOKEN_SECRET: ${env:VXTWITTER_WORKAROUND_TOKEN_SECRET, ''}
|
||||||
|
VXTWITTER_WORKAROUND_TOKENS: ${env:VXTWITTER_WORKAROUND_TOKENS, ''}
|
||||||
|
|
||||||
package:
|
package:
|
||||||
patterns:
|
patterns:
|
||||||
|
@ -1,26 +1,17 @@
|
|||||||
import yt_dlp
|
import yt_dlp
|
||||||
from yt_dlp.extractor import twitter
|
from yt_dlp.extractor import twitter
|
||||||
|
import uuid
|
||||||
import json
|
import json
|
||||||
import requests
|
import requests
|
||||||
import re
|
import re
|
||||||
|
import random
|
||||||
from . import twExtractError
|
from . import twExtractError
|
||||||
import twitter
|
|
||||||
from configHandler import config
|
from configHandler import config
|
||||||
bearer="Bearer AAAAAAAAAAAAAAAAAAAAAPYXBAAAAAAACLXUNDekMxqa8h%2F40K4moUkGsoc%3DTYfbDKbT3jJPCEVnMYqilB28NHfOPqkca3qaAxGfsyKCs0wRbw"
|
bearer="Bearer AAAAAAAAAAAAAAAAAAAAAPYXBAAAAAAACLXUNDekMxqa8h%2F40K4moUkGsoc%3DTYfbDKbT3jJPCEVnMYqilB28NHfOPqkca3qaAxGfsyKCs0wRbw"
|
||||||
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\/(?:#!\/)?@?([^/?#]*)(?:[?#/].*)?$"
|
userregex = r"^https?:\/\/(?:www\.)?twitter\.com\/(?:#!\/)?@?([^/?#]*)(?:[?#/].*)?$"
|
||||||
userIDregex = r"\/i\/user\/(\d+)"
|
userIDregex = r"\/i\/user\/(\d+)"
|
||||||
try:
|
|
||||||
auth = twitter.oauth.OAuth(
|
|
||||||
config['config']['workaroundKeys']["accessToken"],
|
|
||||||
config['config']['workaroundKeys']["accessTokenSecret"],
|
|
||||||
config['config']['workaroundKeys']["consumerKey"],
|
|
||||||
config['config']['workaroundKeys']["consumerSecret"]
|
|
||||||
)
|
|
||||||
api = twitter.Twitter(auth=auth)
|
|
||||||
except Exception as e:
|
|
||||||
api = None
|
|
||||||
|
|
||||||
def getGuestToken():
|
def getGuestToken():
|
||||||
global guestToken
|
global guestToken
|
||||||
@ -30,17 +21,25 @@ def getGuestToken():
|
|||||||
return guestToken
|
return guestToken
|
||||||
|
|
||||||
def extractStatus_fallback(url):
|
def extractStatus_fallback(url):
|
||||||
if api is None:
|
try:
|
||||||
raise twExtractError.TwExtractError(500, "Could not extract tweet.")
|
# get tweet ID
|
||||||
print(" ➤ [ I ] Using fallback method to extract tweet")
|
m = re.search(pathregex, url)
|
||||||
# get tweet ID
|
if m is None:
|
||||||
m = re.search(pathregex, url)
|
raise twExtractError.TwExtractError(400, "Extract error")
|
||||||
if m is None:
|
twid = m.group(2)
|
||||||
raise twExtractError.TwExtractError(400, "Invalid URL")
|
# get tweet
|
||||||
twid = m.group(2)
|
|
||||||
# get tweet
|
authToken=random.choice(config["config"]["workaroundTokens"].split(","))
|
||||||
tweet = api.statuses.show(_id=twid, tweet_mode="extended")
|
csrfToken=str(uuid.uuid4()).replace('-', '')
|
||||||
return 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,"Cookie":f"auth_token={authToken}; ct0={csrfToken}; ","x-twitter-active-user":"yes","x-twitter-auth-type":"OAuth2Session","x-twitter-client-language":"en","x-csrf-token":csrfToken,"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0"})
|
||||||
|
output = tweet.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
|
||||||
|
except Exception as e:
|
||||||
|
raise twExtractError.TwExtractError(400, "Extract error")
|
||||||
|
|
||||||
|
|
||||||
def extractStatus(url):
|
def extractStatus(url):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user