Upload image sur le pix de lol
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 :
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