Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#51 Le 09/03/2017, à 12:10

erresse

Re : xpixup amélioration

Pour ma part, je rappellerai juste que la refonte du script PixUp pour passer de la version 3 à la 4, était basée sur une simplification drastique de son code et de son utilisation.
La version 3 (qui est restée disponible quoique plus maintenue par craco et moi) comportait des tonnes de choix et d'options qui la rendaient trop lourde à utiliser et impossible à maintenir correctement dans le temps...

Cela veut dire, je pense que vous le devinez, que toute nouvelle intervention officielle sur le script visera à ne pas l'alourdir inutilement en lui ajoutant de nouvelles étapes de choix.
Que l'on retienne l'idée d'afficher directement l'image au lieu de passer par une sorte de "page d'accueil" du serveur me paraît plutôt une bonne idée et me conviendrait assez, mais ce mode de fonctionnement remplacerait purement et simplement l'autre dans le script.

C'est là mon point de vue et, il nous le dira lui-même, probablement aussi celui de cracolinux je pense.
En revanche, rien n'empêche quiconque de modifier le script à sa convenance pour l'adapter à ses besoins personnels, bien sûr...


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#52 Le 09/03/2017, à 12:12

daniel38100

Re : xpixup amélioration

enebre a écrit :

Pour le choix par défaut, serait-il possible de marquer choix du forum ou quelque chose d'approchant ? (c'est pour les newbies)

pour service_defaut="casimages" ?

Hors ligne

#53 Le 09/03/2017, à 12:18

daniel38100

Re : xpixup amélioration

dans ce cas le code

        # 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=(true "Insérer la miniature dans un forum" "OM" false Insérer l'image dans un forum" "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
			"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

je voudrais pas alourdir le script non plus

Dernière modification par daniel38100 (Le 09/03/2017, à 12:30)

Hors ligne

#54 Le 09/03/2017, à 12:39

enebre

Re : xpixup amélioration

