Mise à jour de 'FirstLiv/main.py'
This commit is contained in:
parent
01036710af
commit
72fcd29a86
430
FirstLiv/main.py
430
FirstLiv/main.py
@ -1,216 +1,216 @@
|
|||||||
from tkinter import *
|
from tkinter import *
|
||||||
from tkinter import messagebox
|
from tkinter import messagebox
|
||||||
import mysql.connector
|
import mysql.connector
|
||||||
from obswebsocket import obsws, requests
|
from obswebsocket import obsws, requests
|
||||||
from twitchAPI.twitch import TwitchClient
|
# from twitchAPI.twitch import TwitchClient
|
||||||
|
|
||||||
class NouvelleFenetre:
|
class NouvelleFenetre:
|
||||||
|
|
||||||
# Fonction permettant de fermer la deuxième fenetre créee et la première fenetre de connexion de se réafficher tout en se déconnecctant d'OBS
|
# Fonction permettant de fermer la deuxième fenetre créee et la première fenetre de connexion de se réafficher tout en se déconnecctant d'OBS
|
||||||
def fermer_et_reafficher(self):
|
def fermer_et_reafficher(self):
|
||||||
self.root.destroy()
|
self.root.destroy()
|
||||||
self.ws.disconnect()
|
self.ws.disconnect()
|
||||||
self.root.master.deiconify()
|
self.root.master.deiconify()
|
||||||
|
|
||||||
# Fonction permettant de récupérer la valeur de la clé twitch qui a été renseignée
|
# Fonction permettant de récupérer la valeur de la clé twitch qui a été renseignée
|
||||||
def get_key_twitch(self):
|
def get_key_twitch(self):
|
||||||
self.twitch = self.entry_twitch.get()
|
self.twitch = self.entry_twitch.get()
|
||||||
print (self.twitch)
|
print (self.twitch)
|
||||||
|
|
||||||
# Fonction permettant de récupérer la valeur de la clé youtube qui a été renseignée
|
# Fonction permettant de récupérer la valeur de la clé youtube qui a été renseignée
|
||||||
def get_key_youtube(self):
|
def get_key_youtube(self):
|
||||||
self.youtube = self.entry_youtube.get()
|
self.youtube = self.entry_youtube.get()
|
||||||
print (self.youtube)
|
print (self.youtube)
|
||||||
|
|
||||||
def set_key_twitch(self, username):
|
def set_key_twitch(self, username):
|
||||||
try:
|
try:
|
||||||
# Paramètres du serveur
|
# Paramètres du serveur
|
||||||
cnx = mysql.connector.connect(user='root', password='',
|
cnx = mysql.connector.connect(user='root', password='',
|
||||||
host='127.0.0.1',
|
host='127.0.0.1',
|
||||||
database='obs_project')
|
database='obs_project')
|
||||||
cur = cnx.cursor()
|
cur = cnx.cursor()
|
||||||
|
|
||||||
# On lance une requête pour vérifier si l'utilisateur correspond à la base de données
|
# On lance une requête pour vérifier si l'utilisateur correspond à la base de données
|
||||||
query = "SELECT * FROM utilisateurs WHERE username = %s"
|
query = "SELECT * FROM utilisateurs WHERE username = %s"
|
||||||
cur.execute(query, (username,))
|
cur.execute(query, (username,))
|
||||||
|
|
||||||
# Renvoie la première ligne de la base de données qui correspond
|
# Renvoie la première ligne de la base de données qui correspond
|
||||||
user = cur.fetchone()
|
user = cur.fetchone()
|
||||||
|
|
||||||
if user:
|
if user:
|
||||||
# Utilisateur trouvé, on met à jour la clé Twitch
|
# Utilisateur trouvé, on met à jour la clé Twitch
|
||||||
new_twitch_key = self.entry_twitch.get()
|
new_twitch_key = self.entry_twitch.get()
|
||||||
update_query = "UPDATE twitch SET twitch_key = %s WHERE username = %s"
|
update_query = "UPDATE twitch SET twitch_key = %s WHERE username = %s"
|
||||||
cur.execute(update_query, (new_twitch_key, username))
|
cur.execute(update_query, (new_twitch_key, username))
|
||||||
cnx.commit()
|
cnx.commit()
|
||||||
print(f"La clé a été mis à jour pour {username} avec la clé {new_twitch_key}")
|
print(f"La clé a été mis à jour pour {username} avec la clé {new_twitch_key}")
|
||||||
else:
|
else:
|
||||||
print(f"Utilisateur {username} non trouvée")
|
print(f"Utilisateur {username} non trouvée")
|
||||||
|
|
||||||
except mysql.connector.Error as err:
|
except mysql.connector.Error as err:
|
||||||
print(f"Erreur: {err}")
|
print(f"Erreur: {err}")
|
||||||
messagebox.showerror("Erreur", "Une erreur a eu lieu pour mettre à jour votre clé")
|
messagebox.showerror("Erreur", "Une erreur a eu lieu pour mettre à jour votre clé")
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
# On ferme le tout, la connexion etc...
|
# On ferme le tout, la connexion etc...
|
||||||
cur.close()
|
cur.close()
|
||||||
cnx.close()
|
cnx.close()
|
||||||
|
|
||||||
def set_key_youtube(self, username):
|
def set_key_youtube(self, username):
|
||||||
try:
|
try:
|
||||||
# Paramètres du serveur
|
# Paramètres du serveur
|
||||||
cnx = mysql.connector.connect(user='root', password='',
|
cnx = mysql.connector.connect(user='root', password='',
|
||||||
host='127.0.0.1',
|
host='127.0.0.1',
|
||||||
database='obs_project')
|
database='obs_project')
|
||||||
cur = cnx.cursor()
|
cur = cnx.cursor()
|
||||||
|
|
||||||
# On lance une requête pour vérifier si l'utilisateur correspond à la base de données
|
# On lance une requête pour vérifier si l'utilisateur correspond à la base de données
|
||||||
query = "SELECT * FROM utilisateurs WHERE username = %s"
|
query = "SELECT * FROM utilisateurs WHERE username = %s"
|
||||||
cur.execute(query, (username,))
|
cur.execute(query, (username,))
|
||||||
|
|
||||||
# Renvoie la première ligne de la base de données qui correspond
|
# Renvoie la première ligne de la base de données qui correspond
|
||||||
user = cur.fetchone()
|
user = cur.fetchone()
|
||||||
|
|
||||||
if user:
|
if user:
|
||||||
# Utilisateur trouvé, on met à jour la clé Twitch
|
# Utilisateur trouvé, on met à jour la clé Twitch
|
||||||
new_youtube_key = self.entry_youtube.get()
|
new_youtube_key = self.entry_youtube.get()
|
||||||
update_query = "UPDATE youtube SET youtube_key = %s WHERE username = %s"
|
update_query = "UPDATE youtube SET youtube_key = %s WHERE username = %s"
|
||||||
cur.execute(update_query, (new_youtube_key, username))
|
cur.execute(update_query, (new_youtube_key, username))
|
||||||
cnx.commit()
|
cnx.commit()
|
||||||
print(f"La clé a été mis à jour pour {username} avec la clé {new_youtube_key}")
|
print(f"La clé a été mis à jour pour {username} avec la clé {new_youtube_key}")
|
||||||
else:
|
else:
|
||||||
print(f"Utilisateur {username} non trouvée")
|
print(f"Utilisateur {username} non trouvée")
|
||||||
|
|
||||||
except mysql.connector.Error as err:
|
except mysql.connector.Error as err:
|
||||||
print(f"Erreur: {err}")
|
print(f"Erreur: {err}")
|
||||||
messagebox.showerror("Erreur", "Une erreur a eu lieu pour mettre à jour votre clé")
|
messagebox.showerror("Erreur", "Une erreur a eu lieu pour mettre à jour votre clé")
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
# On ferme le tout, la connexion etc...
|
# On ferme le tout, la connexion etc...
|
||||||
cur.close()
|
cur.close()
|
||||||
cnx.close()
|
cnx.close()
|
||||||
|
|
||||||
def get_twitch_key_from_database(self, username):
|
def get_twitch_key_from_database(self, username):
|
||||||
try:
|
try:
|
||||||
# Paramètres du serveur
|
# Paramètres du serveur
|
||||||
cnx = mysql.connector.connect(user='root', password='',
|
cnx = mysql.connector.connect(user='root', password='',
|
||||||
host='127.0.0.1',
|
host='127.0.0.1',
|
||||||
database='obs_project')
|
database='obs_project')
|
||||||
cur = cnx.cursor()
|
cur = cnx.cursor()
|
||||||
|
|
||||||
# On lance une requête pour récupérer la clé Twitch de l'utilisateur
|
# On lance une requête pour récupérer la clé Twitch de l'utilisateur
|
||||||
query = "SELECT twitch_key FROM twitch WHERE username = %s"
|
query = "SELECT twitch_key FROM twitch WHERE username = %s"
|
||||||
cur.execute(query, (username,))
|
cur.execute(query, (username,))
|
||||||
twitch_key = cur.fetchone()
|
twitch_key = cur.fetchone()
|
||||||
|
|
||||||
if twitch_key:
|
if twitch_key:
|
||||||
return twitch_key[0]
|
return twitch_key[0]
|
||||||
else:
|
else:
|
||||||
print(f"Clé Twitch non trouvée pour l'utilisateur {username}")
|
print(f"Clé Twitch non trouvée pour l'utilisateur {username}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
except mysql.connector.Error as err:
|
except mysql.connector.Error as err:
|
||||||
print(f"Erreur: {err}")
|
print(f"Erreur: {err}")
|
||||||
messagebox.showerror("Erreur", "Une erreur a eu lieu pour récupérer la clé Twitch")
|
messagebox.showerror("Erreur", "Une erreur a eu lieu pour récupérer la clé Twitch")
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
# On ferme le tout, la connexion etc...
|
# On ferme le tout, la connexion etc...
|
||||||
cur.close()
|
cur.close()
|
||||||
cnx.close()
|
cnx.close()
|
||||||
|
|
||||||
# On configure OBS pour Twitch
|
# On configure OBS pour Twitch
|
||||||
def configure_obs_for_twitch(self, twitch_stream_key):
|
def configure_obs_for_twitch(self, twitch_stream_key):
|
||||||
# Utilisez la clé Twitch pour configurer OBS
|
# Utilisez la clé Twitch pour configurer OBS
|
||||||
self.ws.call(requests.StartStreaming(stream=twitch_stream_key))
|
self.ws.call(requests.StartStreaming(stream=twitch_stream_key))
|
||||||
|
|
||||||
def boutondediffusiontwitch_callback(self):
|
def boutondediffusiontwitch_callback(self):
|
||||||
# Avec la variable is_twitch_streaming passé à False au commencement, on vérifie son état pour diffuser ou stoper le streaming
|
# Avec la variable is_twitch_streaming passé à False au commencement, on vérifie son état pour diffuser ou stoper le streaming
|
||||||
if self.is_twitch_streaming:
|
if self.is_twitch_streaming:
|
||||||
self.ws.call(requests.StopStreaming())
|
self.ws.call(requests.StopStreaming())
|
||||||
self.is_twitch_streaming = False
|
self.is_twitch_streaming = False
|
||||||
else:
|
else:
|
||||||
self.ws.call(requests.StartStreaming(stream= self.twitch_key_from_database))
|
self.ws.call(requests.StartStreaming(stream= self.twitch_key_from_database))
|
||||||
self.is_twitch_streaming = True
|
self.is_twitch_streaming = True
|
||||||
|
|
||||||
# Création de la nouvelle fenetre une fois l'authentification faite
|
# Création de la nouvelle fenetre une fois l'authentification faite
|
||||||
def __init__(self, root, username, password):
|
def __init__(self, root, username, password):
|
||||||
self.root = Toplevel(root)
|
self.root = Toplevel(root)
|
||||||
self.root.title("OBS Extension Multistreaming")
|
self.root.title("OBS Extension Multistreaming")
|
||||||
self.root.geometry("1920x1080")
|
self.root.geometry("1920x1080")
|
||||||
|
|
||||||
self.root.grid_rowconfigure(0, weight=0)
|
self.root.grid_rowconfigure(0, weight=0)
|
||||||
self.root.grid_rowconfigure(1, weight=0)
|
self.root.grid_rowconfigure(1, weight=0)
|
||||||
self.root.grid_rowconfigure(2, weight=0)
|
self.root.grid_rowconfigure(2, weight=0)
|
||||||
self.root.grid_rowconfigure(3, weight=0)
|
self.root.grid_rowconfigure(3, weight=0)
|
||||||
self.root.grid_rowconfigure(4, weight=0)
|
self.root.grid_rowconfigure(4, weight=0)
|
||||||
self.root.grid_rowconfigure(5, weight=0)
|
self.root.grid_rowconfigure(5, weight=0)
|
||||||
self.root.grid_rowconfigure(6, weight=0)
|
self.root.grid_rowconfigure(6, weight=0)
|
||||||
self.root.grid_rowconfigure(7, weight=0)
|
self.root.grid_rowconfigure(7, weight=0)
|
||||||
self.root.grid_rowconfigure(8, weight=0)
|
self.root.grid_rowconfigure(8, weight=0)
|
||||||
self.root.grid_rowconfigure(9, weight=0)
|
self.root.grid_rowconfigure(9, weight=0)
|
||||||
self.root.grid_rowconfigure(10, weight=0)
|
self.root.grid_rowconfigure(10, weight=0)
|
||||||
self.root.grid_rowconfigure(11, weight=0)
|
self.root.grid_rowconfigure(11, weight=0)
|
||||||
self.root.grid_rowconfigure(12, weight=0)
|
self.root.grid_rowconfigure(12, weight=0)
|
||||||
self.root.grid_rowconfigure(13, weight=0)
|
self.root.grid_rowconfigure(13, weight=0)
|
||||||
self.root.grid_rowconfigure(14, weight=0)
|
self.root.grid_rowconfigure(14, weight=0)
|
||||||
self.root.grid_columnconfigure(0, weight=1)
|
self.root.grid_columnconfigure(0, weight=1)
|
||||||
self.root.grid_columnconfigure(1, weight=0)
|
self.root.grid_columnconfigure(1, weight=0)
|
||||||
self.root.grid_columnconfigure(2, weight=0)
|
self.root.grid_columnconfigure(2, weight=0)
|
||||||
self.root.grid_columnconfigure(3, weight=0)
|
self.root.grid_columnconfigure(3, weight=0)
|
||||||
|
|
||||||
# C'est mon id de ma chaine twitch identifiant Alexis
|
# C'est mon id de ma chaine twitch identifiant Alexis
|
||||||
client_id = "6h883my3p6ndqozotnl6nsbllyyr3h"
|
client_id = "6h883my3p6ndqozotnl6nsbllyyr3h"
|
||||||
|
|
||||||
twitch_client = TwitchClient(client_id=client_id)
|
# twitch_client = TwitchClient(client_id=client_id)
|
||||||
|
|
||||||
# On récupère la clé Twitch depuis la base de données
|
# On récupère la clé Twitch depuis la base de données
|
||||||
self.twitch_key_from_database = self.get_twitch_key_from_database(username)
|
self.twitch_key_from_database = self.get_twitch_key_from_database(username)
|
||||||
|
|
||||||
|
|
||||||
# Initialisez la connexion OBS WebSocket
|
# Initialisez la connexion OBS WebSocket
|
||||||
self.ws = obsws("localhost", 4455, "MPcZLZfViZihHqmg")
|
self.ws = obsws("localhost", 4455, "MPcZLZfViZihHqmg")
|
||||||
self.ws.connect()
|
self.ws.connect()
|
||||||
|
|
||||||
# Configurez les paramètres de diffusion pour Twitch (remplacez 'stream_key' par le nom correct de votre champ)
|
# Configurez les paramètres de diffusion pour Twitch (remplacez 'stream_key' par le nom correct de votre champ)
|
||||||
twitch_stream_key = self.get_twitch_key_from_database(username) # Variable qui récupére la key
|
twitch_stream_key = self.get_twitch_key_from_database(username) # Variable qui récupére la key
|
||||||
self.configure_obs_for_twitch(twitch_stream_key)
|
self.configure_obs_for_twitch(twitch_stream_key)
|
||||||
|
|
||||||
# On affiche bienvenue à la personne s'étant identifiée, en récupérant la variable lastname
|
# On affiche bienvenue à la personne s'étant identifiée, en récupérant la variable lastname
|
||||||
label = Label(self.root, text=f"Bienvenue, {username}!")
|
label = Label(self.root, text=f"Bienvenue, {username}!")
|
||||||
label.grid(row = 0, column = 0)
|
label.grid(row = 0, column = 0)
|
||||||
|
|
||||||
label = Label(self.root, text = "Clé Twitch :")
|
label = Label(self.root, text = "Clé Twitch :")
|
||||||
label.grid(row = 2, column = 0)
|
label.grid(row = 2, column = 0)
|
||||||
|
|
||||||
self.entry_twitch = Entry(self.root)
|
self.entry_twitch = Entry(self.root)
|
||||||
self.entry_twitch.grid(row= 3, column = 0)
|
self.entry_twitch.grid(row= 3, column = 0)
|
||||||
|
|
||||||
|
|
||||||
# On met un bouton de validation pour garder les valeurs qu'on a rentré précédement
|
# On met un bouton de validation pour garder les valeurs qu'on a rentré précédement
|
||||||
boutonvalidation = Button(self.root, text="Envoyé", command= lambda : self.set_key_twitch(username))
|
boutonvalidation = Button(self.root, text="Envoyé", command= lambda : self.set_key_twitch(username))
|
||||||
boutonvalidation.grid(row = 4, column = 0)
|
boutonvalidation.grid(row = 4, column = 0)
|
||||||
|
|
||||||
# On met d'office cette variable à False pour dire qu'on ne stream pas au lancement de l'application
|
# On met d'office cette variable à False pour dire qu'on ne stream pas au lancement de l'application
|
||||||
self.is_twitch_streaming = False
|
self.is_twitch_streaming = False
|
||||||
|
|
||||||
# On met un bouton de diffusion pour twitch
|
# On met un bouton de diffusion pour twitch
|
||||||
boutondediffusiontwitch = Button(self.root, text="Diffusion de Twitch On/Off", command=self.boutondediffusiontwitch_callback)
|
boutondediffusiontwitch = Button(self.root, text="Diffusion de Twitch On/Off", command=self.boutondediffusiontwitch_callback)
|
||||||
boutondediffusiontwitch.grid(row = 4, column = 3)
|
boutondediffusiontwitch.grid(row = 4, column = 3)
|
||||||
|
|
||||||
label = Label(self.root, text = "Clé Youtube :")
|
label = Label(self.root, text = "Clé Youtube :")
|
||||||
label.grid(row = 5, column = 0)
|
label.grid(row = 5, column = 0)
|
||||||
|
|
||||||
self.entry_youtube = Entry(self.root)
|
self.entry_youtube = Entry(self.root)
|
||||||
self.entry_youtube.grid(row = 6, column = 0)
|
self.entry_youtube.grid(row = 6, column = 0)
|
||||||
|
|
||||||
# On met un bouton pour envoyé les valeurs remplies du dessus
|
# On met un bouton pour envoyé les valeurs remplies du dessus
|
||||||
boutonvalidation2 = Button(self.root, text="Envoyé", command= lambda :self.set_key_youtube(username))
|
boutonvalidation2 = Button(self.root, text="Envoyé", command= lambda :self.set_key_youtube(username))
|
||||||
boutonvalidation2.grid(row = 7, column = 0)
|
boutonvalidation2.grid(row = 7, column = 0)
|
||||||
|
|
||||||
# On met un bouton de diffusion pour twitch
|
# On met un bouton de diffusion pour twitch
|
||||||
boutondediffusionyoutube = Button(self.root, text="Diffusion de YouTube On/Off")
|
boutondediffusionyoutube = Button(self.root, text="Diffusion de YouTube On/Off")
|
||||||
boutondediffusionyoutube.grid(row = 7, column = 3)
|
boutondediffusionyoutube.grid(row = 7, column = 3)
|
||||||
|
|
||||||
# On met un boutton fermer, pour pouvoir fermer la page main, et repasser sur la fenetre de connexion
|
# On met un boutton fermer, pour pouvoir fermer la page main, et repasser sur la fenetre de connexion
|
||||||
bouton_fermer = Button(self.root, text="Fermer", command=self.fermer_et_reafficher)
|
bouton_fermer = Button(self.root, text="Fermer", command=self.fermer_et_reafficher)
|
||||||
bouton_fermer.grid(row = 13, column = 0)
|
bouton_fermer.grid(row = 13, column = 0)
|
Loading…
Reference in New Issue
Block a user