From 9d88b75f6261b9b4f5d280ec081cd0e53b47f6be Mon Sep 17 00:00:00 2001 From: Profpatsch Date: Sun, 8 Dec 2019 01:41:30 +0100 Subject: pkgs/profpatsch/youtube2audiopodcast: serve arbitrary youtube video --- pkgs/profpatsch/youtube2audiopodcast/default.nix | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) (limited to 'pkgs') diff --git a/pkgs/profpatsch/youtube2audiopodcast/default.nix b/pkgs/profpatsch/youtube2audiopodcast/default.nix index 1d8c80e6..75740204 100644 --- a/pkgs/profpatsch/youtube2audiopodcast/default.nix +++ b/pkgs/profpatsch/youtube2audiopodcast/default.nix @@ -2,16 +2,16 @@ let bins = getBins pkgs.hello [ "hello" ] - // getBins pkgs.coreutils [ "echo" "env" "cat" "printf" "wc" "tr" ] + // getBins pkgs.coreutils [ "echo" "env" "cat" "printf" "wc" "tr" "cut" "mktemp" ] // getBins pkgs.youtube-dl [ "youtube-dl" ] // getBins pkgs.s6-networking [ "s6-tcpserver" ] // getBins pkgs.execline [ "fdmove" "backtick" "importas" "if" "redirfd" "pipeline" ]; - youtube-dl-audio = writeExecline "abc" { readNArgs = 1; } [ + youtube-dl-audio = writeExecline "abc" { readNArgs = 2; } [ bins.youtube-dl "--extract-audio" "--audio-format" "opus" - "--output" "\${1}/audio.opus" "https://www.youtube.com/watch?v=5Opw5oR2LDY" + "--output" "\${1}/audio.opus" "https://www.youtube.com/watch?v=\${2}" ]; # minimal CGI request parser for use as UCSPI middleware @@ -39,18 +39,30 @@ let os.execlp(cmd, cmd, *args) ''; + envvar-to-stdin = writeExecline "envvar-to-stdin" { readNArgs = 1; } [ + "importas" "VAR" "$1" + "pipeline" [ bins.printf "%s" "$VAR" ] "$@" + ]; serve-audio = writeExecline "audio-server" {} [ (runInEmptyEnv []) bins.s6-tcpserver "::1" "8888" yolo-cgi # bins.fdmove "1" "2" bins.env + bins.backtick "-i" "tmpdir" [ bins.mktemp "-d" ] + bins.importas "-u" "tmpdir" "tmpdir" bins.${"if"} [ + # remove leading slash + bins.backtick "-i" "yt-video-id" [ + envvar-to-stdin "REQUEST_URI" + bins.cut "-c2-" + ] + bins.importas "yt-video-id" "yt-video-id" bins.fdmove "1" "2" - youtube-dl-audio "tmpdir" + youtube-dl-audio "$tmpdir" "$yt-video-id" ] bins.backtick "-i" "-n" "filesize" [ - bins.redirfd "-r" "0" "tmpdir/audio.opus" + bins.redirfd "-r" "0" "\${tmpdir}/audio.opus" bins.wc "--bytes" ] bins.importas "filesize" "filesize" @@ -60,7 +72,7 @@ let Content-Length: %u '' "$filesize" ] - bins.redirfd "-r" "0" "tmpdir/audio.opus" bins.cat + bins.redirfd "-r" "0" "\${tmpdir}/audio.opus" bins.cat ]; # in printFeed -- cgit 1.4.1