DS Audio / Audiostation - Soundcloud-Integration

Status
Für weitere Antworten geschlossen.

CoRe

Benutzer
Mitglied seit
10. Feb 2011
Beiträge
30
Punkte für Reaktionen
0
Punkte
12
Servus,
bin aktuell auf der Suche nach einer Möglichkeit, Soundcloud in die Audiostation einzubinden.
Da Soundcloud meine Haupt-Musikquelle ist, wäre es super, wenn ich DS Audio nutzen könnte, um Musik von SC abspielen und suchen zu können.

Aktuell nutze ich ein IPhone als Musik-Controller.
Dort ist die Soundcloud-App und die DS-Audio-App installiert und die Musik wird über Airplay auf einen RaspberryPi mit Shairport wiedergegeben.

Da das IPhone an der Wand angebracht ist und im IDLE Rauminformationen anzeigt, wäre es super, wenn man die Musik aus einer App heraus steuern könnte und das nicht vom IPhone abhängig ist sondern auf der DS passiert.
Dann hätte ich eine zentrale Musikquelle, die jederzeit von allen Geräten aus gesteuert werden kann.
Wenn momentan Musik von Soundcloud abgespielt wird, ist das IPhone die Quelle (Airplay) und somit kann ich auch nur am IPhone umschalten.

Ich hoffe, Ihr versteht mein Anliegen und könnt mir weiterhelfen.

Habe schon seit 2 Monaten ein Script laufen, welches mir jede Nacht meine SC-Playlist als MP3 auf die DS lädt und mithilfe der dynamischen Playlist in eine Audio Station Playlist abgleicht.


Gruß
Sandro
 

crun

Benutzer
Mitglied seit
05. Apr 2012
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
Hallo CoRe,

ich habe zwar keine Lösung für dein Problem, bin auf der Suche nach einer ähnlichen Lösung auf diesen Thread gestoßen. Ich möchte Soundcloud von meiner DS ins Netzwerk streamen und mit Airplay Renderer wiedergeben.

Deine aktuelle Lösung interessiert mich aber auch. Kannst Du das näher beschreiben oder das Script zur Verfügung stellen? Ich bin da nicht so fit drin.

Beste Grüße
 

CoRe

Benutzer
Mitglied seit
10. Feb 2011
Beiträge
30
Punkte für Reaktionen
0
Punkte
12
Servus crun,
experimentiere momentan mit MPD auf dem Raspberry, Soundcloud-Plugin und einem eigenen Webinterface für die MPD-Steuerung..

Hier ist mein Soundcloud-Downloader für die DS:

/volume1/MuSiC/Soundcloud/Downloader/soundcloud_downloader.sh
(Läd die MP3s mit Hilfe der Soundcloud_Parser.php herunter, versendet die Benachrichtungsmail und indexiert den Ordner neu um die dynamische Playlist in DS Audio zu aktualisieren. Ausserdem wird vor jedem Download geprüft, ob das ID-File in /volume1/MuSiC/Soundcloud/Downloader/IDs/ schon vorhanden ist, da man so die Datei umbenennen, verschieben etc kann ohne dass die Datei erneut heruntergeladen wird.)
Rich (BBCode):
#!/opt/bin/bash

/usr/bin/php "/volume1/MuSiC/Soundcloud/Downloader/Soundcloud_Parser.php" | while read CMD; do

    DL_LINK=`echo $CMD | awk -F':::' '{print $1}'`
    DL_LINK=`echo $DL_LINK"?client_id=***CLIENTID_VON_SOUNDCLOUD***"`
    DL_TITLE=`echo $CMD | awk -F':::' '{print $2}' | sed 's/\//-/g'`
    DL_ID=`echo $CMD | awk -F':::' '{print $3}'`

    if [ ! -f "/volume1/MuSiC/Soundcloud/Downloader/IDs/$DL_ID - $DL_TITLE" ]
    then
        #echo $DL_ID
        echo $DL_TITLE
        #echo $DL_LINK

        /opt/bin/wget –quiet -O "/volume1/MuSiC/Soundcloud/$DL_TITLE.mp3" $DL_LINK
        /opt/bin/touch "/volume1/MuSiC/Soundcloud/Downloader/IDs/$DL_ID - $DL_TITLE"
        echo -e "$DL_TITLE" | /opt/bin/nail -s "Neuer Track von Soundcloud" "***MAILADRESSE***"

    fi
    done;

/usr/syno/bin/synoindex -R /volume1/MuSiC/Soundcloud/

