forked from axiom-team/astrXbian
206 lines
9.1 KiB
Bash
Executable File
206 lines
9.1 KiB
Bash
Executable File
#!/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
|
|
IPFSNODEID=$(ipfs id -f='<id>\n')
|
|
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
|
|
|
|
## GET XZUID
|
|
[[ "$XZUID" == "" ]] && XZUID=$(cat ~/.zen/ipfs/.${IPFSNODEID}/_xbian.zuid)
|
|
|
|
########################################################################
|
|
# 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
|
|
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
|
|
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)
|
|
|
|
# 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\
|
|
FALSE Autre\
|
|
FALSE Biographie\
|
|
FALSE Biopic\
|
|
FALSE Comedie\
|
|
FALSE 'Comedie dramatique'\
|
|
FALSE 'Comedie musicale'\
|
|
FALSE Crime\
|
|
FALSE Documentaire\
|
|
FALSE Drame\
|
|
FALSE Divers\
|
|
FALSE Educatif\
|
|
FALSE Enfant\
|
|
FALSE 'Epouvante horreur'\
|
|
FALSE Espionnage\
|
|
FALSE Famille\
|
|
FALSE Fantastique\
|
|
FALSE Guerre\
|
|
FALSE Histoire\
|
|
FALSE Historique\
|
|
FALSE Judiciaire\
|
|
FALSE Opera\
|
|
FALSE Medical\
|
|
FALSE Musique\
|
|
FALSE Mystere\
|
|
FALSE Peplum\
|
|
FALSE Policier\
|
|
FALSE Romance\
|
|
FALSE 'Science fiction'\
|
|
FALSE Soap\
|
|
FALSE Spectacle\
|
|
FALSE Sport\
|
|
FALSE Telefilm\
|
|
FALSE Thriller\
|
|
FALSE Western)
|
|
|
|
# FORMAT GENRES ["genre1","genre2"]
|
|
GENRES="[\"$(echo ${FILM_GENRES} | sed s/\|/\",\"/g)\"]"
|
|
|
|
# VIDEO GROUP
|
|
GROUPES=$(zenity --entry --width 300 --title "Groupe" --text "Associez la vidéo à un groupe (optionnel). Exemple: PIXAR" --entry-text="${XZUID}")
|
|
|
|
# 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
|
|
echo "OK! Ajout de ${TITLE} dans ASTROPORT/KODI"
|
|
zenity --warning --width 300 --text "Ajout de votre ${CAT} ${TITLE} dans ASTROPORT"
|
|
NEWSHARE=$(ipfs add -wq "${FILE}" | tail -n 1)
|
|
echo "ipfs ls /ipfs/$NEWSHARE"
|
|
|
|
mkdir -p ~/.zen/ipfs/xbian
|
|
## 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
|
|
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 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"
|
|
else
|
|
echo "NON ! ANNULATION."
|
|
fi
|