Code Monkey home page Code Monkey logo

volumio-spotifyconnect's Introduction

Volumio Spotify Connect

NOTE: I no longer maintain this plugin - please open issues at the Volumio plugin repo

This Volumio plugin utilises vollibrespot to provide better integration of Spotify Connect in Volumio.

As always, it is being actively developed - some features are still WIP.

Alt text

Tested on :

  • RPI 0
  • RPI B
  • RPI B+
  • RPI2
  • RPI3
  • SPARKY
  • PINE64
  • x86 laptop
  • OrangePiLite

This repo splits the old volspotconnect2 plugin into a new separate repository, making it easier to maintain.

IMPORTANT

  • Requires a Premium or Family account

To install

Before installing the dev version, REMOVE the old plugin from your system using the webUI plugins page.

Due to a Volumio decision, developer plugins can only be install through SSH. Here is how:

1. Enable SSH and connect to Volumio

Follow the Volumio guide to enable and access your device via ssh.

2. Download and install the plugin

Type the following commands to download and install plugin:

wget https://github.com/balbuze/volumio-plugins/raw/master/plugins/music_service/volspotconnect2/volspotconnect2.zip
mkdir ./volspotconnect2
miniunzip volspotconnect2.zip -d ./volspotconnect2
cd ./volspotconnect2
volumio plugin install

3.Enable the plugin

In Volumio webUI, go in plugin section > installed plugin. You should see volspotconnect2 now! Enable it and play! You can go in the plugin settings to tweak some details. Enjoy !

Issues

  • librespot doesn't handle disconnections gracefully

volumio-spotifyconnect's People

Contributors

ashthespy avatar balbuze avatar kayue avatar leoncb avatar volumio avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

volumio-spotifyconnect's Issues

Incorrect Title for Settings

When configuring this plugin, the title is, "Spotify Account". Since the settings really have nothing to do with the user's account, the title should probably be something like, "General Settings".

restart loop

vollibrespot v0.1.6 cd3b133 2019-04-29 (librespot b5c80bf 2018-11-27) -- Built On 2019-04-29
thread 'main' panicked at 'Invalid bitrate: ()', src/libcore/result.rs:997:5
stack backtrace:
Started Volspotconnect2 Daemon.
0: 0xa0ac27 - std::sys::unix::backtrace::tracing::imp::unwind_backtrace::hdf951eb9f43ea27e
at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:39
1: 0xa0669f - std::sys_common::backtrace::_print::h2b5fdbbb5020ccf8
at src/libstd/sys_common/backtrace.rs:70
2: 0xa08cdf - std::panicking::default_hook::{{closure}}::h18d8c59665918d69
at src/libstd/sys_common/backtrace.rs:58
at src/libstd/panicking.rs:200
3: 0xa08947 - std::panicking::default_hook::h1fd1ad969274543a
at src/libstd/panicking.rs:215
4: 0xa0944f - std::panicking::rust_panic_with_hook::h40a77253872948e8
at src/libstd/panicking.rs:478
5: 0xa08fcf - std::panicking::continue_panic_fmt::hec94fc8e5daf641b
at src/libstd/panicking.rs:385
6: 0xa08ebb - rust_begin_unwind
at src/libstd/panicking.rs:312
7: 0xa1bdbb - core::panicking::panic_fmt::h74ee8034b317ceed
at src/libcore/panicking.rs:85
8: 0x524183 - core::result::unwrap_failed::h9bbbc912aacbc69a
9: 0x51deab - vollibrespot::setup::h60afa926408031e2
10: 0x520bf7 - vollibrespot::main::h393279e1f565f771
11: 0x52c407 - std::rt::lang_start::{{closure}}::hb2a63859d18ee1ea
12: 0xa08e33 - std::panicking::try::do_call::h287c6909aadcc5f1
at src/libstd/rt.rs:49
at src/libstd/panicking.rs:297
13: 0xa0da57 - __rust_maybe_catch_panic
at src/libpanic_unwind/lib.rs:92
14: 0xa098b3 - std::rt::lang_start_internal::h747c58e2c78f4f4f
at src/libstd/panicking.rs:276
at src/libstd/panic.rs:388
at src/libstd/rt.rs:48
15: 0x5214ab - main
16: 0x76cab293 - __libc_start_main
volspotconnect2.service: main process exited, code=exited, status=101/n/a
Unit volspotconnect2.service entered failed state.
Stopping Volspotconnect2 Daemon...