/volume1/MuSiC/Soundcloud/Downloader/Soundcloud_Parser.php (Läd die XML über die Soundcloud-API und prüft nach MP3s die für den Download freigegeben sind und einen Mindestlänge haben, da ich nur SETS haben möchte)
PHP:
<?php

function formatMilliseconds($milliseconds) {
    $seconds = floor($milliseconds / 1000);
    $minutes = floor($seconds / 60);
    $hours = floor($minutes / 60);
    $milliseconds = $milliseconds % 1000;
    $seconds = $seconds % 60;
    $minutes = $minutes % 60;

    $format = '%u:%02u:%02u.%03u';
    $time = sprintf($format, $hours, $minutes, $seconds, $milliseconds);
    return rtrim($time, '0');
}

function simplexml2array($xml) {
	if (get_class($xml) == 'SimpleXMLElement') {
		$attributes = $xml->attributes();
		foreach($attributes as $k=>$v) {
			if ($v) $a[$k] = (string) $v;
		}
		$x = $xml;
		$xml = get_object_vars($xml);
	}
	if (is_array($xml)) {
		if (count($xml) == 0) return (string) $x; // for CDATA
		foreach($xml as $key=>$value) {
			$r[$key] = $this->simplexml2array($value);
		}
		if (isset($a)) $r['@attributes'] = $a;    // Attributes
		return $r;
	}
	return (string) $xml;
}

$arr = json_decode( json_encode(simplexml_load_file('http://api.soundcloud.com/users/966506/favorites/?client_id=***CLIENTID_VON_SOUNDCLOUD***&limit=9999')) , 1);

foreach($arr['track'] as $track) {
  if (!empty($track['download-url']) && $track['duration'] > 1800000) {
        echo $track['download-url'] . ':::' . $track['title'] . ':::' . $track['id'] . "\n";
    }
}

?>

Joa.. thats it..
Geht wie bei allen Dingen im Leben sicher besser, schneller, einfacher oder cooler..... aber hey.. läuft super zuverlässig und erfüllt seinen Zweck..
Script wird einmal die Nacht über Cron gestartet.

Ich hoffe, dass es irgendwann eine Soundcloudintegration in DS Audio geben wird.. bis dahin läuft das Script und die Erfolgsaussichten für die MPD-Lösung scheinen auch sehr gut zu sein ;)

Grüße
CoRe
 

crun

Benutzer
Mitglied seit
05. Apr 2012
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
Hallo CoRe,

vielen Dank für deine schnelle und umfangreiche Antwort. Ich sehe du hast dich schon eingehend mit dem Thema beschäftigt.

Schreibst Du solche Codes selber, denkst dir diese aus? Ich finde das immer wieder faszinierend. Was ich mir bisher zugetraut habe bestehende nach Vorgabe anzupassen, aber selber etwas zu entwickeln fehlt mir vollkommen die Kenntnis und ich habe auch keine Ahnung in welche Richtung ich mich da einlesen und lernen muss. Also großen Respekt. Ich werde mich also mal mit Deinem geschriebenen auseinandersetzen. Ich lese soviel heraus, dass Du die Playlist von Soundcloud mit Deiner bestehenden auf der DS abgleichst und fehlende freie Sets downloadest? Cooler Ansatz.

Mir würde die Steuerung von Soundcloud aus der Audiostation ausreichen, aber das wäre ja Dein Wunsch auch.

Ich hatte auch schon mal angefragt den Equalizer in der Audiostation für alle Renderer frei zuschalten, da ich mit mehreren Airplayempfängern ohne EQ arbeite. Die erste Antwort war das dies erst mal nicht vorgesehen sei. Vielleicht gibt es ja eine alternative für Audio Station. Bisher habe ich diese aber noch nicht gefunden.

Ich werde mich jetzt mal an Deine Idee wagen und lernen :)

Beste Grüße
 

CoRe

Benutzer
Mitglied seit
10. Feb 2011
Beiträge
30
Punkte für Reaktionen
0
Punkte
12
Hi crun,
ich lerne ständig dazu indem ich zb solche Scripte schreibe und ständig daran arbeite den Code zu verbessern oder um Funktionen zu erweitern..
Alles schreibe ich nicht selbst.. wenn es bereits funktionierende Lösungen gibt, werden Teile übernommen und so umgeschrieben, dass es für meine Bedürfnisse passt.
Man muss das Rad ja nicht neu erfinden.. aus diesem Grund habe ich das Script auch gepostet.. wenn jemand Teile davon nutzen kann (oder das ganze) dann sind alle zufrieden ;)

