Pixup : Poster une image rapidement sur un forum [mono]Le 03/09/2012, à 15:05[/mono]
[code][18:22:09]:~$ cat .bin/pixup.sh
#!/bin/bash
Script d’upload d’image vers des services d’hebergement
lancez pixup --help pour plus d’info
Services disponibles :
v2.1
Auteur: cracolinux [cracolinux@mailoo.org]
2012
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 © 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.
modifier cette valeur pour changer le service par défaut (utilisation console)
servicepardefaut=“Toile-libre.org”
serviceliste=( “Toile-libre.org” “Casimages.com” “Hostingpics.net” )
#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 " t pour pix.toile-libre.org"
echo " c pour casimages.com"
echo " h pour hostingpics.net"
echo
echo " -h ou --help pour lire la présente 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 t toto.jpg"
echo " → upload du fichier ./toto.jpg vers pix.toile-libre.org"
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
un chemin relatif type …/trucmuche n’est pas encore géré (je ne sais pas faire, si vous pouvez aider
dans tout les cas, une vérification à lieu avant toutes tentatives d’envoi
F_checkfichier () {
if ${versionconsole} ; then
if [ "${fichier:0:1}" = "/" ] ; then
absolufichier="${fichier}"
fichier="${fichier##*/}"
elif [ "${fichier:0:2}" = ".." ] ; then
echo "Les chemins relatifs de ce type ne sont pas encore pris en charge..."
exit 1
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
absolufichier="${fichier}"
fichier="${fichier##*/}"
# 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 () {
extension=$(tr [:upper:] [:lower:] <<< $(file “${absolufichier}” | cut -d ‘:’ -f 2 | cut -d ’ ’ -f 2))
}
fonctions des différents services proposés
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/
//g;s/</td>//g;s///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
}
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}
urlmini=$(grep -m 1 "nsa" ${tampon} | cut -d "'" -f 8)
urlimage=${urlmini/mini_/}
urlmini="[url=${urlimage}][img]${urlmini}[/img][/url]"
F_montrerlesresultats "Casimages.com"
}
F_hostingpics () {
curl -v -L --form “photo1=@${absolufichier};type=image/${extension};filename=${fichier}” “http://www.hostingpics.net/envoi.html” > ${tampon}
urlmini=$(grep "value=" ${tampon} | grep "mini" | grep -Eo "\[url.*\[\/url\]")
urlimage=$(grep -Eo "http.*\.[[:alnum:]]{3}\]" <<< ${urlmini})
urlimage=${urlimage%?} # suppression du dernier caractère ] de urlimage
F_montrerlesresultats "Hostingpics.net"
}
F_montrerlesresultats () {
if ! ${versionconsole} ; then
zenity --info --title=""${1}" - Fichier uploadé" --width=800 --height=200 --text=“Miniature pour forum : \n${urlmini}\n\nAccès à l’image:\n${urlimage}” &
else
clear
echo -e "\nMiniature pour forum : \n${urlmini}"
echo -e "\nAccès à l'image : \n${urlimage}"
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" ;;
*) echo "-s ${2} : argument non valide" && exit 3 ;;
esac
shift 2
;;
-*) echo ""$1" option inconnue" && exit 3 ;;
*) 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") && [ -n "$fichier" ] ; then
true
else
exit 0 # si annuler, on sort
fi
if servicechoisi=$(zenity --list --title="Choisissez un service d'upload" --column="Services disponibles" "${serviceliste[@]}") && [ -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 ;;
esac
exit 0
[18:22:15]:~$
[/code]
|