diff --git a/discord_presence.py b/discord_presence.py
new file mode 100644
index 0000000..4124e03
--- /dev/null
+++ b/discord_presence.py
@@ -0,0 +1,92 @@
+#!/usr/bin/env python3.12
+
+import time
+import traceback
+import requests
+import re
+import discord_presence_priv
+
+from pypresence import Presence, ActivityType
+
+class DiscordPresence:
+ def __init__(self):
+ self.last_updated = None
+ self.last_track = None
+ self.client_id = discord_presence_priv.CLIENT_ID
+ self.api_key = discord_presence_priv.API_KEY
+ self.api_url = 'https://api.codey.lol'
+ self.album_art_url = 'https://codey.lol/images/radio_art.jpg'
+ self.api_req_data = {
+ 'bid': 0,
+ 'cmd': 'radio_metadata',
+ 'key': f'Bearer {self.api_key}',
+ }
+ def loop(self):
+ try:
+ RPC = Presence(self.client_id, pipe=0)
+ RPC.connect()
+ while True:
+ try:
+ rand_msg = None
+ now = time.time()
+ request = requests.post(f'{self.api_url}/xc/', json=self.api_req_data,
+ headers={
+ 'content-type': 'application/json; charset=utf-8'
+ }, timeout=(2, 5))
+ request.raise_for_status()
+ data = request.json().get('response')
+ track_artist = data.get('artist')
+ track_title = data.get('title')
+ track = f"{data.get('artist')} - {data.get('title')}"
+ if self.last_track == track or self.last_updated and (now - self.last_updated < 10):
+ print(f"Skip: {self.last_track} & {(now - self.last_updated)}")
+ time.sleep(5)
+ continue
+ self.last_updated = now
+ self.last_track = track
+
+ try:
+ rand_msg_request = requests.post(f'{self.api_url}/randmsg/',
+ headers={
+ 'content-type': 'application/json; charset=utf-8'
+ }, json={
+ 'short': True,
+ }, timeout=(1, 2))
+ print(f"Rand msg text: {rand_msg_request.text}")
+ rand_msg = rand_msg_request.json().get('msg').strip()
+ rand_msg = re.sub(r'(|)', '', re.sub(r'(
|
|
)', ' ', rand_msg))
+ if len(rand_msg) > 126:
+ rand_msg = None
+ except:
+ print("FAILED TO GET RANDMSG")
+ print(traceback.format_exc())
+
+ print(RPC.update(
+ details=track_title,
+ state=f"by {track_artist}",
+ large_image=f"{self.album_art_url}?{now}",
+ large_text=f"~ {rand_msg}" if rand_msg else None,
+ activity_type=ActivityType.LISTENING,
+ buttons=[
+ {
+ "label": "Site",
+ "url": "https://codey.lol"
+ },]
+ ))
+ print(f"Track: {track}")
+ except:
+ print(traceback.format_exc())
+ time.sleep(5)
+ continue
+ except:
+ print(traceback.format_exc())
+
+
+
+def __init__():
+ discord_presence = DiscordPresence()
+ discord_presence.loop()
+
+if __name__ == "__main__":
+ __init__()
+
\ No newline at end of file