Wenn du Fragen hast oder Hilfe brauchst, dann sag Bescheid..

Die MPD-Lösung ist nun auch fast fertig und basiert unter anderem auf diesem Script..
Die Files die als DL-Link verfügbar sind kann man so wie sie sind direkt in MPD reinhauen und abspielen..

Das Frontend ist ein Player in PHP und Ajax.. Wird leider keinem viel nutzen, da es Teil meines Heimsteuerungsfrontends ist (2 Raspberrys, IPad, Multiroom-Audio, DS-Anbindung, Funksteckdosen, TempSensoren, PIR-Sensoren usw)
Ist also ziemlich tief in ein 100% auf meine Bedüfnisse angepasstes Front- und Backend ;)

Aber es funktioniert super und somit bin ich auch nicht mehr an DS-Audio gebunden.. MPD kann alles was ich brauche und die Apps muss ich auch nicht mehr wechseln, da der Player in das Hauptfrontend integriert ist..

Wenns fertig ist kann ich aber gern Screenshots posten und helfe auch gern mit Codeteilen, wenn jemand ein ähnliches Projekt laufen hat..

Grüße
CoRe
 

crun

Benutzer
Mitglied seit
05. Apr 2012
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
Cool. Ich bin auf jeden Fall interessiert. Wer weiß welche Ideen sich bei mir noch hervortun.
Für mich ist es halt am Anfang schwer. Was will ich, was geht, wo fange ich an. So ganz ohne Ahnung.

Gibt es Playerlösungen mit Airplay in PHP? Eventuell ist ja was für mich brauchbares dabei.

Danke für Dein Mutmachen

Beste Grüße
 

CoRe

Benutzer
Mitglied seit
10. Feb 2011
Beiträge
30
Punkte für Reaktionen
0
Punkte
12
Playerlösungen so direkt nicht..
Du kannst die in PHP aber ein Frontend dafür bauen (Stichwort Shairport und DS-Audio) oder ein Webinterface auf einem IOS-Device (Soundcloud-Player) der dann an ein Airplayempfänger sendet..

Hatte auch an einem Script gearbeitet, dass mir mit curl in Verbindung mit Cookies die Steuerung von DS-Audio über die Shell vom Raspberry ermöglicht (und somit auch die Steuerung über mein Webinterface)..

War es leid, dass man in der DS-Audio-App nur "Mehrere Airplay-Empfänger" auswählen konnte... aber nicht, welche in dieser Gruppe sind.. sobald die Empfänger neugestartet wurden oder DS-Audio nur auf einen der beiden gestreamt hat, ist der Empfänger aus der Liste geflogen und konnte nur über das Webinterface wieder aktiviert werden...

Also ein Script geschrieben, welches sich über curl an der DS anmeldet und die Cookies der Anmeldung für die direkte Kommunikation mit der Audiostation nutzt..
Dann nur noch die POST und GET-Variablen mitgeschnitten die die App bei der manuellen Aktivierung der Player nutzt und schon hatte ich ein kleines Script (6 Zeilen) mit dem beide Empfänger direkt aktiviert werden konnten..

Was hast du denn vor?
Airplay? Mehrere Empfänger? Synchron? Multiroom?

Gruß
CoRe
 

crun

Benutzer
Mitglied seit
05. Apr 2012
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
Ich habe 2 Airplay Empfänger und möchte Musik von der DS streamen. Das funktioniert ja soweit und ist auch mit DS Audio gut steuerbar. Da ich aber häufig Musik von Soundcloud höre muss ich immer ein Gerät zusätzlich laufen lassen (iphone oder Laptop). Da die DS sowieso 24h läuft, wollte ich sie auch die Arbeit verrichten lassen. Deswegen auch meine Wunsch den EQ von DS Audio zu nutzen. Wenn ich Musik mit itunes an die Airplay Lautsprecher streame, klingt das deutlich besser als von Audio Station. Ich möchte auch nicht von SC alles runter laden. Mir geht es speziell um das abspielen der Titel.

Grüße
Crun
 

mindscout

Benutzer
Mitglied seit
25. Jan 2014
Beiträge
269
Punkte für Reaktionen
16
Punkte
18
Gibt es hier mittlerweile Neuigkeiten? Ich würde auch gern Soundcloud als Quelle in die Audiostation bekommen, möglichst ohne Scripte und "Zwischendownload". Und wenn es nur einzelne Track-Links sind, die ähnlich wie die Webradios abgespielt werden.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat