2021-01-29 01:09:40 +01:00
#!/bin/bash
########################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
########################################################################
# SCRIPT INTERACTIF POUR AJOUTER UN FICHIER à ASTROPORT/KODI
#
# 1. CAT: film, serie, anime
# 2. TMDB: ID de la fiche sur https://www.themoviedb.org/
# 3. TITLE: Titre de la vidéo
# 4. YEAR: Année de la vidéo
# 5. RES: Résolution 1080p, 4K, SD, 720, HD
# 6. SAISON: Pour les séries et animes, c'est le numéro de saison.
# Pour un film, le champ SAISON est utilisé pour renseigner la Saga
# 7. GENRES: Action, Aventure, Fantastique, Animation, etc (choix multiple).
# 8. GROUPES: Permet de regrouper des films. (choix multiple)
#
# https://github.com/Kodi-vStream/venom-xbmc-addons/wiki/Voir-et-partager-sa-biblioth%C3%A8que-priv%C3%A9e#d%C3%A9clarer-des-films
########################################################################
MY_PATH = " `dirname \" $0 \"` " # relative
MY_PATH = " `( cd \" $MY_PATH \" && pwd )` " # absolutized and normalized
ME = " ${ 0 ##*/ } "
########################################################################
[ [ $( which ipfs) = = "" ] ] && echo "ERREUR! Installez ipfs" && echo "wget https://git.p2p.legal/axiom-team/astrXbian/raw/master/.install/ipfs_alone.sh -O /tmp/ipfs_install.sh && chmod +x /tmp/ipfs_install.sh && /tmp/ipfs_install.sh" && exit 1
[ [ $( which zenity) = = "" ] ] && echo "ERREUR! Installez zenity" && echo "sudo apt install zenity" && exit 1
[ [ $( which ffmpeg) = = "" ] ] && echo "ERREUR! Installez ffmpeg" && echo "sudo apt install ffmpeg" && exit 1
[ [ $( which xdpyinfo) = = "" ] ] && echo "ERREUR! Installez x11-utils" && echo "sudo apt install x11-utils" && exit 1
# REMOVE GtkDialog errors for zenity
shopt -s expand_aliases
alias zenity = 'zenity 2> >(grep -v GtkDialog >&2)'
# GET SCREEN DIMENSIONS
screen = $( xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/' )
width = $( echo $screen | cut -d 'x' -f 1)
height = $( echo $screen | cut -d 'x' -f 2)
large = $(( width-300))
haut = $(( height-200))
########################################################################
# CHECK for Kodi + astroport.py
2021-01-31 14:21:59 +01:00
IPFSNODEID = $( ipfs id -f= '<id>\n' )
2021-01-29 01:09:40 +01:00
if [ [ -f ~/.zen/astroport.py ] ]
then
## NORMAL behaviour (ISOConfig.sh made the Job)
## astroport.py already created (refresh vstream plugin,in case update erase it)
cp ~/.zen/astroport.py ~/.kodi/addons/plugin.video.vstream/resources/sites/astroport.py
else
## astroport.py missing
cp -f ~/.zen/astrXbian/.install/.kodi/addons/plugin.video.vstream/resources/sites/astroport.py ~/.zen/astroport.py
## CONFIGURE ASTROPORT ACCOUNT
# Make xbian G1BILLET or ASK for it?
zenity --warning --width 300 --text "Vous devez avoir un compte Gchange.fr pour utiliser ASTROPORT / KODI"
zenity --question --width 300 --text "Avez vous déjà un compte sur Gchange.fr ?"
[ $? = = 1 ] && xdg-open "https://gchange.fr"
#sed -i "s/_PROFIL_/$XZUID/g" ~/.zen/astroport.py
#sed -i "s/_LOGIN_/$salt/g" ~/.zen/astroport.py
#sed -i "s/_MDP_/$pepper/g" ~/.zen/astroport.py
sed -i " s/_IPFSNODEID_/ $IPFSNODEID /g " ~/.zen/astroport.py
cp ~/.zen/astroport.py ~/.kodi/addons/plugin.video.vstream/resources/sites/astroport.py
fi
2021-01-29 01:21:28 +01:00
## GET XZUID
2021-02-13 00:40:45 +01:00
[ [ -f ~/.zen/ipfs/.$IPFSNODEID /G1SSB/_g1.gchange_title ] ] && XZUID = $( cat ~/.zen/ipfs/.$IPFSNODEID /G1SSB/_g1.gchange_title) || XZUID = $( hostname)
2021-01-29 01:21:28 +01:00
2021-02-04 02:56:57 +01:00
zenity --warning --width 300 --text "Ajoutez une vidéo à ASTROPORT/KODI"
2021-01-29 01:09:40 +01:00
########################################################################
# SELECT FILE TO ADD TO ASTROPORT/KODI
FILE = $( zenity --file-selection --title= "Sélectionner le fichier à ajouter" )
echo " ${ FILE } "
# Remove file extension to get file name => STITLE
FILE_PATH = " $( dirname " ${ FILE } " ) "
FILE_NAME = " $( basename " ${ FILE } " ) "
FILE_EXT = " ${ FILE_NAME ##*. } "
FILE_TITLE = " ${ FILE_NAME %.* } "
# OPEN default browser and search TMDB
zenity --question --width 300 --text "Ouvrir le site themoviedb pour récuperer son numéro d'identification?"
[ $? = = 1 ] && exit 1
xdg-open " https://www.themoviedb.org/search?query= ${ FILE_TITLE } "
TMDB = $( zenity --entry --title= "Identification TMDB" --text= "Indiquez le numéro de la fiche du film. Exemple: https://www.themoviedb.org/movie/301528-toy-story-4 = 301528" --entry-text= "" )
# CHOOSE CATEGORY
CHOICE = $( zenity --entry --width 300 --title= "Catégorie" --text= "Choisissez la catégorie de la vidéo" --entry-text= "Film" Serie Anime)
2021-02-04 02:56:57 +01:00
[ [ $CHOICE = = "" ] ] && exit 1
2021-01-29 01:09:40 +01:00
# LOWER CARACTERS
CAT = $( echo " ${ CHOICE } " | awk '{print tolower($0)}' )
PREFIX = $( echo " ${ CAT } " | head -c 1 | awk '{ print toupper($0) }' ) # ex: F, S, A
# VIDEO TITLE
TITLE = $( zenity --entry --width 300 --title "Titre" --text "Indiquez le titre de la vidéo" --entry-text= " ${ FILE_TITLE } " )
2021-02-04 02:56:57 +01:00
[ [ $TITLE = = "" ] ] && exit 1
2021-01-29 01:09:40 +01:00
# VIDEO YEAR
2021-02-13 00:40:45 +01:00
YEAR = $( zenity --entry --width 300 --title "Année" --text "Indiquez année de la vidéo. Exemple: 1985" --entry-text= "" )
2021-01-29 01:09:40 +01:00
# VIDEO RESOLUTION
2021-01-29 01:12:29 +01:00
FILE_RES = $( ffprobe -v error -select_streams v:0 -show_entries stream = width,height -of csv = s = x:p= 0 " ${ FILE } " | cut -d "x" -f 2) p
2021-02-13 00:40:45 +01:00
RES = $FILE_RES
#RES=$(zenity --entry --width 300 --title="Résolution" --text="Résolution de la vidéo" --entry-text="${FILE_RES}" SD HD 4K 360p 480p 720p 1080p)
2021-01-29 01:09:40 +01:00
# VIDEO SEASON or SAGA
[ [ " ${ CAT } " = = "serie" || " ${ CAT } " = = "anime" ] ] && SAISON = $( zenity --entry --width 300 --title " ${ CHOICE } Saison " --text "Indiquez SAISON et EPISODE. Exemple: S02E05" --entry-text= "" )
2021-02-13 00:40:45 +01:00
[ [ " ${ CAT } " = = "film" ] ] && SAISON = $( zenity --entry --width 300 --title " ${ CHOICE } Saga " --text "Indiquez une SAGA (optionnel). Exemple: James Bond" --entry-text= "" )
2021-01-29 01:09:40 +01:00
# VIDEO GENRES
FILM_GENRES = $( zenity --list --checklist --title= "GENRE" --height= ${ haut } \
--text= " Choisissez le(s) genre(s) de la vidéo \" ${ TITLE } \" " \
--column= "Use" \
--column= "Feature" \
FALSE '+18' \
FALSE Action\
FALSE Animation\
FALSE 'Arts martiaux' \
FALSE Aventure\
2021-01-31 14:21:59 +01:00
FALSE Autre\
2021-01-29 01:09:40 +01:00
FALSE Biographie\
FALSE Biopic\
FALSE Comedie\
FALSE 'Comedie dramatique' \
FALSE 'Comedie musicale' \
FALSE Crime\
FALSE Documentaire\
FALSE Drame\
FALSE Divers\
2021-01-31 14:21:59 +01:00
FALSE Educatif\
2021-01-29 01:09:40 +01:00
FALSE Enfant\
FALSE 'Epouvante horreur' \
FALSE Espionnage\
FALSE Famille\
FALSE Fantastique\
FALSE Guerre\
FALSE Histoire\
FALSE Historique\
FALSE Judiciaire\
FALSE Opera\
FALSE Medical\
2021-01-31 14:21:59 +01:00
FALSE Musique\
FALSE Mystere\
2021-01-29 01:09:40 +01:00
FALSE Peplum\
FALSE Policier\
FALSE Romance\
FALSE 'Science fiction' \
FALSE Soap\
FALSE Spectacle\
FALSE Sport\
FALSE Telefilm\
FALSE Thriller\
FALSE Western)
2021-01-31 14:21:59 +01:00
# FORMAT GENRES ["genre1","genre2"]
2021-01-29 01:09:40 +01:00
GENRES = " [\" $( echo ${ FILM_GENRES } | sed s/\| /\" ,\" /g) \"] "
2021-02-04 02:56:57 +01:00
[ [ $GENRES = = "" ] ] && exit 1
2021-01-29 01:09:40 +01:00
# VIDEO GROUP
2021-02-13 17:59:10 +01:00
GROUPES = $( zenity --entry --width 300 --title "Groupe" --text "Associez la vidéo à un groupe (optionnel). Exemple: PIXAR" --entry-text= " ${ XZUID } " )
2021-01-29 01:09:40 +01:00
2021-02-13 00:40:45 +01:00
# DEBUG VERIFICATION
2021-01-29 01:09:40 +01:00
zenity --question --width ${ large } --title "Vérifiez les informations: CAT; TMDB; YEAR; TITLE; SAISON; GENRES; GROUPES; RES" \
--text " ${ CAT } ; ${ TMDB } ; ${ YEAR } ; ${ TITLE } ; ${ SAISON } ; ${ GENRES } ; ${ GROUPES } ; ${ RES } "
2021-02-13 00:40:45 +01:00
[ $? = = 1 ] && echo "ANNULATION." && exit 1
2021-01-29 01:09:40 +01:00
########################################################################
# ADD $FILE to IPFS / ASTROPORT / KODI
########################################################################
2021-02-13 16:17:07 +01:00
IPFSREPFILEID = $( ipfs add -wq " ${ FILE_PATH } / ${ FILE_NAME } " | tail -n 1)
2021-02-13 00:40:45 +01:00
[ [ $IPFSREPFILEID = = "" ] ] && echo "ipfs add ERROR" && exit 1
echo "-----------------------------------------------------------------"
echo " CHECK IPFS $FILE_NAME : ipfs ls /ipfs/ $IPFSREPFILEID "
echo "-----------------------------------------------------------------"
echo " UPDATE $TYPE INDEX in ~/.zen/ipfs/. ${ IPFSNODEID } /astroport/kodi/vstream/ ${ PREFIX } ASTRXBIAN "
mkdir -p ~/.zen/ipfs/.${ IPFSNODEID } /astroport/kodi/vstream/
URLENCODE_FILE_NAME = $( echo ${ FILE_NAME } | jq -Rr @uri)
# Init ${PREFIX}ASTRXBIAN header
mv ~/.zen/ipfs/xbian/${ PREFIX } ${ XZUID } ~/.zen/ipfs/.${ IPFSNODEID } /astroport/kodi/vstream/${ PREFIX } ASTRXBIAN # MOVE OLD FS
[ [ ! -f ~/.zen/ipfs/.${ IPFSNODEID } /astroport/kodi/vstream/${ PREFIX } ASTRXBIAN ] ] && echo "CAT;TMDB;YEAR;TITLE;SAISON;GENRES;GROUPES;RES;URLS=http://127.0.0.1:8181" > ~/.zen/ipfs/.${ IPFSNODEID } /astroport/kodi/vstream/${ PREFIX } ASTRXBIAN
## CHECK IF $IPFSREPFILEID is NEW, or an already existing in SWARMs?
isFILEinINDEX = $( grep " $URLENCODE_FILE_NAME " ~/.zen/ipfs_swarm/.*/astroport/kodi/vstream/*ASTRXBIAN)
isLINKinINDEX = $( grep " $IPFSREPFILEID " ~/.zen/ipfs_swarm/.*/astroport/kodi/vstream/*ASTRXBIAN)
isFILEinMYINDEX = $( grep " $URLENCODE_FILE_NAME " ~/.zen/ipfs/.${ IPFSNODEID } /astroport/kodi/vstream/${ PREFIX } ASTRXBIAN)
isLINKinMYINDEX = $( grep " $IPFSREPFILEID " ~/.zen/ipfs/.${ IPFSNODEID } /astroport/kodi/vstream/${ PREFIX } ASTRXBIAN)
# Is it a new file? Add it to INDEX
if [ [ ! $isFILEinINDEX && ! $isLINKinINDEX ] ] ; then
2021-02-13 17:59:10 +01:00
mkdir -p ~/.zen/ipfs/.${ IPFSNODEID } /PIN/${ IPFSREPFILEID } /${ G1PUB } /
2021-02-13 00:40:45 +01:00
# SIMILAR with "ipfs ls /ipns/${IPFSNODEID}/.${IPFSNODEID}/PIN/ (...)"
2021-02-13 17:59:10 +01:00
echo " ${ CAT } ; $TMDB ; $YEAR ; $TITLE ; $SAISON ; ${ GENRES } ; ${ GROUPES } ; $RES ;/ipfs/ $IPFSREPFILEID / $URLENCODE_FILE_NAME " >> ~/.zen/ipfs/.${ IPFSNODEID } /astroport/kodi/vstream/${ PREFIX } ASTRXBIAN
2021-02-13 00:40:45 +01:00
else
if [ [ $isFILEinMYINDEX ] ] ; then
echo " $FILE_NAME already in index " ## File was updated => Change OLDLINK
OLDLINK = $( echo $isFILEinMYINDEX | cut -d ";" -f 9 | cut -d "/" -f 3 | tail -n 1) # GRAB old ipfs id
sed -i " s/ $OLDLINK / $IPFSREPFILEID /g " ~/.zen/ipfs/.${ IPFSNODEID } /astroport/kodi/vstream/${ PREFIX } ASTRXBIAN
2021-01-31 14:21:59 +01:00
fi
2021-02-13 00:40:45 +01:00
[ [ $isLINKinINDEX ] ] && echo " $IPFSREPFILEID already in index. DO NOTHING "
fi
2021-01-31 14:21:59 +01:00
2021-02-13 00:40:45 +01:00
########################################################################
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 )
2021-02-16 11:48:23 +01:00
echo " CREATE ~/.zen/ipfs/. ${ IPFSNODEID } / ${ PREFIX } ASTRXBIAN ( $TYPE ) from ~/.zen/ipfs*/xbian/ ${ PREFIX } * "
echo "-----------------------------------------------------------------"
cat ~/.zen/ipfs_swarm/.*/astroport/kodi/vstream/${ PREFIX } * | sort | uniq > ~/.zen/ipfs/.${ IPFSNODEID } /${ PREFIX } ASTRXBIAN
2021-02-13 00:40:45 +01:00
echo " NEW $TYPE ( $FILE_NAME ) ADDED. "
echo " INDEX UPDATED : http://127.0.0.1:8181/ipns/ ${ IPFSNODEID } /. ${ IPFSNODEID } / ${ PREFIX } ASTRXBIAN "
2021-02-16 11:48:23 +01:00
zenity --warning --text " Vidéo $FILE_NAME disponible dans Kodi/Vstream/Astroport "
2021-02-13 16:17:07 +01:00
2021-02-13 00:40:45 +01:00
# OLD FILE STRUCTURE CLEANING
rm -f ~/.zen/ipfs/.${ IPFSNODEID } /_timestamp
rm -f ~/.zen/ipfs/.${ IPFSNODEID } /_chain