Unify station id generation

This commit is contained in:
milaq 2019-08-19 13:57:35 +02:00
parent 5205ec4e7c
commit 803964ecb4
3 changed files with 38 additions and 5 deletions

View file

@ -1,3 +1,5 @@
import logging
USER_AGENT = 'YCast' USER_AGENT = 'YCast'
@ -5,3 +7,27 @@ class Directory:
def __init__(self, name, item_count): def __init__(self, name, item_count):
self.name = name self.name = name
self.item_count = item_count self.item_count = item_count
def generate_stationid_with_prefix(uid, prefix):
if not prefix or len(prefix) != 2:
logging.error("Invalid station prefix length (must be 2)")
return None
if not uid:
logging.error("Missing station id for full station id generation")
return None
return str(prefix) + '_' + str(uid)
def get_stationid_prefix(uid):
if len(uid) < 4:
logging.error("Could not extract stationid (Invalid station id length)")
return None
return uid[:2]
def get_stationid_without_prefix(uid):
if len(uid) < 4:
logging.error("Could not extract stationid (Invalid station id length)")
return None
return uid[3:]

View file

@ -5,14 +5,14 @@ import yaml
import ycast.vtuner as vtuner import ycast.vtuner as vtuner
import ycast.generic as generic import ycast.generic as generic
ID_PREFIX = "MY_" ID_PREFIX = "MY"
config_file = 'my_stations.yml' config_file = 'my_stations.yml'
class Station: class Station:
def __init__(self, name, url, category): def __init__(self, name, url, category):
self.id = ID_PREFIX + '000000' # TODO: generate meaningful ID self.id = generic.generate_stationid_with_prefix('000000', ID_PREFIX) # TODO: generate meaningful ID
self.name = name self.name = name
self.url = url self.url = url
self.tag = category self.tag = category
@ -31,6 +31,10 @@ def set_config(config):
return False return False
def get_station_by_id(uid):
return None # TODO: return correct station when custom station id generation is implemented
def get_stations_yaml(): def get_stations_yaml():
try: try:
with open(config_file, 'r') as f: with open(config_file, 'r') as f:

View file

@ -9,7 +9,7 @@ MINIMUM_COUNT_GENRE = 5
MINIMUM_COUNT_COUNTRY = 5 MINIMUM_COUNT_COUNTRY = 5
DEFAULT_STATION_LIMIT = 200 DEFAULT_STATION_LIMIT = 200
SHOW_BROKEN_STATIONS = False SHOW_BROKEN_STATIONS = False
ID_PREFIX = "RB_" ID_PREFIX = "RB"
def get_json_attr(json, attr): def get_json_attr(json, attr):
@ -21,7 +21,7 @@ def get_json_attr(json, attr):
class Station: class Station:
def __init__(self, station_json): def __init__(self, station_json):
self.id = ID_PREFIX + get_json_attr(station_json, 'id') self.id = generic.generate_stationid_with_prefix(get_json_attr(station_json, 'id'), ID_PREFIX)
self.name = get_json_attr(station_json, 'name') self.name = get_json_attr(station_json, 'name')
self.url = get_json_attr(station_json, 'url') self.url = get_json_attr(station_json, 'url')
self.icon = get_json_attr(station_json, 'favicon') self.icon = get_json_attr(station_json, 'favicon')
@ -49,7 +49,10 @@ def request(url):
def get_station_by_id(uid): def get_station_by_id(uid):
station_json = request('stations/byid/' + str(uid)) station_json = request('stations/byid/' + str(uid))
return Station(station_json[0]) if station_json and len(station_json):
return Station(station_json[0])
else:
return None
def search(name, limit=DEFAULT_STATION_LIMIT): def search(name, limit=DEFAULT_STATION_LIMIT):