volspotconnect2 panic

When I try to connect from the Spotify desktop client, the connection appears to establish and then drops immediately. The following is generated in the logs:

volumio@bango:~/volspotconnect2$ journalctl -f -o cat -u volspotconnect2.service
31: 0x76cb0678 - __libc_start_main
[Vollibrespot] : EventSender disconnected
volspotconnect2.service holdoff time over, scheduling restart.
Stopping Volspotconnect2 Daemon...
Starting Volspotconnect2 Daemon...
Started Volspotconnect2 Daemon.
vollibrespot v0.2.2 cd96399 2020-10-07 (librespot 08d8bcc 2020-10-07) -- Built On 2020-10-07
Reading Config from "volspotify.toml"
[Vollibrespot] : Using Alsa backend with device: plughw:2
[Vollibrespot] : Failed to register IPv6 receiver: Os { code: 19, kind: Other, message: "No such device" }
[Vollibrespot] : Connecting to AP "gew1-accesspoint-a-dpb2.ap.spotify.com:443"
[Vollibrespot] : Authenticated as "1167037385" !
[Vollibrespot] : Setting up new mixer: card:hw:2 mixer:Digital index:0
[Vollibrespot] : Alsa Mixer info min: 0 (MilliBel(-9999999)[dB]) -- max: 207 (MilliBel(0)[dB]) HW: true
[Vollibrespot] : Using alsa sink
[Vollibrespot] : Metadata pipe established
[Vollibrespot] : Country: "GB"
[Vollibrespot] : Event: Volume { volume_to_mixer: 16383 }
[Vollibrespot] : Fetching autoplay context uri
[Vollibrespot] : Event: SessionActive { became_active_at: 1638207407785 }
[Vollibrespot] : SessionActive!
[Vollibrespot] : Event: PlaybackStarted { track_id: SpotifyId { id: 316107200284235207208001193206148091926, audio_type: Track } }
[Vollibrespot] : Event: PlaybackLoading { track_id: SpotifyId { id: 316107200284235207208001193206148091926, audio_type: Track } }
[Vollibrespot] : error 403 for uri hm://keymaster/token/authenticated?client_id=4ced2e7c73484127be5d36015752eb43&scope=streaming,user-read-playback-state,user-modify-playback-state,user-read-currently-playing,user-read-private
[Vollibrespot] : Error: MercuryError
[Vollibrespot] : Autoplay uri resolved to <"spotify:station:album:7ipY0pDn2DQBP8F3q8wC2a">
[Vollibrespot] : Resolving uri "spotify:station:album:7ipY0pDn2DQBP8F3q8wC2a"
thread 'main' panicked at 'cannot poll Map twice', /build/cache/registry/src/github.com-1ecc6299db9ec823/futures-0.1.29/src/future/map.rs:35:29
stack backtrace:
0:   0x9ec33c - backtrace::backtrace::libunwind::trace::hae21a072c81e5842
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/libunwind.rs:86
1:   0x9ec33c - backtrace::backtrace::trace_unsynchronized::h0f9b260087e46e47
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/mod.rs:66
2:   0x9ec33c - std::sys_common::backtrace::_print_fmt::hbf1a59173a7860c3
at src/libstd/sys_common/backtrace.rs:78
3:   0x9ec33c - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::he1a5d6f378e506c4
at src/libstd/sys_common/backtrace.rs:59
4:   0xa0cd5c - core::fmt::write::hb37ae5a5e0b70623
at src/libcore/fmt/mod.rs:1076
5:   0x9e5c64 - std::io::Write::write_fmt::ha24bb3f5a858327b
at src/libstd/io/mod.rs:1537
6:   0x9ee974 - std::sys_common::backtrace::_print::h47b03aa1342833e3
at src/libstd/sys_common/backtrace.rs:62
7:   0x9ee974 - std::sys_common::backtrace::print::h2217cbc390250439
at src/libstd/sys_common/backtrace.rs:49
8:   0x9ee974 - std::panicking::default_hook::{{closure}}::h179f5229ea1c8e30
at src/libstd/panicking.rs:198
9:   0x9ee640 - std::panicking::default_hook::h46ab82039cbc65eb
at src/libstd/panicking.rs:217
10:   0x9ef054 - std::panicking::rust_panic_with_hook::h7326c48419bc7c33
at src/libstd/panicking.rs:526
11:   0x9eec54 - rust_begin_unwind
at src/libstd/panicking.rs:437
12:   0xa0a594 - core::panicking::panic_fmt::ha292e19d5ae716ed
at src/libcore/panicking.rs:85
13:   0xa0a370 - core::option::expect_failed::he9e39f8f5ba60ecb
at src/libcore/option.rs:1261
14:   0x6e0bf8 - <futures::future::map::Map<A,F> as futures::future::Future>::poll::h3d56b212ca27d9e4
15:   0x5963a4 - <librespot_connect::spirc::SpircTask as futures::future::Future>::poll::ha2e91a6b75c719f3
16:   0x50cca4 - <vollibrespot::Main as futures::future::Future>::poll::hc5e7d2d1b7dbef13
17:   0x4d4844 - futures::task_impl::std::set::h8f081cf0436110c9
volspotconnect2.service: main process exited, code=exited, status=101/n/a
Unit volspotconnect2.service entered failed state.
18:   0x4e841c - std::thread::local::LocalKey<T>::with::h711a13323aafc45a
19:   0x4c4a50 - tokio_current_thread::Entered<P>::block_on::h339073902a399eb7
20:   0x4e8e00 - std::thread::local::LocalKey<T>::with::hff64c13ccfec5327
21:   0x4f520c - tokio_reactor::with_default::h7ef12e65cb103d2f
22:   0x4c89f8 - tokio::runtime::current_thread::runtime::Runtime::block_on::h043f136d6b8cf48f
23:   0x50e2c8 - vollibrespot::main::h02a0d49d4cc5eaa6
24:   0x4f5f18 - std::rt::lang_start::{{closure}}::h279cd2b7929fdba7
25:   0x9ef404 - std::rt::lang_start_internal::{{closure}}::he93bfc404849b78a
at src/libstd/rt.rs:52
26:   0x9ef404 - std::panicking::try::do_call::h6e9e98f4078affb0
at src/libstd/panicking.rs:348
27:   0x9ef404 - std::panicking::try::h2e68d4f7f799a6df
at src/libstd/panicking.rs:325
28:   0x9ef404 - std::panic::catch_unwind::h8880a4c07cc66391
at src/libstd/panic.rs:394
29:   0x9ef404 - std::rt::lang_start_internal::hf4ae2140248bf16b
at src/libstd/rt.rs:51
30:   0x50ed84 - main
31: 0x76c5d678 - __libc_start_main
[Vollibrespot] : EventSender disconnected
volspotconnect2.service holdoff time over, scheduling restart.
Stopping Volspotconnect2 Daemon...
Starting Volspotconnect2 Daemon...
Started Volspotconnect2 Daemon.
vollibrespot v0.2.2 cd96399 2020-10-07 (librespot 08d8bcc 2020-10-07) -- Built On 2020-10-07
Reading Config from "volspotify.toml"
[Vollibrespot] : Using Alsa backend with device: plughw:2
[Vollibrespot] : Failed to register IPv6 receiver: Os { code: 19, kind: Other, message: "No such device" }

Shuffle state on volumio not correct

When I start plying something via spotify connect and shuffle is on, the icon on volumio does not represent this state. I can change shuffle in spotify via the gui of volumio in spotify connect mode though. This is not a real issue, rather icing on the cake.

volumio invisible on spotify Android app

I like this plug in very much , but as of since volumio version 2.699 the plug isnt working correctly.
The problem is that with the android app for spotify, the volumio device cannot be chosen anymore since it is not visible in the connect list.
However, and i am not sure if this is related, when running spotify on a webbrowser (open spotify web) it still is possible to see volumio in the connect list. And it still works in that scenario.
When one would then switch back to the spotify android app on ones phone, one can see the volumio device again! But as soon as you stop the music for more than a minute, the android app cannot find volumio anymore.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.