Upload image sur le pix de lol

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche

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.

#!/usr/bin/env python
# -*- coding:Utf-8 -*-
# Fichier: pix.py
# Cree le 08 juin 2011 18:52:52
# Derniere modification: 08 juin 2011 18:52:52


"""

Auteur :      thuban (thuban@singularity.fr) 
licence :     GNU General Public Licence

Description : Permet d'uploader une image sur pix.isalo.org
          Pratique en utilisation avec un gestionnaire de fichier

"""

try:
        import sys
        import os
        import urllib2
        import re
except ImportError as err:
        print ("Couldn't load module. {0}".format(err))
        sys.exit(2)

try:
        from poster.encode import multipart_encode
        from poster.streaminghttp import register_openers
except ImportError as err:
        print ("Couldn't load module. {0}. Have you python-poster package installed?".format(err))
        sys.exit(2)

def help():
    print('usage : '+os.path.basename(sys.argv[0])+' [all|page|url|minforum|forum|minhtml|html] image')
    print('    all (default) : affiche toutes les autres url')
    print('    page : url de la page de cette image sur le site')
    print('    url : url de l\'image')
    print('    minforum : BBCode pour afficher une miniature sur un forum PhpBB')
    print('    forum : BBCode pour afficher l\'image sur un forum PhpBB')
    print('    minhtml : code html pour afficher une miniature dans un site web')
    print('    html : code html pour afficher l\'image dans un site web')
    sys.exit(1)

def verif(argument):
    image = argument
    if (os.path.isfile(image)):
        return image
    else:
        print("Commande ou fichier invalide")
        sys.exit(2)

def affiche(adresses, opt):
    if opt == 'page':
        print(adresses[0])
    elif opt == 'url':
        print(adresses[1])
    elif opt == 'minforum':
        print(adresses[2])
    elif opt == 'forum':
        print(adresses[3])
    elif opt == 'minhtml':
        print(adresses[4])
    elif opt == 'html':
        print(adresses[5])
    else:
        print('Afficher l\'image : ' + adresses[0])
        print('Accéder à l\'image : ' + adresses[1])
        print('Insérer la miniature dans un forum : ' + adresses[2])
        print('Insérer l\'image dans un forum : ' + adresses[3])
        print('Insérer la miniature à votre site : ' + adresses[4])
        print('Insérer l\'image à votre site : ' + adresses[5])
        
def upload(image, aff):
    register_openers()
    with open(image, 'rb') as img:
        d, h = multipart_encode({'MAX_FILE_SIZE' : 15360000, 'img' : img})
        req = urllib2.Request('http://pix.isalo.org/?action=upload', d, h)
        f = urllib2.urlopen(req).read()

        adresses=re.findall(r'<textarea>(.*?)</textarea>', f)
        affiche(adresses, aff)
        return(0)
	


def main():
    options=['page', 'url', 'minforum', 'forum', 'minhtml', 'html']
    aff='all'
    if len(sys.argv) == 1 or sys.argv[1] == "help" or sys.argv[1] == "-h" or sys.argv[1] == "--help":
        help()
    elif len(sys.argv) >= 3:
        aff=sys.argv[1]
        if aff in options:
            for i in range(2, len(sys.argv)):
                image = verif(sys.argv[i])
                upload(image, aff)
        else:
            for i in range(1, len(sys.argv)):
                image = verif(sys.argv[i])
                upload(image, aff)
    else:
        image = verif(sys.argv[1])
        upload(image, aff)

    return 0 


if __name__ == '__main__':
   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