Wiedergabe von Lokaler Musiksammlung

Hier wird über Skills, welche es bereits gibt, diskutiert.
Benutzeravatar

Themenstarter
waringer
Beiträge: 46
Registriert: Sa 3. Feb 2018, 08:20
Vorhandene Echos: 2
Vorhandene Echo Dots: 4
Vorhandene Echo Shows: 1

Do 20. Feb 2020, 17:31

Hallo bill,

keine Sorge wir alle haben mal angefangen und ich helfe gerne wenn ich kann.
Das PID File ist eine Datei die der Skill erstellt, darin wird die Prozess ID des Skills gespeichert damit z.B. Systemd den Skill "wiederfinden" und beenden kann bei bedarf (Reboot z.B.). Das wird erst später wichtig wenn der Skill Automatisch starten soll nach dem Booten.

Das mit der Umleitung hört sich für mich noch nicht so an wie es sein sollte. Im Internen Netz muss, wenn du mit dem Browser auf Raspi 1 eine Musikdatei anforderst, Automatisch eine Umleitung auf Raspi 2 und die entsprechende Datei erfolgen, ohne manuellen Eingriff. Der Browser sollte dann anfangen die Datei abzuspielen oder herunterzuladen.

Hier noch ein Beispiel wie eine radio.conf aussehen könnte (nur für den Skill, ohne Scanner):

Code: Alles auswählen

{
  "bindingIP": "127.0.0.1",
  "bindingPort": 3081,
  "amazonAppID": "amzn1.ask.skill.a12345bc-6de7-89fa-b012-34c567890d12",
  "pidFile": "/var/run/alexa_radio.pid",
  "streamURL": "https://von.extern.erreichbare.url/musik/",
  "dbUser": "meintollerdbbenutzername",
  "dbPassword": "supersicherespasswortfürdiedatenbank",
  "dbName": "radiogo"
}
Die Werte musst du natürlich anpassen ;)

Grüße
Waringer
0 x
Benutzeravatar

billbo40
Beiträge: 31
Registriert: Sa 8. Feb 2020, 09:50

Do 20. Feb 2020, 17:53

oh je,
doch noch Arbeit am Apache, hatte gehofft der wäre soweit ok. Hatte mit Deiner sowie der Vorlage aus h-blogs getestet, da werd ich wohl noch einiges zu testen haben!

melde mich sicher wieder,
vielen Dank!
bill
0 x
Benutzeravatar

billbo40
Beiträge: 31
Registriert: Sa 8. Feb 2020, 09:50

Fr 21. Feb 2020, 08:53

Habe mir nochmals die Reverse Proxy Einträge angesehen:

RedirectMatch ^/music/(.*)$ http://internal-server:88/$1

Proxypass "/echo/radio" "http://127.0.0.1:3081/"
ProxyPassReverse "/echo/radio" "http://127.0.0.1:3081/"

die unteren zwei Zeilen können doch schon mal weg da bei mir der Skill auf dem externen Server liegt, oder mach ich jetzt einen Denkfehler?

Ebenfalls hab ich meinem internen Server keinen Eintrag erstellt dass auf den Ordner zugegriffen werden darf:

location / {
alias /path/to/audio/files/on/nas/;
allow all;
autoindex on;

location ~ \.flac$ {
fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock;
fastcgi_param ALIAS $document_root;
fastcgi_param DOCUMENT_ROOT /path/to/convert/script/;
fastcgi_param SCRIPT_NAME flac2mp3.sh;
include fastcgi_params;
}
}
das ist natürlich Deine Ngix Variante, aber grundsätzlich doch ebenfalls richtig?
0 x
Benutzeravatar

Themenstarter
waringer
Beiträge: 46
Registriert: Sa 3. Feb 2018, 08:20
Vorhandene Echos: 2
Vorhandene Echo Dots: 4
Vorhandene Echo Shows: 1

Fr 21. Feb 2020, 09:30

Moin Moin bill,

der Redirect mittels

Code: Alles auswählen

RedirectMatch ^/music/(.*)$ http://internal-server:88/$1
sollte funktionieren. Zu beachten ist hierbei das das "music" aus der URI genommen wird für den internen Server. Aus "http://extern/music/abba/1.mp3" wird also "http://internal-server:88/abba/1.mp3"

Die 2 Proxypass Einträge werden benötigt da der Skill selber
a) Kein HTTPS spricht
b) Nur ein rudimentärer http Server ist und auf direkte Angriffe aus dem Netz wahrscheinlich nicht gut zu sprechen wäre ;)
Daher können diese nicht entfallen und ein ReverseProxy ist zum Betrieb notwendig!

Für den internen HTTP Server ... funktioniert es denn schon, wenn du direkt auf den internen Server mit deinem Browser gehst (von Intern natürlich) das der Browser die Musik abspielt oder sie runterlädt?
Meine Nginx Beispiele laufen so nicht unter Apache da die Config Dateien nicht kompatibel sind. Aber das sollte auch einfach sein, in meinem Beispiel ist ja auch nicht die Umwandlung von flac im mp3 mit drin was du wahrscheinlich nicht brauchst und ich auch nicht weis ob ein Raspi das überhaupt in Echtzeit schafft.

Grüße
Waringer
0 x
Benutzeravatar

billbo40
Beiträge: 31
Registriert: Sa 8. Feb 2020, 09:50

Fr 21. Feb 2020, 10:15

