SMOLNET PORTAL home about changes
iadd radio-play option - annna - Annna the nice friendly bot.	Err	bitreich.org	70
hgit clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/	URL:git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/	bitreich.org	70
1Log	/scm/annna/log.gph	bitreich.org	70
1Files	/scm/annna/files.gph	bitreich.org	70
1Refs	/scm/annna/refs.gph	bitreich.org	70
1Tags	/scm/annna/tag	bitreich.org	70
1README	/scm/annna/file/README.md.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit 43ac6c7ed634ca428ff807b06a9206ecf556c67f	/scm/annna/commit/43ac6c7ed634ca428ff807b06a9206ecf556c67f.gph	bitreich.org	70
1parent 73e548850a2dc3dc7288f60679b7f468874b57b5	/scm/annna/commit/73e548850a2dc3dc7288f60679b7f468874b57b5.gph	bitreich.org	70
hAuthor: Anders Damsgaard <anders@adamsgaard.dk>	URL:mailto:anders@adamsgaard.dk	bitreich.org	70
iDate:   Fri,  9 Aug 2024 16:58:22 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
iadd radio-play option	Err	bitreich.org	70
i	Err	bitreich.org	70
iSigned-off-by: Annna Robert-Houdin <annna@bitreich.org>	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M annna-message-common                |       7 +++++++	Err	bitreich.org	70
i  A ytdl-mpd                            |     171 +++++++++++++++++++++++++++++++	Err	bitreich.org	70
i	Err	bitreich.org	70
i2 files changed, 178 insertions(+), 0 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/annna-message-common b/annna-message-common	/scm/annna/file/annna-message-common.gph	bitreich.org	70
i@@ -542,6 +542,13 @@ case "${text}" in	Err	bitreich.org	70
i         suri="$(printf "%s\n" "${word}" | bitreich-speak)"	Err	bitreich.org	70
i         annna-say -s "${server}" -c "${channel}" "${suri}"	Err	bitreich.org	70
i         ;;	Err	bitreich.org	70
i+"${ircuser}, please radio play "*)	Err	bitreich.org	70
i+        url="$(printf "%s\n" "${text}" | cut -c 25- | sed 's,\t,    ,g')"	Err	bitreich.org	70
i+        {	Err	bitreich.org	70
i+                ytdl-mpd -a -m -q "$url"	Err	bitreich.org	70
i+                annna-say -s "${server}" -c "${channel}" "Please listen on gophers://bitreich.org/9/radio/listen";	Err	bitreich.org	70
i+        } &	Err	bitreich.org	70
i+        ;;	Err	bitreich.org	70
i "${ircuser}, please radio say "*)	Err	bitreich.org	70
i         word="$(printf "%s\n" "${text}" | cut -c 25- | sed 's,\t,    ,g')"	Err	bitreich.org	70
i         annna-say -s "${server}" -c "${channel}" "Please listen on gophers://bitreich.org/9/radio/listen";	Err	bitreich.org	70
1diff --git a/ytdl-mpd b/ytdl-mpd	/scm/annna/file/ytdl-mpd.gph	bitreich.org	70
i@@ -0,0 +1,171 @@	Err	bitreich.org	70
i+#!/bin/sh	Err	bitreich.org	70
i+# fetch a media file, tag it with metadata, and add it to mpd queue	Err	bitreich.org	70
i+# requirements: yt-dlp, id3tag	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+set -e	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+musicroot="/br/radio/music"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+die() {	Err	bitreich.org	70
i+        printf '%s: error: %s\n' "${0##*/}" "$1" >&2	Err	bitreich.org	70
i+        exit 1	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+show_help() {	Err	bitreich.org	70
i+        printf 'usage: %s [OPTIONS] [URL ..]\n' "${0##*/}"	Err	bitreich.org	70
i+        echo "downloads music from the web and tags it. Playlists are supported."	Err	bitreich.org	70
i+        echo "If no URLs are supplied as arguments, they are expected as stdin."	Err	bitreich.org	70
i+        echo	Err	bitreich.org	70
i+        echo "OPTIONS are one or more of the following:"	Err	bitreich.org	70
i+        echo "  -a  add metadata without interaction"	Err	bitreich.org	70
i+        echo "  -h  show this message"	Err	bitreich.org	70
i+        echo "  -m  move output music file to $musicroot"	Err	bitreich.org	70
i+        echo "  -q  add to mpd queue (requires -m)"	Err	bitreich.org	70
i+        echo "  -t  download through torsocks(1)"	Err	bitreich.org	70
i+        echo "  --  do not consider any following arguments as options"	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+ytdl() {	Err	bitreich.org	70
i+        $prefix yt-dlp \	Err	bitreich.org	70
i+                --extract-audio \	Err	bitreich.org	70
i+                --audio-quality 0 \	Err	bitreich.org	70
i+                --audio-format mp3 \	Err	bitreich.org	70
i+                --add-metadata \	Err	bitreich.org	70
i+                --output "%(playlist_index)s - %(title)s.%(ext)s" \	Err	bitreich.org	70
i+                "$1" 	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+handle_url() {	Err	bitreich.org	70
i+        oldpwd="$PWD"	Err	bitreich.org	70
i+        outputdir="$(mktemp -d)"	Err	bitreich.org	70
i+        mkdir -p "$outputdir"	Err	bitreich.org	70
i+        cd "$outputdir"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        album="$(ytdl "$1" | tee /dev/tty | grep 'Finished downloading' | sed 's/.*: //')"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        if [ $? -ne 0 ]; then	Err	bitreich.org	70
i+                die "youtube-dl error"	Err	bitreich.org	70
i+        fi	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        if [ "$(ls *.mp3 2>/dev/null | wc -l)" -lt 1 ]; then	Err	bitreich.org	70
i+                printf "youtube-dl error" "$1"	Err	bitreich.org	70
i+                if [ -n "$DISPLAY" ]; then	Err	bitreich.org	70
i+                        notify -u CRITICAL "youtube-dl error" "$1"	Err	bitreich.org	70
i+                fi	Err	bitreich.org	70
i+                exit 1	Err	bitreich.org	70
i+        fi	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        if [ "$auto" = 0 ]; then	Err	bitreich.org	70
i+                printf "add metadata? [Y/n] "	Err	bitreich.org	70
i+                read	Err	bitreich.org	70
i+        else	Err	bitreich.org	70
i+                REPLY=y	Err	bitreich.org	70
i+        fi	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        case "$REPLY" in	Err	bitreich.org	70
i+                N|n)	Err	bitreich.org	70
i+                        mv ./*.mp3 "$oldpwd/"	Err	bitreich.org	70
i+                        cd -	Err	bitreich.org	70
i+                        exit 0;;	Err	bitreich.org	70
i+        esac	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        artist="Unknown Artist"	Err	bitreich.org	70
i+        album="${album:-Unknown Album}"	Err	bitreich.org	70
i+        track=1	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        # Loop over files with spaces	Err	bitreich.org	70
i+        SAVEIFS=$IFS	Err	bitreich.org	70
i+        IFS=$(printf '\n\b')	Err	bitreich.org	70
i+        for f in *.mp3; do	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                [ "$track" = 1 ] && \	Err	bitreich.org	70
i+                        artist="$(printf '%s' "$f" | \	Err	bitreich.org	70
i+                                awk -F'-' '{gsub(/^ +/, "", $2); gsub(/ +$/, "", $2); print $2}')"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                printf 'file: %s\n' "$f"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                song=$(printf '%s' "$f" | sed 's/.* - //; s/^ //; s/\.mp3//')	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                if [ "$auto" = 0 ]; then	Err	bitreich.org	70
i+                        printf 'song [%s]: ' "$song"	Err	bitreich.org	70
i+                        read	Err	bitreich.org	70
i+                        song="${REPLY:-$song}"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                        printf 'track [%s]: ' "$track"	Err	bitreich.org	70
i+                        read	Err	bitreich.org	70
i+                        track="${REPLY:-$track}"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                        printf 'album [%s]: ' "$album"	Err	bitreich.org	70
i+                        read	Err	bitreich.org	70
i+                        album="${REPLY:-$album}"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                        printf 'artist [%s]: ' "$artist"	Err	bitreich.org	70
i+                        read	Err	bitreich.org	70
i+                        artist="${REPLY:-$artist}"	Err	bitreich.org	70
i+                fi	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                id3tag --artist="$artist" --album="$album" \	Err	bitreich.org	70
i+                        --song="$song" --track="$track" \	Err	bitreich.org	70
i+                        "$f"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                track=$(( track + 1 ))	Err	bitreich.org	70
i+        done	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        IFS=$SAVEIFS	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        if [ "$move_music" = 1 ]; then	Err	bitreich.org	70
i+                outdir="$musicroot/$artist/$album"	Err	bitreich.org	70
i+                mkdir -p "$outdir"	Err	bitreich.org	70
i+                mv ./*.mp3 "$outdir"	Err	bitreich.org	70
i+                mpc update --wait >/dev/null	Err	bitreich.org	70
i+                if [ "$queue" = 1 ]; then	Err	bitreich.org	70
i+                        mpc findadd \	Err	bitreich.org	70
i+                                artist "$artist" \	Err	bitreich.org	70
i+                                album "$album" \	Err	bitreich.org	70
i+                                title "$song"	Err	bitreich.org	70
i+                fi	Err	bitreich.org	70
i+        else	Err	bitreich.org	70
i+                mv ./*.mp3 "$oldpwd/"	Err	bitreich.org	70
i+        fi	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        rmdir "$outputdir"	Err	bitreich.org	70
i+        cd - >/dev/null	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+prefix=""	Err	bitreich.org	70
i+auto=0	Err	bitreich.org	70
i+move_music=0	Err	bitreich.org	70
i+queue=0	Err	bitreich.org	70
i+while :; do	Err	bitreich.org	70
i+        case "$1" in	Err	bitreich.org	70
i+                -a)	Err	bitreich.org	70
i+                        auto=1;;	Err	bitreich.org	70
i+                -h)	Err	bitreich.org	70
i+                        show_help	Err	bitreich.org	70
i+                        exit 0;;	Err	bitreich.org	70
i+                -m)	Err	bitreich.org	70
i+                        move_music=1;;	Err	bitreich.org	70
i+                -q)	Err	bitreich.org	70
i+                        queue=1;;	Err	bitreich.org	70
i+                -t)	Err	bitreich.org	70
i+                        prefix="torsocks";;	Err	bitreich.org	70
i+                --)	Err	bitreich.org	70
i+                        shift	Err	bitreich.org	70
i+                        break;;	Err	bitreich.org	70
i+                -?*)	Err	bitreich.org	70
i+                        die "unknown option specified: $1";;	Err	bitreich.org	70
i+                *)	Err	bitreich.org	70
i+                        break	Err	bitreich.org	70
i+        esac	Err	bitreich.org	70
i+        shift	Err	bitreich.org	70
i+done	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+if [ $# -lt 1 ]; then	Err	bitreich.org	70
i+        urls="$(cat)"	Err	bitreich.org	70
i+else	Err	bitreich.org	70
i+        urls="$@"	Err	bitreich.org	70
i+fi	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+for u in "$urls"; do	Err	bitreich.org	70
i+        handle_url "$u"	Err	bitreich.org	70
i+done	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/annna/commit/43ac6c7ed634ca42...
Content-Typetext/plain; charset=utf-8