astrXbian/zen/mint_youtube.sh

98 lines
4.9 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
########################################################################
# Author: Fred (support@qo-op.com)
# Version: 2020.12.15
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
########################################################################
# Transfert ~/astroport/youtube and mp3 files to IPFS
# Create index in ~/.zen/ipfs/xbian/Y$XZUID
######## #### ### ## #
# ipfs add new file
# create ASTRXBIAN indexes in ~/.zen/ipfs/xbian/${PREFIX}${XZUID}
# unify swarm indexes in /var/www/astrxbian/${PREFIX}ASTRXBIAN
# Vstream/Astroport reads ${PREFIX}ASTRXBIAN through http://127.0.0.1:8181/.$IPFNODEID/
# Using Vstream/Pastebin file format
# https://github.com/Kodi-vStream/venom-xbmc-addons/wiki/Voir-et-partager-sa-biblioth%C3%A8que-priv%C3%A9e#d%C3%A9clarer-des-films
########################################################################
## ACTUAL inotifywait ~/astroport/ FILESYSTEM STRUCTURE
mkdir -p ~/astroport/youtube
mkdir -p ~/astroport/mp3
########################################################################
path="$1"
file="$2"
echo "~/.zen/astrXbian/zen/mint_youtube.sh \"$path\" \"$file\""
[[ "$file" == "" || "$path" == "" ]] && echo "ERROR. Parameters missing. xbian_vstream.sh file=$file? path=$path?"
extension="${file##*.}"
TITLE="${file%.*}"
[[ ! -f "${path}${file}" ]] && file="${TITLE%.*}" && extension="${TITLE##*.}"
# GET XZUID
[[ -f ~/.zen/ipfs/.${IPFSNODEID}/_xbian.zuid ]] && XZUID=$(cat ~/.zen/ipfs/.${IPFSNODEID}/_xbian.zuid) || XZUID=$(hostname)
TYPE=$(echo "$path" | cut -d '/' -f 5 ) # ex: /home/$YOU/astroport/... films, youtube, mp3
PREFIX=$(echo "$TYPE" | head -c 1 | awk '{ print toupper($0) }' ) # ex: F, Y, M
TMDB=$(echo "$path" | cut -d '/' -f 6 )
RES=$(echo "$path" | cut -d '/' -f 7 )
# file is placed in ROOT ~/astroport
[[ $PREFIX == "" ]] && echo "WARNING. $TYPE root files untreated" && exit 1
echo "ADDING ${path}${file} IPFS INDEX to ~/.zen/ipfs/xbian/${PREFIX}${XZUID}"
echo "-----------------------------------------------------------------"
NEWSHARE=$(ipfs add -wq "${path}${file}" | tail -n 1)
[[ $NEWSHARE == "" ]] && echo "ipfs add ERROR" && exit 1
echo "-----------------------------------------------------------------"
echo "CHECK IPFS $file : ipfs ls /ipfs/$NEWSHARE"
echo "-----------------------------------------------------------------"
echo "UPDATE $TYPE INDEX in ~/.zen/ipfs/xbian/${PREFIX}${XZUID} "
mkdir -p ~/.zen/ipfs/xbian
# Init ${PREFIX}${XZUID} header
#[[ ! -f ~/.zen/ipfs/xbian/${PREFIX}${XZUID} ]] && echo "CAT;TITLE;URLS" > ~/.zen/ipfs/xbian/${PREFIX}${XZUID}
[[ ! -f ~/.zen/ipfs/xbian/${PREFIX}${XZUID} ]] && echo "CAT;TMDB;YEAR;TITLE;SAISON;GENRES;GROUPES;RES;URLS=http://127.0.0.1:8181" > ~/.zen/ipfs/xbian/${PREFIX}${XZUID}
## CHECK IF $NEWSHARE is NEW, or an already existing in SWARMs?
isFILEinINDEX=$(grep "$file" ~/.zen/ipfs_swarm/xbian/${PREFIX}*)
isLINKinINDEX=$(grep "$NEWSHARE" ~/.zen/ipfs_swarm/xbian/${PREFIX}*)
isFILEinMYINDEX=$(grep "$file" ~/.zen/ipfs/xbian/${PREFIX}${XZUID})
isLINKinMYINDEX=$(grep "$NEWSHARE" ~/.zen/ipfs/xbian/${PREFIX}${XZUID})
# Is it a new file? Add it to INDEX
if [[ ! $isFILEinINDEX && ! $isLINKinINDEX ]]; then
URLENCODE_FILE_NAME=$(echo ${file} | jq -Rr @uri)
echo "ipfs get -o ~/astroport/$TYPE/ \"/ipfs/$NEWSHARE/$file\"" >> ~/.zen/ipfs/xbian/_${XZUID} # "_ASTRXBIAN" is listing ipfs get commands
echo "film;$TMDB;$YEAR;$TITLE;$SAISON;;${XZUID};$RES;/ipfs/$NEWSHARE/$URLENCODE_FILE_NAME" >> ~/.zen/ipfs/xbian/${PREFIX}${XZUID}
else
if [[ $isFILEinMYINDEX ]]; then
echo "$file already in index" ## File was updated => Change OLDLINK
OLDLINK=$(echo $isFILEinMYINDEX | cut -d "/" -f 3 | tail -n 1) # GRAB old ipfs id
sed -i "s/$OLDLINK/$NEWSHARE/g" ~/.zen/ipfs/xbian/${PREFIX}${XZUID}
sed -i "s/$OLDLINK/$NEWSHARE/g" ~/.zen/ipfs/xbian/_${XZUID}
fi
[[ $isLINKinINDEX ]] && echo "$NEWSHARE already in index. DO NOTHING"
fi
## REMOVE DUPLICATE FROM ipfs get commands
cat ~/.zen/ipfs/xbian/_${XZUID} | sort | uniq > /tmp/xbian/_${XZUID}
mv /tmp/xbian/_${XZUID} ~/.zen/ipfs/xbian/_${XZUID}
echo "CREATE ~/.zen/ipfs/.${IPFSNODEID}/${PREFIX}ASTRXBIAN ($TYPE) from ~/.zen/ipfs*/xbian/${PREFIX}*"
echo "-----------------------------------------------------------------"
cat ~/.zen/ipfs*/xbian/${PREFIX}* | sort | uniq > ~/.zen/ipfs/.${IPFSNODEID}/${PREFIX}ASTRXBIAN
########################################################################
echo "PUBLISH ~/.zen/ipfs to IPNS self for SWARM SHARING"
echo "-----------------------------------------------------------------"
echo "$(date -u +%s%N | cut -b1-13)" > ~/.zen/ipfs/.${IPFSNODEID}/_timestamp
MIPFS=$(ipfs add -rHq ~/.zen/ipfs | tail -n 1)
echo $MIPFS > ~/.zen/ipfs/.${IPFSNODEID}/_chain ## THIS SIMPLE LINE IS BLOCKCHAIN POWERING ANY DATA PUBLISHED TO IPFS !!!
NODEIPNS=$(ipfs name publish --quieter /ipfs/$MIPFS)
echo "NEW $TYPE ($file) ADDED."
echo "INDEX UPDATED : http://127.0.0.1:8181/ipns/${IPFSNODEID}/.${IPFSNODEID}/${PREFIX}ASTRXBIAN"