import logging from typing import Optional from aiohttp import ClientSession, ClientTimeout """Radio Utils""" async def get_now_playing() -> Optional[str]: """ Get radio now playing Args: None Returns: str """ np_url: str = "https://api.codey.lol/radio/np" try: async with ClientSession() as session: async with await session.post(np_url, headers={ 'content-type': 'application/json; charset=utf-8', }, timeout=ClientTimeout(connect=1.5, sock_read=1.5)) as request: request.raise_for_status() response_json = await request.json() artistsong = response_json.get('artistsong') return artistsong except Exception as e: logging.critical("Now playing retrieval failed: %s", str(e)) return None async def skip() -> bool: """ Ask LiquidSoap server to skip to the next track Args: None Returns: bool """ try: ls_uri: str = "http://127.0.0.1:29000" async with ClientSession() as session: async with session.get(f"{ls_uri}/next", timeout=ClientTimeout(connect=2, sock_read=2)) as request: request.raise_for_status() text: Optional[str] = await request.text() return text == "OK" except Exception as e: logging.debug("Skip failed: %s", str(e)) return False # failsafe