Hallo Gemeinschaft!
dieses Thema soll der Entwicklung eines Moduls für Soundcloud dienen. Es sollen Ideen gesammelt und (wenn möglich) auch umgesetzt werden. Die aktuelle Testversion gibt es hier auch.
Dafür bitte ich um etwas Mithilfe bei der Weiterentwicklung (z.B. set Befehle der einzelnen Player zur Übergabe der Streaming URI). Aber auch für weitere Ideen bin ich offen.
Vorausetzung um überhaupt mit der Soundcloud API kommunizieren zu können ist ein vorhandener API Key. Diesen bekommt man wenn man bei Soundcloud als angemeldeter Benutzer auf diese Seite (https://soundcloud.com/you/apps) geht. Hier kann man eine neue App registrieren und bekommt dann zwei Keys. Benötigt wird dann die "Client ID".
Soundcloud hat es nun seit einiger Zeit etwas schwerer gemacht an einen solchen API Key zu kommen. Man muss sich nun suzusagen dafür anmelden. Als ich vor einiger Zeit den Key registriert hatte war das noch nicht so, da wurde der Key gleich direkt generiert und sofort angezeigt. Also am Besten schnell mal für einen Key registrieren...
Nun aber zum eigentlichen Modul.
Nach einigen Überlegungen, Probieren und internen Umbauten im Modul habe ich mich für eine Master->Client Architektur entschieden, ähnlich wie bei RESIDENTS. Die Idee dahinter ist, dass man nur ein Master Device anlegt, welches im Prinzip erst einmal nur den API Key beherbergt und ein paar übergeordnete Attribute (Default Player, Artwork Size, Player CMDs), welche sich dann noch einmal pro später anzulegendem Soundcloud Client (Benutzer) überschreiben lassen.
Nachdem das Soundcloud Master Device mit "define mySC Soundcloud <YOUR-SOUNDCLOUD-API-KEY>" angelegt wurde kann man im Master die Clients erstellen mit "set mySC createUser <SOUNDCLOUD-USERNAME/ID> [INTERVAL]".
Damit wird ein neuer Client mit dem Namen "sc_user_<name>" und mit "IODev mySC" angelegt. Mit optional übergebenen Interval in Sekunden kann ein automatisches Polling aktiviert werden.
Beim Anlegen des Client werden automatisch die Soundcloud Benutzerinformationen und verfügbaren Tracks abgerufen und als Readings im Client abgelegt. Die Benutzerinfos sind Readings mit normalen Textinhalten. Die Readings für die Tracks (pro Track ein Reading) enthalten das JSON des jeweiligen Tracks.
Ebenso wird beim Anlegen des Clients auch automatisch ein weblink mit Namen "wl_sc_user_<name>_profile" und "wl_sc_user_<name>_tracks" für den Client erzeugt. Diese erstellen eine HTML Ansicht aller Tracks eines Client mit Artwork, Permalink, Downloadlink, Playback count und und und ..... anhand des JSON aus den Track Readings oder eine HTML Ansicht aller User Informationen
Mit "set mySC deleteUser <SOUNDCLOUD-USERNAME/ID>" wird ein Client samt seines verknüpften weblink gelöscht. Der weblink wird auch gelöscht wenn man die Clients normal über FHEM löscht.
Mein FHEM läuft auf der aktuellen Raspbian Version Jessie mit allen Updates und Perl Version v5.20.2.
Des Weiteren muss auf Eurem FHEM Host das Perl Modul JSON installiert sein.
Die Installation geht auf dem RPi mit:
sudo apt-get install libjson-perl
Was das Modul schon kann:
- Master anlegen per API Key oder OAuth-Token
- Clients anlegen mit optionalem Polling Interval
- Userinfos im Client als Readings anzeigen
verfügbare Tracks des angelegten User im Client als Readings anzeigen (JSON) - entfernt da die Readingsliste unendlich lang werden konnte, alle Track Meta Daten sind in den Internals verfügbar- Abspielen auf beliebigen streamingfähigen FHEM Device, evtl. muss ein entsprechendes Kommando für das Abspielen des Streams im Attribut scPlayUriCmds hinterlegt werden
- Abspielen aus dem Soundcloud Client heraus anhand der Track ID
- Abspielen aus dem weblink - bei jedem Track steht ein Dropdown mit den definierten Playern zur Verfügung und daneben befindet sich ein Play Button
automatisches Erzeugen eines von weblinks pro Client zur HTML Anzeige des Benutzerprofils/Track/Favoriten/Playlists- Löschen von Clients aus Master heraus (Client und verknüpfte weblinks werden gelöscht)
- "get <name> update profile" für Clients um die Benutzerinfos manuell zu aktualisieren
- "get <name> update tracks" für Clients um die Trackinfos des Benutzers manuell zu aktualisieren
- "get <name> update favorites" für Clients um die Favoritesinfos des Benutzers manuell zu aktualisieren
- "get <name> update playlists" für Clients um die Playlistinfos des Benutzers manuell zu aktualisieren
- Attribut scPlayers in Master und Client (Client Attribut hat Vorrang, im Master ist global als Fallback) - zur Angabe von möglichen Playern (kommaseparierte Liste)
- Attribut scPlayUriCmd in Master und Client (Client Attribut hat Vorrang, im Master ist global als Fallback) - zur Angabe von möglichen PlayURI Kommandos für Player (kommaseparierte Liste, selbe Reihenfolge wie scPlayers)
(FEATURE IST NOCH NICHT FERTIG) - Attribut scArtworkSize in Master und Client (Client Attribut hat Vorrang, im Master ist global als Fallback) - Voreinstellung der Artwork Größe für den weblink (es wird tatsächlich eine andere Bildgröße geladen, nicht skaliert), ein Dropdown mit allen zur Verfügung stehenden Größen ist vorhanden
- Attribut scAvatarSize in Master und Client (Client Attribut hat Vorrang, im Master ist global als Fallback) - Voreinstellung der Avatar Größe für den weblink (es wird tatsächlich eine andere Bildgröße geladen, nicht skaliert), ein Dropdown mit allen zur Verfügung stehenden Größen ist vorhanden
- Attribut scUpdate in Master und Client (Client Attribut hat Vorrang, im Master ist global als Fallback) - damit kann bestimmt werden welche Informationen beim Define/Update eines Users automatisch mit abgerufen werden sollen
- das Modul ist nonblocking
- eine aktuelle commandref ist auch mit dabei
Was noch fehlt bzw. verbessert werden soll und Fehler:
- Feature (coming very soon): besseres rename Handling
Playlisten einbinden???- ......
Abspielen funktioniert noch nicht richtig, zumindest auf SonosFeature (coming very soon): fehlerhafte Eingaben beim Setzen von Attributen abfangenFeature (coming very soon): Abspielen eines Tracks auf bestimmtem Player aus weblink heraus
Das Device wird so definiert:
define mySC Soundcloud <YOUR-SOUNDCLOUD-API-KEY/OAUTH-TOKEN>
Benutzer anlegen mit optionalem Interval in Sekunden:
set mySC createUser <SOUNDCLOUD-USERNAME/ID> [INTERVAL]
Benutzer löschen (Dropdown verfügbar):
set mySC deleteUser <SOUNDCLOUD-USERNAME/ID>
Würde mich sehr freuen wenn das Modul von dem einen oder der anderen mal getestet wird und entsprechendes Feedback kommt. Sehr gerne auch Ideen zur Entwicklung.
Viel Spaß damit.
Gruß
Dan
UPDATE 1
- neuer weblink für Profilanzeige - wird automatisch beim createUser mit angelegt und auch gelöscht wenn der User gelöscht wird
- neues Attribut scAvatarSize
- Aktualisierung commandref
UPDATE 6.11.2016
- Abspielen auf Sonos funktioniert nun! Leider dauert es ein paar Sekunden bis der Stream abgespielt wird, da erst nonblocking die wirkliche Adresse des CDN ermittelt wird und diese dann dem Player übergeben wird. Anders funktioniert es leider nicht!
- beliebige streamingfähige Player können nun benutzt werden sofern sie als FHEM Device zur Verfügung stehen
- Player Dropdown und Play Button im HTML für jeden Track bereitgestellt, somit kann sofort der jeweilige Track auf dem ausgewählten Player abgespielt werden
- Eingaben in Attributen werden nun validiert
- API key wird beim Definieren geprüft ob er valide ist, Master Device nimmt bei validem API Key den STATE connected an
- Clients/User lassen sich ohne validen API key und ohne Master Device nicht mehr anlegen
- beim Anlegen von Clients/Usern wird geprüft ob diese wirklich existieren, wenn sie nicht existieren werden sie zwar angelegt, bekommen aber gleich den STATE "resource not found" und es werden auch keine weblinks angelegt
- Fehler in den Variablenzuweisungen behoben
- weblinks werden erst angelegt sobald die Readings dafür erstellt wurden, hat der User keine Tracks wird auch kein weblink dafür erstellt
- set für play wird nun nur noch angezeigt wenn Tracks vorhanden sind und auch mindestens ein Player konfiguriert ist
- Description im Profil weblink ergänzt
- Größenangaben für Avatar und Artwork im HTML hinzugefügt
- Aktualisierung commandref
UPDATE 14.11.2016
- statt eines API Keys (client_id) kann nun auch ein OAuth-Token zum Anlegen des Master Device benutzt werden
- Playlists der angelegten Soundcloud User können nun ebenfalls abgerufen werden, ein Reading user_playlists mit den IDs der Playlists wird angelegt
- alle Metainformationen zu Tracks, Favorites und Playlists werden nun nicht mehr als Readings abgelegt, sondern nur noch in den Internals und sind somit in den Details nicht mehr sichtbar - dieser Schritt war nötig um die Readings nicht nutzlos aufzublähen
- neues Attribut scUpdate, damit kann bestimmt werden welche Informationen beim Define/Update eines Users automatisch mit abgerufen werden sollen
- es werden nun automatisch keine weblinks mehr erzeugt, diese können nun im jeweiligen Device mit "set <name> weblinkCreate <weblinkname> [weblinkname]" angelegt werden
- neue Funktion für weblink Tracklist/Favorites-Mini, stellt eine nummerierte Tabelle aller Track-/Favoritesnamen eines Users dar mit der Tracklänge, den Playern und dem Play Button, der Name ist verlinkt auf die Soundcloud Webseite
- neue Funktion für weblink Playlists, stellt eine nummerierte Tabelle aller Playlists eines Users dar mit den jeweiligen Tracks, der Tracklänge, den Playern und dem Play Button, der Name ist verlinkt auf die Soundcloud Webseite
- Sekunden bei Laufzeit ergänzt
- play Befehle für SB_PLAYER hinzugefügt
- Player dropdown wird nun ausgeblendet wenn nur ein Player verfügbar ist, es wird nur der Play Button angezeigt
- in IODev steckt nun der Hash und nicht nur der Name
- Aktualisierung commandref
Hab im ersten Beitrag noch die vergessenen Screenshots angefügt.
Gruß
Dan
Hab schon das erste kleine Update im ersten Beitrag hochgeladen.
Es wurde die HTML Funktion um eine Profilanzeige erweitert und es wird ein entsprechender weblink beim createUser mit angelegt.
Gruß
Dan
Das erste große Update für das Modul ist heute noch fertig geworden.
Es handelt sich hauptsächlich um das Abfangen von fehlerhaften Eingaben, aber auch ein paar Features sind dazu gekommen.
Die Modulversion und die Screenshots im ersten Beitrag habe ich aktualisiert.
Changelog:
- Abspielen auf Sonos funktioniert nun! Leider dauert es ein paar Sekunden bis der Stream abgespielt wird, da erst nonblocking die wirkliche Adresse des CDN ermittelt wird und diese dann dem Player übergeben wird. Anders funktioniert es leider nicht!
- beliebige streamingfähige Player können nun benutzt werden sofern sie als FHEM Device zur Verfügung stehen
- Player Dropdown und Play Button im HTML für jeden Track bereitgestellt, somit kann sofort der jeweilige Track auf dem ausgewählten Player abgespielt werden
- Eingaben in Attributen werden nun validiert
- API key wird beim Definieren geprüft ob er valide ist, Master Device nimmt bei validem API Key den STATE connected an
- Clients/User lassen sich ohne validen API key und ohne Master Device nicht mehr anlegen
- beim Anlegen von Clients/Usern wird geprüft ob diese wirklich existieren, wenn sie nicht existieren werden sie zwar angelegt, bekommen aber gleich den STATE "resource not found" und es werden auch keine weblinks angelegt
- Fehler in den Variablenzuweisungen behoben
- weblinks werden erst angelegt sobald die Readings dafür erstellt wurden, hat der User keine Tracks wird auch kein weblink dafür erstellt
- set für play wird nun nur noch angezeigt wenn Tracks vorhanden sind und auch mindestens ein Player konfiguriert ist
- Description im Profil weblink ergänzt
- Größenangaben für Avatar und Artwork im HTML hinzugefügt
- Aktualisierung commandref
Gruß
Dan
So jetzt wird hier weiter diskutiert ;D. Also vor einer weile hab ich mal einen Api Key einfach so bekommen für Squeezecloud. der Link dazu funktioniert auch immer noch. Dadurch habe ich einen Key der genau für Squeezecloud funktioniert. Leider ist der nicht kompatibel für dieses Modul. Bekomme als Antwort: API key not valid?
Die App registrierung dauert dazu leider ewig und es ist nicht garantiert einen key zu bekommen.
Grüße
Um den API Key beim Anlegen zu validieren rufe ich einmalig die Seite https://api.soundcloud.com/apps?client_id=YOUR_CLIENT_ID auf. Dann prüfe ich ob ein Ergebnis kommt! Wenn kein Ergebnis kommt, dann ist der API Key nicht gültig. So war zumindest meine Herangehensweise. Evtl. kannst Du die URL mal mit deinem Key manuell testen? Bekommst Du dann JSON zurück oder eine leere Seite? Oder was ganz anderes?
Gruß
Dan
ZitatUm den API Key beim Anlegen zu validieren rufe ich einmalig die Seite https://api.soundcloud.com/apps?client_id=YOUR_CLIENT_ID auf. Dann prüfe ich ob ein Ergebnis kommt! Wenn kein Ergebnis kommt, dann ist der API Key nicht gültig
Bekomme eine leere Seite zurück. Aber der Key muss ja funktionieren, da er für ein anderes Plugin geht.
Grüße
Keine Ahnung was Du da für einen Key hast und wie Squeezecloud den benutzt!
Offensichtlich geht das nicht über https://api.soundcloud.com, sonst würde der Key dort funktionieren.
EDIT: Vielleicht muss Dein Key um zu funktionieren einen Referer von Squeezecloud haben...
Gruß
Dan
P.S. Bin gerade am überlegen das, eigentlich schöne, Projekt aufzugeben wenn die sich bei Soundcloud mit den Keys so zieren. Schön ein Modul zu bauen was dann keiner benutzen kann... :-\
ZitatP.S. Bin gerade am überlegen das, eigentlich schöne, Projekt aufzugeben wenn die sich bei Soundcloud mit den Keys so zieren. Schön ein Modul zu bauen was dann keiner benutzen kann... :-\
Würde ich schade finden. Ich glaube es funktioniert jetzt anders bei Soundcloud. Wenn du eine App hast, dann kann man einen Bereich einrichten, auf dem Keys vergeben werden genau für deine APP.
Jedenfalls ist es bei meinem Squeezecould Beispiel so. In Wahrheit leitet mich der Link für den Api Key auf eine seite von soundcloud weiter und die dann auf Github ???
Grüße
Ich möchte gerade auch gar nicht aufhören!
Es funktioniert so gut bisher und ich habe noch ein paar Ideen wie ich noch was umbauen/hinzufügen kann.
Bin gerade an den Favorites und den Playlists dran um die noch elegant verfügbar zu machen.
Gruß
Dan
Ist ja an und für sich auch Top. Nur uss der Zugriff stimmen.
Wenn du magst kann ich dem Support von Soundcloud ja mal schreiben?
Grüße
Zitat von: Syrex-o am 07 November 2016, 21:32:52
Ist ja an und für sich auch Top. Nur uss der Zugriff stimmen.
Wenn du magst kann ich dem Support von Soundcloud ja mal schreiben?
Grüße
Das musst Du wissen ob Du die anschrei(b)en willst! ::)
Wartest ja eigentlich nun lange genug!
Gruß
Dan
Favoriten sind nun auch fertig integriert.
Die automatische Erstellung der weblinks habe ich rausgenommen.
Die kann man jetzt, bei Bedarf, aus dem Client Device heraus erzeugen (mehrere stehen zur Auswahl, auch eine mini Version für die Tracks und Favorites).
Ich schaue mir jetzt noch an ob und wie ich die Playlists optisch aufbereiten könnte, das sind pro Playlist eine Menge Daten die jetzt alle pro Playlist in einem Reading stecken... ::)
Sobald ich damit fertig bin werde ich das Modul im ersten Beitrag aktualisieren.
Gruß
Dan
shoutout to CHrisD für die Nachricht.
@DeepSPe, es ist möglich die Squeezeboxen mit einzubinden, aber .
Die genaue Bezeichnung dafür wäre: set <player> playlist play <url>
Damit solltest du ja schon was anfangen können.
Grüße
Zitat von: Syrex-o am 08 November 2016, 12:22:59
shoutout to CHrisD für die Nachricht.
Darf man erfahren was für eine Nachricht?
Zitat von: Syrex-o am 08 November 2016, 12:22:59
@DeepSPe, es ist möglich die Squeezeboxen mit einzubinden, aber .
Die genaue Bezeichnung dafür wäre: set <player> playlist play <url>
Damit solltest du ja schon was anfangen können.
Grüße
Damit kann ich schon halbwegs etwas anfangen.
Da es für Squeezebox keinen Eintrag in der commandref gibt, benötige ich noch den genauen Modulnamen. Am besten auch woher Du das Modul hast. Hab nämlich keine Lust mir die Daten für jedes "nicht-offizielle" Modul aus dem Forum zusammen zu suchen.
Danke.
Gruß
Dan
ChrisD hat geschrieben, dass URL übergeben funktioniert.
Genauer Modulname müsste 98_SB_PLAYER sein. Bin aber nicht ganz sicher.
Bin am Handy in der Uni.
Google einfach mal fhem squeezebox. Da kommt sofort das Wiki mit den genauen Bezeichnungen.
Grüße
Gesendet von meinem HTC One M8 mit Tapatalk
Zitat von: Syrex-o am 08 November 2016, 12:22:59
@DeepSPe, es ist möglich die Squeezeboxen mit einzubinden, aber .
Die genaue Bezeichnung dafür wäre: set <player> playlist play <url>
Damit solltest du ja schon was anfangen können.
Grüße
So wie ich das sehe können nur lokale Dateien mit file:// abgespielt werden!
Irre ich mich?
Mit Modulname meine ich das was beim angelegten Device in den Internals unter TYPE steht!
Ist das dann SB_PLAYER?
Hattest Du mal bei SC angefragt wegen Deinem Key?
Gruß
Dan
ZitatHattest Du mal bei SC angefragt wegen Deinem Key?
Jop hab ich. Antwort lässt bestimmt auf sich warten.
ZitatMit Modulname meine ich das was beim angelegten Device in den Internals unter TYPE steht!
Ist das dann SB_PLAYER?
Also alles was man braucht ist folgendes:
- 98_SB_Player.pm (Player Modul)
- zur verständlichkeit: Alles was variablen sind in <>
- set <playername> playlist <play> <url>
ZitatMit Modulname meine ich das was beim angelegten Device in den Internals unter TYPE steht!
Ist das dann SB_PLAYER?
Jop.
Grüße
Zitat von: Syrex-o am 08 November 2016, 16:13:42
Also alles was man braucht ist folgendes:
- 98_SB_Player.pm (Player Modul)
- zur verständlichkeit: Alles was variablen sind in <>
- set <playername> playlist <play> <url>
Das ist mir schon klar!
Die set Befehle habe ich auch im Wiki gefunden.
So richtig verstehe ich es aber nicht warum ein doppelter set Befehl nötig ist (playlist play). Bei meinem Sonos reicht dazu ein einfacher Befehl (PlayURI).
Zitat von: DeeSPe am 08 November 2016, 14:42:36
So wie ich das sehe können nur lokale Dateien mit file:// abgespielt werden!
Irre ich mich?
Kannst Du bitte diese Frage noch beantworten?
Danke.
Gruß
Dan
ZitatKannst Du bitte diese Frage noch beantworten?
Hab es jetzt auf so ziemlich jede erdenklich weise probiert, jedoch können url files nur abgespielt werden, wenn die Endung eindeutig auf audio hinweist. .pls funktioniert sicher und lokale mp3 files auch. Jedoch ist es bei Soundcloud Liedern nicht möglich. Vielleicht lässt sich da ja noch eine Lösung finden.
Grüße
Wenn es nur die Möglichkeit gibt lokale Dateien abzuspielen, kann ich mir nur vorstellen vorher einen Download zu initiieren und dann diese lokale Datei abzuspielen. Das ist aber leider keine schöne Lösung da es dann dauert bis die Datei heruntergeladen ist.
Gruß
Dan
P.S. Die Integration der Playlists bereitet mir doch mehr Kopfschmerzen als gedacht.Sobald ich das geschafft habe, gibt es das Update für's Modul.
ZitatWenn es nur die Möglichkeit gibt lokale Dateien abzuspielen, kann ich mir nur vorstellen vorher einen Download zu initiieren und dann diese lokale Datei abzuspielen. Das ist aber leider keine schöne Lösung da es dann dauert bis die Datei heruntergeladen ist.
Finde ich ehrlich gesagt ungünstig.
Ich hab eventuell eine Idee wie es anders funktionieren könnte....
(Feedback folgt)
Die persönlichen Likes können alle schon automatisch abgespielt werden.
Grüße
Hallo,
ZitatSo richtig verstehe ich es aber nicht warum ein doppelter set Befehl nötig ist (playlist play). Bei meinem Sonos reicht dazu ein einfacher Befehl (PlayURI).
Die Befehle wurden vor sehr langer Zeit vom Entwicklerteam bei Logitech so festgelegt, das FHEM-Modul verwendet genau die gleiche Syntax weil diese bestens dokumentiert ist.
ZitatThe "playlist play" command puts the specified song URL, playlist or directory contents into the current playlist and plays starting at the first item. Any songs previously in the playlist are discarded.
Wieso Sonos einen getrennten Befehl für URLs benötigt weiß ich nicht, der LMS entscheidet selbst anhand des übergebenen Wertes ob es eine lokale Datei ist oder ein Internet-Stream ist.
Grüße,
ChrisD
Zitat von: ChrisD am 09 November 2016, 17:06:58
Wieso Sonos einen getrennten Befehl für URLs benötigt weiß ich nicht, der LMS entscheidet selbst anhand des übergebenen Wertes ob es eine lokale Datei ist oder ein Internet-Stream ist.
Danke für die Erklärung ChrisD.
Bei Sonos ist es kein getrennter Befehl, sondern DER Befehl.
Sonos hat keinen eigenen Speicher! Für den/die ist im Prinzip alles ein Stream!
Gruß
Dan
Da Du, ChrisD, schon einmal hier bist! 8)
Was wird konkret erwartet bei "playlist play"?
m3u, pls oder gar eine andere Liste?
Können in der Liste nur lokale oder auch Resourcen per http(s) angegeben werden?
Danke.
Gruß
Dan
Hallo,
Es kann alles angegeben werden was in irgendeiner Form als Audio erkennbar ist:
playlist play /music/abba/01_Voulez_Vous.mp3
playlist play /playlists/abba.m3u
playlist play http://www.abc.net.au/res/streaming/audio/mp3/local_melbourne.pls
https funktioniert nicht immer, wieso kann ich dir aber nicht sagen.
Grüße,
ChrisD
Vielen Dank für die Info ChrisD!
Leider zeigen alle Streaming URLs der Soundcloud API auf https://....................
Habe jetzt auch soweit die Playlisten integriert, bin aber mit den wahnsinnig langen Readings der Playlisten noch nicht so glücklich.
Überlege mir mal noch was wie die sich kürzen lassen könnten.
Gruß
Dan
Gibt es denn schon jemanden der mittlerweile einen API Key bekommen hat?
Gruß
Dan
@DeeSPe
Im Punkt API key sieht's noch schlecht aus.
Jedoch könnte es im Punkt URL Eingabe bald besser aussehen.
Grüße
Hallo,
Ich habe mich zu Testzwecken bei Soundcloud angemeldet. Da es nicht so einfach ist einen API-Key zu bekommen habe ich das Modul so geändert dass ich das OAuth-Token welches ich für das SqueezeBox-Plugin bekommen habe verwenden kann.
Damit kann ich mich verbinden und User anlegen (mit DeeSPe getestet). Was aber nicht funktioniert ist User mit Leerzeichen im Namen anzulegen. Edit: Wenn man den Namen aus der Profile-URL nimmt geht es.
Ich habe dann versucht die Wiedergabe über die SqueezeBox-Player zu starten was aber mit dem Attribut scPlayUriCmds nicht möglich ist da hier keine Leerzeichen erlaubt sind. Ich habe daher die Zeile
$cmd = "playlist play" if ($ptype =~ /^SB_PLAYER$/);
im Modul hinzugefügt wodurch die Wiedergabe auf den Playern (trotz https) funktioniert.
Grüße,
ChrisD
Hi ChrisD,
cool dass Du so aktiv dabei bist.
Mit dem OAuth-Token hatte ich noch gar nicht rumprobiert. Wenn das damit klappt, baue ich das natürlich ein!!!
Hab sowieso gerade noch ein Riesenupdate in der mache, da werde ich die von Dir gemeldeten Unzulänglichkeiten abstellen und auch den Befehl für Dein Modul mit einbauen.
Vielen Dank!!!!!! 8)
Gruß
Dan
Mittlerweile habe ich nochmal Einiges modulintern umstrukturiert.
Wenn ich alles noch einmal ausreichend getestet und dokumentiert habe, dann gibt es heute Abend noch ein großes Update.
Mit dem nächsten Update wird es möglich sein statt einem API Key (client_id) auch einen OAuth-Token zu benutzen.
Vieles Weiteres hat sich verbessert/verändert. Mehr dazu aber heute Abend.
Gruß
Dan
Das Modul im ersten Beitrag ist aktualisiert.
Danke auch an ChrisD für die Verbesserungsvorschläge!
WICHTIG:Bitte vor dem Einspielen des Modul alle Soundcloud User Devices und auch das Master Device löschen und mit dem neuen Modul neu anlegen. Das ist nötig da sich intern sehr viel verändert hat und es sonst zu unerwarteten Auswirkungen kommen kann.
Changelog:
- statt eines API Keys (client_id) kann nun auch ein OAuth-Token zum Anlegen des Master Device benutzt werden
- Playlists der angelegten Soundcloud User können nun ebenfalls abgerufen werden, ein Reading user_playlists mit den IDs der Playlists wird angelegt
- alle Metainformationen zu Tracks, Favorites und Playlists werden nun nicht mehr als Readings abgelegt, sondern nur noch in den Internals und sind somit in den Details nicht mehr sichtbar - dieser Schritt war nötig um die Readings nicht nutzlos aufzublähen
- neues Attribut scUpdate, damit kann bestimmt werden welche Informationen beim Define/Update eines Users automatisch mit abgerufen werden sollen
- es werden nun automatisch keine weblinks mehr erzeugt, diese können nun im jeweiligen Device mit "set <name> weblinkCreate <weblinkname> [weblinkname]" angelegt werden
- neue Funktion für weblink Tracklist/Favorites-Mini, stellt eine nummerierte Tabelle aller Track-/Favoritesnamen eines Users dar mit der Tracklänge, den Playern und dem Play Button, der Name ist verlinkt auf die Soundcloud Webseite
- neue Funktion für weblink Playlists, stellt eine nummerierte Tabelle aller Playlists eines Users dar mit den jeweiligen Tracks, der Tracklänge, den Playern und dem Play Button, der Name ist verlinkt auf die Soundcloud Webseite
- Sekunden bei Laufzeit ergänzt
- play Befehle für SB_PLAYER hinzugefügt
- Player dropdown wird nun ausgeblendet wenn nur ein Player verfügbar ist, es wird nur der Play Button angezeigt
- in IODev steckt nun der Hash und nicht nur der Name
- Aktualisierung commandref
Gruß
Dan
Soundcloud war nun endlich so freundlich und hat mir meine App genehmigt.
Ausprobiert, User angelegt, Player definiert, läuft sofort.
Hat sich eigentlich schon die Problematik mit den Playlisten und den Likes lösen lassen?
Oder ist das Projekt eingeschlafen?
Momentan ist Soundcloud ja sowieso im Wandel und führt "Premium ein" ???
Grüße
Leider ist das Projekt eingeschlafen da es niemand geschafft hat einen API Key zu bekommen.
Ohne mögliche User ist das Modul leider nutzlos. >:(
Gruß
Dan
Also bei mir hat es jetzt zwar ein halbes Jahr gedauert, aber ich habe den Key bekommen. ;D
hallo,
nochmal zum thema soundcloud. es gibt einen alexa skill den man sich selber zusammenbasteln muss https://github.com/paszin/alexa-soundcloud (https://github.com/paszin/alexa-soundcloud). in diesem skill hat der User seine CliendID hinterlegt.
Wäre es hiermit evtl möglich das man das Modul nochmal nutzen könnte? der Master steht auf connected, aber es wird kein weiterer Slave angelegt.
Evtl hat ja jemand auch den Alexa Skill zum laufen bekommen ( ich hatte da leider keinen Erfolg mit )