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))