From 707883051820296fc09e2ec883bcdf795485142f Mon Sep 17 00:00:00 2001 From: Super Zombi Date: Sun, 10 May 2026 16:09:08 +0100 Subject: [PATCH 1/4] delete unused old outdated params --- discordrpc/presence.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/discordrpc/presence.py b/discordrpc/presence.py index 4e07d78..409653c 100644 --- a/discordrpc/presence.py +++ b/discordrpc/presence.py @@ -58,8 +58,6 @@ def set_activity( small_image:str=None, small_text:str=None, small_url:str=None, state_url:str=None, details_url:str=None, ts_start:int=None, ts_end:int=None, - # progressbar:dict=None, - # use_local_time:bool=False, party_id:str=None, party_size:list=None, join_secret:str=None, spectate_secret:str=None, match_secret:str=None, buttons:list=None, From b776747fd3d031df10aef6800ccdaae261202bac Mon Sep 17 00:00:00 2001 From: Super Zombi Date: Sun, 10 May 2026 16:49:28 +0100 Subject: [PATCH 2/4] add Application info --- discordrpc/presence.py | 6 ++++++ discordrpc/types.py | 18 ++++++++++++++++++ discordrpc/utils.py | 12 +++++++++++- requirements.txt | 2 +- 4 files changed, 36 insertions(+), 2 deletions(-) diff --git a/discordrpc/presence.py b/discordrpc/presence.py index 409653c..b89fd6b 100644 --- a/discordrpc/presence.py +++ b/discordrpc/presence.py @@ -32,6 +32,9 @@ def __init__(self, app_id:int, debug:bool=False, output:bool=True, exit_if_disco self.user_data = {} self.User = User() + self.app_info = {} + self.App = Application() + if debug == True: log.setLevel(logging.DEBUG) @@ -50,6 +53,9 @@ def _setup(self): if not self.ipc.connected: return self.user_data = self.ipc.handshake() self.User = User(self.user_data) + + self.app_info = get_app_info(self.app_id) + self.App = Application(self.app_info) def set_activity( self, diff --git a/discordrpc/types.py b/discordrpc/types.py index f7744bb..ac15243 100644 --- a/discordrpc/types.py +++ b/discordrpc/types.py @@ -34,3 +34,21 @@ def _parse_avatar(self, data:dict, size:int=1024) -> str: def __str__(self): return f"User({self.name})" + +class Application(): + def __init__(self, data:dict=None): + data = data or {} + self.id: int = int(data.get("id", 0)) + self.name: str = data.get("name") + self.description: str = data.get("description") + self.avatar: str = self._parse_avatar(data.get("icon")) + self.verified: bool = data.get("is_verified", False) + self.public: bool = data.get("bot_public", False) + + def _parse_avatar(self, icon_id:str, size:int=256) -> str: + if icon_id: + return f"https://cdn.discordapp.com/app-icons/{self.id}/{icon_id}.png?size={size}" + return "https://cdn.discordapp.com/embed/avatars/1.png" + + def __str__(self): + return f"Application({self.name})" diff --git a/discordrpc/utils.py b/discordrpc/utils.py index 59a611d..8431bec 100644 --- a/discordrpc/utils.py +++ b/discordrpc/utils.py @@ -1,5 +1,6 @@ import time from datetime import datetime +import requests from .exceptions import * # Credits to qwertyquerty @@ -41,4 +42,13 @@ def ProgressBar(current:int, duration:int) -> dict: return { "ts_start": current_time, "ts_end": finish_time - } \ No newline at end of file + } + +def get_app_info(app_id): + try: + r = requests.get(f"https://discord.com/api/v10/applications/{app_id}/rpc") + if r.ok: + data = r.json() + return data + except Exception as e: + print(e) diff --git a/requirements.txt b/requirements.txt index 8b13789..f229360 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ - +requests From 4bc57b4c4b01933728ec7534997fe26bf45c8164 Mon Sep 17 00:00:00 2001 From: Super Zombi Date: Sun, 10 May 2026 17:05:46 +0100 Subject: [PATCH 3/4] some formating --- discordrpc/presence.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/discordrpc/presence.py b/discordrpc/presence.py index b89fd6b..096ae50 100644 --- a/discordrpc/presence.py +++ b/discordrpc/presence.py @@ -24,7 +24,9 @@ class RPC: - def __init__(self, app_id:int, debug:bool=False, output:bool=True, exit_if_discord_close:bool=True, exit_on_disconnect:bool=True): + def __init__(self, app_id:int, debug:bool=False, output:bool=True, + exit_if_discord_close:bool=True, exit_on_disconnect:bool=True + ): self.app_id = str(app_id) self.exit_if_discord_close = exit_if_discord_close self.exit_on_disconnect = exit_on_disconnect @@ -59,7 +61,9 @@ def _setup(self): def set_activity( self, - state: str=None, details:str=None, act_type:Activity=Activity.Playing, status_type:StatusDisplay=StatusDisplay.Name, + state: str=None, details:str=None, + act_type:Activity=Activity.Playing, + status_type:StatusDisplay=StatusDisplay.Name, large_image:str=None, large_text:str=None, large_url:str=None, small_image:str=None, small_text:str=None, small_url:str=None, state_url:str=None, details_url:str=None, From d160274c79f2885b351b66db9b6cd37cb5123546 Mon Sep 17 00:00:00 2001 From: Super Zombi Date: Sun, 10 May 2026 18:49:06 +0100 Subject: [PATCH 4/4] change naming of attr --- discordrpc/types.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/discordrpc/types.py b/discordrpc/types.py index ac15243..e579b99 100644 --- a/discordrpc/types.py +++ b/discordrpc/types.py @@ -41,11 +41,11 @@ def __init__(self, data:dict=None): self.id: int = int(data.get("id", 0)) self.name: str = data.get("name") self.description: str = data.get("description") - self.avatar: str = self._parse_avatar(data.get("icon")) + self.icon: str = self._parse_icon(data.get("icon")) self.verified: bool = data.get("is_verified", False) self.public: bool = data.get("bot_public", False) - def _parse_avatar(self, icon_id:str, size:int=256) -> str: + def _parse_icon(self, icon_id:str, size:int=512) -> str: if icon_id: return f"https://cdn.discordapp.com/app-icons/{self.id}/{icon_id}.png?size={size}" return "https://cdn.discordapp.com/embed/avatars/1.png"