Add Radiobrowser station language listing
Co-authored-by: Zenith-Nadir <Zenith-Nadir@users.noreply.github.com>
This commit is contained in:
parent
7869fc0ee3
commit
1a51bd195c
|
@ -7,6 +7,7 @@ import ycast.generic as generic
|
||||||
|
|
||||||
MINIMUM_COUNT_GENRE = 5
|
MINIMUM_COUNT_GENRE = 5
|
||||||
MINIMUM_COUNT_COUNTRY = 5
|
MINIMUM_COUNT_COUNTRY = 5
|
||||||
|
MINIMUM_COUNT_LANGUAGE = 5
|
||||||
DEFAULT_STATION_LIMIT = 200
|
DEFAULT_STATION_LIMIT = 200
|
||||||
SHOW_BROKEN_STATIONS = False
|
SHOW_BROKEN_STATIONS = False
|
||||||
ID_PREFIX = "RB"
|
ID_PREFIX = "RB"
|
||||||
|
@ -78,6 +79,20 @@ def get_country_directories():
|
||||||
return country_directories
|
return country_directories
|
||||||
|
|
||||||
|
|
||||||
|
def get_language_directories():
|
||||||
|
language_directories = []
|
||||||
|
apicall = 'languages'
|
||||||
|
if not SHOW_BROKEN_STATIONS:
|
||||||
|
apicall += '?hidebroken=true'
|
||||||
|
languages_raw = request(apicall)
|
||||||
|
for language_raw in languages_raw:
|
||||||
|
if get_json_attr(language_raw, 'name') and get_json_attr(language_raw, 'stationcount') and \
|
||||||
|
int(get_json_attr(language_raw, 'stationcount')) > MINIMUM_COUNT_LANGUAGE:
|
||||||
|
language_directories.append(generic.Directory(get_json_attr(language_raw, 'name'),
|
||||||
|
get_json_attr(language_raw, 'stationcount')))
|
||||||
|
return language_directories
|
||||||
|
|
||||||
|
|
||||||
def get_genre_directories():
|
def get_genre_directories():
|
||||||
genre_directories = []
|
genre_directories = []
|
||||||
apicall = 'tags'
|
apicall = 'tags'
|
||||||
|
@ -101,6 +116,15 @@ def get_stations_by_country(country):
|
||||||
return stations
|
return stations
|
||||||
|
|
||||||
|
|
||||||
|
def get_stations_by_language(language):
|
||||||
|
stations = []
|
||||||
|
stations_json = request('stations/search?order=name&reverse=false&languageExact=true&language=' + str(language))
|
||||||
|
for station_json in stations_json:
|
||||||
|
if SHOW_BROKEN_STATIONS or get_json_attr(station_json, 'lastcheckok') == '1':
|
||||||
|
stations.append(Station(station_json))
|
||||||
|
return stations
|
||||||
|
|
||||||
|
|
||||||
def get_stations_by_genre(genre):
|
def get_stations_by_genre(genre):
|
||||||
stations = []
|
stations = []
|
||||||
stations_json = request('stations/search?order=name&reverse=false&tagExact=true&tag=' + str(genre))
|
stations_json = request('stations/search?order=name&reverse=false&tagExact=true&tag=' + str(genre))
|
||||||
|
|
|
@ -11,6 +11,7 @@ PATH_ROOT = 'ycast'
|
||||||
PATH_MY_STATIONS = 'my_stations'
|
PATH_MY_STATIONS = 'my_stations'
|
||||||
PATH_RADIOBROWSER = 'radiobrowser'
|
PATH_RADIOBROWSER = 'radiobrowser'
|
||||||
PATH_RADIOBROWSER_COUNTRY = 'country'
|
PATH_RADIOBROWSER_COUNTRY = 'country'
|
||||||
|
PATH_RADIOBROWSER_LANGUAGE = 'language'
|
||||||
PATH_RADIOBROWSER_GENRE = 'genre'
|
PATH_RADIOBROWSER_GENRE = 'genre'
|
||||||
PATH_RADIOBROWSER_POPULAR = 'popular'
|
PATH_RADIOBROWSER_POPULAR = 'popular'
|
||||||
PATH_RADIOBROWSER_SEARCH = 'search'
|
PATH_RADIOBROWSER_SEARCH = 'search'
|
||||||
|
@ -87,7 +88,7 @@ def landing(path):
|
||||||
if request.args.get('token') == '0':
|
if request.args.get('token') == '0':
|
||||||
return vtuner.get_init_token()
|
return vtuner.get_init_token()
|
||||||
page = vtuner.Page()
|
page = vtuner.Page()
|
||||||
page.add(vtuner.Directory('Radiobrowser', url_for('radiobrowser_landing', _external=True), 4))
|
page.add(vtuner.Directory('Radiobrowser', url_for('radiobrowser_landing', _external=True), 5))
|
||||||
if my_stations_enabled:
|
if my_stations_enabled:
|
||||||
page.add(vtuner.Directory('My Stations', url_for('my_stations_landing', _external=True),
|
page.add(vtuner.Directory('My Stations', url_for('my_stations_landing', _external=True),
|
||||||
len(my_stations.get_category_directories())))
|
len(my_stations.get_category_directories())))
|
||||||
|
@ -118,6 +119,8 @@ def radiobrowser_landing():
|
||||||
len(radiobrowser.get_genre_directories())))
|
len(radiobrowser.get_genre_directories())))
|
||||||
page.add(vtuner.Directory('Countries', url_for('radiobrowser_countries', _external=True),
|
page.add(vtuner.Directory('Countries', url_for('radiobrowser_countries', _external=True),
|
||||||
len(radiobrowser.get_country_directories())))
|
len(radiobrowser.get_country_directories())))
|
||||||
|
page.add(vtuner.Directory('Languages', url_for('radiobrowser_languages', _external=True),
|
||||||
|
len(radiobrowser.get_language_directories())))
|
||||||
page.add(vtuner.Directory('Most Popular', url_for('radiobrowser_popular', _external=True),
|
page.add(vtuner.Directory('Most Popular', url_for('radiobrowser_popular', _external=True),
|
||||||
len(radiobrowser.get_stations_by_votes())))
|
len(radiobrowser.get_stations_by_votes())))
|
||||||
page.add(vtuner.Search('Search', url_for('radiobrowser_search', _external=True, path='')))
|
page.add(vtuner.Search('Search', url_for('radiobrowser_search', _external=True, path='')))
|
||||||
|
@ -136,6 +139,18 @@ def radiobrowser_country_stations(directory):
|
||||||
return get_stations_page(stations, request.args).to_string()
|
return get_stations_page(stations, request.args).to_string()
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/' + PATH_ROOT + '/' + PATH_RADIOBROWSER + '/' + PATH_RADIOBROWSER_LANGUAGE + '/')
|
||||||
|
def radiobrowser_languages():
|
||||||
|
directories = radiobrowser.get_language_directories()
|
||||||
|
return get_directories_page('radiobrowser_language_stations', directories, request.args).to_string()
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/' + PATH_ROOT + '/' + PATH_RADIOBROWSER + '/' + PATH_RADIOBROWSER_LANGUAGE + '/<directory>')
|
||||||
|
def radiobrowser_language_stations(directory):
|
||||||
|
stations = radiobrowser.get_stations_by_language(directory)
|
||||||
|
return get_stations_page(stations, request.args).to_string()
|
||||||
|
|
||||||
|
|
||||||
@app.route('/' + PATH_ROOT + '/' + PATH_RADIOBROWSER + '/' + PATH_RADIOBROWSER_GENRE + '/')
|
@app.route('/' + PATH_ROOT + '/' + PATH_RADIOBROWSER + '/' + PATH_RADIOBROWSER_GENRE + '/')
|
||||||
def radiobrowser_genres():
|
def radiobrowser_genres():
|
||||||
directories = radiobrowser.get_genre_directories()
|
directories = radiobrowser.get_genre_directories()
|
||||||
|
|
Loading…
Reference in a new issue