Alors va pour casimage par défaut avec le chargement direct sans choix pour le type de lien (automatiquement pour un thumb vers l'original) et plus sophistiqué avec hostingpics 5 choix incluant ton lien vers une autre image
Ca resterait simple pour casimage et un peu plus sophistiqué avec les fonctions particulières sur hostingpics.
L'utilisateur changera le fichier .conf pour son choix du serveur par défaut ou passera directement par pixup selon ses besoins ponctuels.
Ca me semble une belle amélioration, et au besoin on pourrait laisser le script originel et faire un duplicata du script avec l'amélioration comme le suggère erresse

Dernière modification par enebre (Le 09/03/2017, à 12:51)

Hors ligne

#55 Le 10/03/2017, à 13:14

ragamatrix

Re : xpixup amélioration

salut wink (je m'incruste dans la discution pour mettre un grain de sable)
Serait-il possible d'ajouter un service supplémentaire ?: https://scrot.moe/ J'ai essayé de bidouiller le script, mais je crois que cela est au dessus de mes compétences... Merci en tous cas pour l'amélioration de ce script, c'est du bon boulot wink Si le script est déjà à jour en .deb et sur github c'est pas la peine de vous prendre la tête. wink

Hors ligne

#56 Le 10/03/2017, à 15:01

enebre

Re : xpixup amélioration

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

Dernière modification par enebre (Le 10/03/2017, à 15:03)

Hors ligne

#57 Le 10/03/2017, à 15:37

ragamatrix

Re : xpixup amélioration

oops oui tu as raison c'est inutile... c'est le site qui fait la fonction du script: acc3.th.png Désolé pour le dérangement... hmm

Embed codes

Dernière modification par ragamatrix (Le 10/03/2017, à 15:45)

Hors ligne

#58 Le 10/03/2017, à 15:42

enebre

Re : xpixup amélioration

Il y a certainement possibilité de récupérer les url et de composer un lien pour le forum, mais ça doit vachement compliquer l'opération, enfin pour moi c'est abyssal, mais pour les pros.... Je ne sais pas.

Hors ligne

#59 Le 10/03/2017, à 15:47

ragamatrix

Re : xpixup amélioration

ça m'aura fait une occasion pour vous faire un ptit coucou par là big_smile

Hors ligne

#60 Le 10/03/2017, à 21:14

cracolinux

Re : xpixup amélioration

J'ai pas le temps de m'occuper des demandes de modifications en ce moment, mais quand l'occasion se présentera, je verrais pour le lien direct vers l'image à taille originale.
N'hésitez pas à faire un script à votre sauce pour votre usage perso (exemple, chez moi, le script que j'utilise est modifié et ne s'appelle même plus pixup)
En revanche, le lien qui pointe vers une autre image, ça c'est pas réglo et il n'y aura jamais ça dans pixup.
Pour le reste, Erresse à tout dit : le script ne s'alourdira pas plus


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#61 Le 11/03/2017, à 07:21

daniel38100

Re : xpixup amélioration

c'est pas un lien qui pointe vers une autre image que je voulais faire mais un lien qui pointe vers un téléchargement
mais ayant compris le principe de ce script je le ferai juste pour moi et ceux que ça intéresse

Hors ligne

#62 Le 11/03/2017, à 07:42

cracolinux

Re : xpixup amélioration

Pour un usage aussi particulier je t'invite à simplement modifier le lien que tu insères dans le forum, sauf si tu prévois d'utiliser ça très souvent bien sûr.
Je ne dis pas que la fonctionnalité ne serait pas intéressante mais elle peut induire en erreur certaines personnes et/ou être mal utilisée, d'ailleurs ça n'a rien à voir avec le script : il faut toujours regarder où pointe un lien avant de le cliquer...
A la base le script est une interface qui permet de rapidement uploader une image pour la faire apparaître sur un forum (particulièrement celui-ci big_smile ) sans passer par les sites web qu'il supporte. C'est un gain de temps. Ensuite l'idée d'un historique est venue s'ajouter pour garder une trace et éviter d'inonder les hébergeur avec la même image.

@ragamatrix
Pour l'ajout d'un nouveau service c'est une bonne idée même si nous en avons déjà pas mal, je suis pour la diversification des sources. Tu peux coder la fonction et la proposer sur le git si tu te sens


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#63 Le 11/03/2017, à 17:36

ragamatrix

Re : xpixup amélioration

cracolinux a écrit :

@ragamatrix
Pour l'ajout d'un nouveau service c'est une bonne idée même si nous en avons déjà pas mal, je suis pour la diversification des sources. Tu peux coder la fonction et la proposer sur le git si tu te sens

Moi ! Coder ! lol On verra hein... C'est pas gagné...

Hors ligne

#64 Le 16/03/2017, à 16:16

daniel38100

Re : xpixup amélioration

ragamatrix a écrit :
cracolinux a écrit :

@ragamatrix
Pour l'ajout d'un nouveau service c'est une bonne idée même si nous en avons déjà pas mal, je suis pour la diversification des sources. Tu peux coder la fonction et la proposer sur le git si tu te sens

Moi ! Coder ! lol On verra hein... C'est pas gagné...

pour ma part je pense qu'il y à suffisamment de service j'utilise toilelibre la plupart du temps ce week-end ça ne marché pas j'en ai utiliser un autre (casimages) vite fait avec le script
du coup j'ai changer de serveur par défaut dans le .conf et je changerai quand celui-ci sera en maintenance ou HS

et pour ce qui est des lien qui n'ont rien à voir avec l'image on en utilise pas souvent

Dernière modification par daniel38100 (Le 16/03/2017, à 16:19)

Hors ligne

#65 Le 16/03/2017, à 19:01

moko138

Re : xpixup amélioration

J'attire votre attention sur deux points :

1) certains hébergeurs, comme pix.tdct.org et https://pix.debian-fr.xyz offrent une étape intermédiaire indiquant le poids du fichier final,
à condition que la personne qui téléverse ait choisi
"Insérer la miniature dans un forum" mais pas "lien direct vers l'image".
ex :
1487263321.png     ou     1489291101.jpg.

Cette option est précieuse pour tous ceux qui comme moi ont une connexion bas débit, car ils peuvent ainsi choisir de lancer le téléchargement ou d'attendre un moment plus favorable. Mais ils ont déjà un aperçu plus grand que la miniature !
Or j'ai l'impression que peu d'hébergeurs permettent cette option.


2) Tous les serveurs ne permettent pas de reprendre un téléchargement interrompu depuis là où il s'était interrompu (option -c de wget).
pix.toile-libre, par exemple, ne le permet pas.
Or cette option de l'hébergeur est, là encore précieuse pour ceux qui ont une connexion instable.


Je remercie donc d'avance ceux qui privilégieront les hébergeurs cumulant ces deux caractéristiques !  smile


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#66 Le 30/03/2017, à 00:19

lynn

Re : xpixup amélioration

Bonjour,

J'ai fait une petite modification pour moi dans le script xpixup afin de ne prendre en compte qu'une seule instance du script à la fois et une autre sur la fonction "F_patienter" à laquelle je me suis ajouté la possibilité d'annuler l'envoi en cours. C'est très utile pour les petites connexions et qu'on s'est planté sur le choix d'une image bien lourde à envoyer... tongue

Modif 1: Ajout de ces deux lignes au début du script

_PID=$(pidof -x -o $$ ${0##*/})
[[ ! -z "$_PID" ]] && exit 1

Modif 2: fonction F_patienter

F_patienter() {

	zenity --progress --title="PixUp ${version}" --text="Traitement en cours, patientez s.v.p..." --pulsate --auto-close
	if [ "$?" -eq 1 ]; then
	   kill -9 $(ps -C curl h -o pid,command | awk '/[type=image/format=web]/ {print $1}')
	fi
	}

«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne