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
[ [ " $XZUID " = = "" ] ] && XZUID = $( cat ~/.zen/ipfs/.${ IPFSNODEID } /_xbian.zuid)
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)
# 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 } " )
# VIDEO YEAR
YEAR = $( zenity --entry --width 300 --title "Année" --text "Indiquez année de la vidéo. Exemple: 1972" --entry-text= "" )
# 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-01-31 14:21:59 +01:00
RES = $( zenity --entry --width 300 --title= "Résolution" --text= "Indiquez la 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= "" )
[ [ " ${ CAT } " = = "film" ] ] && SAISON = $( zenity --entry --width 300 --title " ${ CHOICE } Saga " --text "Indiquez la SAGA (optionnel). Exemple: James Bond" --entry-text= "" )
# 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) \"] "
# VIDEO GROUP
2021-01-31 14:21:59 +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
# VERIFICATION
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 } "
########################################################################
# ADD $FILE to IPFS / ASTROPORT / KODI
########################################################################
if [ $? = 0 ]
then
2021-01-31 14:21:59 +01:00
echo " OK! Ajout de ${ TITLE } dans ASTROPORT/KODI "
2021-01-29 01:09:40 +01:00
zenity --warning --width 300 --text " Ajout de votre ${ CAT } ${ TITLE } dans ASTROPORT "
NEWSHARE = $( ipfs add -wq " ${ FILE } " | tail -n 1)
2021-01-31 14:21:59 +01:00
echo " ipfs ls /ipfs/ $NEWSHARE "
2021-01-29 01:09:40 +01:00
mkdir -p ~/.zen/ipfs/xbian
2021-01-31 14:21:59 +01:00
## FIRST FILE ADDED: Create ~/.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 DUPLICATE
isLINKinINDEX = $( grep " $NEWSHARE " ~/.zen/ipfs_swarm/xbian/${ PREFIX } *)
isLINKinMYINDEX = $( grep " $NEWSHARE " ~/.zen/ipfs/xbian/${ PREFIX } ${ XZUID } )
# ADD FILE TO INDEX
if [ [ ! $isFILEinINDEX && ! $isLINKinINDEX ] ] ; then
echo " ${ CAT } ; ${ TMDB } ; ${ YEAR } ; ${ TITLE } ; ${ SAISON } ; ${ GENRES } ; ${ GROUPES } ; ${ RES } ;/ipfs/ ${ NEWSHARE } / ${ FILE_NAME } " >> ~/.zen/ipfs/xbian/${ PREFIX } ${ XZUID }
else
echo " $NEWSHARE already in ASTROPORT. DO NOTHING "
fi
echo "SYNCing with SWARM..."
~/.zen/astrXbian/zen/ipfs_SWARM_refresh.sh
echo " CREATE ~/.zen/ipfs/. ${ IPFSNODEID } / ${ PREFIX } ASTRXBIAN ( $TYPE ) from ipfs_swarm 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 without header
2021-01-31 15:28:00 +01:00
cat /tmp/xbian/${ PREFIX } ASTRXBIAN | sort | uniq > /tmp/xbian/${ PREFIX } ASTRXBIAN.uniq # REMOVE DUPLICATE
2021-01-31 14:21:59 +01:00
mv /tmp/xbian/${ PREFIX } ASTRXBIAN.uniq ~/.zen/ipfs/.${ IPFSNODEID } /${ PREFIX } ASTRXBIAN # Publish ASTROPORT/KODI INDEX
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 " $CAT ${ FILE_NAME } ADDED "
echo " CHECK INDEX : http://127.0.0.1:8181/ipns/ ${ IPFSNODEID } /. ${ IPFSNODEID } / ${ PREFIX } ASTRXBIAN "
2021-01-29 01:09:40 +01:00
else
echo "NON ! ANNULATION."
fi