Software Remote Control

Spotify Playlists via CMD (Windows) starten

Ein leidiges Thema. Spotify hat entschieden, aus ihrer WebAPI den ?autoplay=true Parameter zu entfernen und zudem seit Jahren verweigert, den internen URI-Strings (spotify:user:1127305634:playlist:3lkIiRdgtZPbMjRHxbqnRv) einen Autoplay-Parameter zu verpassen. De Facto können wir also ohne User-Interaktion keine Playlists mehr starten. Meh.

 

Proof of Concept

Bis heute. Ich präsentiere, die .NET SpotifyAPI.Local, die sich via VBS ansprechen lässt, weil sie lediglich eine kompilierte DLL ist. Und das hilft uns, weil wir somit einen Client in der Wohnung mit FHEM ansprechen können. Kurzum: Funk > Spotify auf einem spezifischen Client.

 Autostarten einer Playlist

Sobald wir versuchen, eine Interaktion zu faken, z.B. mittels VBS:

Set WshShell = WScript.CreateObject(„WScript.Shell“)
Comandline = „C:\Users\Max\AppData\Roaming\Spotify\Spotify.exe“
WScript.sleep 500
CreateObject(„WScript.Shell“).Run(„spotify:user:8aller:playlist:4aoBDuMJnk4Oza13a8Fnbo“)
WScript.sleep 3000
WshShell.SendKeys “ „

kommen wir schnell zu dem Schluss, dass Spotify schlichtweg keinen ersten Track einer Playlist auswählt. Man müsste also den Track herausfinden und dann abspielen, aber selbst dann würde er im dazugehörigen Album abgespielt und nicht in der Playlist.

Nun denn, es gibt genügend Wrapper, die die WebAPI benutzen. Abgesehen davon, dass ich nicht unbedingt zwangsläufig online an dem Rechner bin, schien mir das Aufsetzen eines localhosts schon zu viel, wenn ich doch eh den Desktop Client laufen habe. Es gibt genügend Wrapper, die sich in die laufende Spotify.exe hooken, ich habe allerdings nichts gefunden, das komfortabel zu steuern, und vorallem via CMD ansprechbar wäre.

 

.NET SpotifyAPI

Leider meinten es die Entwickler der .NET SpotifyAPI nicht sehr gut mit uns und haben ihren Release nicht für COM interop gebaut und COMVisible ist ebenfalls default auf false. Ist aber auch nicht so schlimm, denn die Sources findet man ebenfalls im Web und ändert es in Visual Studio:
http://johnnycrazy.github.io/SpotifyAPI-NET/

Um die DLL für Windows zu registrieren, muss sie außerdem einen starken Namen als Assembly haben, ist aber ebenfalls in den Properties (unter Build) des Projekts zu finden.

Ihr könnt die neu kompilierte Version hier finden (dann spart ihr euch die Schritte): Click.

 

Die DLL in Windows registrieren

Im Ordner eures .NET Frameworks findet ihr die RegAsm.exe. CMD als Administrator starten und folgendes ausführen:

RegAsm pfad-zur-spotifyapi-dll /codebase

 

VBS Script zur Kommunikation mit der DLL

Da die DLL jetzt in Windows systemweit bereitgestellt wird, können wir sie in einem VisualBasicScript instanzieren und Funktionen aufrufen.

dim spotifyhelper
set spotifyhelper = WScript.CreateObject(„SpotifyAPI.Local.SpotifyLocalAPI“)
spotifyhelper.Connect
spotifyhelper.PlayURL“URL-zur-Playlist“

 

Erweiterung zum Aufruf mit Argument

Da man natürlich keine feste URL in dem Script angeben möchte, lässt sich die VBS-Datei auch mit einem Argument aufrufen, also z.B.:

playlist.vbs https://open.spotify.com/user/1127305634/playlist/78hiHwMUqVqFWLXUJFtDNp

Die dazugehörige VBS ändert sich wie folgt:

spotifyhelper.PlayURL WScript.Arguments(0)

 

Fix für 64-Bit Systeme

Da die SpotifyAPI als 32-Bit kompiliert wird, müsst ihr die VBS-Datei mit csript starten. Die findet ihr in eurem Windows Ordner:

C:\Windows\SysWOW64\cscript.exe

 

Et voilà.

4 Comments

    1. lucee Author

      Hi Peter,
      stimmt, die hab ich wohl vergessen. Bin leider gerade geschäftlich unterwegs, sobald ich in 10-12 Tagen wieder zuhause bin, reiche ich sie nach und informiere dich/euch nochmal.

      Viele Grüße!

      Reply

Leave a Comment

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*