mirror of
https://github.com/sanderfoobar/ircradio.git
synced 2024-11-24 21:09:31 +01:00
this is fucked
This commit is contained in:
parent
72e0b79618
commit
d4ec43f6dc
@ -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__)
|
||||
|
@ -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")
|
||||
|
Loading…
Reference in New Issue
Block a user