#!/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__()