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
|
# SPDX-License-Identifier: BSD-3-Clause
|
||||||
# Copyright (c) 2021, dsc@xmr.pm
|
# Copyright (c) 2021, dsc@xmr.pm
|
||||||
|
|
||||||
|
import re
|
||||||
import sys
|
import sys
|
||||||
import collections
|
import collections
|
||||||
from typing import List, Optional
|
from typing import List, Optional
|
||||||
@ -29,6 +30,7 @@ irc_message_announce_bus = MultisubscriberQueue()
|
|||||||
websocket_status_bus_last_item: Optional[dict[str, Station]] = None
|
websocket_status_bus_last_item: Optional[dict[str, Station]] = None
|
||||||
irc_bot = None
|
irc_bot = None
|
||||||
keycloak = None
|
keycloak = None
|
||||||
|
NP_MAP = {} # station, filepath
|
||||||
soap = Radio()
|
soap = Radio()
|
||||||
|
|
||||||
|
|
||||||
@ -61,6 +63,7 @@ async def _setup_tasks(app: Quart):
|
|||||||
|
|
||||||
asyncio.create_task(last_websocket_item_updater())
|
asyncio.create_task(last_websocket_item_updater())
|
||||||
asyncio.create_task(irc_announce_task())
|
asyncio.create_task(irc_announce_task())
|
||||||
|
asyncio.create_task(_now_playing_watch())
|
||||||
|
|
||||||
|
|
||||||
async def _setup_irc(app: Quart):
|
async def _setup_irc(app: Quart):
|
||||||
@ -97,6 +100,29 @@ async def _setup_cache(app: Quart):
|
|||||||
Session(app)
|
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():
|
def create_app():
|
||||||
global app, soap, icecast2
|
global app, soap, icecast2
|
||||||
app = Quart(__name__)
|
app = Quart(__name__)
|
||||||
|
@ -61,10 +61,17 @@ class Station:
|
|||||||
# 4. check .ogg.json metadata file (Song.from_filepath)
|
# 4. check .ogg.json metadata file (Song.from_filepath)
|
||||||
# 5. verify the above by comparing icecast metadata
|
# 5. verify the above by comparing icecast metadata
|
||||||
|
|
||||||
liq_meta = await Radio.command(self.telnet_cmd_metadata)
|
# find a better way to get current song
|
||||||
liq_meta = liq_meta.decode(errors="ignore")
|
liq_filenames = []
|
||||||
liq_filenames = re.findall(r"filename=\"(.*)\"", liq_meta)
|
from ircradio.factory import NP_MAP
|
||||||
liq_filenames = [fn for fn in liq_filenames if os.path.exists(fn)]
|
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 = await Radio.command(self.telnet_cmd_remaining)
|
||||||
liq_remaining = liq_remaining.decode(errors="ignore")
|
liq_remaining = liq_remaining.decode(errors="ignore")
|
||||||
|
Loading…
Reference in New Issue
Block a user