Upload image sur le pix de lol

De Le Wiki de debian-fr.xyz
Aller à : navigation, rechercher

Voici un script permettant d’uploader une ou plusieurs images sur http://pix.isalo.org/. Associé à un gestionnaire de fichier (rox pour ma part), cela fait gagner bien du temps! Le script retourne les adresses pouvant être utilisée pour afficher votre image. Je laisse à chacun le choix de récupérer ces adresses via la console, avec zenity ou autre. Pour ma part, c'est avec gxmessage :

texte descriptif

Dépendance

Ce script requiert python 2.6 (normalement déjà installer sur Debian et le paquet python-poster.

Le code du script

Le contenu de ce fichier est à enregistrer dans un fichier texte dans l'un des répertoires de votre $PATH.

  1 #!/usr/bin/env python
  2 # -*- coding:Utf-8 -*-
  3 # Fichier: pix.py
  4 # Cree le 08 juin 2011 18:52:52
  5 # Derniere modification: 08 juin 2011 18:52:52
  6 
  7 
  8 """
  9 
 10 Auteur :      thuban (thuban@singularity.fr) 
 11 licence :     GNU General Public Licence
 12 
 13 Description : Permet d'uploader une image sur pix.isalo.org
 14           Pratique en utilisation avec un gestionnaire de fichier
 15 
 16 """
 17 
 18 try:
 19         import sys
 20         import os
 21         import urllib2
 22         import re
 23 except ImportError as err:
 24         print ("Couldn't load module. {0}".format(err))
 25         sys.exit(2)
 26 
 27 try:
 28         from poster.encode import multipart_encode
 29         from poster.streaminghttp import register_openers
 30 except ImportError as err:
 31         print ("Couldn't load module. {0}. Have you python-poster package installed?".format(err))
 32         sys.exit(2)
 33 
 34 def help():
 35     print('usage : '+os.path.basename(sys.argv[0])+' [all|page|url|minforum|forum|minhtml|html] image')
 36     print('    all (default) : affiche toutes les autres url')
 37     print('    page : url de la page de cette image sur le site')
 38     print('    url : url de l\'image')
 39     print('    minforum : BBCode pour afficher une miniature sur un forum PhpBB')
 40     print('    forum : BBCode pour afficher l\'image sur un forum PhpBB')
 41     print('    minhtml : code html pour afficher une miniature dans un site web')
 42     print('    html : code html pour afficher l\'image dans un site web')
 43     sys.exit(1)
 44 
 45 def verif(argument):
 46     image = argument
 47     if (os.path.isfile(image)):
 48         return image
 49     else:
 50         print("Commande ou fichier invalide")
 51         sys.exit(2)
 52 
 53 def affiche(adresses, opt):
 54     if opt == 'page':
 55         print(adresses[0])
 56     elif opt == 'url':
 57         print(adresses[1])
 58     elif opt == 'minforum':
 59         print(adresses[2])
 60     elif opt == 'forum':
 61         print(adresses[3])
 62     elif opt == 'minhtml':
 63         print(adresses[4])
 64     elif opt == 'html':
 65         print(adresses[5])
 66     else:
 67         print('Afficher l\'image : ' + adresses[0])
 68         print('Accéder à l\'image : ' + adresses[1])
 69         print('Insérer la miniature dans un forum : ' + adresses[2])
 70         print('Insérer l\'image dans un forum : ' + adresses[3])
 71         print('Insérer la miniature à votre site : ' + adresses[4])
 72         print('Insérer l\'image à votre site : ' + adresses[5])
 73         
 74 def upload(image, aff):
 75     register_openers()
 76     with open(image, 'rb') as img:
 77         d, h = multipart_encode({'MAX_FILE_SIZE' : 15360000, 'img' : img})
 78         req = urllib2.Request('http://pix.isalo.org/?action=upload', d, h)
 79         f = urllib2.urlopen(req).read()
 80 
 81         adresses=re.findall(r'<textarea>(.*?)</textarea>', f)
 82         affiche(adresses, aff)
 83         return(0)
 84 	
 85 
 86 
 87 def main():
 88     options=['page', 'url', 'minforum', 'forum', 'minhtml', 'html']
 89     aff='all'
 90     if len(sys.argv) == 1 or sys.argv[1] == "help" or sys.argv[1] == "-h" or sys.argv[1] == "--help":
 91         help()
 92     elif len(sys.argv) >= 3:
 93         aff=sys.argv[1]
 94         if aff in options:
 95             for i in range(2, len(sys.argv)):
 96                 image = verif(sys.argv[i])
 97                 upload(image, aff)
 98         else:
 99             for i in range(1, len(sys.argv)):
100                 image = verif(sys.argv[i])
101                 upload(image, aff)
102     else:
103         image = verif(sys.argv[1])
104         upload(image, aff)
105 
106     return 0 
107 
108 
109 if __name__ == '__main__':
110    main()

Exemples d'utilisation

En ligne de commande

Pour uploader votre script directement à partir de la ligne de commande, il vous suffit d'enregistrer le script dans le fichier pixup dans un des répertoires de votre $PATH. Ensuite vous avez plusieurs utilisation possible :

  • Pour avoir toutes les informations :
$ pixup fichier.png
  • Pour ne récupérer que l'adresse de l'image :
$ pixup url fichier.png
  • Vous pouvez obtenir l'aide du script en le lançant sans paramètre :
$ pixup
usage : pixup [all|page|url|minforum|forum|minhtml|html] image
   all (default) : affiche toutes les autres url
   page : url de la page de cette image sur le site
   url : url de l'image
   minforum : BBCode pour afficher une miniature sur un forum PhpBB
   forum : BBCode pour afficher l'image sur un forum PhpBB
   minhtml : code html pour afficher une miniature dans un site web
   html : code html pour afficher l'image dans un site web