From 446b80da2e37822267f6888e1f451680af90b90d Mon Sep 17 00:00:00 2001 From: Greg Gauthier Date: Mon, 15 Mar 2021 20:46:15 +0000 Subject: [PATCH] refactoring; remove old methods; add configuration file; default to mpv instead of mpg123 --- config.py | 17 +++++++++++++++++ radiomenu.py | 4 +++- radiostations.ini | 5 +++++ stations.py | 15 ++------------- 4 files changed, 27 insertions(+), 14 deletions(-) create mode 100644 config.py create mode 100644 radiostations.ini diff --git a/config.py b/config.py new file mode 100644 index 0000000..995ce98 --- /dev/null +++ b/config.py @@ -0,0 +1,17 @@ +import configparser + +config = configparser.ConfigParser() +config.read('radiostations.ini') + + +def api(): + return config.get('DEFAULT', 'radio_browser.api') + + +def player(): + return config.get('DEFAULT', 'player.command') + + +def options(): + return config.get('DEFAULT', 'player.options') + diff --git a/radiomenu.py b/radiomenu.py index bf4258e..05d3dab 100644 --- a/radiomenu.py +++ b/radiomenu.py @@ -1,6 +1,8 @@ from python_console_menu import AbstractMenu, MenuItem import subprocess +from config import player, options + class RadioMenu(AbstractMenu): def __init__(self, station_list=None): @@ -16,7 +18,7 @@ class RadioMenu(AbstractMenu): station_list[i]["codec"] + " " + station_list[i]["bitrate"] + " " + station_list[i]["url"], - lambda url=station_list[i]["url"]: subprocess.run(["mpv", "--no-video", url]) + lambda url=station_list[i]["url"]: subprocess.run([player(), options(), url]) ) ) diff --git a/radiostations.ini b/radiostations.ini new file mode 100644 index 0000000..787fc00 --- /dev/null +++ b/radiostations.ini @@ -0,0 +1,5 @@ +[DEFAULT] +radio_browser.api=all.api.radio-browser.info +player.command=mpv +player.options=--no-video + diff --git a/stations.py b/stations.py index 35acb5e..83bb0d8 100644 --- a/stations.py +++ b/stations.py @@ -4,6 +4,7 @@ import json import requests import secrets +from config import api from radiomenu import RadioMenu @@ -16,24 +17,12 @@ def nsname(ipaddrs, rectype='A'): def get_host(): - hosts = ipaddr('all.api.radio-browser.info') + hosts = ipaddr(api()) preferred_host = secrets.choice(hosts) return nsname(preferred_host) -def get_station_by_name(callsign, host): - resp = requests.get(f"https://{host}/json/stations/byname/" + callsign) - if resp.status_code == 200: - return json.loads(resp.text) - else: - return [{"response_code": resp.status_code, "reason": resp.reason}] - - def get_stations(qstring, host): - # https://de1.api.radio-browser.info/json/stations/search?name=wfmt&limit=100 - # https://de1.api.radio-browser.info/json/stations/search?tag=classical&limit=100 - # https://de1.api.radio-browser.info/json/stations/search?state=Illinois&tag=classical&limit=100 - # https://de1.api.radio-browser.info/json/stations/search?country=America&state=Illinois&tag=classical&limit=100 resp = requests.get(f"https://{host}/json/stations/search?{qstring}&limit=100000") if resp.status_code == 200: return json.loads(resp.text)