Imprime écran avancé!

Publié le par Levi59

Ce script est repris du script d'un utilisateur de "forum.ubuntu-fr.org" (artik1024)

 

Il sert à créer un screenshot de toute zone définie par l'utilisateur par simple selection à la souris et selon le(s) option(s) choisie(s), envoi le screenshot sur le site "imgur.com" et place une copie de l'url de l'image dans le presse papier. Il ne reste alors plus qu'à coller le lien où vous le souhaitez!

Il y a plusieurs options :

  • dans le script :
  1. conserver ou non un log des adresses
  2. choisir la taille par défaut des miniature (cf option application - Lien pour forum)
  • dans l'application :
  1. Conserver l'image dans un dossier que vous définissez
  2. Conserver l'image sur le bureau (ou Desktop) pour les plus pressés ^^
  3. Lien pour forum pour avoir un lien BBcode avec miniature au lieu du simple lien.

À noter que la conservation de l'image ne peut pas écraser d'anciens screenshots (numérotation des fichiers avec le même nom)

 

code :

#!/bin/bash
# script pour créer rapidement et simplement un screenshot d'une zone du bureau
# et de l'envoyer sur imgur. Vous avez le choix de sauvegarder l'image. Vous récupérez
# un lien disponible en collant le contenu du presse papier sous la forme d'un lien ou
# de BBcode contenant le lien et une miniature. Enjoy!
#
# Copyright (C) 22 Jan. 2011, Rombeaut Rodolphe
# http://scriptam.over-blog.com/
# Released into the public domain.

###### Options ######
# changer en LOG=1 pour conserver la liste des urls des images uploadées
LOG=0

# changer en TAILLE="s" pour le thumbnail small ou en TAILLE="l" (L minuscule) pour le large
TAILLE="s"
###################

# Vérifier dépendances
for i in xsel curl notify-send scrot
do
    [[ ! -x /usr/bin/$i ]] && PAQUETS="${i/notify-send/libnotify-bin} $PAQUETS"
