#!/bin/bash ######################################################################## # Author: Fred (support@qo-op.com) # Version: 2020.03.24 # License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) ######################################################################## MY_PATH="`dirname \"$0\"`" # relative MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized ME="${0##*/}" ######################################################################## # \\/// # qo-op ############# '$MY_PATH/$ME' ######################################################################## # ex: ./'$ME' # #zenytv = youtube-dl video to ~/.zen/miam/$timestamp ######################################################################## ######## YOUTUBE-DL ########## if [[ ! $(which youtube-dl) ]]; then sudo curl -s https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl || err=1 sudo chmod a+rx /usr/local/bin/youtube-dl sudo chown $(whoami) /usr/local/bin/youtube-dl fi mkdir -p ~/.zen/miam/ self=$(sbotc whoami | jq -r .id) || exit 1 [[ "$self" == "" ]] && exit 1 g1self=$(echo $self | cut -d '@' -f 2 | cut -d '.' -f 1 | base64 -d | base58) self_name=$(sbotc query.read '{"query":[{"$filter":{"value":{"author": "'"$self"'", "content":{"type":"about", "about": "'"$self"'"}}}}]}' | jq -r .value?.content?.name | grep -v null | tail -n 1) ipfsnodeid=$(ipfs id -f='\n') current_ts=$(date -u +%s%N | cut -b1-13) [ -s ~/.zen/zenytv.last.ts ] && last_ts=$(cat ~/.zen/zenytv.last.ts) || last_ts=$((current_ts - 24*3600*1000)) # 24h ago # last_ts=$((last_ts + 10)) echo "Hi, i am [$self_name]($self) last timestamp: $last_ts" echo ' v i d e o _ _ __ __ (_) __| | ___ ___ \ V / | | / _` | / -_) / _ \ \_/ |_| \__,_| \___| \___/ ' #messages=$(sbotc messagesByType '{"type":"post","gt":'$last_ts'}') # SEARCH "#zenytv" CMD in message text echo "sbotc backlinks.read '{\"query\":[{\"\$filter\":{\"dest\":\"#zenytv\",\"value\":{\"content\":{\"type\":\"post\"}},\"timestamp\":{\"\$gt\":'\"$last_ts\"'}}}]}'" messages=$(sbotc backlinks.read '{"query":[{"$filter":{"dest":"#zenytv","value":{"content":{"type":"post"}},"timestamp":{"$gt":'"$last_ts"'}}}]}') [[ $messages == "" ]] && exit 1 while read -r msg do # EXTRACT CMD PARAM msg_key=$(printf %s "$msg" | jq -r .key) author=$(printf %s "$msg" | jq -r .value.author) timestamp=$(printf %s "$msg" | jq -r .value.timestamp) # TEST CURRENT NODE last_ts [[ $timestamp -lt $last_ts ]] && echo "ALREADY DONE $msg_key timestamp is $timestamp " && continue # SWARM REFRESH $MY_PATH/ipfs_SWARM_refresh.sh # SWARM ALREADY DONE CHECKSWARM=$(grep -Rwl "$timestamp" ~/.zen/ipfs_swarm/.12D3KooW*/TAG/*/_tag.zensource | tail -n 1 | cut -f 6 -d '/') # OR SWARM PROCESS IN ACTION [[ ! $CHECKSWARM ]] && CHECKSWARM=$(grep -Rwl "$timestamp" ~/.zen/ipfs_swarm/.12D3KooW*/TAG/process.timestamp.ssb | tail -n 1 | cut -f 6 -d '/') [[ $CHECKSWARM ]] \ && echo "$timestamp ALREADY on NODE $CHECKSWARM CONTINUE" \ && echo "$timestamp" > ~/.zen/zenytv.last.ts \ && continue # ANTI DOUBLE COPY START echo "$timestamp" > ~/.zen/ipfs/.$ipfsnodeid/process.timestamp.ssb $MY_PATH/ipfs_SWARM_refresh.sh # ANTI DOUBLE COPY msg_root=$(printf %s "$msg" | jq -r .value.content.root) msg_branch=$(printf %s "$msg" | jq -r .value.content.branch) msg_text=$(printf %s "$msg" | jq -r .value.content.text) msg_ytdlurl=$(echo $msg_text | egrep -o 'https?://[^ ]+' | grep you | cut -d '\' -f 1 | tail -n 1) # YOUTUBE-DL VIDEO [[ $timestamp ]] && mkdir -p ~/.zen/miam/$timestamp [[ $msg_ytdlurl ]] && /usr/local/bin/youtube-dl -f '[height=720]/best' \ --write-thumbnail --all-subs --write-info-json --write-annotations \ --no-mtime -o "~/.zen/miam/$timestamp/%(id)s.%(ext)s" $msg_ytdlurl # ###### TODO make gif tu push to SSB # ffmpeg -ss 00:00:00.000 -i yesbuddy.mov -pix_fmt rgb24 -r 10 -s 320x240 -t 00:00:10.000 output.gif # convert -layers Optimize output.gif output_optimized.gif # REFERENCE msg_key AND timestamp [[ $timestamp ]] && echo "$((timestamp))" > ~/.zen/zenytv.last.ts [[ $msg_key ]] && echo "$msg_key" > ~/.zen/miam/$timestamp/msg_key $MY_PATH/miam_miam.sh "$timestamp" # ANTI DOUBLE COPY END echo "$timestamp" > ~/.zen/ipfs/.$ipfsnodeid/process.timestamp.ssb $MY_PATH/ipfs_SWARM_refresh.sh # ANTI DOUBLE COPY done < <(printf '%s\n' "$messages")