From 72fcd29a86dda71f3ba807f785bcb1827a37a63f Mon Sep 17 00:00:00 2001 From: moulin Date: Tue, 5 Mar 2024 15:18:49 +0100 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'FirstLiv/main.py'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FirstLiv/main.py | 430 +++++++++++++++++++++++------------------------ 1 file changed, 215 insertions(+), 215 deletions(-) diff --git a/FirstLiv/main.py b/FirstLiv/main.py index d09cc28..ee299b7 100644 --- a/FirstLiv/main.py +++ b/FirstLiv/main.py @@ -1,216 +1,216 @@ -from tkinter import * -from tkinter import messagebox -import mysql.connector -from obswebsocket import obsws, requests -from twitchAPI.twitch import TwitchClient - -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 - def fermer_et_reafficher(self): - self.root.destroy() - self.ws.disconnect() - self.root.master.deiconify() - - # Fonction permettant de récupérer la valeur de la clé twitch qui a été renseignée - def get_key_twitch(self): - self.twitch = self.entry_twitch.get() - print (self.twitch) - - # Fonction permettant de récupérer la valeur de la clé youtube qui a été renseignée - def get_key_youtube(self): - self.youtube = self.entry_youtube.get() - print (self.youtube) - - def set_key_twitch(self, username): - try: - # Paramètres du serveur - cnx = mysql.connector.connect(user='root', password='', - host='127.0.0.1', - database='obs_project') - cur = cnx.cursor() - - # On lance une requête pour vérifier si l'utilisateur correspond à la base de données - query = "SELECT * FROM utilisateurs WHERE username = %s" - cur.execute(query, (username,)) - - # Renvoie la première ligne de la base de données qui correspond - user = cur.fetchone() - - if user: - # Utilisateur trouvé, on met à jour la clé Twitch - new_twitch_key = self.entry_twitch.get() - update_query = "UPDATE twitch SET twitch_key = %s WHERE username = %s" - cur.execute(update_query, (new_twitch_key, username)) - cnx.commit() - print(f"La clé a été mis à jour pour {username} avec la clé {new_twitch_key}") - else: - print(f"Utilisateur {username} non trouvée") - - except mysql.connector.Error as err: - print(f"Erreur: {err}") - messagebox.showerror("Erreur", "Une erreur a eu lieu pour mettre à jour votre clé") - - finally: - # On ferme le tout, la connexion etc... - cur.close() - cnx.close() - - def set_key_youtube(self, username): - try: - # Paramètres du serveur - cnx = mysql.connector.connect(user='root', password='', - host='127.0.0.1', - database='obs_project') - cur = cnx.cursor() - - # On lance une requête pour vérifier si l'utilisateur correspond à la base de données - query = "SELECT * FROM utilisateurs WHERE username = %s" - cur.execute(query, (username,)) - - # Renvoie la première ligne de la base de données qui correspond - user = cur.fetchone() - - if user: - # Utilisateur trouvé, on met à jour la clé Twitch - new_youtube_key = self.entry_youtube.get() - update_query = "UPDATE youtube SET youtube_key = %s WHERE username = %s" - cur.execute(update_query, (new_youtube_key, username)) - cnx.commit() - print(f"La clé a été mis à jour pour {username} avec la clé {new_youtube_key}") - else: - print(f"Utilisateur {username} non trouvée") - - except mysql.connector.Error as err: - print(f"Erreur: {err}") - messagebox.showerror("Erreur", "Une erreur a eu lieu pour mettre à jour votre clé") - - finally: - # On ferme le tout, la connexion etc... - cur.close() - cnx.close() - - def get_twitch_key_from_database(self, username): - try: - # Paramètres du serveur - cnx = mysql.connector.connect(user='root', password='', - host='127.0.0.1', - database='obs_project') - cur = cnx.cursor() - - # On lance une requête pour récupérer la clé Twitch de l'utilisateur - query = "SELECT twitch_key FROM twitch WHERE username = %s" - cur.execute(query, (username,)) - twitch_key = cur.fetchone() - - if twitch_key: - return twitch_key[0] - else: - print(f"Clé Twitch non trouvée pour l'utilisateur {username}") - return None - - except mysql.connector.Error as err: - print(f"Erreur: {err}") - messagebox.showerror("Erreur", "Une erreur a eu lieu pour récupérer la clé Twitch") - - finally: - # On ferme le tout, la connexion etc... - cur.close() - cnx.close() - - # On configure OBS pour Twitch - def configure_obs_for_twitch(self, twitch_stream_key): - # Utilisez la clé Twitch pour configurer OBS - self.ws.call(requests.StartStreaming(stream=twitch_stream_key)) - - 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 - if self.is_twitch_streaming: - self.ws.call(requests.StopStreaming()) - self.is_twitch_streaming = False - else: - self.ws.call(requests.StartStreaming(stream= self.twitch_key_from_database)) - self.is_twitch_streaming = True - - # Création de la nouvelle fenetre une fois l'authentification faite - def __init__(self, root, username, password): - self.root = Toplevel(root) - self.root.title("OBS Extension Multistreaming") - self.root.geometry("1920x1080") - - self.root.grid_rowconfigure(0, weight=0) - self.root.grid_rowconfigure(1, weight=0) - self.root.grid_rowconfigure(2, weight=0) - self.root.grid_rowconfigure(3, weight=0) - self.root.grid_rowconfigure(4, weight=0) - self.root.grid_rowconfigure(5, weight=0) - self.root.grid_rowconfigure(6, weight=0) - self.root.grid_rowconfigure(7, weight=0) - self.root.grid_rowconfigure(8, weight=0) - self.root.grid_rowconfigure(9, weight=0) - self.root.grid_rowconfigure(10, weight=0) - self.root.grid_rowconfigure(11, weight=0) - self.root.grid_rowconfigure(12, weight=0) - self.root.grid_rowconfigure(13, weight=0) - self.root.grid_rowconfigure(14, weight=0) - self.root.grid_columnconfigure(0, weight=1) - self.root.grid_columnconfigure(1, weight=0) - self.root.grid_columnconfigure(2, weight=0) - self.root.grid_columnconfigure(3, weight=0) - - # C'est mon id de ma chaine twitch identifiant Alexis - client_id = "6h883my3p6ndqozotnl6nsbllyyr3h" - - twitch_client = TwitchClient(client_id=client_id) - - # 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) - - - # Initialisez la connexion OBS WebSocket - self.ws = obsws("localhost", 4455, "MPcZLZfViZihHqmg") - self.ws.connect() - - # 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 - self.configure_obs_for_twitch(twitch_stream_key) - - # 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.grid(row = 0, column = 0) - - label = Label(self.root, text = "Clé Twitch :") - label.grid(row = 2, column = 0) - - self.entry_twitch = Entry(self.root) - 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 - boutonvalidation = Button(self.root, text="Envoyé", command= lambda : self.set_key_twitch(username)) - 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 - self.is_twitch_streaming = False - - # On met un bouton de diffusion pour twitch - boutondediffusiontwitch = Button(self.root, text="Diffusion de Twitch On/Off", command=self.boutondediffusiontwitch_callback) - boutondediffusiontwitch.grid(row = 4, column = 3) - - label = Label(self.root, text = "Clé Youtube :") - label.grid(row = 5, column = 0) - - self.entry_youtube = Entry(self.root) - self.entry_youtube.grid(row = 6, column = 0) - - # 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.grid(row = 7, column = 0) - - # On met un bouton de diffusion pour twitch - boutondediffusionyoutube = Button(self.root, text="Diffusion de YouTube On/Off") - boutondediffusionyoutube.grid(row = 7, column = 3) - - # 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) +from tkinter import * +from tkinter import messagebox +import mysql.connector +from obswebsocket import obsws, requests +# from twitchAPI.twitch import TwitchClient + +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 + def fermer_et_reafficher(self): + self.root.destroy() + self.ws.disconnect() + self.root.master.deiconify() + + # Fonction permettant de récupérer la valeur de la clé twitch qui a été renseignée + def get_key_twitch(self): + self.twitch = self.entry_twitch.get() + print (self.twitch) + + # Fonction permettant de récupérer la valeur de la clé youtube qui a été renseignée + def get_key_youtube(self): + self.youtube = self.entry_youtube.get() + print (self.youtube) + + def set_key_twitch(self, username): + try: + # Paramètres du serveur + cnx = mysql.connector.connect(user='root', password='', + host='127.0.0.1', + database='obs_project') + cur = cnx.cursor() + + # On lance une requête pour vérifier si l'utilisateur correspond à la base de données + query = "SELECT * FROM utilisateurs WHERE username = %s" + cur.execute(query, (username,)) + + # Renvoie la première ligne de la base de données qui correspond + user = cur.fetchone() + + if user: + # Utilisateur trouvé, on met à jour la clé Twitch + new_twitch_key = self.entry_twitch.get() + update_query = "UPDATE twitch SET twitch_key = %s WHERE username = %s" + cur.execute(update_query, (new_twitch_key, username)) + cnx.commit() + print(f"La clé a été mis à jour pour {username} avec la clé {new_twitch_key}") + else: + print(f"Utilisateur {username} non trouvée") + + except mysql.connector.Error as err: + print(f"Erreur: {err}") + messagebox.showerror("Erreur", "Une erreur a eu lieu pour mettre à jour votre clé") + + finally: + # On ferme le tout, la connexion etc... + cur.close() + cnx.close() + + def set_key_youtube(self, username): + try: + # Paramètres du serveur + cnx = mysql.connector.connect(user='root', password='', + host='127.0.0.1', + database='obs_project') + cur = cnx.cursor() + + # On lance une requête pour vérifier si l'utilisateur correspond à la base de données + query = "SELECT * FROM utilisateurs WHERE username = %s" + cur.execute(query, (username,)) + + # Renvoie la première ligne de la base de données qui correspond + user = cur.fetchone() + + if user: + # Utilisateur trouvé, on met à jour la clé Twitch + new_youtube_key = self.entry_youtube.get() + update_query = "UPDATE youtube SET youtube_key = %s WHERE username = %s" + cur.execute(update_query, (new_youtube_key, username)) + cnx.commit() + print(f"La clé a été mis à jour pour {username} avec la clé {new_youtube_key}") + else: + print(f"Utilisateur {username} non trouvée") + + except mysql.connector.Error as err: + print(f"Erreur: {err}") + messagebox.showerror("Erreur", "Une erreur a eu lieu pour mettre à jour votre clé") + + finally: + # On ferme le tout, la connexion etc... + cur.close() + cnx.close() + + def get_twitch_key_from_database(self, username): + try: + # Paramètres du serveur + cnx = mysql.connector.connect(user='root', password='', + host='127.0.0.1', + database='obs_project') + cur = cnx.cursor() + + # On lance une requête pour récupérer la clé Twitch de l'utilisateur + query = "SELECT twitch_key FROM twitch WHERE username = %s" + cur.execute(query, (username,)) + twitch_key = cur.fetchone() + + if twitch_key: + return twitch_key[0] + else: + print(f"Clé Twitch non trouvée pour l'utilisateur {username}") + return None + + except mysql.connector.Error as err: + print(f"Erreur: {err}") + messagebox.showerror("Erreur", "Une erreur a eu lieu pour récupérer la clé Twitch") + + finally: + # On ferme le tout, la connexion etc... + cur.close() + cnx.close() + + # On configure OBS pour Twitch + def configure_obs_for_twitch(self, twitch_stream_key): + # Utilisez la clé Twitch pour configurer OBS + self.ws.call(requests.StartStreaming(stream=twitch_stream_key)) + + 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 + if self.is_twitch_streaming: + self.ws.call(requests.StopStreaming()) + self.is_twitch_streaming = False + else: + self.ws.call(requests.StartStreaming(stream= self.twitch_key_from_database)) + self.is_twitch_streaming = True + + # Création de la nouvelle fenetre une fois l'authentification faite + def __init__(self, root, username, password): + self.root = Toplevel(root) + self.root.title("OBS Extension Multistreaming") + self.root.geometry("1920x1080") + + self.root.grid_rowconfigure(0, weight=0) + self.root.grid_rowconfigure(1, weight=0) + self.root.grid_rowconfigure(2, weight=0) + self.root.grid_rowconfigure(3, weight=0) + self.root.grid_rowconfigure(4, weight=0) + self.root.grid_rowconfigure(5, weight=0) + self.root.grid_rowconfigure(6, weight=0) + self.root.grid_rowconfigure(7, weight=0) + self.root.grid_rowconfigure(8, weight=0) + self.root.grid_rowconfigure(9, weight=0) + self.root.grid_rowconfigure(10, weight=0) + self.root.grid_rowconfigure(11, weight=0) + self.root.grid_rowconfigure(12, weight=0) + self.root.grid_rowconfigure(13, weight=0) + self.root.grid_rowconfigure(14, weight=0) + self.root.grid_columnconfigure(0, weight=1) + self.root.grid_columnconfigure(1, weight=0) + self.root.grid_columnconfigure(2, weight=0) + self.root.grid_columnconfigure(3, weight=0) + + # C'est mon id de ma chaine twitch identifiant Alexis + client_id = "6h883my3p6ndqozotnl6nsbllyyr3h" + + # twitch_client = TwitchClient(client_id=client_id) + + # 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) + + + # Initialisez la connexion OBS WebSocket + self.ws = obsws("localhost", 4455, "MPcZLZfViZihHqmg") + self.ws.connect() + + # 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 + self.configure_obs_for_twitch(twitch_stream_key) + + # 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.grid(row = 0, column = 0) + + label = Label(self.root, text = "Clé Twitch :") + label.grid(row = 2, column = 0) + + self.entry_twitch = Entry(self.root) + 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 + boutonvalidation = Button(self.root, text="Envoyé", command= lambda : self.set_key_twitch(username)) + 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 + self.is_twitch_streaming = False + + # On met un bouton de diffusion pour twitch + boutondediffusiontwitch = Button(self.root, text="Diffusion de Twitch On/Off", command=self.boutondediffusiontwitch_callback) + boutondediffusiontwitch.grid(row = 4, column = 3) + + label = Label(self.root, text = "Clé Youtube :") + label.grid(row = 5, column = 0) + + self.entry_youtube = Entry(self.root) + self.entry_youtube.grid(row = 6, column = 0) + + # 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.grid(row = 7, column = 0) + + # On met un bouton de diffusion pour twitch + boutondediffusionyoutube = Button(self.root, text="Diffusion de YouTube On/Off") + boutondediffusionyoutube.grid(row = 7, column = 3) + + # 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.grid(row = 13, column = 0) \ No newline at end of file