1
0
mirror of https://github.com/kmein/niveum synced 2026-03-21 04:11:07 +01:00

feat(radio): handle POST for skipping meddl

This commit is contained in:
2021-02-14 18:49:18 +01:00
parent 0d20cded25
commit 7c67d3f88a

View File

@@ -28,6 +28,10 @@ let
maybe (pure ()) (addTagId songId Artist . fromString) $ artist options maybe (pure ()) (addTagId songId Artist . fromString) $ artist options
maybe (pure ()) (addTagId songId Title . fromString) $ title options maybe (pure ()) (addTagId songId Title . fromString) $ title options
''; '';
mpc-lyrikline = pkgs.writers.writeDashBin "mpc-lyrikline" ''MPD_PORT=${toString lyrikline.mpdPort} ${pkgs.mpc_cli}/bin/mpc "$@"'';
mpc-meddl = pkgs.writers.writeDashBin "mpc-meddl" ''MPD_PORT=${toString meddl.mpdPort} ${pkgs.mpc_cli}/bin/mpc "$@"'';
mpc-lyrik = pkgs.writers.writeDashBin "mpc-lyrik" ''MPD_PORT=${toString lyrik.mpdPort} ${pkgs.mpc_cli}/bin/mpc "$@"'';
in in
{ {
imports = [ <stockholm/krebs/3modules/htgen.nix> ]; imports = [ <stockholm/krebs/3modules/htgen.nix> ];
@@ -107,6 +111,14 @@ in
echo "<html><body style='margin:0'><iframe style='width:100%;height:100%;border:0' src="$url"></iframe></body></html>" echo "<html><body style='margin:0'><iframe style='width:100%;height:100%;border:0' src="$url"></iframe></body></html>"
exit exit
;; ;;
"POST /meddl/skip")
printf 'HTTP/1.1 200 OK\r\n'
printf 'Content-Type: text/html; charset=UTF-8\r\n'
printf 'Connection: close\r\n'
printf '\r\n'
${mpc-meddl}/bin/mpc-meddl next
exit
;;
"GET /meddl/status") "GET /meddl/status")
printf 'HTTP/1.1 200 OK\r\n' printf 'HTTP/1.1 200 OK\r\n'
printf 'Content-Type: text/html; charset=UTF-8\r\n' printf 'Content-Type: text/html; charset=UTF-8\r\n'
@@ -182,12 +194,8 @@ in
after = [ "container@lyrikline.service" ]; after = [ "container@lyrikline.service" ];
wantedBy = [ "container@lyrikline.service" ]; wantedBy = [ "container@lyrikline.service" ];
startAt = "*:00/5"; startAt = "*:00/5";
environment = {
MPD_PORT = toString lyrikline.mpdPort;
MPD_HOST = "127.0.0.1";
};
serviceConfig.User = config.users.extraUsers.radio.name; serviceConfig.User = config.users.extraUsers.radio.name;
preStart = "${pkgs.mpc_cli}/bin/mpc crop || :"; preStart = "${mpc-lyrikline}/bin/mpc-lyrikline crop || :";
script = '' script = ''
set -efu set -efu
@@ -206,18 +214,17 @@ in
echo "$poem_file ($hash) -> $poem_url" echo "$poem_file ($hash) -> $poem_url"
echo "$poem_url" > "${radioStore}/$hash" echo "$poem_url" > "${radioStore}/$hash"
${pkgs.mpc_cli}/bin/mpc add "$poem_file" ${mpc-lyrikline}/bin/mpc-lyrikline add "$poem_file"
done done
${pkgs.mpc_cli}/bin/mpc play ${mpc-lyrikline}/bin/mpc-lyrikline play
''; '';
}; };
systemd.services.lyrik = { systemd.services.lyrik = {
after = [ "container@lyrik.service" ]; after = [ "container@lyrik.service" ];
wantedBy = [ "container@lyrik.service" ]; wantedBy = [ "container@lyrik.service" ];
environment.MPD_PORT = toString lyrik.mpdPort; preStart = "${mpc-lyrik}/bin/mpc-lyrik crop || :";
preStart = "${pkgs.mpc_cli}/bin/mpc crop || :";
restartIfChanged = true; restartIfChanged = true;
serviceConfig.User = config.users.extraUsers.radio.name; serviceConfig.User = config.users.extraUsers.radio.name;
script = script =
@@ -227,12 +234,12 @@ in
streamsFile = pkgs.writeText "hotrot" streams; streamsFile = pkgs.writeText "hotrot" streams;
in '' in ''
set -efu set -efu
${pkgs.mpc_cli}/bin/mpc add < ${toString streamsFile} ${mpc-lyrik}/bin/mpc-lyrik add < ${toString streamsFile}
${pkgs.mpc_cli}/bin/mpc crossfade 5 ${mpc-lyrik}/bin/mpc-lyrik crossfade 5
${pkgs.mpc_cli}/bin/mpc random on ${mpc-lyrik}/bin/mpc-lyrik random on
${pkgs.mpc_cli}/bin/mpc repeat on ${mpc-lyrik}/bin/mpc-lyrik repeat on
${pkgs.mpc_cli}/bin/mpc play ${mpc-lyrik}/bin/mpc-lyrik play
''; '';
}; };
@@ -241,9 +248,8 @@ in
after = [ "container@meddl.service" ]; after = [ "container@meddl.service" ];
wantedBy = [ "container@meddl.service" ]; wantedBy = [ "container@meddl.service" ];
startAt = "*:00/10"; startAt = "*:00/10";
environment.MPD_PORT = toString meddl.mpdPort;
serviceConfig.User = config.users.extraUsers.radio.name; serviceConfig.User = config.users.extraUsers.radio.name;
preStart = "${pkgs.mpc_cli}/bin/mpc crop || :"; preStart = "${mpc-meddl}/bin/mpc-meddl crop || :";
script = '' script = ''
set -efu set -efu
host=http://antenne-asb.ga host=http://antenne-asb.ga
@@ -265,28 +271,19 @@ in
echo "$song_url ($hash) -> $song" echo "$song_url ($hash) -> $song"
echo "$song" > "${radioStore}/$hash" echo "$song" > "${radioStore}/$hash"
${pkgs.mpc_cli}/bin/mpc add "$song_url" ${mpc-meddl}/bin/mpc-meddl add "$song_url"
done done
${pkgs.mpc_cli}/bin/mpc play ${mpc-meddl}/bin/mpc-meddl play
''; '';
}; };
environment.systemPackages = [ environment.systemPackages = [ mpc-lyrikline mpc-lyrik mpc-meddl ];
(pkgs.writers.writeDashBin "mpc-lyrikline" ''
MPD_PORT=${toString lyrikline.mpdPort} ${pkgs.mpc_cli}/bin/mpc "$@"
'')
(pkgs.writers.writeDashBin "mpc-meddl" ''
MPD_PORT=${toString meddl.mpdPort} ${pkgs.mpc_cli}/bin/mpc "$@"
'')
(pkgs.writers.writeDashBin "mpc-lyrik" ''
MPD_PORT=${toString lyrik.mpdPort} ${pkgs.mpc_cli}/bin/mpc "$@"
'')
];
services.nginx.virtualHosts."radio.xn--kiern-0qa.de".locations = { services.nginx.virtualHosts."radio.xn--kiern-0qa.de".locations = {
"= /meddl/status".proxyPass = "http://127.0.0.1:${toString htgenPort}"; "= /meddl/status".proxyPass = "http://127.0.0.1:${toString htgenPort}";
"= /meddl/listen.ogg".proxyPass = "http://127.0.0.1:${toString meddl.streamPort}"; "= /meddl/listen.ogg".proxyPass = "http://127.0.0.1:${toString meddl.streamPort}";
"= /meddl/skip".proxyPass = "http://127.0.0.1:${toString htgenPort}";
"= /lyrikline/status".proxyPass = "http://127.0.0.1:${toString htgenPort}"; "= /lyrikline/status".proxyPass = "http://127.0.0.1:${toString htgenPort}";
"= /lyrikline/listen.ogg".proxyPass = "http://127.0.0.1:${toString lyrikline.streamPort}"; "= /lyrikline/listen.ogg".proxyPass = "http://127.0.0.1:${toString lyrikline.streamPort}";
"= /lyrik/status".proxyPass = "http://127.0.0.1:${toString htgenPort}"; "= /lyrik/status".proxyPass = "http://127.0.0.1:${toString htgenPort}";