done
[[ -n $PAQUETS ]] && { echo "\
---Erreur : ${0##*/} dépend de $PAQUETS
Utilisez cette commande pour installer les dépendances :
    sudo apt-get install $PAQUETS\
" >&2; exit 1; }

CHOIX=$(zenity --list \
--checklist \
--title="Options" \
--text="Choisissez vos options de traitement: \n - Conserver l'image pour conserver le screenshot ^^ \n - Lien pour forum pour obtenir un lien a coller dans un \nforum avec thumbnail et lien vers l'original.\n - Par defaut, vous obtenez juste le lien de l'image." \
--height="240" \
--hide-column="2"  \
--column="" \
--column="" \
--column="Choix" \
FALSE "1" "Conserver l'image" \
FALSE "3" "Conserver l'image sur le bureau" \
FALSE "2" "Lien pour forum") || {
notify-send Annulation
exit 0
}

# Emplacement du screenshot pour conservation
[ -n "$(echo ${CHOIX} | grep 1)" ] && {
    LOCATE=$(zenity --file-selection \
    --title="Dossier d'enregistrement" \
    --filename="${HOME}/" \
    --directory) || {
    notify-send Annulation
    exit 0
}

# Vérifier la présence d'un fichier screenshot dans le dossier
# Si oui renommer en screenshot(X).jpg ou X est un nombre suffisamment élevé pour
# ne pas écraser l'ancien screenshot
    [ -f "${LOCATE}/screenshot.jpg" ] && {
        b=1
        while [ -f "${LOCATE}/screenshot($b).jpg" ] ; do ((b++)) ; done
        SCRSHT="${LOCATE}/screenshot($b).jpg"
    } || SCRSHT="${LOCATE}/screenshot.jpg"
} || {

# Idem que avant mais pas besoin de demander l'emplacement
# Vérification automatique du nom du dossier (bureau ou Desktop)
    [ -n "$(echo ${CHOIX} | grep 3)" ] && {
        [ -d "${HOME}/bureau" ] && BUREAU="${HOME}/bureau" || BUREAU="${HOME}/Desktop"
        [ -f "${BUREAU}/screenshot.jpg" ] && {
            b=1
            while [ -f "${BUREAU}/screenshot($b).jpg" ] ; do ((b++)) ; done
            SCRSHT="${BUREAU}/screenshot($b).jpg"
        } || SCRSHT="${BUREAU}/screenshot.jpg"
    } || {

# Si pas d'option, on envoie en dossier /tmp et on supprime tout ancien fichier
# pour ne pas fausser le test suivant
    rm -f /tmp/screenshot.jpg
    SCRSHT="/tmp/screenshot.jpg"
    }
}

# Cheese! ^^
scrot -s -q 100 -d 1 "${SCRSHT}";
[ -f "${SCRSHT}" ] || {
    notify-send "Pas de screenshot effectué"
    exit 1
}
URL=$(curl -F "image"=@"${SCRSHT}" -F "key"="5d317f0bee23b282473522e1aa68f621" http://imgur.com/api/upload.xml | grep -Eo '<[a-z_]+>http[^<]+' | sed 's/^<.\|_./\U&/g;s/_/ /;s/<\(.*\)>/\1:\ /' | cut -d ' ' -f3 | head -n1)

[ "${LOG}" -eq 1 ] && echo "$(date);${URL}" | tee -a "${HOME}/.${0##*/}.log" ;

# Retour à xsel selon option
[ -n "$(echo ${CHOIX} | grep 2)" ] && {
    echo -n "[url=${URL}][img]${URL%.*}${TAILLE}.${URL##*.}[/img][/url]" | xsel -i -b ;
} || {
    echo -n "${URL}" | xsel -i -b ;
}

notify-send "Image Uploadée";
exit 0

 

Version simplifiée pour limiter à la sélection de la zone et à l'upload. Les options sont définies en début de script :

code :

#!/bin/bash
# script pour créer rapidement et simplement un screenshot d'une zone du bureau
# et de l'envoyer sur imgur. Vous avez le choix de sauvegarder l'image. Vous récupérez
# un lien disponible en collant le contenu du presse papier sous la forme d'un lien ou
# de BBcode contenant le lien et une miniature. Enjoy!
#
# Copyright (C) 22 Jan. 2011, Rombeaut Rodolphe
# http://scriptam.over-blog.com/
# Released into the public domain.

###### Options ######
#Conserver l'image
CONSERVE=0

#Lien pour forum
FORUMLINK=1

# changer en LOG=1 pour conserver la liste des urls des images uploadées
LOG=0

# changer en TAILLE="s" pour le thumbnail small ou en TAILLE="l" (L minuscule) pour le large
TAILLE="s"
###################

# Vérifier dépendances
for i in xsel curl notify-send scrot
do
    [[ ! -x /usr/bin/$i ]] && PAQUETS="${i/notify-send/libnotify-bin} $PAQUETS"
done
[[ -n $PAQUETS ]] && { echo "\
---Erreur : ${0##*/} dépend de $PAQUETS
Utilisez cette commande pour installer les dépendances :
    sudo apt-get install $PAQUETS\
" >&2; exit 1; }

# Emplacement du screenshot pour conservation
[ $CONSERVE -eq 1 ] && {
    LOCATE=$(zenity --file-selection \
    --title="Dossier d'enregistrement" \
    --filename="${HOME}/" \
    --directory) || {
    notify-send Annulation
    exit 0
    }

# Vérifier la présence d'un fichier screenshot dans le dossier
# Si oui renommer en screenshot(X).jpg ou X est un nombre suffisamment élevé pour
# ne pas écraser l'ancien screenshot
    [ -f "${LOCATE}/screenshot.jpg" ] && {
        b=1
        while [ -f "${LOCATE}/screenshot($b).jpg" ] ; do ((b++)) ; done
        SCRSHT="${LOCATE}/screenshot($b).jpg"
    } || SCRSHT="${LOCATE}/screenshot.jpg"
} || {

# Si pas d'option, on envoie en dossier /tmp et on supprime tout ancien fichier
# pour ne pas fausser le test suivant
    rm -f /tmp/screenshot.jpg
    SCRSHT="/tmp/screenshot.jpg"
}

notify-send "Selectionnez la zone à uploader avec la souris"
sleep 2

# Cheese! ^^
scrot -s -q 100 -d 1 "${SCRSHT}";
[ -f "${SCRSHT}" ] || {
    notify-send "Pas de screenshot effectué"
    exit 1
}
URL=$(curl -F "image"=@"${SCRSHT}" -F "key"="5d317f0bee23b282473522e1aa68f621" http://imgur.com/api/upload.xml | grep -Eo '<[a-z_]+>http[^<]+' | sed 's/^<.\|_./\U&/g;s/_/ /;s/<\(.*\)>/\1:\ /' | cut -d ' ' -f3 | head -n1)

[ "${LOG}" -eq 1 ] && echo "$(date);${URL}" | tee -a "${HOME}/.${0##*/}.log" ;

# Retour à xsel selon option
[ $FORUMLINK -eq 1 ] && {
    echo -n "[url=${URL}][img]${URL%.*}${TAILLE}.${URL##*.}[/img][/url]" | xsel -i -b ;
} || {
    echo -n "${URL}" | xsel -i -b ;
}

notify-send "Image Uploadée";
exit 0

Publié dans Outils

Commenter cet article