71 lines
2.4 KiB
Python
71 lines
2.4 KiB
Python
import credentials
|
|
|
|
import config
|
|
|
|
import twitchAPI
|
|
from twitchAPI.pubsub import PubSub
|
|
from twitchAPI.twitch import Twitch
|
|
from twitchAPI.types import AuthScope
|
|
from twitchAPI.oauth import UserAuthenticator
|
|
from pprint import pprint
|
|
from uuid import UUID
|
|
|
|
import json
|
|
import utilities_script as utility
|
|
import os
|
|
|
|
class Twitch_Credential_Maker():
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.credential : credentials.Twitch_Credential()
|
|
self.twitch : Twitch()
|
|
self.target_scope = [AuthScope.WHISPERS_READ, AuthScope.CHANNEL_READ_REDEMPTIONS, AuthScope.BITS_READ, AuthScope.CHANNEL_READ_SUBSCRIPTIONS]
|
|
|
|
def get_tokens(self):
|
|
self.twitch.authenticate_app(self.target_scope)
|
|
for scope_ in self.target_scope:
|
|
print(scope_)
|
|
auth = UserAuthenticator(self.twitch, self.target_scope, force_verify=True)
|
|
token, refresh_token = auth.authenticate()
|
|
|
|
if token is not None: print("found token")
|
|
if refresh_token is not None: print("found refresh_token\n")
|
|
print("token: ", token)
|
|
print("refresh_token: ", refresh_token)
|
|
print("")
|
|
return token, refresh_token
|
|
|
|
def updateCredentialsFile(self, token, refreshToken):
|
|
dir = utility.get_dir("credentials")
|
|
script_dir = os.path.dirname(__file__) #<-- absolute dir the script is in
|
|
relative_path = "credentials/twitch.json"
|
|
real_file_path = os.path.join(script_dir, relative_path)
|
|
|
|
with open(real_file_path, 'r') as cred_r:
|
|
data = json.load(cred_r)
|
|
data['pubsub_AccessToken'] = token
|
|
data['pubsub_RefreshToken'] = refreshToken
|
|
|
|
os.remove(real_file_path)
|
|
with open(real_file_path, 'w') as cred_w:
|
|
json.dump(data, cred_w, indent=2)
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
testModule = Twitch_Credential_Maker()
|
|
|
|
credentials_manager = credentials.Credentials_Module()
|
|
credentials_manager.load_credentials()
|
|
testModule.credential = credentials_manager.find_Twitch_Credential(config.credentialsNickname)
|
|
testModule.twitch = Twitch(testModule.credential.pubsub_client_id, testModule.credential.pubsub_secret)
|
|
#pprint(testModule.twitch.get_users(logins=['thecuriousnerd']))
|
|
|
|
token, refreshToken = testModule.get_tokens()
|
|
print("Update credentials file? (y/n)")
|
|
response = input()
|
|
if "y" in response.lower():
|
|
testModule.updateCredentialsFile(token, refreshToken)
|
|
print("Ready to close")
|
|
input() |