Unbreak gradio with newer radio-browser.info API
- cf https://api.radio-browser.info/ - use uuid string to identify stations - adapt to type changes in the API (str -> bool or int) - do a DNS SRV lookup to randomly select an API server
This commit is contained in:
parent
d0c985b697
commit
80e39061e7
@ -1,12 +1,12 @@
|
||||
# $OpenBSD: Makefile,v 1.18 2020/11/01 17:47:59 landry Exp $
|
||||
# $OpenBSD: Makefile,v 1.19 2020/11/02 18:44:36 landry Exp $
|
||||
|
||||
BROKEN = radio-browser.info API changed
|
||||
COMMENT = internet radio browser and player
|
||||
GH_TAGNAME = v7.3
|
||||
GH_ACCOUNT = haecker-felix
|
||||
GH_PROJECT = Gradio
|
||||
DISTNAME = ${GH_PROJECT:L}-${GH_TAGNAME:S/^v//}
|
||||
EPOCH = 0
|
||||
REVISION = 0
|
||||
|
||||
CATEGORIES = audio www
|
||||
|
||||
|
@ -0,0 +1,16 @@
|
||||
$OpenBSD: patch-data_de_haeckerfelix_gradio_gschema_xml,v 1.1 2020/11/02 18:44:36 landry Exp $
|
||||
|
||||
Index: data/de.haeckerfelix.gradio.gschema.xml
|
||||
--- data/de.haeckerfelix.gradio.gschema.xml.orig
|
||||
+++ data/de.haeckerfelix.gradio.gschema.xml
|
||||
@@ -55,8 +55,8 @@
|
||||
<summary>Resume Playback On Startup</summary>
|
||||
</key>
|
||||
|
||||
- <key name="previous-station" type="i">
|
||||
- <default>0</default>
|
||||
+ <key name="previous-station" type="s">
|
||||
+ <default>''</default>
|
||||
<summary>The last played station</summary>
|
||||
</key>
|
||||
|
14
audio/gradio/patches/patch-src_gradio-app_vala
Normal file
14
audio/gradio/patches/patch-src_gradio-app_vala
Normal file
@ -0,0 +1,14 @@
|
||||
$OpenBSD: patch-src_gradio-app_vala,v 1.1 2020/11/02 18:44:36 landry Exp $
|
||||
|
||||
Index: src/gradio-app.vala
|
||||
--- src/gradio-app.vala.orig
|
||||
+++ src/gradio-app.vala
|
||||
@@ -43,7 +43,7 @@ namespace Gradio {
|
||||
ensure_window ();
|
||||
window.present_with_time (timestamp);
|
||||
|
||||
- Util.get_station_by_id.begin(int.parse(station_id), (obj,res) => {
|
||||
+ Util.get_station_by_id.begin(station_id, (obj,res) => {
|
||||
RadioStation station = Util.get_station_by_id.end(res);
|
||||
player.station = station;
|
||||
});
|
23
audio/gradio/patches/patch-src_gradio-audio-player_vala
Normal file
23
audio/gradio/patches/patch-src_gradio-audio-player_vala
Normal file
@ -0,0 +1,23 @@
|
||||
$OpenBSD: patch-src_gradio-audio-player_vala,v 1.1 2020/11/02 18:44:36 landry Exp $
|
||||
|
||||
Index: src/gradio-audio-player.vala
|
||||
--- src/gradio-audio-player.vala.orig
|
||||
+++ src/gradio-audio-player.vala
|
||||
@@ -47,7 +47,7 @@ namespace Gradio{
|
||||
codec = new CodecInstaller();
|
||||
volume = App.settings.volume_position;
|
||||
|
||||
- if(App.settings.previous_station != 0 && App.settings.resume_playback_on_startup){
|
||||
+ if(App.settings.previous_station != "" && App.settings.resume_playback_on_startup){
|
||||
Util.get_station_by_id.begin(App.settings.previous_station, (obj, res) => {
|
||||
station = Util.get_station_by_id.end(res);
|
||||
});
|
||||
@@ -70,7 +70,7 @@ namespace Gradio{
|
||||
|
||||
state = Gst.State.NULL;
|
||||
|
||||
- App.settings.previous_station = int.parse(station.id);
|
||||
+ App.settings.previous_station = station.id;
|
||||
string address = yield station.get_stream_address();
|
||||
|
||||
if(station.is_broken){
|
41
audio/gradio/patches/patch-src_gradio-category-items_vala
Normal file
41
audio/gradio/patches/patch-src_gradio-category-items_vala
Normal file
@ -0,0 +1,41 @@
|
||||
$OpenBSD: patch-src_gradio-category-items_vala,v 1.1 2020/11/02 18:44:36 landry Exp $
|
||||
|
||||
Index: src/gradio-category-items.vala
|
||||
--- src/gradio-category-items.vala.orig
|
||||
+++ src/gradio-category-items.vala
|
||||
@@ -39,7 +39,7 @@ namespace Gradio{
|
||||
|
||||
try{
|
||||
// Languages
|
||||
- data = yield Util.get_string_from_uri(RadioBrowser.radio_station_languages);
|
||||
+ data = yield Util.get_string_from_uri(Util.get_random_server() + RadioBrowser.radio_station_languages);
|
||||
parser.load_from_data (data);
|
||||
root = parser.get_root ();
|
||||
items = root.get_array ();
|
||||
@@ -53,7 +53,7 @@ namespace Gradio{
|
||||
}
|
||||
|
||||
// Countries
|
||||
- data = yield Util.get_string_from_uri(RadioBrowser.radio_station_countries);
|
||||
+ data = yield Util.get_string_from_uri(Util.get_random_server() + RadioBrowser.radio_station_countries);
|
||||
parser.load_from_data (data);
|
||||
root = parser.get_root ();
|
||||
items = root.get_array ();
|
||||
@@ -67,7 +67,7 @@ namespace Gradio{
|
||||
}
|
||||
|
||||
// States
|
||||
- data = yield Util.get_string_from_uri(RadioBrowser.radio_station_states);
|
||||
+ data = yield Util.get_string_from_uri(Util.get_random_server() + RadioBrowser.radio_station_states);
|
||||
parser.load_from_data (data);
|
||||
root = parser.get_root ();
|
||||
items = root.get_array ();
|
||||
@@ -81,7 +81,7 @@ namespace Gradio{
|
||||
}
|
||||
|
||||
// Tags
|
||||
- data = yield Util.get_string_from_uri(RadioBrowser.radio_station_tags);
|
||||
+ data = yield Util.get_string_from_uri(Util.get_random_server() + RadioBrowser.radio_station_tags);
|
||||
parser.load_from_data (data);
|
||||
root = parser.get_root ();
|
||||
items = root.get_array ();
|
41
audio/gradio/patches/patch-src_gradio-library_vala
Normal file
41
audio/gradio/patches/patch-src_gradio-library_vala
Normal file
@ -0,0 +1,41 @@
|
||||
$OpenBSD: patch-src_gradio-library_vala,v 1.1 2020/11/02 18:44:36 landry Exp $
|
||||
|
||||
Index: src/gradio-library.vala
|
||||
--- src/gradio-library.vala.orig
|
||||
+++ src/gradio-library.vala
|
||||
@@ -105,7 +105,7 @@ namespace Gradio{
|
||||
message("Initialize database...");
|
||||
|
||||
string query = """
|
||||
- CREATE TABLE "library" ('station_id' INTEGER, 'collection_id' INTEGER);
|
||||
+ CREATE TABLE "library" ('station_id' TEXT, 'collection_id' INTEGER);
|
||||
CREATE TABLE "collections" ('collection_id' INTEGER, 'collection_name' TEXT)
|
||||
""";
|
||||
|
||||
@@ -303,7 +303,7 @@ namespace Gradio{
|
||||
case Sqlite.ROW:
|
||||
string station_id = stmt.column_text(0);
|
||||
|
||||
- RadioStation station = yield Util.get_station_by_id(int.parse(station_id));
|
||||
+ RadioStation station = yield Util.get_station_by_id(station_id);
|
||||
if (station != null) {
|
||||
progress_dialog.text = "Exporting \"" + station.title + "\" ...";
|
||||
string address = yield station.get_stream_address();
|
||||
@@ -359,7 +359,7 @@ namespace Gradio{
|
||||
string line;
|
||||
|
||||
while ((line = dis.read_line (null)) != null) {
|
||||
- RadioStation station = yield Util.get_station_by_id(int.parse(line));
|
||||
+ RadioStation station = yield Util.get_station_by_id(line);
|
||||
|
||||
if(station != null){
|
||||
add_radio_station(station);
|
||||
@@ -438,7 +438,7 @@ namespace Gradio{
|
||||
case Sqlite.DONE:
|
||||
break;
|
||||
case Sqlite.ROW:
|
||||
- RadioStation station = yield Util.get_station_by_id(int.parse(stmt.column_text(0)));
|
||||
+ RadioStation station = yield Util.get_station_by_id(stmt.column_text(0));
|
||||
result.add_item(station);
|
||||
break;
|
||||
default:
|
59
audio/gradio/patches/patch-src_gradio-radio-browser_vala
Normal file
59
audio/gradio/patches/patch-src_gradio-radio-browser_vala
Normal file
@ -0,0 +1,59 @@
|
||||
$OpenBSD: patch-src_gradio-radio-browser_vala,v 1.1 2020/11/02 18:44:36 landry Exp $
|
||||
|
||||
Index: src/gradio-radio-browser.vala
|
||||
--- src/gradio-radio-browser.vala.orig
|
||||
+++ src/gradio-radio-browser.vala
|
||||
@@ -17,35 +17,34 @@
|
||||
namespace Gradio{
|
||||
|
||||
public class RadioBrowser{
|
||||
- private const string radio_browser = "https://www.radio-browser.info/webservice/json";
|
||||
|
||||
- public const string radio_stations_by_name = radio_browser + "/stations/byname/";
|
||||
- public const string radio_stations_by_codec = radio_browser + "/stations/bycodec/";
|
||||
- public const string radio_stations_by_country = radio_browser + "/stations/bycountry/";
|
||||
- public const string radio_stations_by_state = radio_browser + "/stations/bystate/";
|
||||
- public const string radio_stations_by_language = radio_browser + "/stations/bylanguage/";
|
||||
- public const string radio_stations_by_tag = radio_browser + "/stations/bytag/";
|
||||
- public const string radio_stations_by_id = radio_browser + "/stations/byid/";
|
||||
+ public const string radio_stations_by_name = "/json/stations/byname/";
|
||||
+ public const string radio_stations_by_codec = "/json/stations/bycodec/";
|
||||
+ public const string radio_stations_by_country = "/json/stations/bycountry/";
|
||||
+ public const string radio_stations_by_state = "/json/stations/bystate/";
|
||||
+ public const string radio_stations_by_language = "/json/stations/bylanguage/";
|
||||
+ public const string radio_stations_by_tag = "/json/stations/bytag/";
|
||||
+ public const string radio_stations_by_id = "/json/stations/byuuid/";
|
||||
|
||||
- public const string radio_station_vote = radio_browser + "/vote/";
|
||||
- public const string radio_station_stream_url = "https://www.radio-browser.info/webservice/v2/json/url/";
|
||||
- public const string radio_station_search = radio_browser + "/stations/search";
|
||||
- public const string radio_station_languages = radio_browser + "/languages";
|
||||
- public const string radio_station_countries = radio_browser + "/countries";
|
||||
- public const string radio_station_codecs = radio_browser + "/codecs";
|
||||
- public const string radio_station_states = radio_browser + "/states";
|
||||
- public const string radio_station_tags = radio_browser + "/tags";
|
||||
+ public const string radio_station_vote = "/json/vote/";
|
||||
+ public const string radio_station_stream_url = "/json/url/";
|
||||
+ public const string radio_station_search = "/json/stations/search";
|
||||
+ public const string radio_station_languages = "/json/languages";
|
||||
+ public const string radio_station_countries = "/json/countries";
|
||||
+ public const string radio_station_codecs = "/json/codecs";
|
||||
+ public const string radio_station_states = "/json/states";
|
||||
+ public const string radio_station_tags = "/json/tags";
|
||||
|
||||
public static string most_votes(int count){
|
||||
- return radio_browser + "/stations/topvote/" + count.to_string();
|
||||
+ return "/json/stations/topvote/" + count.to_string();
|
||||
}
|
||||
|
||||
public static string recently_clicked(int count){
|
||||
- return radio_browser + "/stations/lastclick/" + count.to_string();
|
||||
+ return "/json/stations/lastclick/" + count.to_string();
|
||||
}
|
||||
|
||||
public static string most_clicks(int count){
|
||||
- return radio_browser + "/stations/topclick/" + count.to_string();
|
||||
+ return "/json/stations/topclick/" + count.to_string();
|
||||
}
|
||||
}
|
||||
|
69
audio/gradio/patches/patch-src_gradio-radio-station_vala
Normal file
69
audio/gradio/patches/patch-src_gradio-radio-station_vala
Normal file
@ -0,0 +1,69 @@
|
||||
$OpenBSD: patch-src_gradio-radio-station_vala,v 1.1 2020/11/02 18:44:36 landry Exp $
|
||||
|
||||
Index: src/gradio-radio-station.vala
|
||||
--- src/gradio-radio-station.vala.orig
|
||||
+++ src/gradio-radio-station.vala
|
||||
@@ -210,21 +210,17 @@ namespace Gradio{
|
||||
_title = radio_station_data.get_string_member("name");
|
||||
_homepage = radio_station_data.get_string_member("homepage");
|
||||
_language = radio_station_data.get_string_member("language");
|
||||
- _id = radio_station_data.get_string_member("id");
|
||||
+ _id = radio_station_data.get_string_member("stationuuid");
|
||||
_icon_address = radio_station_data.get_string_member("favicon");
|
||||
- _country = radio_station_data.get_string_member("country");
|
||||
+ _country = radio_station_data.get_string_member("countrycode");
|
||||
_tags = radio_station_data.get_string_member("tags");
|
||||
_state = radio_station_data.get_string_member("state");
|
||||
- _votes = radio_station_data.get_string_member("votes");
|
||||
+ _votes = radio_station_data.get_int_member("votes").to_string();
|
||||
_codec = radio_station_data.get_string_member("codec");
|
||||
- _bitrate = radio_station_data.get_string_member("bitrate");
|
||||
- _clickcount = radio_station_data.get_string_member("clickcount");
|
||||
+ _bitrate = radio_station_data.get_int_member("bitrate").to_string();
|
||||
+ _clickcount = radio_station_data.get_int_member("clickcount").to_string();
|
||||
_clicktimestamp = radio_station_data.get_string_member("clicktimestamp");
|
||||
-
|
||||
- if(radio_station_data.get_string_member("lastcheckok") == "1")
|
||||
- _is_broken = false;
|
||||
- else
|
||||
- _is_broken = true;
|
||||
+ _is_broken = ! radio_station_data.get_boolean_member("lastcheckok");
|
||||
}
|
||||
|
||||
// Returns the playable url for the station
|
||||
@@ -234,7 +230,7 @@ namespace Gradio{
|
||||
|
||||
string data = "";
|
||||
|
||||
- Util.get_string_from_uri.begin(RadioBrowser.radio_station_stream_url + _id, (obj, res) => {
|
||||
+ Util.get_string_from_uri.begin(Util.get_random_server() + RadioBrowser.radio_station_stream_url + _id, (obj, res) => {
|
||||
string result = Util.get_string_from_uri.end(res);
|
||||
|
||||
if(result != null)
|
||||
@@ -251,7 +247,7 @@ namespace Gradio{
|
||||
var root = parser.get_root ();
|
||||
if(root != null){
|
||||
var radio_station_data = root.get_object ();
|
||||
- if(radio_station_data.get_string_member("ok") == "true"){
|
||||
+ if(radio_station_data.get_boolean_member("ok")){
|
||||
url = radio_station_data.get_string_member("url");
|
||||
}
|
||||
}
|
||||
@@ -268,7 +264,7 @@ namespace Gradio{
|
||||
Json.Parser parser = new Json.Parser ();
|
||||
bool vote = false;
|
||||
|
||||
- Util.get_string_from_uri.begin(RadioBrowser.radio_station_vote + id, (obj, res) => {
|
||||
+ Util.get_string_from_uri.begin(Util.get_random_server() + RadioBrowser.radio_station_vote + id, (obj, res) => {
|
||||
string data = Util.get_string_from_uri.end(res);
|
||||
|
||||
try{
|
||||
@@ -277,7 +273,7 @@ namespace Gradio{
|
||||
|
||||
if(root != null){
|
||||
var radio_station_data = root.get_object ();
|
||||
- if(radio_station_data.get_string_member("ok") == "true"){
|
||||
+ if(radio_station_data.get_boolean_member("ok")){
|
||||
int v = int.parse(votes);
|
||||
v++;
|
||||
_votes=v.to_string();
|
14
audio/gradio/patches/patch-src_gradio-search-provider_vala
Normal file
14
audio/gradio/patches/patch-src_gradio-search-provider_vala
Normal file
@ -0,0 +1,14 @@
|
||||
$OpenBSD: patch-src_gradio-search-provider_vala,v 1.1 2020/11/02 18:44:36 landry Exp $
|
||||
|
||||
Index: src/gradio-search-provider.vala
|
||||
--- src/gradio-search-provider.vala.orig
|
||||
+++ src/gradio-search-provider.vala
|
||||
@@ -55,7 +55,7 @@ namespace Gradio{
|
||||
filter_table.insert("name", searchterm);
|
||||
filter_table.insert("order", "votes");
|
||||
filter_table.insert("reverse", "true");
|
||||
- yield station_provider.get_stations("http://www.radio-browser.info/webservice/json/stations/search", filter_table);
|
||||
+ yield station_provider.get_stations(Util.get_random_server() + RadioBrowser.radio_station_search, filter_table);
|
||||
|
||||
string[] results = {};
|
||||
for(int i = 0; i < station_model.get_n_items(); i++){
|
14
audio/gradio/patches/patch-src_gradio-searchbar_vala
Normal file
14
audio/gradio/patches/patch-src_gradio-searchbar_vala
Normal file
@ -0,0 +1,14 @@
|
||||
$OpenBSD: patch-src_gradio-searchbar_vala,v 1.1 2020/11/02 18:44:36 landry Exp $
|
||||
|
||||
Index: src/gradio-searchbar.vala
|
||||
--- src/gradio-searchbar.vala.orig
|
||||
+++ src/gradio-searchbar.vala
|
||||
@@ -224,7 +224,7 @@ namespace Gradio{
|
||||
filter_table.insert("reverse", (!App.settings.sort_ascending).to_string());
|
||||
filter_table.insert("limit", App.settings.max_search_results.to_string());
|
||||
|
||||
- station_provider.get_stations.begin(RadioBrowser.radio_station_search, filter_table);
|
||||
+ station_provider.get_stations.begin(Util.get_random_server() + RadioBrowser.radio_station_search, filter_table);
|
||||
|
||||
delayed_changed_id = 0;
|
||||
return false;
|
39
audio/gradio/patches/patch-src_gradio-settings_vala
Normal file
39
audio/gradio/patches/patch-src_gradio-settings_vala
Normal file
@ -0,0 +1,39 @@
|
||||
$OpenBSD: patch-src_gradio-settings_vala,v 1.1 2020/11/02 18:44:36 landry Exp $
|
||||
|
||||
Index: src/gradio-settings.vala
|
||||
--- src/gradio-settings.vala.orig
|
||||
+++ src/gradio-settings.vala
|
||||
@@ -29,7 +29,7 @@ namespace Gradio{
|
||||
private bool _resume_playback_on_startup;
|
||||
private bool _hide_broken_stations;
|
||||
private bool _show_technical_information;
|
||||
- private int _previous_station;
|
||||
+ private string _previous_station;
|
||||
private double _volume_position;
|
||||
private int _window_height;
|
||||
private int _window_width;
|
||||
@@ -50,7 +50,7 @@ namespace Gradio{
|
||||
_resume_playback_on_startup = settings.get_boolean("resume-playback-on-startup");
|
||||
_hide_broken_stations = settings.get_boolean("hide-broken-stations");
|
||||
_show_technical_information = settings.get_boolean("show-technical-information");
|
||||
- _previous_station = settings.get_int("previous-station");
|
||||
+ _previous_station = settings.get_string("previous-station");
|
||||
_volume_position = settings.get_double("volume-position");
|
||||
_window_height = settings.get_int("window-height");
|
||||
_window_width = settings.get_int("window-width");
|
||||
@@ -154,13 +154,13 @@ namespace Gradio{
|
||||
}
|
||||
}
|
||||
|
||||
- public int previous_station{
|
||||
+ public string previous_station{
|
||||
get{
|
||||
return _previous_station;
|
||||
}
|
||||
set{
|
||||
_previous_station = value;
|
||||
- settings.set_int ("previous-station", value);
|
||||
+ settings.set_string ("previous-station", value);
|
||||
}
|
||||
}
|
||||
|
52
audio/gradio/patches/patch-src_gradio-utils_vala
Normal file
52
audio/gradio/patches/patch-src_gradio-utils_vala
Normal file
@ -0,0 +1,52 @@
|
||||
$OpenBSD: patch-src_gradio-utils_vala,v 1.1 2020/11/02 18:44:36 landry Exp $
|
||||
|
||||
Index: src/gradio-utils.vala
|
||||
--- src/gradio-utils.vala.orig
|
||||
+++ src/gradio-utils.vala
|
||||
@@ -40,7 +40,7 @@ namespace Gradio{
|
||||
}
|
||||
|
||||
public static bool check_database_connection(){
|
||||
- var host = "www.radio-browser.info";
|
||||
+ var host = "all.api.radio-browser.info";
|
||||
|
||||
try {
|
||||
Resolver resolver = Resolver.get_default ();
|
||||
@@ -53,6 +53,23 @@ namespace Gradio{
|
||||
}
|
||||
}
|
||||
|
||||
+ public static string get_random_server(){
|
||||
+ var host = "radio-browser.info";
|
||||
+ try {
|
||||
+ Resolver resolver = Resolver.get_default ();
|
||||
+ List<SrvTarget> targets = resolver.lookup_service ("api", "tcp", host, null);
|
||||
+ var tgt = targets.nth_data(0);
|
||||
+ if (tgt.get_port() == 443) {
|
||||
+ return "https://" + tgt.get_hostname();
|
||||
+ } else {
|
||||
+ return "http://" + tgt.get_hostname();
|
||||
+ }
|
||||
+ } catch (Error e) {
|
||||
+ critical (e.message);
|
||||
+ return "fr1.api.radio-browser.info";
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
public static void add_stylesheet () {
|
||||
var provider = new CssProvider ();
|
||||
|
||||
@@ -73,11 +90,11 @@ namespace Gradio{
|
||||
return false;
|
||||
}
|
||||
|
||||
- public static async RadioStation get_station_by_id(int id){
|
||||
+ public static async RadioStation get_station_by_id(string id){
|
||||
Json.Parser parser = new Json.Parser ();
|
||||
RadioStation new_station = null;
|
||||
|
||||
- string data = yield Util.get_string_from_uri(RadioBrowser.radio_stations_by_id + id.to_string());
|
||||
+ string data = yield Util.get_string_from_uri(Util.get_random_server() + RadioBrowser.radio_stations_by_id + id);
|
||||
|
||||
if(data != ""){
|
||||
try{
|
18
audio/gradio/patches/patch-src_page_gradio-search-page_vala
Normal file
18
audio/gradio/patches/patch-src_page_gradio-search-page_vala
Normal file
@ -0,0 +1,18 @@
|
||||
$OpenBSD: patch-src_page_gradio-search-page_vala,v 1.1 2020/11/02 18:44:36 landry Exp $
|
||||
|
||||
Index: src/page/gradio-search-page.vala
|
||||
--- src/page/gradio-search-page.vala.orig
|
||||
+++ src/page/gradio-search-page.vala
|
||||
@@ -77,9 +77,9 @@ namespace Gradio{
|
||||
StationProvider recently_clicked_provider = new StationProvider(ref recently_clicked_model);
|
||||
StationProvider most_clicks_provider = new StationProvider(ref most_clicks_model);
|
||||
|
||||
- most_votes_provider.get_stations.begin(RadioBrowser.most_votes(14), filter_table);
|
||||
- recently_clicked_provider.get_stations.begin(RadioBrowser.recently_clicked(14), filter_table);
|
||||
- most_clicks_provider.get_stations.begin(RadioBrowser.most_clicks(14), filter_table);
|
||||
+ most_votes_provider.get_stations.begin(Util.get_random_server() + RadioBrowser.most_votes(14), filter_table);
|
||||
+ recently_clicked_provider.get_stations.begin(Util.get_random_server() + RadioBrowser.recently_clicked(14), filter_table);
|
||||
+ most_clicks_provider.get_stations.begin(Util.get_random_server() + RadioBrowser.most_clicks(14), filter_table);
|
||||
|
||||
most_votes_mainbox.set_model(most_votes_model);
|
||||
recently_clicked_mainbox.set_model(recently_clicked_model);
|
Loading…
Reference in New Issue
Block a user