stoof
This commit is contained in:
parent
7c3742cc30
commit
125074dc9f
@ -4,10 +4,14 @@ import time
|
|||||||
import traceback
|
import traceback
|
||||||
import requests
|
import requests
|
||||||
import re
|
import re
|
||||||
|
import random
|
||||||
import discord_presence_priv
|
import discord_presence_priv
|
||||||
|
from setproctitle import setproctitle
|
||||||
|
|
||||||
from pypresence import Presence, ActivityType
|
from pypresence import Presence, ActivityType
|
||||||
|
|
||||||
|
setproctitle("disc-presence")
|
||||||
|
|
||||||
class DiscordPresence:
|
class DiscordPresence:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.last_updated = None
|
self.last_updated = None
|
||||||
@ -23,16 +27,30 @@ class DiscordPresence:
|
|||||||
}
|
}
|
||||||
def loop(self):
|
def loop(self):
|
||||||
try:
|
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 = Presence(self.client_id, pipe=0)
|
||||||
RPC.connect()
|
RPC.connect()
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
rand_msg = None
|
|
||||||
now = time.time()
|
now = time.time()
|
||||||
request = requests.post(f'{self.api_url}/xc/', json=self.api_req_data,
|
request = requests.post(f'{self.api_url}/xc/', json=self.api_req_data,
|
||||||
headers={
|
headers={
|
||||||
'content-type': 'application/json; charset=utf-8'
|
'content-type': 'application/json; charset=utf-8'
|
||||||
}, timeout=(2, 5))
|
}, timeout=(2, 10))
|
||||||
request.raise_for_status()
|
request.raise_for_status()
|
||||||
data = request.json().get('response')
|
data = request.json().get('response')
|
||||||
track_artist = data.get('artist')
|
track_artist = data.get('artist')
|
||||||
@ -40,33 +58,73 @@ class DiscordPresence:
|
|||||||
start_time = data.get('start')
|
start_time = data.get('start')
|
||||||
end_time = data.get('end')
|
end_time = data.get('end')
|
||||||
track = f"{data.get('artist')} - {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):
|
if self.last_updated and (now - self.last_updated < 4):
|
||||||
# print(f"Skip: {self.last_track} & {(now - self.last_updated)}")
|
# print(f"Skip: {self.last_track} & {(now - self.last_updated)}")
|
||||||
time.sleep(5)
|
time.sleep(0.7)
|
||||||
continue
|
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:
|
try:
|
||||||
rand_msg_request = requests.post(f'{self.api_url}/randmsg/',
|
# 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'(<b>|</b>)', '', re.sub(r'(<br>|<br/>|<br />|\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={
|
headers={
|
||||||
'content-type': 'application/json; charset=utf-8'
|
'content-type': 'application/json; charset=utf-8',
|
||||||
}, json={
|
},
|
||||||
'short': True,
|
json={
|
||||||
}, timeout=(1, 2))
|
'a': track_artist,
|
||||||
rand_msg = rand_msg_request.json().get('msg').strip()
|
's': track_title,
|
||||||
rand_msg = re.sub(r'(<b>|</b>)', '', re.sub(r'(<br>|<br/>|<br />|\n|\r\n)', ' ', rand_msg))
|
'src': 'IRC-SHARED',
|
||||||
if len(rand_msg) > 126:
|
}, timeout=(2,10))
|
||||||
rand_msg = None
|
lyrics.raise_for_status()
|
||||||
|
lyrics_content = lyrics.json().get("lyrics")
|
||||||
|
|
||||||
|
lyrics_current_iteration = " / ".join(lyrics_content.split("<br>")[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:
|
except:
|
||||||
print("FAILED TO GET RANDMSG")
|
lyrics_content = lyrics_current_iteration = None
|
||||||
|
print("FAILED TO GET RANDMSG/LYRICS")
|
||||||
print(traceback.format_exc())
|
print(traceback.format_exc())
|
||||||
|
|
||||||
|
self.last_updated = now
|
||||||
|
self.last_track = track
|
||||||
|
|
||||||
print(RPC.update(
|
print(RPC.update(
|
||||||
details=track_title,
|
details=track_title,
|
||||||
state=track_artist,
|
state=track_artist,
|
||||||
large_image=f"{self.album_art_url}?t={now}",
|
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,
|
start=start_time,
|
||||||
end=end_time,
|
end=end_time,
|
||||||
activity_type=ActivityType.LISTENING,
|
activity_type=ActivityType.LISTENING,
|
||||||
@ -76,6 +134,18 @@ class DiscordPresence:
|
|||||||
"url": "https://codey.lol/radio"
|
"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:
|
except:
|
||||||
print(traceback.format_exc())
|
print(traceback.format_exc())
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user