astrXbian/zen/mint_youtube.sh

108 lines
5.3 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%.*}"
if [[ ! -f ${path}${file} ]]; then
file="${TITLE%.*}"
extension="${TITLE##*.}"
fi
# GET XZUID
[[ -f ~/.zen/ipfs/.${IPFSNODEID}/_xbian.zuid ]] && XZUID="$(cat ~/.zen/ipfs/.${IPFSNODEID}/_xbian.zuid)" || XZUID="$(hostname)"
# TODO use ~/.zen/ipfs/.$IPFSNODEID/
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
YEAR=$(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
echo "ipfs get -o ~/astroport/$TYPE/ \"/ipfs/$NEWSHARE/$file\"" >> ~/.zen/ipfs/xbian/_${XZUID} # "_ASTRXBIAN" is special ipfs get commands
echo "films;$TMDB;$YEAR;$TITLE;$SAISON;${TYPE};${XZUID};$RES;/ipfs/$NEWSHARE/$file" >> ~/.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}
fi
[[ $isLINKinINDEX ]] && echo "$NEWSHARE already in index. DO NOTHING" ## should not happen
fi
### REFRESH ~/.zen/ipfs_swarm/
echo "NOW SYNCing with my SWARM..."
echo "-----------------------------------------------------------------"
~/.zen/astrXbian/zen/ipfs_SWARM_refresh.sh
echo "CREATE ~/.zen/ipfs/.${IPFSNODEID}/${PREFIX}ASTRXBIAN ($TYPE) from ipfs_swarm found indexes"
echo "-----------------------------------------------------------------"
mkdir -p /tmp/xbian/
echo "CAT;TMDB;YEAR;TITLE;SAISON;GENRES;GROUPES;RES;URLS=http://127.0.0.1:8181" > /tmp/xbian/${PREFIX}ASTRXBIAN # CREATE INDEX HEADER
cat ~/.zen/ipfs_swarm/xbian/${PREFIX}* | grep -v -E 'CAT;TMDB' >> /tmp/xbian/${PREFIX}ASTRXBIAN # GET All lines (no header)
cat /tmp/xbian/${PREFIX}ASTRXBIAN | uniq > /tmp/xbian/${PREFIX}ASTRXBIAN.uniq # REMOVE DUPLICATE
mv /tmp/xbian/${PREFIX}ASTRXBIAN.uniq ~/.zen/ipfs/.${IPFSNODEID}/${PREFIX}ASTRXBIAN # Publish to localhost ASTROPORT relay
## REMOVE DUPLICATE FROM ipfs get commands
cat ~/.zen/ipfs/xbian/_${XZUID} | uniq > /tmp/xbian/_${XZUID}
mv /tmp/xbian/_${XZUID} ~/.zen/ipfs/xbian/_${XZUID}
########################################################################
echo "PUBLISH ~/.zen/ipfs to IPNS self for SWARM SHARING"
echo "-----------------------------------------------------------------"
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/${PREFIX}ASTRXBIAN"