From 125074dc9f85e8edf33759d3101b48ccfac88894 Mon Sep 17 00:00:00 2001 From: codey Date: Wed, 23 Oct 2024 20:40:04 -0400 Subject: [PATCH] stoof --- discord_presence.py | 108 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 89 insertions(+), 19 deletions(-) diff --git a/discord_presence.py b/discord_presence.py index 49e0baa..cd7a2e8 100644 --- a/discord_presence.py +++ b/discord_presence.py @@ -4,10 +4,14 @@ import time import traceback import requests import re +import random import discord_presence_priv +from setproctitle import setproctitle from pypresence import Presence, ActivityType +setproctitle("disc-presence") + class DiscordPresence: def __init__(self): self.last_updated = None @@ -23,16 +27,30 @@ class DiscordPresence: } def loop(self): try: + lyr_start_idx = 0 + lyr_end_idx = 1 + rand_msg = None + lyrics_content = None + lyrics_current_iteration = None + chosen_image = random.choice([ + { + 'image': "cat", + 'label': "Exorzist", + }, + { + 'image': "qu", + 'label': "Quietscheentchen", + } + ]) RPC = Presence(self.client_id, pipe=0) - RPC.connect() + 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)) + }, timeout=(2, 10)) request.raise_for_status() data = request.json().get('response') track_artist = data.get('artist') @@ -40,33 +58,73 @@ class DiscordPresence: start_time = data.get('start') end_time = data.get('end') track = f"{data.get('artist')} - {data.get('title')}" - if self.last_track == track or self.last_updated and (now - self.last_updated < 10): + if self.last_updated and (now - self.last_updated < 4): # print(f"Skip: {self.last_track} & {(now - self.last_updated)}") - time.sleep(5) + time.sleep(0.7) continue - self.last_updated = now - self.last_track = track + + if self.last_track and self.last_track == track: + lyr_start_idx = lyr_end_idx + lyr_end_idx += 1 + elif self.last_track: + lyr_start_idx = 0 + lyr_end_idx = 1 + + + 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)) - rand_msg = rand_msg_request.json().get('msg').strip() - rand_msg = re.sub(r'(|)', '', re.sub(r'(
|
|
|\n|\r\n)', ' ', rand_msg)) - if len(rand_msg) > 126: - rand_msg = None + # rand_msg_request = requests.post(f'{self.api_url}/randmsg/', + # headers={ + # 'content-type': 'application/json; charset=utf-8' + # }, json={ + # 'short': True, + # }, timeout=(1, 2)) + # rand_msg = rand_msg_request.json().get('msg').strip() + # rand_msg = re.sub(r'(|)', '', re.sub(r'(
|
|
|\n|\r\n)', ' ', rand_msg)) + # if len(rand_msg) > 126: + # rand_msg = None + + if not self.last_track or not self.last_track == track: + lyrics = requests.post(f'{self.api_url}/lyric_search/', + headers={ + 'content-type': 'application/json; charset=utf-8', + }, + json={ + 'a': track_artist, + 's': track_title, + 'src': 'IRC-SHARED', + }, timeout=(2,10)) + lyrics.raise_for_status() + lyrics_content = lyrics.json().get("lyrics") + + lyrics_current_iteration = " / ".join(lyrics_content.split("
")[lyr_start_idx:lyr_end_idx]).strip() + if not lyrics_current_iteration.strip(): + lyr_start_idx = 0 + lyr_end_idx = 1 + + if len(lyrics_current_iteration) > 128: + lyrics_current_iteration = lyrics_current_iteration.split(" / ", maxsplit=1)[0].strip() + + + except: - print("FAILED TO GET RANDMSG") + lyrics_content = lyrics_current_iteration = None + print("FAILED TO GET RANDMSG/LYRICS") print(traceback.format_exc()) + self.last_updated = now + self.last_track = track + print(RPC.update( details=track_title, state=track_artist, large_image=f"{self.album_art_url}?t={now}", - large_text=f"{rand_msg}" if rand_msg else None, + # large_image="https://codey.lol/images/cat.png", + # large_text=f"{rand_msg}" if rand_msg else None,k + large_text=lyrics_current_iteration if lyrics_current_iteration else None, + small_image=f"https://codey.lol/images/{chosen_image.get('image')}.png", + small_text=chosen_image.get('label'), start=start_time, end=end_time, activity_type=ActivityType.LISTENING, @@ -76,6 +134,18 @@ class DiscordPresence: "url": "https://codey.lol/radio" },] )) + + match chosen_image.get('image'): + case "cat": + chosen_image = { + 'image': "qu", + 'label': "Quietscheentchen" + } + case "qu": + chosen_image = { + 'image': "cat", + 'label': "Exorzist", + } except: print(traceback.format_exc()) time.sleep(5)