this is fucked

This commit is contained in:
dsc 2024-04-10 00:40:35 +03:00
parent 72e0b79618
commit d4ec43f6dc
2 changed files with 37 additions and 4 deletions

View File

@ -1,6 +1,7 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright (c) 2021, dsc@xmr.pm
import re
import sys
import collections
from typing import List, Optional
@ -29,6 +30,7 @@ irc_message_announce_bus = MultisubscriberQueue()
websocket_status_bus_last_item: Optional[dict[str, Station]] = None
irc_bot = None
keycloak = None
NP_MAP = {} # station, filepath
soap = Radio()
@ -61,6 +63,7 @@ async def _setup_tasks(app: Quart):
asyncio.create_task(last_websocket_item_updater())
asyncio.create_task(irc_announce_task())
asyncio.create_task(_now_playing_watch())
async def _setup_irc(app: Quart):
@ -97,6 +100,29 @@ async def _setup_cache(app: Quart):
Session(app)
async def _now_playing_watch():
global NP_MAP
proc = await asyncio.create_subprocess_exec(
"journalctl", "-n15000", "-xefu", "liquidsoap",
stdout=asyncio.subprocess.PIPE,
)
line = await proc.stdout.readline()
while line:
line = line.decode().strip()
if '] Prepared "/' in line and ".ogg" in line:
try:
filename = re.findall(r"\"(.*\.ogg)\"", line)[0]
radio = re.findall(r"\[(\w+)\:\d\]", line)[0]
if radio == "playlist":
radio = "pmain"
NP_MAP[radio] = filename
except Exception as ex:
print(f"_now_playing_watch: {ex}")
line = await proc.stdout.readline()
def create_app():
global app, soap, icecast2
app = Quart(__name__)

View File

@ -61,10 +61,17 @@ class Station:
# 4. check .ogg.json metadata file (Song.from_filepath)
# 5. verify the above by comparing icecast metadata
liq_meta = await Radio.command(self.telnet_cmd_metadata)
liq_meta = liq_meta.decode(errors="ignore")
liq_filenames = re.findall(r"filename=\"(.*)\"", liq_meta)
liq_filenames = [fn for fn in liq_filenames if os.path.exists(fn)]
# find a better way to get current song
liq_filenames = []
from ircradio.factory import NP_MAP
np_uid = self.id
if np_uid == "main":
np_uid = "pmain"
elif np_uid == "wow":
np_uid = "pmain"
if np_uid in NP_MAP:
liq_filenames = [NP_MAP[np_uid]]
liq_remaining = await Radio.command(self.telnet_cmd_remaining)
liq_remaining = liq_remaining.decode(errors="ignore")