aboutsummaryrefslogtreecommitdiff
path: root/modules/mixtapes/lib.sh
diff options
context:
space:
mode:
authorkaotisk <kaotisk@arching-kaos.org>2024-06-30 05:42:28 +0300
committerkaotisk <kaotisk@arching-kaos.org>2024-06-30 05:42:28 +0300
commitf49a1ea2cafb09b90e43f1ff30cba77423ae41c6 (patch)
treedbd03b8b893de39d20b8b9969b106060edf37325 /modules/mixtapes/lib.sh
parent1975493660729b452915b2761d99da5545aafdea (diff)
downloadarching-kaos-tools-f49a1ea2cafb09b90e43f1ff30cba77423ae41c6.tar.gz
arching-kaos-tools-f49a1ea2cafb09b90e43f1ff30cba77423ae41c6.tar.bz2
arching-kaos-tools-f49a1ea2cafb09b90e43f1ff30cba77423ae41c6.zip
mixtapes module: refactoring
Diffstat (limited to 'modules/mixtapes/lib.sh')
-rwxr-xr-xmodules/mixtapes/lib.sh87
1 files changed, 87 insertions, 0 deletions
diff --git a/modules/mixtapes/lib.sh b/modules/mixtapes/lib.sh
new file mode 100755
index 0000000..58d7beb
--- /dev/null
+++ b/modules/mixtapes/lib.sh
@@ -0,0 +1,87 @@
+#!/bin/bash
+
+source $AK_LIBDIR/_ak_log
+source $AK_LIBDIR/_ak_ipfs
+source $AK_LIBDIR/_ak_gpg
+source $AK_LIBDIR/_ak_zblock
+
+_ak_modules_mixtapes_specs(){
+ datetime_mask=$(printf '^[0-9]\{8\}_[0-9]\{6\}$' | xxd -p)
+ ipfs_mask=$(printf '^Qm[a-zA-Z0-9]\{44\}$' | xxd -p)
+ text_dash_underscore_space_mask=$(printf '^[a-zA-Z0-9][a-zA-Z0-9[:space:]\_]\{1,128\}$' | xxd -p -c 64)
+ echo '
+ {
+ "datetime": "'$datetime_mask'",
+ "artist": "'$text_dash_underscore_space_mask'",
+ "title": "'$text_dash_underscore_space_mask'",
+ "ipfs": "'$ipfs_mask'",
+ "detach": "'$ipfs_mask'"
+ }' | jq
+}
+
+_ak_modules_mixtapes_add(){
+ if [ ! -z $3 ];
+ then
+ echo $1
+ PWD="$(pwd)"
+ MIXTAPE_ARTIST="$1"
+ MIXTAPE_TITLE="$2"
+ MIXTAPE_FILE="$PWD/$3"
+ _ak_modules_mixtapes_main $1
+ cat $PWD/data | jq -M
+ _ak_zblock_pack mixtape/add $PWD/data
+ fi
+}
+
+_ak_modules_mixtapes_main(){
+ echo $MIXTAPE_FILE "by" $MIXTAPE_ARTIST "named as" $MIXTAPE_TITLE
+
+ MIXTAPE_IPFS_HASH=$(_ak_ipfs_add $MIXTAPE_FILE)
+
+ MIXTAPE_SIGN_FILE=$MIXTAPE_FILE".asc"
+ _ak_gpg_sign_detached $MIXTAPE_SIGN_FILE $MIXTAPE_FILE
+
+ MIXTAPE_SIGNATURE=$(_ak_ipfs_add $MIXTAPE_SIGN_FILE)
+
+ cat > data <<EOF
+{
+ "timestamp":"$(date -u +%s)",
+ "artist":"$MIXTAPE_ARTIST",
+ "title":"$MIXTAPE_TITLE",
+ "ipfs":"$MIXTAPE_IPFS_HASH",
+ "detach":"$MIXTAPE_SIGNATURE"
+}
+EOF
+
+}
+
+_ak_modules_mixtapes_get_local_latest(){
+ tempdir=$(_ak_make_temp_directory)
+ cd $tempdir
+ if [ -z "$1" ]
+ then
+ ak-enter -l 1 | jq > aktempzblock
+ else
+ ak-enter -l 1 $1 | jq > aktempzblock
+ fi
+ curzblock="`cat aktempzblock | jq -r '.[].zblock'`"
+ curaction="`cat aktempzblock | jq -r '.[].action'`"
+ curmodule="`cat aktempzblock | jq -r '.[].module'`"
+ curdata="`cat aktempzblock | jq -r '.[].data'`"
+ curipfs="$(cat aktempzblock | jq -r ".[].$curdata" | jq -r ".ipfs")"
+ curprevious="`cat aktempzblock | jq -r '.[].previous'`"
+
+ if [ "$curmodule" == "mixtape" ] && [ "$curaction" == "add" ]
+ then
+ artist="$(cat aktempzblock | jq -r ".[].$curdata" | jq -r ".artist")"
+ title="$(cat aktempzblock | jq -r ".[].$curdata" | jq -r ".title")"
+ echo "Found zblock: $curzblock"
+ echo "$title by $artist"
+ _ak_ipfs_get $curipfs
+ mpv $curipfs
+ else
+ seek $curprevious
+ fi
+ rm -rf $tempdir
+ exit 0
+}