bonjour cracolinux:
Il y a quelques temps déjà tu avais fourni un script pour Thunar, existerait-il une version plus récente ?
#!/bin/bash
# Script d'upload d'image vers des services d'hebergement
# lancez pixup --help pour plus d'info
#
# Services disponibles :
# - toile-libre.org →→ Faire un don : http://www.toile-libre.org/fr/don
# - casimages.com
# - hostingpics.net
#
# v2.3
# Auteur: cracolinux [cracolinux@mailoo.org]
# Contributeurs: eresse [ rogersauret@free.fr ] : journalisation et chemin relatifs
# 2012 - 2015
#
# Dépendances : curl et zenity
# Merci de l'aide de byte_bucket reçu sur le canal #curl de freenode
# Merci à Ansuzpeorth ;)
# et à Hush !
# LICENCE:
#
# 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.
# gestion du fichier de config
if [[ ! -w $HOME/.config/pixup.conf ]] ; then
cat > $HOME/.config/pixup.conf <<EOF
#################### Valeurs modifiables #######################################
# modifier cette valeur pour activer/désactiver la jounalisation
journal=true
# modifier cette valeur pour renommer le journal ou sa localisation
logname="$HOME/pixupLog.html"
# modifier cette valeur pour changer le service par défaut (utilisation console)
servicepardefaut="Toile-libre.org"
# "Toile-libre.org" "Casimages.com" "Hostingpics.net"
################################################################################
EOF
else
source $HOME/.config/pixup.conf
fi
#lancement graphique ou console
versionconsole=false
[ -n "$1" ] && versionconsole=true
# variables et constantes diverses
NORMAL="\\033[0;39m"
ROUGE="\\033[1;31m"
servicechoisi=""
fichier=""
F_aide () {
echo -e ""$ROUGE"Syntaxe"$NORMAL" : pixup [option] parametre"
echo
echo -e ""$ROUGE"Options"$NORMAL" :"
echo
echo " -s ou --service [choix du service d'hébergement]"
echo
echo " c pour casimages.com"
echo " t pour pix.toile-libre.org"
echo " h pour hostingpics.net"
#echo " f pour framapic.org"
echo
echo " -j ou --journal afficher le journal (${logname})"
echo
echo " -c ou --config afficher le fichier de config"
echo
echo " -h ou --help afficher l'aide"
echo
echo " Si l'option -s n'est pas fournie, le script utilisera le"
echo " service par défaut ${servicepardefaut} modifiable au début"
echo " du script"
echo
echo -e ""$ROUGE"Parametre"$NORMAL" :"
echo
echo " Le fichier à uploader"
echo
echo -e ""$ROUGE"Exemples"$NORMAL" :"
echo
echo " pixup /home/john/rambo/tutu.png"
echo " → upload du fichier /home/john/rambo/tutu.png vers"
echo " le service par défaut"
echo
echo " pixup -s c toto.jpg"
echo " → upload du fichier ./toto.jpg vers casimages.com"
echo
echo "N'hésitez pas à améliorer ce script et à proposer vos idées à"
echo "<cracolinux@mailoo.org>"
}
# cette fonction crée, si nécessaire, le chemin de fichier absolu
F_checkfichier () {
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
# le fichier choisi n'existe pas
[ ! -f "${absolufichier}" ] && echo "Une erreur est survenue au niveau du chemin de fichier" && exit 2
elif ! ${versionconsole} ; then
chemin="${fichier%/*}/" # le dernier / est requis pour l'option filename de zenity
absolufichier="${fichier}"
fichier="${fichier##*/}"
#on conserve le chemin dans la conf
if [[ -n $(grep 'chemin=' $HOME/.config/pixup.conf) ]] ; then
sed -i '/^chemin/d' $HOME/.config/pixup.conf #check
fi
echo "chemin=\"${chemin}\"" >> $HOME/.config/pixup.conf
# le fichier choisi n'existe pas
[ ! -f "${absolufichier}" ] && zenity --warning --text="Une erreur est survenue au niveau du chemin de fichier" && exit 2
fi
}
# permet d'obtenir l'extension-type du fichier, minusculée pour les besoins de la requète POST, de façon sûre
F_get_extension () {
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 /
if ${versionconsole} ; then
echo "Ce fichier n'est pas une image" && exit 2
else
zenity --warning --text="Ce fichier n'est pas une image" && exit 2
fi
fi
extension=${mime#*/} # suppression de la plus courte chaine à gauche de /
}
# Crée le fichier log au besoin
F_create_log () {
if [ ! -e "${logname}" ] ; then
echo ' <head>
<title>Pixup - Vos images sur les forums</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
a img { border:0; }
</style>
</head>' > "${logname}"
fi
}
### fonctions des différents services proposés ###
# pix.toile-libre.org
# cette fonction ne fonctionne pas comme les 2 autres
# car sa sortie est formattée différement
F_toile_libre () {
curl -v -L --form "MAX_FILE_SIZE=15360000" --form "img=@${absolufichier};type=image/${extension};filename=${fichier}" "http://pix.toile-libre.org/?action=upload" 2>/dev/null | grep -B 2 "textarea" | sed "s/<td>//g;s/<\/td>//g;s/<textarea>//g;s/<\/textarea>//g;s#é#é#;s#à#à#;1,4d" > ${tampon}
if ! ${versionconsole} ; then
zenity --title="Pix.toile-libre.org - Fichier uploadé" --width=1100 --height=500 --text-info --filename=${tampon} &
else
cat ${tampon}
fi
if ${journal}; then
F_create_log # check si le fichier de log est présent et le crée si besoin
echo $(date +%d-%m-%Y\ à\ %H:%M:%S)'<br />'${absolufichier}' envoyé avec '${servicechoisi} '<br />' >> "${logname}"
sed "s#--#<br />#g" < ${tampon} >> "${logname}" # formate les -- en retour à la ligne html
echo '<hr>' >> "${logname}"
fi
}
# casimages.com
F_casimages () {
url_codes=$(curl -v -L --form "cat=12" --form "image=@${absolufichier};type=image/${extension};filename=${fichier}" "http://www.casimages.com/upload_ano.php" | grep 'document.location.href' | cut -d'"' -f2)
curl "http://www.casimages.com/${url_codes}" > ${tampon}
#cp ${tampon} $HOME/example && geany $HOME/example # DEBUG :pour analyse du fichier temporaire
minipourforum=$(grep -m 1 "nsa" ${tampon} | cut -d "'" -f 8)
minilog=${minipourforum} # miniature pour le log html
urlimage=${minipourforum/mini_/}
minipourforum="[url=${urlimage}][img]${minipourforum}[/img][/url]"
F_montrerlesresultats "Casimages.com"
}
# hostingpics.net
F_hostingpics () {
curl -v -L --form "photo1=@${absolufichier};type=image/${extension};filename=${fichier}" "http://www.hostingpics.net/envoi.html" > ${tampon}
#cp ${tampon} $HOME/example && geany $HOME/example # DEBUG :pour analyse du fichier temporaire
minipourforum=$(grep "value=" ${tampon} | grep "mini" | grep -Eo "\[url.*\[\/url\]") # url formatée pour l'affichage dans un forum
minilog=$(grep -Eo "http\:\/\/img.*\.[[:alnum:]]{3}\[" <<< ${minipourforum}) # miniature pour le log html
minilog=${minilog%?} # suppression du dernier caractère [ de minilog
urlimage=$(grep -Eo "http.*\.[[:alnum:]]{3}\]" <<< ${minipourforum})
urlimage=${urlimage%?} # suppression du dernier caractère ] de urlimage
F_montrerlesresultats "Hostingpics.net"
}
# framapic.org
F_framapic () {
# INSERT THE CODE RIGHT HERE
# ---> [erresse]
echo "Fonction à compléter. Insérer le code ici"
}
# ---> [/erresse]
F_montrerlesresultats () {
if ! ${versionconsole} ; then
zenity --info --title=""${1}" - Fichier uploadé" --width=800 --height=200 --text="<big>Miniature pour forum :</big> \n${minipourforum}\n\n<big>Accès à l'image:</big>\n${urlimage}" &
else
clear
echo -e "\nMiniature pour forum : \n${minipourforum}"
echo -e "\nAccès à l'image : \n${urlimage}"
fi
if ${journal}; then
F_create_log # check si le fichier de log est présent et le crée si besoin
echo $(date +%d-%m-%Y\ à\ %H:%M:%S)'<br />'${absolufichier}' envoyé avec '${servicechoisi} '<br />' >> "${logname}"
echo '<img src="'${minilog}'" alt="'${minilog}'" /><br />' >> "${logname}"
echo 'Accès image : [URL='${urlimage}']'${urlimage}'[/URL]<br />' >> "${logname}"
echo 'Miniature forum : '${minipourforum} '<br />' >> "${logname}"
echo '<hr>' >> "${logname}"
fi
}
### le corps du script (amen) ###
# Obtenir les informations en console :
if ${versionconsole} ; then
while true
do
case "$1" in
-h|--help)
F_aide ; exit 0;;
-s|--service)
case "$2" in
t|T) servicechoisi="Toile-libre.org" ;;
c|C) servicechoisi="Casimages.com" ;;
h|H) servicechoisi="Hostingpics.net" ;;
#f|F) servicechoisi="Framapic.org" ;;
*) echo "-s ${2} : argument non valide" && exit 3 ;;
esac
shift 2
;;
-j|--journal)
x-www-browser "${logname}" &
exit 0 ;;
-c|--config)
xdg-open "$HOME/.config/pixup.conf" &
exit 0 ;;
*) break ;;
esac
done
[ -z "$1" ] && echo "argument manquant (pas de fichier ?)" && exit 3
fichier="$1"
[ -z ${servicechoisi} ] && echo "Service par défaut : ${servicepardefaut}" && servicechoisi="${servicepardefaut}"
# ou bien graphiquement :
else
if fichier=$(zenity --file-selection --title="Fichier à uploader" --filename=${chemin:-$HOME}) && [ -n "$fichier" ] ; then
true
else
exit 0 # si annuler, on sort
fi
if servicechoisi=$(zenity --list --title="Pixup" --text="Services d'upload:" \
--radiolist --column="Choix" --column="Services disponibles"\
true "Toile-libre.org"\
false "Casimages.com"\
false "Hostingpics.net" ) && [ -n $servicechoisi ] ; then
true
else
exit 0 # si annuler, on sort
fi
fi
# Vérification de la validité du fichier et obtention du type de fichier
F_checkfichier
F_get_extension
# création d'un fichier temporaire pour la réception des infos
# et envoi du fichier sur le service choisi
tampon=$(mktemp)
case ${servicechoisi} in
"Toile-libre.org" )
F_toile_libre ;;
"Casimages.com" )
F_casimages ;;
"Hostingpics.net" )
F_hostingpics ;;
"Framapic.org" )
F_framapic ;;
esac
exit 0