Closed Cknight70 closed 2 years ago
Hi! It seems your "users" isn't a list, can try adding a hyphen like this?
[...]
max_tweets: 40
twitter_token: mytoken
users:
- pleroma_token: mytoken
consumer_key: mykey
[...]
It's also missing the mapping "twitter_username", which as far as I know is mandatory https://robertoszek.github.io/pleroma-bot/gettingstarted/configuration/#minimal-configyml
Thanks for your response. I had removed twitter_username because I got a different error which I assume is related to twitter's v2 api
I put my username which is my @ on twitter for the twitter_username field
I also added bio_text: "" to my config
ℹ 2021-12-10 15:49:50,388 - pleroma_bot - INFO - ======================================
ℹ 2021-12-10 15:49:50,388 - pleroma_bot - INFO - Processing user: pleromausername
✖ 2021-12-10 15:49:50,626 - pleroma_bot - ERROR - Exception occurred (cli.py:423)
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/cli.py", line 333, in main
user = User(user_item, config, base_path)
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/cli.py", line 185, in __init__
self._get_twitter_info()
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/_twitter.py", line 30, in _get_twitter_info
response.raise_for_status()
File "/usr/local/lib/python3.8/dist-packages/requests-2.26.0-py3.8.egg/requests/models.py", line 953, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: https://api.twitter.com/2/users/show.json?screen_name=twitterusername
so now my config looks like this
twitter_base_url: https://api.twitter.com/2
pleroma_base_url: https:///bae.st
max_tweets: 40
twitter_token: mytoken
users:
- twitter_username: twitterusername
pleroma_username: pleromausername
pleroma_token: mytoken
consumer_key: mykey
consumer_secret: mysecret
access_token_key: myaccess
access_token_secret: myaccesssecret
signature: false
media_upload: true
nitter: false
rich_text: true
visibility: "public"
sensitive: true
original_date: false
original_date_format: "%Y/%m/%d %H:%"
include_rts: true
include_replies: false
file_max_size: 500MB
bio_text: ""
Does it fail at the same point using
twitter_base_url: https://api.twitter.com/1.1
in the config?
It fails in the same way
ℹ 2021-12-10 16:06:28,486 - pleroma_bot - INFO - ======================================
ℹ 2021-12-10 16:06:28,486 - pleroma_bot - INFO - Processing user: pleromausername
✖ 2021-12-10 16:06:28,692 - pleroma_bot - ERROR - Exception occurred (cli.py:423)
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/cli.py", line 333, in main
user = User(user_item, config, base_path)
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/cli.py", line 185, in __init__
self._get_twitter_info()
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/_twitter.py", line 30, in _get_twitter_info
response.raise_for_status()
File "/usr/local/lib/python3.8/dist-packages/requests-2.26.0-py3.8.egg/requests/models.py", line 953, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://api.twitter.com/1.1/users/show.json?screen_name=twitterusername
In a similar way, 403 error instead of 400 error.
I assume the Twitter account you're trying to mirror has its tweets protected and that's why you're using these, right?
consumer_key: mykey
consumer_secret: mysecret
access_token_key: myaccess
access_token_secret: myaccesssecret
If that's the case, maybe running it on verbose mode can help us identify the issue with the authentication:
pleroma-bot -v
Yes, its a private account.
With V2 api
DEBUG:root:Debug logging enabled
`^y6gB@@BBQA{,
:fB@@@@@@BBBBBQgU"
`f@@@@@@@@BBBBQgg80H~
H@@B@BB@BBBB#Qgg&0RNT
z@@&B@BBBBBBQgg80RD6HK
;@@@QB@BBBB#Qgg&0RN6WqS
q@@@@@BBBBQgg80RN6HAqSo _ _
z@@@@BBBB#Qg8&0RN6WqSUhr | | | |
-H@@@@BBBBQQg80RD6HAqSKh( ___| |_ ___ _ __| | __
rB@@@BBBB#6Lm00DN6WqSUhfv / __| __/ _ \| '__| |/ /
f@@@@BBBBf= |0RD6HAqSKhfv \__ \ || (_) | | | <
=g@@@BBBBF= "RDN6WqSUhff{ |___/\__\___/|_| |_|\_|
c@@@@BBgu_ ~WD9HAqSKhfkl`
_6@@@BBNr 'qN6WqSUhhfXI' . . .
rB@@@B0r `S6HAqSKhfkoCr ,-. | ,-. ,-. ,-. ,-,-. ,-. |-. ,-. |-
`X@@@BQx `I6WASShhfXFIy_ | | | |-' | | | | | | ,-| -- | | | | |
_g@@@Q\` JHAqSKhfXoCwJz_ |-' `' `-' ' `-' ' ' ' `-^ `-' `-' `'
rB@@#x` }WASShhfXsIyzuu, |
`y@@&| .IAqSKhfXoCwJzu1lr '
`D@&| :KqSUhffXsIyzuu1llc,
ff= `==:::""",,,,________
[38;21mℹ 2021-12-10 16:28:03,453 - pleroma_bot - INFO - ====================================== [0m
INFO:pleroma_bot:======================================
[38;21mℹ 2021-12-10 16:28:03,454 - pleroma_bot - INFO - Processing user: pleromausername [0m
INFO:pleroma_bot:Processing user: pleromausername
DEBUG:requests_oauthlib.oauth1_auth:Signing request <PreparedRequest [GET]> using client <Client client_key=myrealconsumerkey, client_secret=****, resource_owner_key=myrealaccesstokenkey, resource_owner_secret=****, signature_method=HMAC-SHA1, signature_type=AUTH_HEADER, callback_uri=None, rsa_key=None, verifier=None, realm=None, encoding=utf-8, decoding=utf-8, nonce=None, timestamp=None>
DEBUG:requests_oauthlib.oauth1_auth:Including body in call to sign: False
DEBUG:oauthlib.oauth1.rfc5849:Collected params: [('user.fields', 'pinned_tweet_id'), ('expansions', 'pinned_tweet_id'), ('tweet.fields', 'entities'), ('oauth_nonce', '15303381980758537871639178883'), ('oauth_timestamp', '1639178883'), ('oauth_version', '1.0'), ('oauth_signature_method', 'HMAC-SHA1'), ('oauth_consumer_key', 'myrealconsumerkey'), ('oauth_token', 'myrealaccesstokenkey')]
DEBUG:oauthlib.oauth1.rfc5849:Normalized params: expansions=pinned_tweet_id&oauth_consumer_key=myrealconsumerkey&oauth_nonce=15303381980758537871639178883&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1639178883&oauth_token=myrealaccesstokenkey&oauth_version=1.0&tweet.fields=entities&user.fields=pinned_tweet_id
DEBUG:oauthlib.oauth1.rfc5849:Normalized URI: https://api.twitter.com/2/users/by/username/twitterusername
DEBUG:oauthlib.oauth1.rfc5849:Signing: signature base string: GET&https%3A%2F%2Fapi.twitter.com%2F2%2Fusers%2Fby%2Fusername%2Ftwitterusername&expansions%3Dpinned_tweet_id%26oauth_consumer_key%3Dmyrealconsumerkey%26oauth_nonce%3D15303381980758537871639178883%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1639178883%26oauth_token%3Dmyrealaccesstokenkey%26oauth_version%3D1.0%26tweet.fields%3Dentities%26user.fields%3Dpinned_tweet_id
DEBUG:oauthlib.oauth1.rfc5849:Signature: +ozZfSrKL9msYI7AWm73BVBYZcg=
DEBUG:oauthlib.oauth1.rfc5849:Encoding URI, headers and body to utf-8.
DEBUG:requests_oauthlib.oauth1_auth:Updated url: https://api.twitter.com/2/users/by/username/twitterusername?user.fields=pinned_tweet_id&expansions=pinned_tweet_id&tweet.fields=entities
DEBUG:requests_oauthlib.oauth1_auth:Updated headers: {b'User-Agent': b'python-requests/2.26.0', b'Accept-Encoding': b'gzip, deflate', b'Accept': b'*/*', b'Connection': b'keep-alive', b'Authorization': b'OAuth oauth_nonce="15303381980758537871639178883", oauth_timestamp="1639178883", oauth_version="1.0", oauth_signature_method="HMAC-SHA1", oauth_consumer_key="myrealconsumerkey", oauth_token="myrealaccesstokenkey", oauth_signature="%2BozZfSrKL9msYI7AWm73BVBYZcg%3D"'}
DEBUG:requests_oauthlib.oauth1_auth:Updated body: None
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.twitter.com:443
DEBUG:urllib3.connectionpool:https://api.twitter.com:443 "GET /2/users/by/username/twitterusername?user.fields=pinned_tweet_id&expansions=pinned_tweet_id&tweet.fields=entities HTTP/1.1" 200 111
DEBUG:requests_oauthlib.oauth1_auth:Signing request <PreparedRequest [GET]> using client <Client client_key=myrealconsumerkey, client_secret=****, resource_owner_key=myrealaccesstokenkey, resource_owner_secret=****, signature_method=HMAC-SHA1, signature_type=AUTH_HEADER, callback_uri=None, rsa_key=None, verifier=None, realm=None, encoding=utf-8, decoding=utf-8, nonce=None, timestamp=None>
DEBUG:requests_oauthlib.oauth1_auth:Including body in call to sign: False
DEBUG:oauthlib.oauth1.rfc5849:Collected params: [('screen_name', 'twitterusername'), ('oauth_nonce', '89805995954497329931639178883'), ('oauth_timestamp', '1639178883'), ('oauth_version', '1.0'), ('oauth_signature_method', 'HMAC-SHA1'), ('oauth_consumer_key', 'myrealconsumerkey'), ('oauth_token', 'myrealaccesstokenkey')]
DEBUG:oauthlib.oauth1.rfc5849:Normalized params: oauth_consumer_key=myrealconsumerkey&oauth_nonce=89805995954497329931639178883&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1639178883&oauth_token=myrealaccesstokenkey&oauth_version=1.0&screen_name=twitterusername
DEBUG:oauthlib.oauth1.rfc5849:Normalized URI: https://api.twitter.com/2/users/show.json
DEBUG:oauthlib.oauth1.rfc5849:Signing: signature base string: GET&https%3A%2F%2Fapi.twitter.com%2F2%2Fusers%2Fshow.json&oauth_consumer_key%3Dmyrealconsumerkey%26oauth_nonce%3D89805995954497329931639178883%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1639178883%26oauth_token%3Dmyrealaccesstokenkey%26oauth_version%3D1.0%26screen_name%3Dtwitterusername
DEBUG:oauthlib.oauth1.rfc5849:Signature: Kbkh3vRqXmdDNXrDfrKpvbq1M9k=
DEBUG:oauthlib.oauth1.rfc5849:Encoding URI, headers and body to utf-8.
DEBUG:requests_oauthlib.oauth1_auth:Updated url: https://api.twitter.com/2/users/show.json?screen_name=twitterusername
DEBUG:requests_oauthlib.oauth1_auth:Updated headers: {b'User-Agent': b'python-requests/2.26.0', b'Accept-Encoding': b'gzip, deflate', b'Accept': b'*/*', b'Connection': b'keep-alive', b'Authorization': b'OAuth oauth_nonce="89805995954497329931639178883", oauth_timestamp="1639178883", oauth_version="1.0", oauth_signature_method="HMAC-SHA1", oauth_consumer_key="myrealconsumerkey", oauth_token="myrealaccesstokenkey", oauth_signature="Kbkh3vRqXmdDNXrDfrKpvbq1M9k%3D"'}
DEBUG:requests_oauthlib.oauth1_auth:Updated body: None
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.twitter.com:443
DEBUG:urllib3.connectionpool:https://api.twitter.com:443 "GET /2/users/show.json?screen_name=twitterusername HTTP/1.1" 400 263
[31;21m✖ 2021-12-10 16:28:03,723 - pleroma_bot - ERROR - Exception occurred (cli.py:423) [0m
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/cli.py", line 333, in main
user = User(user_item, config, base_path)
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/cli.py", line 185, in __init__
self._get_twitter_info()
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/_twitter.py", line 30, in _get_twitter_info
response.raise_for_status()
File "/usr/local/lib/python3.8/dist-packages/requests-2.26.0-py3.8.egg/requests/models.py", line 953, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: https://api.twitter.com/2/users/show.json?screen_name=twitterusername
ERROR:pleroma_bot:Exception occurred
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/cli.py", line 333, in main
user = User(user_item, config, base_path)
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/cli.py", line 185, in __init__
self._get_twitter_info()
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/_twitter.py", line 30, in _get_twitter_info
response.raise_for_status()
File "/usr/local/lib/python3.8/dist-packages/requests-2.26.0-py3.8.egg/requests/models.py", line 953, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: https://api.twitter.com/2/users/show.json?screen_name=twitterusername
With V1.1
DEBUG:root:Debug logging enabled
`^y6gB@@BBQA{,
:fB@@@@@@BBBBBQgU"
`f@@@@@@@@BBBBQgg80H~
H@@B@BB@BBBB#Qgg&0RNT
z@@&B@BBBBBBQgg80RD6HK
;@@@QB@BBBB#Qgg&0RN6WqS
q@@@@@BBBBQgg80RN6HAqSo _ _
z@@@@BBBB#Qg8&0RN6WqSUhr | | | |
-H@@@@BBBBQQg80RD6HAqSKh( ___| |_ ___ _ __| | __
rB@@@BBBB#6Lm00DN6WqSUhfv / __| __/ _ \| '__| |/ /
f@@@@BBBBf= |0RD6HAqSKhfv \__ \ || (_) | | | <
=g@@@BBBBF= "RDN6WqSUhff{ |___/\__\___/|_| |_|\_|
c@@@@BBgu_ ~WD9HAqSKhfkl`
_6@@@BBNr 'qN6WqSUhhfXI' . . .
rB@@@B0r `S6HAqSKhfkoCr ,-. | ,-. ,-. ,-. ,-,-. ,-. |-. ,-. |-
`X@@@BQx `I6WASShhfXFIy_ | | | |-' | | | | | | ,-| -- | | | | |
_g@@@Q\` JHAqSKhfXoCwJz_ |-' `' `-' ' `-' ' ' ' `-^ `-' `-' `'
rB@@#x` }WASShhfXsIyzuu, |
`y@@&| .IAqSKhfXoCwJzu1lr '
`D@&| :KqSUhffXsIyzuu1llc,
ff= `==:::""",,,,________
[38;21mℹ 2021-12-10 16:35:22,110 - pleroma_bot - INFO - ====================================== [0m
INFO:pleroma_bot:======================================
[38;21mℹ 2021-12-10 16:35:22,110 - pleroma_bot - INFO - Processing user: pleromausername [0m
INFO:pleroma_bot:Processing user: pleromausername
DEBUG:requests_oauthlib.oauth1_auth:Signing request <PreparedRequest [GET]> using client <Client client_key=myrealconsumerkey, client_secret=****, resource_owner_key=myrealaccesstokenkey, resource_owner_secret=****, signature_method=HMAC-SHA1, signature_type=AUTH_HEADER, callback_uri=None, rsa_key=None, verifier=None, realm=None, encoding=utf-8, decoding=utf-8, nonce=None, timestamp=None>
DEBUG:requests_oauthlib.oauth1_auth:Including body in call to sign: False
DEBUG:oauthlib.oauth1.rfc5849:Collected params: [('user.fields', 'pinned_tweet_id'), ('expansions', 'pinned_tweet_id'), ('tweet.fields', 'entities'), ('oauth_nonce', '182201741117129163301639179322'), ('oauth_timestamp', '1639179322'), ('oauth_version', '1.0'), ('oauth_signature_method', 'HMAC-SHA1'), ('oauth_consumer_key', 'myrealconsumerkey'), ('oauth_token', 'myrealaccesstokenkey')]
DEBUG:oauthlib.oauth1.rfc5849:Normalized params: expansions=pinned_tweet_id&oauth_consumer_key=myrealconsumerkey&oauth_nonce=182201741117129163301639179322&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1639179322&oauth_token=myrealaccesstokenkey&oauth_version=1.0&tweet.fields=entities&user.fields=pinned_tweet_id
DEBUG:oauthlib.oauth1.rfc5849:Normalized URI: https://api.twitter.com/2/users/by/username/twitterusername
DEBUG:oauthlib.oauth1.rfc5849:Signing: signature base string: GET&https%3A%2F%2Fapi.twitter.com%2F2%2Fusers%2Fby%2Fusername%2Ftwitterusername&expansions%3Dpinned_tweet_id%26oauth_consumer_key%3Dmyrealconsumerkey%26oauth_nonce%3D182201741117129163301639179322%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1639179322%26oauth_token%3Dmyrealaccesstokenkey%26oauth_version%3D1.0%26tweet.fields%3Dentities%26user.fields%3Dpinned_tweet_id
DEBUG:oauthlib.oauth1.rfc5849:Signature: z+ZCrpqmlcTjrOipFHIN41GbjKo=
DEBUG:oauthlib.oauth1.rfc5849:Encoding URI, headers and body to utf-8.
DEBUG:requests_oauthlib.oauth1_auth:Updated url: https://api.twitter.com/2/users/by/username/twitterusername?user.fields=pinned_tweet_id&expansions=pinned_tweet_id&tweet.fields=entities
DEBUG:requests_oauthlib.oauth1_auth:Updated headers: {b'User-Agent': b'python-requests/2.26.0', b'Accept-Encoding': b'gzip, deflate', b'Accept': b'*/*', b'Connection': b'keep-alive', b'Authorization': b'OAuth oauth_nonce="182201741117129163301639179322", oauth_timestamp="1639179322", oauth_version="1.0", oauth_signature_method="HMAC-SHA1", oauth_consumer_key="myrealconsumerkey", oauth_token="myrealaccesstokenkey", oauth_signature="z%2BZCrpqmlcTjrOipFHIN41GbjKo%3D"'}
DEBUG:requests_oauthlib.oauth1_auth:Updated body: None
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.twitter.com:443
DEBUG:urllib3.connectionpool:https://api.twitter.com:443 "GET /2/users/by/username/twitterusername?user.fields=pinned_tweet_id&expansions=pinned_tweet_id&tweet.fields=entities HTTP/1.1" 200 111
DEBUG:requests_oauthlib.oauth1_auth:Signing request <PreparedRequest [GET]> using client <Client client_key=myrealconsumerkey, client_secret=****, resource_owner_key=myrealaccesstokenkey, resource_owner_secret=****, signature_method=HMAC-SHA1, signature_type=AUTH_HEADER, callback_uri=None, rsa_key=None, verifier=None, realm=None, encoding=utf-8, decoding=utf-8, nonce=None, timestamp=None>
DEBUG:requests_oauthlib.oauth1_auth:Including body in call to sign: False
DEBUG:oauthlib.oauth1.rfc5849:Collected params: [('screen_name', 'twitterusername'), ('oauth_nonce', '168735197166574174741639179322'), ('oauth_timestamp', '1639179322'), ('oauth_version', '1.0'), ('oauth_signature_method', 'HMAC-SHA1'), ('oauth_consumer_key', 'myrealconsumerkey'), ('oauth_token', 'myrealaccesstokenkey')]
DEBUG:oauthlib.oauth1.rfc5849:Normalized params: oauth_consumer_key=myrealconsumerkey&oauth_nonce=168735197166574174741639179322&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1639179322&oauth_token=myrealaccesstokenkey&oauth_version=1.0&screen_name=twitterusername
DEBUG:oauthlib.oauth1.rfc5849:Normalized URI: https://api.twitter.com/1.1/users/show.json
DEBUG:oauthlib.oauth1.rfc5849:Signing: signature base string: GET&https%3A%2F%2Fapi.twitter.com%2F1.1%2Fusers%2Fshow.json&oauth_consumer_key%3Dmyrealconsumerkey%26oauth_nonce%3D168735197166574174741639179322%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1639179322%26oauth_token%3Dmyrealaccesstokenkey%26oauth_version%3D1.0%26screen_name%3Dtwitterusername
DEBUG:oauthlib.oauth1.rfc5849:Signature: t0LRVCxQN9FIGIWaCqeaNiHaV2E=
DEBUG:oauthlib.oauth1.rfc5849:Encoding URI, headers and body to utf-8.
DEBUG:requests_oauthlib.oauth1_auth:Updated url: https://api.twitter.com/1.1/users/show.json?screen_name=twitterusername
DEBUG:requests_oauthlib.oauth1_auth:Updated headers: {b'User-Agent': b'python-requests/2.26.0', b'Accept-Encoding': b'gzip, deflate', b'Accept': b'*/*', b'Connection': b'keep-alive', b'Authorization': b'OAuth oauth_nonce="168735197166574174741639179322", oauth_timestamp="1639179322", oauth_version="1.0", oauth_signature_method="HMAC-SHA1", oauth_consumer_key="myrealconsumerkey", oauth_token="myrealaccesstokenkey", oauth_signature="t0LRVCxQN9FIGIWaCqeaNiHaV2E%3D"'}
DEBUG:requests_oauthlib.oauth1_auth:Updated body: None
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.twitter.com:443
DEBUG:urllib3.connectionpool:https://api.twitter.com:443 "GET /1.1/users/show.json?screen_name=twitterusername HTTP/1.1" 403 270
[31;21m✖ 2021-12-10 16:35:22,340 - pleroma_bot - ERROR - Exception occurred (cli.py:423) [0m
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/cli.py", line 333, in main
user = User(user_item, config, base_path)
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/cli.py", line 185, in __init__
self._get_twitter_info()
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/_twitter.py", line 30, in _get_twitter_info
response.raise_for_status()
File "/usr/local/lib/python3.8/dist-packages/requests-2.26.0-py3.8.egg/requests/models.py", line 953, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://api.twitter.com/1.1/users/show.json?screen_name=twitterusername
ERROR:pleroma_bot:Exception occurred
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/cli.py", line 333, in main
user = User(user_item, config, base_path)
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/cli.py", line 185, in __init__
self._get_twitter_info()
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/_twitter.py", line 30, in _get_twitter_info
response.raise_for_status()
File "/usr/local/lib/python3.8/dist-packages/requests-2.26.0-py3.8.egg/requests/models.py", line 953, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://api.twitter.com/1.1/users/show.json?screen_name=twitterusername
Something's up with the keys and tokens Did you generate those tokens using a Twitter's API v2 project? https://github.com/robertoszek/pleroma-bot/issues/18#issuecomment-748087612
The process for verifying the credentials it's a bit involved https://developer.twitter.com/en/docs/authentication/oauth-1-0a/authorizing-a-request
These are the lengths of each one if it's any help:
consumer_key: XXXXXXXXXXXXXXXXXXXXXXXXX # Consumer API key
consumer_secret: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX # Consumer API Key Secret
access_token_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX # Access Token
access_token_secret: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX # Access Token Secret
Oh I forgot to ask, does your Twitter's API project has elevated access? https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api#v2-access-level
We leverage endpoints from v1.1 and v2 for some that were not yet fully functional at the time of implementation (like downloading videos, which falls back to v1.1), until we migrate everything to v2 in the near future, we need access to both v1.1 and v2.
(And the fallback API value should be this one, we primarily use v2 internally but fallback to v1.1 sometimes)
twitter_base_url: https://api.twitter.com/1.1
I got the keys and tokens today, so I assume they are v2 keys.
ahh no I just have essential, so this would make sense why I'm having issues. I'll request elevated access and report back when they give it to me.
It's a fairly recent development (15 November 2021): https://blog.twitter.com/developer/en_us/topics/tools/2021/build-whats-next-with-the-new-twitter-developer-platform
If you’re already using the Twitter API v2, you’ll automatically see your Projects upgraded to Elevated access today.
You barely missed the automatic upgrade, as you said, I think you need to apply for elevated as of now https://developer.twitter.com/en/portal/products/elevated
Yeah the process to get elevated is the same as getting regular api access for 1.1. It was fairly simple. using twitter_base_url: https://api.twitter.com/1.1 in the config file, I get this new error
DEBUG:root:Debug logging enabled
`^y6gB@@BBQA{,
:fB@@@@@@BBBBBQgU"
`f@@@@@@@@BBBBQgg80H~
H@@B@BB@BBBB#Qgg&0RNT
z@@&B@BBBBBBQgg80RD6HK
;@@@QB@BBBB#Qgg&0RN6WqS
q@@@@@BBBBQgg80RN6HAqSo _ _
z@@@@BBBB#Qg8&0RN6WqSUhr | | | |
-H@@@@BBBBQQg80RD6HAqSKh( ___| |_ ___ _ __| | __
rB@@@BBBB#6Lm00DN6WqSUhfv / __| __/ _ \| '__| |/ /
f@@@@BBBBf= |0RD6HAqSKhfv \__ \ || (_) | | | <
=g@@@BBBBF= "RDN6WqSUhff{ |___/\__\___/|_| |_|\_|
c@@@@BBgu_ ~WD9HAqSKhfkl`
_6@@@BBNr 'qN6WqSUhhfXI' . . .
rB@@@B0r `S6HAqSKhfkoCr ,-. | ,-. ,-. ,-. ,-,-. ,-. |-. ,-. |-
`X@@@BQx `I6WASShhfXFIy_ | | | |-' | | | | | | ,-| -- | | | | |
_g@@@Q\` JHAqSKhfXoCwJz_ |-' `' `-' ' `-' ' ' ' `-^ `-' `-' `'
rB@@#x` }WASShhfXsIyzuu, |
`y@@&| .IAqSKhfXoCwJzu1lr '
`D@&| :KqSUhffXsIyzuu1llc,
ff= `==:::""",,,,________
[38;21mℹ 2021-12-10 17:34:59,410 - pleroma_bot - INFO - ====================================== [0m
INFO:pleroma_bot:======================================
[38;21mℹ 2021-12-10 17:34:59,410 - pleroma_bot - INFO - Processing user: myrealpleromaname [0m
INFO:pleroma_bot:Processing user: myrealpleromaname
DEBUG:requests_oauthlib.oauth1_auth:Signing request <PreparedRequest [GET]> using client <Client client_key=myrealconsumer_key, client_secret=****, resource_owner_key=myrealaccess_token_key, resource_owner_secret=****, signature_method=HMAC-SHA1, signature_type=AUTH_HEADER, callback_uri=None, rsa_key=None, verifier=None, realm=None, encoding=utf-8, decoding=utf-8, nonce=None, timestamp=None>
DEBUG:requests_oauthlib.oauth1_auth:Including body in call to sign: False
DEBUG:oauthlib.oauth1.rfc5849:Collected params: [('user.fields', 'pinned_tweet_id'), ('expansions', 'pinned_tweet_id'), ('tweet.fields', 'entities'), ('oauth_nonce', '176277577907894377151639182899'), ('oauth_timestamp', '1639182899'), ('oauth_version', '1.0'), ('oauth_signature_method', 'HMAC-SHA1'), ('oauth_consumer_key', 'myrealconsumer_key'), ('oauth_token', 'myrealaccess_token_key')]
DEBUG:oauthlib.oauth1.rfc5849:Normalized params: expansions=pinned_tweet_id&oauth_consumer_key=myrealconsumer_key&oauth_nonce=176277577907894377151639182899&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1639182899&oauth_token=myrealaccess_token_key&oauth_version=1.0&tweet.fields=entities&user.fields=pinned_tweet_id
DEBUG:oauthlib.oauth1.rfc5849:Normalized URI: https://api.twitter.com/2/users/by/username/myrealtwittername
DEBUG:oauthlib.oauth1.rfc5849:Signing: signature base string: GET&https%3A%2F%2Fapi.twitter.com%2F2%2Fusers%2Fby%2Fusername%2Fmyrealtwittername&expansions%3Dpinned_tweet_id%26oauth_consumer_key%3Dmyrealconsumer_key%26oauth_nonce%3D176277577907894377151639182899%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1639182899%26oauth_token%3Dmyrealaccess_token_key%26oauth_version%3D1.0%26tweet.fields%3Dentities%26user.fields%3Dpinned_tweet_id
DEBUG:oauthlib.oauth1.rfc5849:Signature: pwwZl2d+6Cqga2EhoHw0FeBY0mI=
DEBUG:oauthlib.oauth1.rfc5849:Encoding URI, headers and body to utf-8.
DEBUG:requests_oauthlib.oauth1_auth:Updated url: https://api.twitter.com/2/users/by/username/myrealtwittername?user.fields=pinned_tweet_id&expansions=pinned_tweet_id&tweet.fields=entities
DEBUG:requests_oauthlib.oauth1_auth:Updated headers: {b'User-Agent': b'python-requests/2.26.0', b'Accept-Encoding': b'gzip, deflate', b'Accept': b'*/*', b'Connection': b'keep-alive', b'Authorization': b'OAuth oauth_nonce="176277577907894377151639182899", oauth_timestamp="1639182899", oauth_version="1.0", oauth_signature_method="HMAC-SHA1", oauth_consumer_key="myrealconsumer_key", oauth_token="myrealaccess_token_key", oauth_signature="pwwZl2d%2B6Cqga2EhoHw0FeBY0mI%3D"'}
DEBUG:requests_oauthlib.oauth1_auth:Updated body: None
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.twitter.com:443
DEBUG:urllib3.connectionpool:https://api.twitter.com:443 "GET /2/users/by/username/myrealtwittername?user.fields=pinned_tweet_id&expansions=pinned_tweet_id&tweet.fields=entities HTTP/1.1" 200 111
DEBUG:requests_oauthlib.oauth1_auth:Signing request <PreparedRequest [GET]> using client <Client client_key=myrealconsumer_key, client_secret=****, resource_owner_key=myrealaccess_token_key, resource_owner_secret=****, signature_method=HMAC-SHA1, signature_type=AUTH_HEADER, callback_uri=None, rsa_key=None, verifier=None, realm=None, encoding=utf-8, decoding=utf-8, nonce=None, timestamp=None>
DEBUG:requests_oauthlib.oauth1_auth:Including body in call to sign: False
DEBUG:oauthlib.oauth1.rfc5849:Collected params: [('screen_name', 'myrealtwittername'), ('oauth_nonce', '116082159101334391781639182899'), ('oauth_timestamp', '1639182899'), ('oauth_version', '1.0'), ('oauth_signature_method', 'HMAC-SHA1'), ('oauth_consumer_key', 'myrealconsumer_key'), ('oauth_token', 'myrealaccess_token_key')]
DEBUG:oauthlib.oauth1.rfc5849:Normalized params: oauth_consumer_key=myrealconsumer_key&oauth_nonce=116082159101334391781639182899&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1639182899&oauth_token=myrealaccess_token_key&oauth_version=1.0&screen_name=myrealtwittername
DEBUG:oauthlib.oauth1.rfc5849:Normalized URI: https://api.twitter.com/1.1/users/show.json
DEBUG:oauthlib.oauth1.rfc5849:Signing: signature base string: GET&https%3A%2F%2Fapi.twitter.com%2F1.1%2Fusers%2Fshow.json&oauth_consumer_key%3Dmyrealconsumer_key%26oauth_nonce%3D116082159101334391781639182899%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1639182899%26oauth_token%3Dmyrealaccess_token_key%26oauth_version%3D1.0%26screen_name%3Dmyrealtwittername
DEBUG:oauthlib.oauth1.rfc5849:Signature: 5mTfyCYbMLEWiSREZUE3EkyTN2g=
DEBUG:oauthlib.oauth1.rfc5849:Encoding URI, headers and body to utf-8.
DEBUG:requests_oauthlib.oauth1_auth:Updated url: https://api.twitter.com/1.1/users/show.json?screen_name=myrealtwittername
DEBUG:requests_oauthlib.oauth1_auth:Updated headers: {b'User-Agent': b'python-requests/2.26.0', b'Accept-Encoding': b'gzip, deflate', b'Accept': b'*/*', b'Connection': b'keep-alive', b'Authorization': b'OAuth oauth_nonce="116082159101334391781639182899", oauth_timestamp="1639182899", oauth_version="1.0", oauth_signature_method="HMAC-SHA1", oauth_consumer_key="myrealconsumer_key", oauth_token="myrealaccess_token_key", oauth_signature="5mTfyCYbMLEWiSREZUE3EkyTN2g%3D"'}
DEBUG:requests_oauthlib.oauth1_auth:Updated body: None
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.twitter.com:443
DEBUG:urllib3.connectionpool:https://api.twitter.com:443 "GET /1.1/users/show.json?screen_name=myrealtwittername HTTP/1.1" 200 1514
[31;21m✖ 2021-12-10 17:34:59,679 - pleroma_bot - ERROR - Exception occurred (cli.py:423) [0m
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/cli.py", line 333, in main
user = User(user_item, config, base_path)
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/cli.py", line 186, in __init__
self._get_instance_info()
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/_utils.py", line 229, in _get_instance_info
response = requests.get(instance_url)
File "/usr/local/lib/python3.8/dist-packages/requests-2.26.0-py3.8.egg/requests/api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/requests-2.26.0-py3.8.egg/requests/api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/requests-2.26.0-py3.8.egg/requests/sessions.py", line 528, in request
prep = self.prepare_request(req)
File "/usr/local/lib/python3.8/dist-packages/requests-2.26.0-py3.8.egg/requests/sessions.py", line 456, in prepare_request
p.prepare(
File "/usr/local/lib/python3.8/dist-packages/requests-2.26.0-py3.8.egg/requests/models.py", line 316, in prepare
self.prepare_url(url, params)
File "/usr/local/lib/python3.8/dist-packages/requests-2.26.0-py3.8.egg/requests/models.py", line 393, in prepare_url
raise InvalidURL("Invalid URL %r: No host supplied" % url)
requests.exceptions.InvalidURL: Invalid URL 'https:///bae.st/api/v1/instance': No host supplied
ERROR:pleroma_bot:Exception occurred
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/cli.py", line 333, in main
user = User(user_item, config, base_path)
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/cli.py", line 186, in __init__
self._get_instance_info()
File "/usr/local/lib/python3.8/dist-packages/pleroma_bot/_utils.py", line 229, in _get_instance_info
response = requests.get(instance_url)
File "/usr/local/lib/python3.8/dist-packages/requests-2.26.0-py3.8.egg/requests/api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/requests-2.26.0-py3.8.egg/requests/api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/requests-2.26.0-py3.8.egg/requests/sessions.py", line 528, in request
prep = self.prepare_request(req)
File "/usr/local/lib/python3.8/dist-packages/requests-2.26.0-py3.8.egg/requests/sessions.py", line 456, in prepare_request
p.prepare(
File "/usr/local/lib/python3.8/dist-packages/requests-2.26.0-py3.8.egg/requests/models.py", line 316, in prepare
self.prepare_url(url, params)
File "/usr/local/lib/python3.8/dist-packages/requests-2.26.0-py3.8.egg/requests/models.py", line 393, in prepare_url
raise InvalidURL("Invalid URL %r: No host supplied" % url)
requests.exceptions.InvalidURL: Invalid URL 'https:///bae.st/api/v1/instance': No host supplied
If you think this is an instance issue, I can talk to the admin of the server
I also got new api keys and tokens forgot to mention
Perfect, keep me posted once you get the approval for Elevated and try it again
And, even if that was in the end why it wasn't working for you, in the meantime I created an issue to keep track of the last steps of migration to v2 (so that essential access should be enough)
That new error is with the new elevated keys and tokens if you wouldn't mind looking at it
Oh, and regarding the instance issue,
could you try replacing this value on your config
pleroma_base_url: https:///bae.st
for
pleroma_base_url: https://bae.st
I'm not sure how that happened but good catch! I appreciate your help & It seems to be working as intended now :)
No problem!
Feel free to open a new issue if you encounter any other errors!
Hi, I am just setting up this bot for the first time. When I run the bot it gives me an error
I have installed using pip3 on ubuntu 20.04 my config looks like this:
Please let me know what I should do or how I can help.