mirror of
https://github.com/Ponce/slackbuilds
synced 2024-11-21 19:42:24 +01:00
audio/tuner: Updated for version 1.5.2.
Signed-off-by: Andrew Clemons <andrew.clemons@gmail.com> Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
parent
207e261230
commit
f4b74b0fab
3 changed files with 305 additions and 6 deletions
295
audio/tuner/649732e05a.patch
Normal file
295
audio/tuner/649732e05a.patch
Normal file
|
@ -0,0 +1,295 @@
|
|||
From 649732e05a56f7b5c8b34875b3ed544319c45e3f Mon Sep 17 00:00:00 2001
|
||||
From: Louis Brauer <louis@openbooking.ch>
|
||||
Date: Sat, 22 Jun 2024 23:22:57 +0200
|
||||
Subject: [PATCH] Upgrade to libsoup-3.0
|
||||
|
||||
---
|
||||
README.md | 4 +-
|
||||
meson.build | 3 +-
|
||||
src/Services/RadioBrowserDirectory.vala | 79 ++++++++++++++++---------
|
||||
src/Widgets/HeaderBar.vala | 44 ++++++++------
|
||||
src/Widgets/StationBox.vala | 56 ++++++++++--------
|
||||
5 files changed, 110 insertions(+), 76 deletions(-)
|
||||
|
||||
diff --git a/README.md b/README.md
|
||||
index 8a20169..5d2cb66 100644
|
||||
--- a/README.md
|
||||
+++ b/README.md
|
||||
@@ -109,7 +109,7 @@ granite
|
||||
gtk+-3.0
|
||||
gstreamer-1.0
|
||||
gstreamer-player-1.0
|
||||
-libsoup-2.4
|
||||
+libsoup-3.0
|
||||
json-glib-1.0
|
||||
libgee-0.8
|
||||
libgeoclue-2-0
|
||||
@@ -124,7 +124,7 @@ Make sure you have the dependencies installed:
|
||||
|
||||
```bash
|
||||
sudo apt install git valac meson
|
||||
-sudo apt install libgtk-3-dev libgee-0.8-dev libgranite-dev libgstreamer1.0-dev libgstreamer-plugins-bad1.0-dev libsoup2.4-dev libjson-glib-dev libgeoclue-2-dev libgeocode-glib-dev
|
||||
+sudo apt install libgtk-3-dev libgee-0.8-dev libgranite-dev libgstreamer1.0-dev libgstreamer-plugins-bad1.0-dev libsoup3.0-dev libjson-glib-dev libgeoclue-2-dev libgeocode-glib-dev
|
||||
```
|
||||
|
||||
Then clone this repo and build it locally:
|
||||
diff --git a/meson.build b/meson.build
|
||||
index 63542fa..5aabe03 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -47,7 +47,7 @@ dependencies = [
|
||||
dependency ('granite'),
|
||||
dependency ('gstreamer-1.0'),
|
||||
dependency ('gstreamer-player-1.0'),
|
||||
- dependency ('libsoup-2.4'),
|
||||
+ dependency ('libsoup-3.0'),
|
||||
dependency ('json-glib-1.0'),
|
||||
dependency ('libgeoclue-2.0'),
|
||||
dependency ('geocode-glib-1.0')
|
||||
@@ -69,4 +69,3 @@ subdir ('data')
|
||||
subdir ('po')
|
||||
|
||||
meson.add_install_script ('meson/post_install.py')
|
||||
-
|
||||
diff --git a/src/Services/RadioBrowserDirectory.vala b/src/Services/RadioBrowserDirectory.vala
|
||||
index 9def43d..a7db9bb 100644
|
||||
--- a/src/Services/RadioBrowserDirectory.vala
|
||||
+++ b/src/Services/RadioBrowserDirectory.vala
|
||||
@@ -177,16 +177,26 @@ public class Client : Object {
|
||||
debug (@"sending listening event for station $stationuuid");
|
||||
var resource = @"json/url/$stationuuid";
|
||||
var message = new Soup.Message ("GET", @"$current_server/$resource");
|
||||
- var response_code = _session.send_message (message);
|
||||
- debug (@"response: $(response_code)");
|
||||
+ try {
|
||||
+ var resp = _session.send (message);
|
||||
+ resp.close ();
|
||||
+ } catch(GLib.Error e) {
|
||||
+ debug ("failed to track()");
|
||||
+ }
|
||||
+ debug (@"response: $(message.status_code)");
|
||||
}
|
||||
|
||||
public void vote (string stationuuid) {
|
||||
debug (@"sending vote event for station $stationuuid");
|
||||
var resource = @"json/vote/$stationuuid)";
|
||||
var message = new Soup.Message ("GET", @"$current_server/$resource");
|
||||
- var response_code = _session.send_message (message);
|
||||
- debug (@"response: $(response_code)");
|
||||
+ try {
|
||||
+ var resp = _session.send (message);
|
||||
+ resp.close ();
|
||||
+ } catch(GLib.Error e) {
|
||||
+ debug("failed to vote()");
|
||||
+ }
|
||||
+ debug (@"response: $(message.status_code)");
|
||||
}
|
||||
|
||||
public ArrayList<Station> get_stations (string resource) throws DataError {
|
||||
@@ -195,21 +205,27 @@ public class Client : Object {
|
||||
var message = new Soup.Message ("GET", @"$current_server/$resource");
|
||||
Json.Node rootnode;
|
||||
|
||||
- var response_code = _session.send_message (message);
|
||||
- debug (@"response from radio-browser.info: $response_code");
|
||||
- var body = (string) message.response_body.data;
|
||||
- if (body == null) {
|
||||
- throw new DataError.NO_CONNECTION (@"unable to read response");
|
||||
- }
|
||||
try {
|
||||
- rootnode = Json.from_string (body);
|
||||
- } catch (Error e) {
|
||||
- throw new DataError.PARSE_DATA (@"unable to parse JSON response: $(e.message)");
|
||||
- }
|
||||
- var rootarray = rootnode.get_array ();
|
||||
+ var response = _session.send (message);
|
||||
+ warning (@"response from radio-browser.info: $(message.status_code)");
|
||||
|
||||
- var stations = jarray_to_stations (rootarray);
|
||||
- return stations;
|
||||
+ try {
|
||||
+ var parser = new Json.Parser();
|
||||
+ parser.load_from_stream (response, null);
|
||||
+ rootnode = parser.get_root();
|
||||
+ response.close ();
|
||||
+ } catch (Error e) {
|
||||
+ throw new DataError.PARSE_DATA (@"unable to parse JSON response: $(e.message)");
|
||||
+ }
|
||||
+ var rootarray = rootnode.get_array ();
|
||||
+
|
||||
+ var stations = jarray_to_stations (rootarray);
|
||||
+ return stations;
|
||||
+ } catch (GLib.Error e) {
|
||||
+ warning (@"response from radio-browser.info: $(e.message)");
|
||||
+ }
|
||||
+
|
||||
+ return new ArrayList<Station>();
|
||||
}
|
||||
|
||||
public ArrayList<Station> search (SearchParams params,
|
||||
@@ -266,20 +282,27 @@ public class Client : Object {
|
||||
var message = new Soup.Message ("GET", @"$current_server/$resource");
|
||||
Json.Node rootnode;
|
||||
|
||||
- var response_code = _session.send_message (message);
|
||||
- debug (@"response from radio-browser.info: $response_code");
|
||||
- var body = (string) message.response_body.data;
|
||||
-
|
||||
try {
|
||||
- rootnode = Json.from_string (body);
|
||||
- } catch (Error e) {
|
||||
- throw new DataError.PARSE_DATA (@"unable to parse JSON response: $(e.message)");
|
||||
+ var ip = _session.send (message);
|
||||
+ debug (@"response from radio-browser.info: $(message.status_code)");
|
||||
+
|
||||
+
|
||||
+ try {
|
||||
+ var parser = new Json.Parser();
|
||||
+ parser.load_from_stream (ip, null);
|
||||
+ rootnode = parser.get_root ();
|
||||
+ } catch (Error e) {
|
||||
+ throw new DataError.PARSE_DATA (@"unable to parse JSON response: $(e.message)");
|
||||
+ }
|
||||
+ var rootarray = rootnode.get_array ();
|
||||
+
|
||||
+ var tags = jarray_to_tags (rootarray);
|
||||
+ return tags;
|
||||
+ } catch(GLib.Error e) {
|
||||
+ debug("cannot get_tags()");
|
||||
}
|
||||
- var rootarray = rootnode.get_array ();
|
||||
-
|
||||
- var tags = jarray_to_tags (rootarray);
|
||||
- return tags;
|
||||
|
||||
+ return new ArrayList<Tag>();
|
||||
}
|
||||
|
||||
}
|
||||
diff --git a/src/Widgets/HeaderBar.vala b/src/Widgets/HeaderBar.vala
|
||||
index be2716b..3bd95d4 100644
|
||||
--- a/src/Widgets/HeaderBar.vala
|
||||
+++ b/src/Widgets/HeaderBar.vala
|
||||
@@ -184,26 +184,32 @@ public class Tuner.HeaderBar : Gtk.HeaderBar {
|
||||
var session = new Soup.Session ();
|
||||
var message = new Soup.Message ("GET", url);
|
||||
|
||||
- session.queue_message (message, (sess, mess) => {
|
||||
- if (mess.status_code != 200) {
|
||||
- warning (@"Unexpected status code: $(mess.status_code), will not render $(url)");
|
||||
- return;
|
||||
+ session.send_async.begin (message, 0, null, (sess, res) => {
|
||||
+ try {
|
||||
+ GLib.InputStream resp = session.send_async.end (res);
|
||||
+
|
||||
+ if (message.status_code != 200) {
|
||||
+ warning (@"Unexpected status code: $(message.status_code), will not render $(url)");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ // var data_stream = new MemoryInputStream.from_data (mess.response_body.data);
|
||||
+ Gdk.Pixbuf pxbuf;
|
||||
+
|
||||
+ try {
|
||||
+ pxbuf = new Gdk.Pixbuf.from_stream_at_scale (resp, 48, 48, true, null);
|
||||
+ favicon.set_from_pixbuf (pxbuf);
|
||||
+ favicon.set_size_request (48, 48);
|
||||
+ } catch (Error e) {
|
||||
+ warning ("Couldn't render favicon: %s (%s)",
|
||||
+ url ?? "unknown url",
|
||||
+ e.message);
|
||||
+ }
|
||||
+
|
||||
+ resp.close ();
|
||||
+ } catch (GLib.Error e) {
|
||||
+ warning("load_favicon failed: $(e.message)");
|
||||
}
|
||||
-
|
||||
- var data_stream = new MemoryInputStream.from_data (mess.response_body.data);
|
||||
- Gdk.Pixbuf pxbuf;
|
||||
-
|
||||
- try {
|
||||
- pxbuf = new Gdk.Pixbuf.from_stream_at_scale (data_stream, 48, 48, true, null);
|
||||
- } catch (Error e) {
|
||||
- warning ("Couldn't render favicon: %s (%s)",
|
||||
- url ?? "unknown url",
|
||||
- e.message);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- favicon.set_from_pixbuf (pxbuf);
|
||||
- favicon.set_size_request (48, 48);
|
||||
});
|
||||
}
|
||||
|
||||
diff --git a/src/Widgets/StationBox.vala b/src/Widgets/StationBox.vala
|
||||
index b76a105..a21bed4 100644
|
||||
--- a/src/Widgets/StationBox.vala
|
||||
+++ b/src/Widgets/StationBox.vala
|
||||
@@ -94,35 +94,41 @@ public class Tuner.StationBox : Tuner.WelcomeButton {
|
||||
var session = new Soup.Session ();
|
||||
var message = new Soup.Message ("GET", station.favicon_url);
|
||||
|
||||
- session.queue_message (message, (sess, mess) => {
|
||||
- if (mess.status_code != 200) {
|
||||
+ session.send_async.begin (message, 0, null, (sess, res) => {
|
||||
+ try {
|
||||
+ GLib.InputStream data_stream = session.send_async.end (res);
|
||||
+
|
||||
+ //set_favicon_from_stream (data_stream);
|
||||
+
|
||||
+ var file = File.new_for_path (favicon_cache_file);
|
||||
+ try {
|
||||
+ var stream = file.create_readwrite (FileCreateFlags.PRIVATE);
|
||||
+ stream.output_stream.splice (data_stream, 0);
|
||||
+ stream.close ();
|
||||
+ } catch (Error e) {
|
||||
+ // File already created by another stationbox
|
||||
+ // TODO: possible race condition
|
||||
+ // TODO: Create stationboxes as singletons?
|
||||
+ }
|
||||
+
|
||||
+ try {
|
||||
+ var favicon_stream = file.read ();
|
||||
+ if (!set_favicon_from_stream (favicon_stream)) {
|
||||
+ set_default_favicon ();
|
||||
+ };
|
||||
+ } catch (Error e) {
|
||||
+ warning (@"Error while reading icon file stream: $(e.message)");
|
||||
+ }
|
||||
+ } catch (GLib.Error e) {
|
||||
+ critical (@"unable to load favicon: $(e.message)");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (message.status_code != 200) {
|
||||
//debug (@"Unexpected status code: $(mess.status_code), will not render $(station.favicon_url)");
|
||||
set_default_favicon ();
|
||||
return;
|
||||
}
|
||||
-
|
||||
- var data_stream = new MemoryInputStream.from_data (mess.response_body.data);
|
||||
- //set_favicon_from_stream (data_stream);
|
||||
-
|
||||
- var file = File.new_for_path (favicon_cache_file);
|
||||
- try {
|
||||
- var stream = file.create_readwrite (FileCreateFlags.PRIVATE);
|
||||
- stream.output_stream.splice (data_stream, 0);
|
||||
- stream.close ();
|
||||
- } catch (Error e) {
|
||||
- // File already created by another stationbox
|
||||
- // TODO: possible race condition
|
||||
- // TODO: Create stationboxes as singletons?
|
||||
- }
|
||||
-
|
||||
- try {
|
||||
- var favicon_stream = file.read ();
|
||||
- if (!set_favicon_from_stream (favicon_stream)) {
|
||||
- set_default_favicon ();
|
||||
- };
|
||||
- } catch (Error e) {
|
||||
- warning (@"Error while reading icon file stream: $(e.message)");
|
||||
- }
|
||||
});
|
||||
|
||||
} else {
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# Slackware build script for tuner
|
||||
|
||||
# Copyright 2023 Johannes Schoepfer, Germany
|
||||
# Copyright 2023-2024 Johannes Schoepfer, Germany
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use of this script, with or without modification, is
|
||||
|
@ -25,7 +25,7 @@
|
|||
cd $(dirname $0) ; CWD=$(pwd)
|
||||
|
||||
PRGNAM=tuner
|
||||
VERSION=${VERSION:-1.5.1}
|
||||
VERSION=${VERSION:-1.5.2}
|
||||
BUILD=${BUILD:-1}
|
||||
TAG=${TAG:-_SBo}
|
||||
PKGTYPE=${PKGTYPE:-tgz}
|
||||
|
@ -89,6 +89,10 @@ for src_nam in appdata.xml.in desktop.in gresource.xml gschema.xml; do
|
|||
mv data/$GITHUB_NAME.$PRGNAM.$src_nam data/$PRGNAM.$src_nam
|
||||
done
|
||||
|
||||
# don't use libsoup-3.0 for now, as it crashes when choosung a radio station
|
||||
patch -p1 -R < $CWD/649732e05a.patch || true
|
||||
sed -i "s/libsoup-3.0/libsoup-2.4/g" meson.build
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
CFLAGS="$SLKCFLAGS" \
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
PRGNAM="tuner"
|
||||
VERSION="1.5.1"
|
||||
VERSION="1.5.2"
|
||||
HOMEPAGE="https://codeberg.org/tuner/tuner"
|
||||
DOWNLOAD="https://github.com/louis77/tuner/archive/1.5.1/tuner-1.5.1.tar.gz"
|
||||
MD5SUM="ee07ecb7d309e5c963dd550b593aa1ba"
|
||||
DOWNLOAD="https://github.com/louis77/tuner/archive/1.5.2/tuner-1.5.2.tar.gz"
|
||||
MD5SUM="2ce3e051256e63329628929113dca887"
|
||||
DOWNLOAD_x86_64=""
|
||||
MD5SUM_x86_64=""
|
||||
REQUIRES="granite geoclue2 geocode-glib"
|
||||
REQUIRES="granite"
|
||||
MAINTAINER="Johannes Schoepfer"
|
||||
EMAIL="slackbuilds@schoepfer.info"
|
||||
|
|
Loading…
Reference in a new issue