Bonjour ragamatrix, moi je ne pourrais pas t'aider, mais je vois sur le site que tu propose ci-dessus, qu'il n'offre pas un lien url avec l'affichage de la miniature en premier et tu sais que sur le forum il faut une miniature qui redirige vers l'image originale.
Et je ne suis pas certain que ça fera une nouvelle version, mais la modification apportée par daniel est déjà opérationnelle.
#!/bin/bash
#set -x # décommenter pour activer le débogage
# PixUp : version 4.0
# Script d'upload d'image vers des services d'hébergement
# lancez pixup --help pour plus d'info
#
# Services disponibles :
# - toile-libre.org, debian-fr.xyz
# - casimages.com
# - hostingpics.net
# - lut.im, framapic.org
#
# Auteurs:
# Sébastien Charpentier alias "cracolinux" <cracolinux@mailoo.org>
# Roger Sauret alias "eresse" <rogersauret@free.fr>
#
# Contributeur:
# HUC Stéphane alias "PengouinPdt" <devs@stephane-huc.net>
#
# Dépôt GitHub:
# https://framagit.org/PixUP/pixup (en développement dans .../PixUP/redo)
#
# Copyleft - 2012 → 2016
# Date: 16/06/2016
#
# Dépendances : curl, zenity, xclip
#
# Merci de l'aide de byte_bucket reçue sur le canal #curl de freenode
# Merci à Ansuzpeorth ;)
# et à Hush !
#
# N'hésitez pas à proposer vos idées pour améliorer ce script...
# LICENCE:
#Configuration
# LICENCE PUBLIQUE RIEN À BRANLER
# Version 1, Mars 2009
# Copyright (C) 2009 Sam Hocevar
# 14 rue de Plaisance, 75014 Paris, France
#
# La copie et la distribution de copies exactes de cette licence sont
# autorisées, et toute modification est permise à condition de changer
# le nom de la licence.
#
# CONDITIONS DE COPIE, DISTRIBUTION ET MODIFICATION
# DE LA LICENCE PUBLIQUE RIEN À BRANLER
#
# 0. Faites ce que vous voulez, j’en ai RIEN À BRANLER.
###
# constantes diverses
###
MAX_FILE_SIZE=15360000 # taille maximale du fichier (Toile Libre)
# codes couleurs et effets d'affichage
NORMAL="$(tput sgr0)" # RESET
BLEU="$(tput setaf 6)" # CYAN
ROUGE="$(tput setaf 1)" # RED
VERT="$(tput setaf 2)" # GREEN
# Quelques codes générés à titre d'exemple :
# #BLEU="\e[1;34m" #NORMAL="\e[0;39m" #ROUGE="\e[1;31m" #VERT="\e[0;32m"
# pour le changement de couleur dans les "sed"
SED_NORMAL="\\\\e[0;39m"
SED_VERT="\\\\e[0;32m"
# paramètres de la configuration
DIR_CFG="$HOME/.config/Pixup" # répertoire de configuration
CONFIG="${DIR_CFG}/pixup.conf" # fichier de configuration
###
# Variables
###
version="v 4.0"
title="Pix^ :: PixUP - Vos images sur les forums"
log_name="${DIR_CFG}/Pixup.historique.html" # fichier journal/historique
nom_serv=("Casimages" "Debian-fr" "Framapic" "HostingPics" "Lutim" "Toile_Libre")
services=("casimages" "debianfr" "framapic" "hostingpics" "lutim" "toilelibre")
url_serv=("http://www.casimages.com/upload_ano.php" "https://pix.debian-fr.xyz/" "https://framapic.org" "http://www.hostingpics.net/envoi.html" "https://lut.im" "http://pix.toile-libre.org")
#############################################################################
# Fonctions !
#############################################################################
# Cette fonction arrête le script
stop() {
echo -e "Le script va s'arrêter !"
exit 1
}
# Cette fonction vérifie les dépendances nécessaires
F_check_dependances() {
crd=false
for name in curl xclip zenity; do
if [[ ! -x $(which ${name}) ]]; then
printf "[ \\33[1;31m%s\\33[0;39m ] %s \n" "KO" "Manque: ${name}; installez-la s.v.p !"
crd=true
fi
done
if ${crd}; then stop; fi
}
# Cette fonction charge la configuration
F_loadconf() {
search=""
[[ -f "${CONFIG}" ]] && search="$(grep "PixUp>=v4" "${CONFIG}")"
if [[ -z "${search}" ]]; then
# (re)création du fichier de config
if [[ ! -d "${DIR_CFG}" ]]; then mkdir "${DIR_CFG}"; fi # création du répertoire
cfg="##### PixUp>=v4 ##### Valeurs modifiables ############################
# mode graphique complet : true pour activer ou false pour la désactiver
## si graphedit est true, les choix de fonction et de service sont gérés
## si graphedit est false, le fichier sera téléversé dans service_defaut
graphedit=true
# journalisation : true pour activer ou false pour la désactiver
journal=true
# localisation du journal dans votre répertoire personnel
logname=\"${log_name}\"
# sens de lecture du journal historique : 'normal' ou 'inverse'
chronologie=\"inverse\"
# service par défaut :
## \"casimages\" \"debianfr\" \"framapic\" \"hostingpics\" \"lutim\" \"toilelibre\"
service_defaut=\"hostingpics\"
# taille de la vignette dans le journal :
mini_width=100
# Sortie console en couleur : true pour activer ou false pour la désactiver
output_color=true"
echo -e "${cfg}" > "${CONFIG}"
fi
# initialisation des valeurs
source "${CONFIG}"
}
# Cette fonction vérifie le fichier historique
F_checklog () {
# si le fichier de log n'existe pas, on le crée
if [ ! -f "${logname}" ] ; then
F_create_log
fi
# si le log est v3.0, on change le nom de fichier
if [[ "${logname}" == "${DIR_CFG}/Pixup.log.html" ]]; then
mv "${DIR_CFG}/Pixup.log.html" "${DIR_CFG}/Pixup.historique.html"
fi
# si un log v2.4 existe, on le deplace vers .config
if [[ -f "${HOME}/pixupLog.html" ]]; then
mv "${HOME}/pixupLog.html" "${DIR_CFG}"
# et on crée un chaînage dans l'historique
ancienlog="<article><h3>Ancien fichier log <em>(v2.4)</em></h3><p><strong><a href=\"${DIR_CFG}/pixupLog.html\">${DIR_CFG}/pixupLog.html</a> </strong></p></article>"
sed -i -e "s#</body>#${ancienlog}\n</body>#g" "${logname}"
fi
}
# Crée le fichier historique
F_create_log () {
echo '<!doctype html>
<html lang="fr">
<head>
<title>${title}</title>
<meta charset="utf-8">
<style type="text/css"> a img { border:0; } </style>
</head>
<body>
</body>
</html>' > "${logname}"
}
# Cette fonction permet d'afficher l'aide
F_aide () {
mssg="${ROUGE}Syntaxe${NORMAL} : pixup [option] fichier
${ROUGE}Options${NORMAL} :
-s ou --service
c → casimages.com
d → debian-fr.org
f → framapic.org
h → hostingpics.net
l → lut.im
t → toile-libre.org
-j ou --journal afficher le journal (${logname})
-c ou --config afficher le fichier de config
-h ou --help afficher l'aide
Si l'option -s n'est pas fournie, le script utilisera le service par défaut :
- ${service_defaut} -
Celui-ci est modifiable dans le fichier de config.
${ROUGE}Fichier${NORMAL} :
Le fichier à uploader
${ROUGE}Exemples${NORMAL} :
pixup /home/john/rambo/tutu.png
→ upload du fichier /home/john/rambo/tutu.png vers le service par défaut
pixup -s c toto.jpg
→ upload du fichier ./toto.jpg vers casimages.com
"
echo -e "${mssg}"
}
# Cette fonction permet de choisir la fonction
F_fonction() {
fonction=$(zenity --list --radiolist --title "PixUp ${version}" --text "Fonctions disponibles" \
--column="Bouton" --column="Libellé" --column="Valeur" --hide-column="3" --print-column="3" \
--hide-header \
true "Téléverser une image" "UPLOAD" \
false "Visualiser l'historique" "LSTLOG" \
false "Editer la configuration" "EDCONF")
[[ "$?" != 0 ]] && stop # si non OK, on sort !
case "${fonction}" in
UPLOAD)
;; # continuer en séquence
LSTLOG)
x-www-browser "${logname}" &
exit 0 ;;
EDCONF)
xdg-open "${CONFIG}" &
exit 0 ;;
esac
}
# Cette fonction acquiert les données de téléversement
F_launcher () {
if ${versionconsole} ; then
# en mode console ou "Ouvrir avec..."
if [[ -f "${PARAMS[0]}" ]]; then
fichier="${PARAMS[0]}"
service_choisi="${service_defaut}"
[[ ${xpixup} = true ]] && versionconsole=false
else
case "${PARAMS[0]}" in
-h|--help)
F_aide ; exit 0
;;
-s|--service)
crd=false
for name in "${services[@]}"; do
if [[ "${name:0:1}" = "${PARAMS[1]:0:1}" ]]; then
service_choisi="${name}"
crd=true; break
fi
done
if ${crd}; then
if [[ -f "${PARAMS[2]}" ]]; then
fichier="${PARAMS[2]}"
else
echo -e "${ROUGE}Fichier non valide${NORMAL} : ${PARAMS[2]}"
F_aide; exit 3
fi
else
echo -e "${ROUGE}Service non valide${NORMAL} : ${PARAMS[1]}"
F_aide; exit 3
fi
;;
-j|--journal|--historique)
x-www-browser "${logname}" &
exit 0
;;
-c|--config)
xdg-open "${CONFIG}" &
exit 0
;;
*)
echo -e "${ROUGE}Argument non valide${NORMAL} : ${PARAMS[0]}"
F_aide; exit 3
;;
esac
fi
else
# en mode graphique
if ${graphedit} ; then
valeurs="" # construction de la liste des services
for idx in "${!services[@]}"; do
if [[ "${service_defaut}" = "${services[idx]}" ]]; then
valeurs="${valeurs} true"
else
valeurs="${valeurs} false"
fi
valeurs="${valeurs} ${nom_serv[idx]} ${services[idx]}"
done
service_choisi=$(zenity --list --radiolist --title="PixUp ${version}" --text="Services d'upload" \
--width=200 --height=240 --column="Bouton" --column="Libellé" --column="Valeur" \
--hide-column="3" --print-column="3" --hide-header \
${valeurs})
[[ "$?" != 0 ]] && stop # si non OK, on sort !
else
service_choisi="${service_defaut}"
fi
# acquisition du fichier à téléverser
F_selection_fichier
fi
}
# Cette fonction permet de sélectionner le fichier en mode graphique
F_selection_fichier() {
fichier=$(zenity --file-selection --title="PixUp ${version} - Fichier à uploader" \
--filename="${chemin:-$HOME}")
[[ "$?" != 0 ]] && stop # si non OK, on sort !
}
# Cette fonction constitue le corps du script (amen !)
PixUp () {
# Création d'un fichier de travail pour la réception des infos
echo > "/tmp/tampon"
# Création du fichier de communication "tube"
echo -e "result=\"OK\"" > "/tmp/tube"
(
tampon0="/tmp/tampon0"
tampon="/tmp/tampon"
# Vérification de la validité du fichier et obtention du type de fichier
F_checkfichier
F_get_extension
# Récupération de l'URL du service choisi
urlserv_choisi=""
for idx in "${!services[@]}"; do
if [[ "${service_choisi}" = "${services[idx]}" ]]; then
urlserv_choisi="${url_serv[idx]}"
break
fi
done
# Envoi du fichier sur le service choisi
F_service_${service_choisi}
# Traitement des retours
F_build_results
# Effacement du fichier de travail "${tampon}"
#rm -f "${tampon}" "${tampon0}"
# Sauvegarde des variables dans "tube" (à cause du zenity progress)
echo -e "idx=${idx}" >> "/tmp/tube"
echo -e "absolufichier=\"${absolufichier}\"" >> "/tmp/tube"
echo -e "fichier=\"${fichier}\"" >> "/tmp/tube"
echo -e "ins_mini=\"${ins_mini}\"" >> "/tmp/tube"
echo -e "ins_imag=\"${ins_imag}\"" >> "/tmp/tube"
echo -e "aff_mini=\"${aff_mini}\"" >> "/tmp/tube"
) | F_patienter
# Récupération des variables sauvegardées (par source "tube")
. "/tmp/tube"
# Afficher / historiser les résultats, si OK
if [[ "${result}" = "OK" ]]; then F_show_results
else cat "/tmp/mesg"; rm -f "/tmp/mesg"; fi
# Effacement du fichier de communication "tube"
rm -f "/tmp/tube"
[[ ${xpixup} == true ]] && exit 0 # si mode "Ouvrir avec...", on sort !
# Voir si un autre fichier est souhaité
F_restart_service
}
# Cette fonction crée, si nécessaire, le chemin de fichier absolu
F_checkfichier () {
mssg="Le fichier ${absolufichier} n'existe pas !"
if ${versionconsole} ; then
if [ "${fichier:0:1}" = "/" ] ; then
absolufichier="${fichier}"
fichier="${fichier##*/}" # suppression de la plus longue chaine à gauche du caractère /
elif [ "${fichier:0:2}" = ".." ] ; then
cd "${PWD}/${fichier%/*}" # suppression de la plus courte chaine à droite du caractère /
fichier="${fichier##*/}"
absolufichier="${PWD}/${fichier}"
else
absolufichier="${PWD}/${fichier}"
fi
else
# force le chemin absolu si le fichier seul est fourni (Ouvrir avec...)
[[ ${xpixup} = true && "${fichier:0:1}" != "/" ]] && fichier="${PWD}/${fichier}"
absolufichier="${fichier}"
fichier="${fichier##*/}"
fi
# le fichier choisi n'existe pas
[ ! -f "${absolufichier}" ] && F_fichierHS "${mssg}"
# on conserve le chemin dans la conf
chemin="${absolufichier%/*}/" # le dernier / est requis pour l'option filename de zenity
if [[ -n $(grep 'chemin=' "${CONFIG}") ]]; then
sed -i '/^chemin/d' "${CONFIG}" # supprime la ligne si elle existe déjà
fi
echo -e "chemin=\"${chemin}\"" >> "${CONFIG}"
}
# Cette fonction extrait le type MIME du fichier
F_get_extension () {
mssg="Le fichier ${absolufichier} n'est pas une image"
typemime=$(file -bi "${absolufichier}")
mime=${typemime%;*} # suppression de la plus courte chaine à droite de ;
if [ "${mime%/*}" != "image" ]; then # suppression de la plus courte chaine à droite de /
F_fichierHS "${mssg}"
fi
extension=${mime#*/} # suppression de la plus courte chaine à gauche de /
}
# Cette fonction affiche une erreur si le fichier est incorrect
F_fichierHS() {
if ${versionconsole} ; then
echo "$1" > "/tmp/mesg"
else
zenity --warning --title="PixUp ${version}" --text="$1"
fi
echo -e "result=\"KO\"" > "/tmp/tube"
exit 2
}
# Cette fonction envoie vers le service casimages
F_service_casimages () {
url_codes=$(curl -v -L -F "cat=12" -F "image=@${absolufichier};type=image/${extension};filename=${fichier}" "${urlserv_choisi}" 2>/dev/null | grep 'document.location.href' | cut -d'"' -f2)
curl "http://www.casimages.com/${url_codes}" 2>/dev/null > "${tampon}"
}
# Cette fonction envoie vers le service hostingpics
F_service_hostingpics () {
curl -v -L -F "photo1=@${absolufichier};type=image/${extension};filename=${fichier}" "${urlserv_choisi}" 2>/dev/null > "${tampon}"
}
# Cette fonction envoie vers le service lutim
F_service_lutim () {
curl -F "file=@${absolufichier}" -F "format=web" "${urlserv_choisi}" 2>/dev/null > "${tampon}"
}
# Cette fonction envoie vers le service toilelibre
F_service_toilelibre () {
curl -v -L -F "img=@${absolufichier};type=image/${extension};filename=${fichier}" -F "MAX_FILE_SIZE=${MAX_FILE_SIZE}" "${urlserv_choisi}/?action=upload" 2>/dev/null > "${tampon}"
}
# Cette fonction envoie vers le service debianfr
F_service_debianfr() {
F_service_toilelibre
}
# Cette fonction envoie vers le service framapic
F_service_framapic() {
F_service_lutim
}
# Cette fonction affiche une erreur si le service n'est pas opérationnel
F_serviceHS () {
text="Le service ${nom_serv[idx]} ne semble pas opérationnel !\nVotre image n'a pas pu être téléversée."
if ! ${versionconsole} ; then
zenity --warning --title "PixUp ${version}" --text "${text}"
else
echo -e "${ROUGE}ALERTE : PixUp ${version} \n\n${NORMAL}${text}" > "/tmp/mesg"
fi
echo -e "result=\"KO\"" > "/tmp/tube"
exit 2
}
# Cette fonction traite les retours des services
F_build_results() {
# traitement du tampon
declare -a liens
case "${service_choisi}" in
"casimages")
# argument de recherche des url de la miniature et de l'image pour insérer dans un forum
pattern_url="<input type=['\"]text['\"] class='formlog' onFocus=['\"]this\.select()['\"] size=['\"]90['\"] value=['\"]\[[uU]\([^>]*\)['\"]"
# argument de recherche des adresses de la miniature et de l'image pour affichage
pattern_adr="<input type=['\"]text['\"] class='formlog' onFocus=['\"]this\.select()['\"] size=['\"]90['\"] value=['\"]http\([^>]*\)['\"]"
# extraction des données du tampon
urls="$(grep "${pattern_url}" "${tampon}" | sed -e "s#\(.*\)value=['\"]\([^>]*\)['\"]\(.*\)#\2#g")"
adrs="$(grep "${pattern_adr}" "${tampon}" | sed -e "s#\(.*\)value=['\"]\([^>]*\)['\"]\(.*\)#\2#g")"
[ -z "${urls}" ] && F_serviceHS # Service indisponible ?
# dégroupage des retours en 5 liens correspondants
echo "${urls}" > "/tmp/liens"
echo "${adrs}" >> "/tmp/liens"
readarray -t liens < "/tmp/liens"
rm -f "/tmp/liens"
# Note: A l'issue de ces opérations, le tableau liens contiendra dans l'ordre :
# liens[0] : code url pour insérer la miniature dans un forum
# liens[1] : code url pour insérer l'image en grand dans un forum
# liens[2] : lien d'accès à la page du service casimage contenant l'image
# liens[3] : adresse de la miniature pour l'afficher
# liens[4] : adresse de l'image en grand pour l'afficher
# champs pour l'affichage des résultats (*** préparation résultat ***)
ins_mini="${liens[0]}"
ins_imag="${liens[1]}"
aff_mini="${liens[3]}"
;;
"hostingpics")
# argument de recherche des url de la miniature et de l'image pour insérer dans un forum
pattern_url="value=\"\[url\([^>]*\)\""
# argument de recherche de l'adresse de la miniature pour affichage
pattern_adr="value=.*a href="
# extraction des données du tampon
urls="$(grep "${pattern_url}" "${tampon}" | sed 's/www/img4/;s/viewer\.php?id=/pics\//' | sed -e "s#\(.*\)value=['\"]\([^>]*\)['\"]\(.*\)#\2#g")"
adrs="$(grep "${pattern_adr}" "${tampon}" | sed -e "s#\(.*\)img src=['\"]\([^>]*\)['\"] alt\(.*\)#\2#g")"
[ -z "${urls}" ] && F_serviceHS # Service indisponible ?
# dégroupage des retours en 3 liens correspondants
echo "${urls}" > "/tmp/liens"
echo "${adrs}" >> "/tmp/liens"
readarray -t liens < "/tmp/liens"
rm -f "/tmp/liens"
# Note: A l'issue de ces opérations, le tableau liens contiendra dans l'ordre :
# liens[0] : code url pour insérer la miniature dans un forum
# liens[1] : code url pour insérer l'image en grand dans un forum
# liens[2] : adresse de la miniature pour l'afficher
# champs pour l'affichage des résultats (*** préparation résultat ***)
ins_mini="${liens[0]}"
ins_imag="${liens[1]}"
aff_mini="${liens[2]}"
;;
"framapic" | "lutim")
# extraction des données du tampon
value="$(grep "value" "${tampon}" | head -1 | awk -F "/" '{print $4"/"substr($5,0,length($5)-2)}')"
[ -z "${value}" ] && F_serviceHS # Service indisponible ?
url="${urlserv_choisi}/${value%\"*}" # élimine '" readon' en fin d'adresse
# Note: A l'issue des ces opérations, url contient l'adresse de l'image en grand
# champs pour l'affichage des résultats (*** préparation résultat ***)
ins_mini="Non proposé par le service"
ins_imag="[url=${url}][img]${url}[/img][/url]" # code pour insérer l'image en grand dans un forum
aff_mini="${url}"
;;
"debianfr" | "toilelibre")
# argument de recherche des url de la miniature et de l'image pour insérer dans un forum
pattern_url="<textarea>\[url.*</textarea>"
# argument de recherche de l'adresse de la miniature pour affichage
pattern_adr="<textarea>http.*\upload.*</textarea>"
# extraction des données du tampon
urls="$(grep "${pattern_url}" "${tampon}" | sed 's/?img=/upload\/original\//' | sed -e "s#\(.*\)<textarea>\([^>]*\)</textarea>\(.*\)#\2#g")"
adrs="$(grep "${pattern_adr}" "${tampon}" | sed -e "s#\(.*\)<textarea>\([^>]*\)</textarea>\(.*\)#\2#g")"
[ -z "${urls}" ] && F_serviceHS # Service indisponible ?
# dégroupage des retours en 3 liens correspondants
echo "${urls}" > "/tmp/liens"
echo "${adrs}" >> "/tmp/liens"
readarray -t liens < "/tmp/liens"
rm -f "/tmp/liens"
# Note: A l'issue de ces opérations, le tableau liens contiendra dans l'ordre :
# liens[0] : code url pour insérer la miniature dans un forum
# liens[1] : code url pour insérer l'image en grand dans un forum
# liens[2] : adresse de l'image en grand pour l'afficher
# champs pour l'affichage des résultats (*** préparation résultat ***)
ins_mini="${liens[0]}"
ins_imag="${liens[1]}"
aff_mini="${liens[2]}"
;;
esac
}
# Cette fonction montre et historise les résultats
F_show_results() {
html="" # buffer de construction de l'historique
mssg_mini="Code pour insérer la miniature dans un forum : "
mssg_imag="Code pour insérer l'image dans un forum : "
mssg_title="PixUp ${version} : ${nom_serv[idx]} - Fichier téléversé"
time="<time datetime=\"$(date +%Y-%m-%d\ %H:%M:%S)\">$(date +%d-%m-%Y\ à\ %H:%M:%S)</time>"
# préparation des choix possibles selon le service
case "${service_choisi}" in
"framapic" | "lutim")
msglist=(true "Insérer l'image dans un forum" "I")
;;
*) msglist=(false "Insérer la miniature dans un forum" "M" false "Insérer l'image dans un forum" "I" true "Insérer la miniature dans un forum lien original" "OM" false "Insérer l'image dans un forum lien original" "OI")
;;
esac
# affichage des résultats
if ! ${versionconsole} ; then
choix=$(zenity --list --radiolist --title "PixUp ${version}" \
--text "${nom_serv[idx]} - Fichier téléversé\nPour copier le lien dans le presse-papier" \
--ok-label "Copier" --column="Choix" --column="Libellé" --column="Clé" \
--hide-column="3" --print-column="3" --hide-header "${msglist[@]}")
[[ "$?" != 0 ]] && stop # si non OK, on sort !
# Note: la commande pour copier "dans le clipboard" = echo -n "${var}" | xclip -selection c
# l'utilisation de xclip sans "-selection c" copie dans le presse-papier "primaire" qui
# peut être récupéré via un "clic milieu" de la souris (et est différent du clipboard)
case "${choix}" in
"M") echo -n "${ins_mini}" | xclip
echo -n "${ins_mini}" | xclip -selection c ;;
"I") echo -n "${ins_imag}" | xclip
echo -n "${ins_imag}" | xclip -selection c ;;
"OM") if [[ $(echo "${ins_mini}" | grep hostingpics.net) != "" ]];then
ddd=$(echo ${ins_mini} | sed "s/\[img]/\n/g")
x=0
for i in $ddd;do
if [[ $i != "" ]];then x=$(echo $((x+1)) | bc -l )
fff[x]=$(echo $i | cut -d "/" -f3 )
fi
done
ins_mini=$(echo -n "${ins_mini}" | sed "s/${fff[1]}/${fff[2]}/g" | sed 's/viewer.php?id=/pics\//g')
fi
if [[ $(echo "${ins_mini}" | grep casimages.com) != "" ]];then
ddd=$(echo ${ins_mini} | sed "s/\[img]/\n/g")
x=0
for i in $ddd;do
if [[ $i != "" ]];then x=$(echo $((x+1)) | bc -l )
fff[x]=$(echo $i | cut -d "/" -f3 )
if [[ $x = 2 ]];then fff[x]=$(echo $i | cut -d "/" -f3 );ggg[x]=$(echo $i | cut -d "/" -f4 )
hhh[x]=$(echo $i | cut -d "/" -f5 );iii[x]=$(echo $i | cut -d "/" -f6 )
jjj[x]=$(echo $i | cut -d "/" -f7 )
fi
fi
done
ins_mini=$(echo -n "${ins_mini}" | sed "s/${fff[1]}\/i/${fff[2]}\/${ggg[2]}\/${hhh[2]}\/${iii[2]}\/${jjj[2]}/g" | sed 's/.html//g')
fi
echo -n "${ins_mini}" | sed 's/?img=/upload\/original\//g' | sed -e "s#\(.*\)<textarea>\([^>]*\)</textarea>\(.*\)#\2#g" |\
xclip
echo -n "${ins_mini}" | sed 's/?img=/upload\/original\//g' | sed -e "s#\(.*\)<textarea>\([^>]*\)</textarea>\(.*\)#\2#g" |\
xclip -selection c ;;
"OI") if [[ $(echo "${ins_imag}" | grep hostingpics.net) != "" ]];then
ddd=$(echo ${ins_imag} | sed "s/\[img]/\n/g")
x=0
for i in $ddd;do
if [[ $i != "" ]];then x=$(echo $((x+1)) | bc -l )
fff[x]=$(echo $i | cut -d "/" -f3 )
fi
done
ins_imag=$(echo -n "${ins_imag}" | sed "s/${fff[1]}/${fff[2]}/g" | sed 's/viewer.php?id=/pics\//g')
fi
if [[ $(echo "${ins_imag}" | grep casimages.com) != "" ]];then
ddd=$(echo ${ins_imag} | sed "s/\[img]/\n/g")
x=0
for i in $ddd;do
if [[ $i != "" ]];then x=$(echo $((x+1)) | bc -l )
fff[x]=$(echo $i | cut -d "/" -f3 )
if [[ $x = 2 ]];then fff[x]=$(echo $i | cut -d "/" -f3 );ggg[x]=$(echo $i | cut -d "/" -f4 )
hhh[x]=$(echo $i | cut -d "/" -f5 );iii[x]=$(echo $i | cut -d "/" -f6 )
jjj[x]=$(echo $i | cut -d "/" -f7 )
fi
fi
done
ins_imag=$(echo -n "${ins_imag}" | sed "s/${fff[1]}\/i/${fff[2]}\/${ggg[2]}\/${hhh[2]}\/${iii[2]}\/${jjj[2]}/g" | sed 's/.html//g')
fi
echo -n "${ins_imag}" | sed 's/?img=/upload\/original\//g' | sed -e "s#\(.*\)<textarea>\([^>]*\)</textarea>\(.*\)#\2#g" |\
xclip
echo -n "${ins_imag}" | sed 's/?img=/upload\/original\//g' | sed -e "s#\(.*\)<textarea>\([^>]*\)</textarea>\(.*\)#\2#g" |\
xclip -selection c ;;
esac
else
clear
echo -e "${mssg_title}"
if [[ "${output_color}" == "true" ]]; then
printf '\n%s\n%s%s%s' "${mssg_mini}" "${VERT}" "${ins_mini}" "${NORMAL}"
printf '\n%s\n%s%s%s\n' "${mssg_imag}" "${VERT}" "${ins_imag}" "${NORMAL}"
else
echo -e "\n${mssg_mini}\n${ins_mini}"
echo -e "\n${mssg_imag}\n${ins_imag}"
fi
fi
# si journalisation active, ajout du téléversement à l'historique
if ${journal}; then
if [[ "${chronologie}" == "inverse" ]]; then html="<body>\n"; fi
html="${html}<article>"
html="${html}<header><h2><strong>${absolufichier}</strong> envoyé sur <em>${nom_serv[idx]}</em></h2>${time}</header>"
html="${html}<dl><dt><a href=\"${aff_mini}\" title=\"${fichier}\"><img src=\"${aff_mini}\" alt=\"${fichier}\" width=\"${mini_width}\"></a></dt>"
html="${html}<dd>${mssg_mini}</dd><dd><strong>${ins_mini}</strong></dd>"
html="${html}<dd>${mssg_imag}</dd><dd><strong>${ins_imag}</strong></dd>"
html="${html}</dl><footer><hr></footer>"
html="${html}</article>"
if [[ "${chronologie}" == "normal" ]]; then html="${html}\n</body>"; fi
search="$(grep "title" "${logname}")"
readarray -t array < "${logname}"
for index in "${!array[@]}"; do
array[index]="$(sed -e 's#^ \+##g' <<< "${array[index]}")"
if [[ "${array[index]}" =~ "<title>" ]]; then
array[index]="<title>${title}</title>\n"
elif [[ "${array[index]}" == "<body>" && "${chronologie}" == "inverse" ]]; then
array[index]="${html}"
elif [[ "${array[index]}" == "</body>" && "${chronologie}" == "normal" ]]; then
array[index]="${html}"
else
array[index]="${array[index]}\n"
fi
done
# réécriture du fichier historique
echo -e "${array[*]}" > "${logname}"
fi
# suppression des lignes vides dans le fichier
sed -i '/^$/d' "${logname}"
}
# Cette fonction permet de téléverser un autre fichier
F_restart_service() {
text="Voulez-vous téléverser une autre image ?"
if ! ${versionconsole} ; then
zenity --question --title="PixUp ${version}" --text="${text}"
[[ "$?" != 0 ]] && exit 0 # si non, on sort !
F_selection_fichier
PixUp
else
if F_question "${text}"; then
text="Entrer le nom du fichier, s.v.p :"
read -r -p "${text} " fichier
PixUp
fi
exit 0
fi
}
# Cette fonction pose une question et retourne true ou false
F_question () {
read -r -p "${1} [o|n] " reponse
case "$reponse" in
y|Y|o|O|1) true ;;
*) false ;;
esac
}
# Cette fonction affiche la boite zenity "Patienter"
F_patienter() {
zenity --progress --title="PixUp ${version}" --text="Traitement en cours, patientez s.v.p..." --pulsate --auto-close --no-cancel
}
###############################################################################
# PROGRAMME PRINCIPAL - EXECUTION DU SCRIPT
###############################################################################
# vérification des dépendances
F_check_dependances
clear
# récupération des paramètres
NB_PARAMS=$#
PARAMS=("$@");
# test : lancement graphique ou console ?
versionconsole=false
[ -n "$1" ] && versionconsole=true
# test : lancement via un explorateur (Ouvrir avec...) ?
xpixup=false
[[ "${0##*/}" == "xpixup" ]] && xpixup=true
# chargement de la configuration
F_loadconf
# vérification de l'existence de l'historique
F_checklog
# si mode graphique complet, choix de la fonction
if [[ ${graphedit} = true && ${versionconsole} = false ]]; then
F_fonction
fi
# acquisition des données de téléversement
F_launcher
# "Allez, cours... Forest ! Cours !"
PixUp
exit 0