From 3116abd4bb13a894d48923745a6378f5f2ae7eb6 Mon Sep 17 00:00:00 2001 From: MilesTEG Date: Tue, 10 Aug 2021 16:22:44 +0200 Subject: [PATCH] =?UTF-8?q?R=C3=A9cup=C3=A9ration=20du=20travail=20de=20@g?= =?UTF-8?q?igi=5Fdsss=20sur=20la=20branche=20python=20Il=20semblerait=20qu?= =?UTF-8?q?e=20sa=20branche=20n'ai=20pas=20=C3=A9t=C3=A9=20cr=C3=A9=C3=A9e?= =?UTF-8?q?=20avec=20le=20contenue=20de=20la=20branche=20master=20de=20bas?= =?UTF-8?q?e,=20donc=20lors=20de=20la=20fusion,=20la=20branche=20master=20?= =?UTF-8?q?a=20=C3=A9t=C3=A9=20=C3=A9cras=C3=A9e=20et=20n'a=20plus=20conte?= =?UTF-8?q?nu=20que=20ce=20qui=20=C3=A9tait=20dans=20la=20branche=20python?= =?UTF-8?q?...=20Ceci=20n'est=20qu'une=20supposition...=20Bref,=20tout=20l?= =?UTF-8?q?e=20cr=C3=A9dit=20du=20travail=20sur=20pyhton=20revient=20?= =?UTF-8?q?=C3=A0=20@gigi=5Fdsss?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Plex Bot Music/README.md | 8 + Plex Discord Activity/README.md | 76 ++++++ Plex Discord Activity/pda.py | 413 ++++++++++++++++++++++++++++++++ 3 files changed, 497 insertions(+) create mode 100644 Plex Bot Music/README.md create mode 100644 Plex Discord Activity/README.md create mode 100644 Plex Discord Activity/pda.py diff --git a/Plex Bot Music/README.md b/Plex Bot Music/README.md new file mode 100644 index 0000000..2fb7cdd --- /dev/null +++ b/Plex Bot Music/README.md @@ -0,0 +1,8 @@ +# Plex Bot Music + +**Plex Bot Music est un bot écrit en Python. Il vous permettra d'écouter votre musique sur Discord au travers d'un bot, tel que Rythme mais vous serez limité à votre Bibliothèque** + + +## Lien vers le répértoire + +https://gitea.zoz-serv.org/gigidsss/Plex-Bot-Music diff --git a/Plex Discord Activity/README.md b/Plex Discord Activity/README.md new file mode 100644 index 0000000..ef5cd19 --- /dev/null +++ b/Plex Discord Activity/README.md @@ -0,0 +1,76 @@ +# Plex Discord Activity + +**Plex Discord Activity est un logiciel en Python. Il a été récuperé déjà depuis le dépot d'un utilisateur GitHub mais a été simplifié de sorte a ce que la pré-configuration soit la plus simple possible** + +Il y a eu peu de modifications par rapport à l'original, mais elles vous simplifient grandement la vie. + +## Attention + +Sachez que pour que le script fonctionne, il faut qu'il tourne sur le même PC que votre application Discord. Malheureusement faire tourner ce script sur un serveur en tâche de fond ne donnera aucun résultat... + +## Installation + +Pour cela, commencez déjà par installer Python3 sur votre ordinateur si cela n'est pas déjà fait... + +Ensuite installez ces 2 bibliothèques Python via pip3: + +```bash +pip3 install plexapi +pip3 install websocket-client==0.48.0 +``` + +## Configuration + +Éditez le document pma.py et éditez ce paragraphe seulement: +```python +### SEULEMENT CE QUE VOUS DEVEZ EDITER + +MyDomain = "https://your.plex.dns:32400" #Soit via votre nom de domaine, soit via le domaine de Plex, c'est à dire, https://app.plex.tv +Serveur = "MyPlex" #Le nom de votre Serveur Plex, visible dans Paramètres > Général > Nom d'usage +NomUser = "username" #Le nom d'utilisateur Plex pour récupérer les métadonnées et les informations de lecture en temps réel +MotDePasse = "password" #Votre mot de passe de votre compte Plex +MonToken = "your_token" #Votre Token, accessible a la fin de l'url lorsque vous consultez le fichier XML de l'un de vos médias +BlackList = ["Musique", "BackingTracks"] #séparée par des virgules avec espace, entourées par des "", entrent 2 balises [], ex: ["bib1", "bib2"] +UserOnly = "username" #Si vous avez crée des utilisateurs gérés, pour éviter de partager l'état de lecture d'un autre utilisateur que vous-même, précisez le psuedo du bon utilisateur a priori le même que le 3ème paramètre que vous... +InfosSupp = "true" #Ceci partage les métadonnées de votre épisode si c'est sur True, sinon mettez False pour n'afficher que l'état de lecture +TempsRestant = "true" #True = Afficher le temps restant de lecture / False = Afficher le nombre de minutes que vous avez déjà consulté depuis le démarrage de l'épisode + +### END DE CE QUE VOUS DEVEZ EDITER +``` + +Voici un résumé des paramètres: + +**Attention a ne pas supprimer des guillemets ou des crochets... Si vous ne voulez pas préciser de valeur, laissez les guillemets vides ou indiquez-y ``none`` !** + +**Serveur**: C'est le nom de votre serveur Plex. Vous le trouverez dans ``Paramètres > Général > Nom d'usage`` + +**NomUser**: Votre nom d'utilisateur Plex associé à votre compte. + +**MotDePasse**: Votre mot de passe de l'utilisateur Plex associé à votre compte. + +**MonToken**: Token que vous pouvez obtenir en consultant le fichier XML d'un de vos média. Allez sur un épisode ou film précis, allez dans ``Voir informations`` puis ``Voir le XML``. Ensuite regardez à la fin de votre URL, vous devriez avoir: **Plex-Token=0x0x0xx0x00xx0x0** + +**BlackList**: Vous pouvez décider de ne pas partager sur Discord les médias d'une bibliothèque définie, indiquez-y entre guillemets et eux-même entre crochets, le nom des Bibliothèques. +Exemple: +```python +BlackList = ["Musique", "BackingTracks"] +``` +**UserOnly**: Si vous avez crée des utilisateurs gérés, pour éviter de partager l'état de lecture d'un autre utilisateur que vous-même, précisez le psuedo du bon utilisateur qui à priori est le même que celui du paramètre ``username``... + +**InfosSupp**: Vous permet de partager davantage d'infos sur le média, à savoir les métadonnées, etc. (Réponse: True / False) + +**TempsRestant**: Vous permet de préciser si vous voulez indiquer le temps restant du média ou la position actuelle (Réponse: True (Il reste 05:00 minutes) / False (Vous êtes à 15:00 minutes sur 20:00 minutes)) + +## Utilisation + +``` +python3 pma.py +``` +*Patientez +/- 20 secondes pour que le script démarre... Le script lancera tout seul la page web Plex* + +## Source +https://github.com/Phineas05/discord-rich-presence-plex + + +## License +[MIT](https://choosealicense.com/licenses/mit/) diff --git a/Plex Discord Activity/pda.py b/Plex Discord Activity/pda.py new file mode 100644 index 0000000..39fa285 --- /dev/null +++ b/Plex Discord Activity/pda.py @@ -0,0 +1,413 @@ +import asyncio +import datetime +import hashlib +import json +import os +import plexapi.myplex +import struct +import subprocess +import sys +import tempfile +import threading +import time +import webbrowser + +### SEULEMENT CE QUE VOUS DEVEZ EDITER + +MyDomain = "https://your.plex.dns:32400" #Soit via votre nom de domaine, soit via le domaine de Plex, c'est à dire, https://app.plex.tv +Serveur = "MyPlex" #Le nom de votre Serveur Plex, visible dans Paramètres > Général > Nom d'usage +NomUser = "username" #Le nom d'utilisateur Plex pour récupérer les métadonnées et les informations de lecture en temps réel +MotDePasse = "password" #Votre mot de passe de votre compte Plex +MonToken = "your_token" #Votre Token, accessible a la fin de l'url lorsque vous consultez le fichier XML de l'un de vos médias +BlackList = ["Musique", "BackingTracks"] #séparée par des virgules avec espace, entourées par des "", entrent 2 balises [], ex: ["bib1", "bib2"] +UserOnly = "username" #Si vous avez crée des utilisateurs gérés, pour éviter de partager l'état de lecture d'un autre utilisateur que vous-même, précisez le psuedo du bon utilisateur a priori le même que le 3ème paramètre que vous... +InfosSupp = "true" #Ceci partage les métadonnées de votre épisode si c'est sur True, sinon mettez False pour n'afficher que l'état de lecture +TempsRestant = "true" #True = Afficher le temps restant de lecture / False = Afficher le nombre de minutes que vous avez déjà consulté depuis le démarrage de l'épisode + +### END DE CE QUE VOUS DEVEZ EDITER + +webbrowser.open(MyDomain) + +class plexConfig: + + extraLogging = (InfosSupp) + timeRemaining = (TempsRestant) + + def __init__(self, serverName = "", username = "", password = "", token = "", listenForUser = "", blacklistedLibraries = None, whitelistedLibraries = None, clientID = "413407336082833418"): + self.serverName = serverName + self.username = username + self.password = password + self.token = token + self.listenForUser = (username if listenForUser == "" else listenForUser).lower() + self.blacklistedLibraries = blacklistedLibraries + self.whitelistedLibraries = whitelistedLibraries + self.clientID = clientID + +plexConfigs = [ + plexConfig(serverName = (Serveur), username = (NomUser), password = (MotDePasse), token = (MonToken), blacklistedLibraries = (BlackList), listenForUser = (UserOnly)) +] + +class discordRichPresence: + + def __init__(self, clientID, child): + self.IPCPipe = ((os.environ.get("XDG_RUNTIME_DIR", None) or os.environ.get("TMPDIR", None) or os.environ.get("TMP", None) or os.environ.get("TEMP", None) or "/tmp") + "/discord-ipc-0") if isLinux else "\\\\?\\pipe\\discord-ipc-0" + self.clientID = clientID + self.pipeReader = None + self.pipeWriter = None + self.process = None + self.running = False + self.child = child + + async def read(self): + try: + data = await self.pipeReader.read(1024) + self.child.log("[READ] " + str(json.loads(data[8:].decode("utf-8")))) + except Exception as e: + self.child.log("[READ] " + str(e)) + self.stop() + + def write(self, op, payload): + payload = json.dumps(payload) + self.child.log("[WRITE] " + str(payload)) + data = self.pipeWriter.write(struct.pack(" 0] + else: + if (text["h"] == 0): + del text["h"] + text = [str(v).rjust(2, "0") for k, v in text.items()] + return joiner.join(text) + +discordRichPresencePlexInstances = [] +for config in plexConfigs: + discordRichPresencePlexInstances.append(discordRichPresencePlex(config)) +try: + for discordRichPresencePlexInstance in discordRichPresencePlexInstances: + discordRichPresencePlexInstance.run() + while (True): + time.sleep(3600) +except KeyboardInterrupt: + for discordRichPresencePlexInstance in discordRichPresencePlexInstances: + discordRichPresencePlexInstance.reset() +except Exception as e: + print("Error: " + str(e))