This commit is contained in:
codey 2024-10-05 08:59:12 -04:00
parent 78b5cc40c2
commit b9c6f14273

92
discord_presence.py Normal file
View File

@ -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'(<b>|</b>)', '', re.sub(r'(<br>|<br/>|<br />)', ' ', 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__()