wenn ich direkt im Browser die interne Ip mit /ordner/ aufrufe kann ich ganz normal im Browser die mp3 abspielen, bei Aufruf von https://server-name/ordner/ werde ich nur nach interne Ip:port weitergeleitet
Das Dein Ngix Beispiel nicht funktionieren würde war schon klar, hab ich mir halt angeschaut um nachzuvollziehen wie es laufen sollte.
Zuletzt geändert von billbo40 am Fr 21. Feb 2020, 10:23, insgesamt 1-mal geändert.
0 x
Benutzeravatar

Themenstarter
waringer
Beiträge: 46
Registriert: Sa 3. Feb 2018, 08:20
Vorhandene Echos: 2
Vorhandene Echo Dots: 4
Vorhandene Echo Shows: 1

Fr 21. Feb 2020, 11:00

Ah, OK, das habe ich oben erklärt ... bei der Umleitung in den Beispielen wird das 1. Verzeichniss rausgelöscht, daher funktioniert das bei dir nicht.

Bei dir müßte das dann ca. so aussehen:

Code: Alles auswählen

RedirectMatch ^/ordner/(.*)$ http://internal-server:88/ordner/$1
0 x
Benutzeravatar

billbo40
Beiträge: 31
Registriert: Sa 8. Feb 2020, 09:50

Fr 21. Feb 2020, 12:21

genau das wars!!! wieder ein kleines Stück weiter!

mille gratie!

die Musik liegt aber schon noch in Unterordnern oder alle Mp3s direkt in diesem Ordner?

pi@raspberrypi:~ $ sudo /usr/local/bin/scanner
2020/02/21 12:29:11 can't read conf file radio.conf

radio.conf liegt in /etc
0 x
Benutzeravatar

Themenstarter
waringer
Beiträge: 46
Registriert: Sa 3. Feb 2018, 08:20
Vorhandene Echos: 2
Vorhandene Echo Dots: 4
Vorhandene Echo Shows: 1

Fr 21. Feb 2020, 13:47

Die Musik liegt so vor wie du sie abgelegt hast. Wenn du alles in ein Verzeichnis packst geht das auch, würde ich aber nicht empfehlen :p

Der scanner legt in der DB u.a auch ab wie der Pfad zu der Datei ist, so das der Skill später die komplette URL zusammenbauen kann.

Der Scanner sucht die radio.conf standardmäßig im selben Pfad wo auch er liegt, du kannst ihm die Datei mit Pfad aber auch als Parameter mitgeben.

Code: Alles auswählen

/usr/local/bin/scanner -c /etc/radio.conf
Der scanner muss auch nicht als root laufen, der kann auch als User genutzt werden, der User muss nur die Rechte haben die Dateien zu lesen.

PS: Die radio.conf von oben ist für den scanner aber zu wenig, die ist nur für den Skill! Da fehlt der ganze Teil wo die Datei liegen und wie er sie scannen soll ;)
0 x
Benutzeravatar

billbo40
Beiträge: 31
Registriert: Sa 8. Feb 2020, 09:50

Fr 21. Feb 2020, 14:25

das kopieren der radio.conf in besagtes Verzeichnis hat nichts gebracht, der angepasste Befehl startet den Scanner.
Leider ist in der .conf noch nicht alles im Reinen, die db ist noch leer
0 x
Benutzeravatar

Themenstarter
waringer
Beiträge: 46
Registriert: Sa 3. Feb 2018, 08:20
Vorhandene Echos: 2
Vorhandene Echo Dots: 4
Vorhandene Echo Shows: 1

Fr 21. Feb 2020, 15:03

Wie gesagt mit der radio.conf von oben klappt das nicht ^^

Hier eine erweiterte Version die du natürlich für dich anpassen musst:

Code: Alles auswählen

{
  "bindingIP": "127.0.0.1",
  "bindingPort": 3081,
  "amazonAppID": "amzn1.ask.skill.a12345bc-6de7-89fa-b012-34c567890d12",
  "pidFile": "/var/run/alexa_radio.pid",
  "streamURL": "https://von.extern.erreichbare.url/musik/",
  "dbUser": "meintollerdbbenutzername",
  "dbPassword": "supersicherespasswortfürdiedatenbank",
  "dbName": "radiogo",
  "dbServer": "ip.des.db.servers",
  "scannerConfiguration": [
    {
      "enabled": true,
      "useTags": true,
      "fileAccessMode": "local",
      "removeNoLongerExisting": true,
      "localBasePath": "/path/to/audio/files/on/nas/",
      "validExtensions": {
        ".mp3":true,
        ".ogg":true
      },
      "pathIncludes": [
        "/music"
      ],
      "pathExcludes": [
        "/music/Playlists"
      ],
      "tagExtractors": {
      }
    },
    {
      "enabled": false,
      "useTags": true,
      "fileAccessMode": "local",
      "removeNoLongerExisting": true,
      "localBasePath": "/path/to/audio/files/on/nas/",
      "validExtensions": {
        ".mp3":true,
        ".ogg":true
      },
      "pathIncludes": [
        "/Musik",
        "/MehrMusik"
      ],
      "pathExcludes": [
        "/Musik/Playlists",
        "/MehrMusik/Playlists",
        "/MehrMusik/Unsortiert"
      ],
      "tagExtractors": {
      }
    }
  ]
}
In der Wiki ist das alles genauer erklärt.
* https://github.com/waringer/Alexa-Radio/wiki/scanner
* https://github.com/waringer/Alexa-Radio ... figuration
0 x
Antworten

Zurück zu „Fähigkeiten (Skills) zum downloaden“

  • Information