Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/magicseb/LibreELEC.tv
Browse files Browse the repository at this point in the history
  • Loading branch information
magicseb committed Jul 20, 2019
2 parents 4662853 + 1d36b22 commit 46bdfd4
Show file tree
Hide file tree
Showing 70 changed files with 4,324 additions and 3,221 deletions.
Expand Up @@ -2,7 +2,7 @@
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)

PKG_NAME="rust"
PKG_VERSION="1.31.1"
PKG_VERSION="1.36.0"
PKG_LICENSE="MIT"
PKG_SITE="https://www.rust-lang.org"
PKG_DEPENDS_TARGET="toolchain rustup.rs"
Expand Down
Expand Up @@ -2,8 +2,8 @@
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)

PKG_NAME="rustup.rs"
PKG_VERSION="1.16.0"
PKG_SHA256="8c4ffeda2088dbdd5ea2eac8acef5ddd57dfcfe1f06a503e3da790f93161e1a6"
PKG_VERSION="1.18.3"
PKG_SHA256="9a2ae2c85bbbfc838b25d86d049bc677532950d78765725beabb8a61df1c2710"
PKG_LICENSE="MIT"
PKG_SITE="https://www.rust-lang.org"
PKG_URL="https://github.com/rust-lang-nursery/rustup.rs/archive/$PKG_VERSION.tar.gz"
Expand Down
7 changes: 6 additions & 1 deletion packages/addons/service/librespot/changelog.txt
@@ -1,5 +1,10 @@
116
- Update to 4e3576b (2019-06-01)
- Only use Kodi
- Rework

115
- Update to daeeeaa (22-02-2019)
- Update to daeeeaa (2019-02-22)

114
- Fix discovery mode setting
Expand Down
32 changes: 14 additions & 18 deletions packages/addons/service/librespot/package.mk
@@ -1,25 +1,25 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2017 Shane Meagher (shanemeagher)
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)

PKG_NAME="librespot"
PKG_VERSION="daeeeaa122fc2d71edf11e562e23038db4210b39"
PKG_SHA256="e9ebb8ca09c850598ae8c222bdab44e7d8321cb3c36017ba8e17a41db418c06e"
PKG_VERSION_DATE="2019-02-22"
PKG_REV="115"
PKG_VERSION="4e3576ba7c6146cf68e1953daeec929d619b26b1"
PKG_SHA256="c2fef0253bdbb6ff7085d4ec00e80da4727a1c5b1bf84dd2c14edc3de1cfd753"
PKG_VERSION_DATE="2019-06-01"
PKG_REV="116"
PKG_ARCH="any"
PKG_LICENSE="MIT"
PKG_SITE="https://github.com/librespot-org/librespot/"
PKG_URL="https://github.com/librespot-org/librespot/archive/$PKG_VERSION.zip"
PKG_DEPENDS_TARGET="toolchain avahi pulseaudio pyalsaaudio rust"
PKG_DEPENDS_TARGET="toolchain avahi pulseaudio rust"
PKG_SECTION="service"
PKG_SHORTDESC="Librespot: play Spotify through LibreELEC using a Spotify app as a remote"
PKG_LONGDESC="Librespot ($PKG_VERSION_DATE) plays Spotify through LibreELEC using the open source librespot library using a Spotify app as a remote."
PKG_SHORTDESC="Librespot: play Spotify through Kodi using a Spotify app as a remote"
PKG_LONGDESC="Librespot ($PKG_VERSION_DATE) lets you play Spotify through Kodi using a Spotify app as a remote."
PKG_TOOLCHAIN="manual"

PKG_IS_ADDON="yes"
PKG_ADDON_NAME="Librespot"
PKG_ADDON_TYPE="xbmc.service.library"
PKG_ADDON_TYPE="xbmc.service"
PKG_MAINTAINER="Anton Voyl (awiouy)"

configure_target() {
Expand All @@ -29,21 +29,17 @@ configure_target() {

make_target() {
cd src
$CARGO_BUILD --no-default-features --features "alsa-backend pulseaudio-backend with-dns-sd"
$CARGO_BUILD --no-default-features --features "pulseaudio-backend with-dns-sd"
cd "$PKG_BUILD/.$TARGET_NAME"/*/release
$STRIP librespot
}

addon() {
mkdir -p "$ADDON_BUILD/$PKG_ADDON_ID"
cp "$(get_build_dir pyalsaaudio)/.install_pkg/usr/lib/$PKG_PYTHON_VERSION/site-packages/alsaaudio.so" \
"$ADDON_BUILD/$PKG_ADDON_ID"

mkdir -p "$ADDON_BUILD/$PKG_ADDON_ID/bin"
cp "$PKG_BUILD/.$TARGET_NAME"/*/release/librespot \
"$ADDON_BUILD/$PKG_ADDON_ID/bin"
cp "$PKG_BUILD/.$TARGET_NAME"/*/release/librespot \
"$ADDON_BUILD/$PKG_ADDON_ID/bin"

mkdir -p "$ADDON_BUILD/$PKG_ADDON_ID/lib"
cp "$(get_build_dir avahi)/avahi-compat-libdns_sd/.libs/libdns_sd.so.1" \
"$ADDON_BUILD/$PKG_ADDON_ID/lib"
cp "$(get_build_dir avahi)/avahi-compat-libdns_sd/.libs/libdns_sd.so.1" \
"$ADDON_BUILD/$PKG_ADDON_ID/lib"
}
@@ -0,0 +1,151 @@
diff --git a/playback/src/config.rs b/playback/src/config.rs
index 0f71110..931167d 100644
--- a/playback/src/config.rs
+++ b/playback/src/config.rs
@@ -30,6 +30,7 @@ pub struct PlayerConfig {
pub bitrate: Bitrate,
pub normalisation: bool,
pub normalisation_pregain: f32,
+ pub notify_kodi: bool,
}

impl Default for PlayerConfig {
@@ -38,6 +39,7 @@ impl Default for PlayerConfig {
bitrate: Bitrate::default(),
normalisation: false,
normalisation_pregain: 0.0,
+ notify_kodi: false,
}
}
}
diff --git a/playback/src/player.rs b/playback/src/player.rs
index ab1a8ab..19d6394 100644
--- a/playback/src/player.rs
+++ b/playback/src/player.rs
@@ -4,7 +4,8 @@ use futures::sync::oneshot;
use futures::{future, Future};
use std;
use std::borrow::Cow;
-use std::io::{Read, Result, Seek, SeekFrom};
+use std::fs::OpenOptions;
+use std::io::{Read, Result, Seek, SeekFrom, Write};
use std::mem;
use std::sync::mpsc::{RecvError, RecvTimeoutError, TryRecvError};
use std::thread;
@@ -394,6 +395,14 @@ impl PlayerInternal {
}
}

+ fn notify_kodi(&mut self, id: &str, track_id: &SpotifyId) {
+ // println!("fifo = {} {}", id, track_id.to_base62());
+ if self.config.notify_kodi {
+ let mut file = OpenOptions::new().write(true).open("/tmp/librespot").unwrap();
+ writeln!(&mut file, "{}\n{}", id, track_id.to_base62()).unwrap();
+ }
+ }
+
fn handle_command(&mut self, cmd: PlayerCommand) {
debug!("command={:?}", cmd);
match cmd {
@@ -413,11 +422,17 @@ impl PlayerInternal {
| PlayerState::EndOfTrack {
track_id: old_track_id,
..
- } => self.send_event(PlayerEvent::Changed {
- old_track_id: old_track_id,
- new_track_id: track_id,
- }),
- _ => self.send_event(PlayerEvent::Started { track_id }),
+ } => {
+ self.send_event(PlayerEvent::Changed {
+ old_track_id: old_track_id,
+ new_track_id: track_id,
+ });
+ self.notify_kodi("1", &track_id)
+ }
+ _ => {
+ self.send_event(PlayerEvent::Started { track_id });
+ self.notify_kodi("2", &track_id)
+ }
}

self.start_sink();
@@ -443,13 +458,17 @@ impl PlayerInternal {
| PlayerState::EndOfTrack {
track_id: old_track_id,
..
- } => self.send_event(PlayerEvent::Changed {
- old_track_id: old_track_id,
- new_track_id: track_id,
- }),
+ } => {
+ self.send_event(PlayerEvent::Changed {
+ old_track_id: old_track_id,
+ new_track_id: track_id,
+ });
+ self.notify_kodi("3", &track_id)
+ }
_ => (),
}
self.send_event(PlayerEvent::Stopped { track_id });
+ self.notify_kodi("4", &track_id)
}
}

@@ -476,6 +495,7 @@ impl PlayerInternal {

self.send_event(PlayerEvent::Started { track_id });
self.start_sink();
+ self.notify_kodi("5", &track_id)
} else {
warn!("Player::play called from invalid state");
}
@@ -487,6 +507,7 @@ impl PlayerInternal {

self.stop_sink_if_running();
self.send_event(PlayerEvent::Stopped { track_id });
+ self.notify_kodi("6", &track_id)
} else {
warn!("Player::pause called from invalid state");
}
@@ -499,6 +520,7 @@ impl PlayerInternal {
self.stop_sink_if_running();
self.send_event(PlayerEvent::Stopped { track_id });
self.state = PlayerState::Stopped;
+ self.notify_kodi("7", &track_id)
}
PlayerState::Stopped => {
warn!("Player::stop called from invalid state");
diff --git a/src/main.rs b/src/main.rs
index 36cd1b5..502cac8 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -168,6 +168,11 @@ fn setup(args: &[String]) -> Setup {
"Pregain (dB) applied by volume normalisation",
"PREGAIN",
)
+ .optflag(
+ "",
+ "notify-kodi",
+ "Notify Kodi",
+ )
.optflag(
"",
"linear-volume",
@@ -248,6 +253,8 @@ fn setup(args: &[String]) -> Setup {
)
};

+ let notify_kodi = matches.opt_present("notify-kodi");
+
let session_config = {
let device_id = device_id(&name);

@@ -291,6 +298,7 @@ fn setup(args: &[String]) -> Setup {
.opt_str("normalisation-pregain")
.map(|pregain| pregain.parse::<f32>().expect("Invalid pregain float value"))
.unwrap_or(PlayerConfig::default().normalisation_pregain),
+ notify_kodi: notify_kodi,
}
};

This file was deleted.

0 comments on commit 46bdfd4

Please sign in to comment.