PROJET AUTOBLOG


Tiger-222

Archivé

Site original : Tiger-222

⇐ retour index

Module python Multi-Screen Shot

lundi 1 juillet 2013 à 22:34
MSS pour Multi-Screen Shot.

Il s'agit d'un module python qui ne doit faire qu'une seule chose, et la faire bien : prendre des captures d'écran.
Hm... Il y a déjà la dose qui existe me direz-vous. Oui, Mais ! Je ne souhaitais pas intégrer des monstres tels que Qt, win32 ou encore wx ; et que ça soit PIL ou Pillow, aucun ne gère le multi-écran.

Le module MSS a été pensé dans le but de combler ces vides :
Pour plus d'informations sur le fonctionnement interne de MSS : GNU/LinuxMacWindows


Téléchargement


Tous les fichiers nécessaires se trouvent sur la page du projet (GitHub).
Ou vous pouvez l'installer simplement en utilisant pip : pip install mss


Dépendances et pré-requis


Python. Et c'est tout :)
MSS est écrit en Python pur, utilisation intensive de ctypes. ctypes a été officiellement intégré à Python depuis la version 2.5, pour les versions précédentes, il existe sous forme de module externe.


Support


Voici le tableau de compatibilité, n'hésitez pas à ouvrir un billet pour me prévenir si vous avez pu tester MSS pour les configurations non testées.


Utilisation


Si vous souhaitez simplement tester le fonctionnement de MSS sur votre système, téléchargez le fichier mss.py, puis :
$ python mss.py
Le script prendra une capture par écran, suivi d'une capture globale.

Si vous souhaitez intégrer MSS à un de vos projet, le module dispose des classes MSSLinux et MSSWindows, à appeler suivant votre système. Afin d'avoir plus de détails, il est possible de passer l'argument debug=True. Utilisez-le si vous devez reporter un bogue.
Chacune de ces classes contient la méthode save(oneshot=False).
# Vous pouvez déterminer automatiquement quelle classe utiliser :
from platform import system
from mss import *

systems = {
'Linux'  : MSSLinux,
'Windows': MSSWindows,
'Darwin' : MSSMac
}
try:
MSS = systems[system()]
except KeyError:
err = 'System "{0}" not implemented.'.format(system())
raise NotImplementedError(err)

# Ou alors simplement importer la classe qu'il vous faut :
# from mss import MSSLinux as MSS

try:
mss = MSS()

# Une capture d'écran par moniteur
for filename in mss.save():
print('File "{0}" created.'.format(filename))

# Un seul fichier pour les capturer tous :)
for filename in mss.save(oneshot=True):
print('File "{0}" created.'.format(filename))
except Exception as ex:
print(ex)
raise


Bonus


Juste pour le fun, j'ai mis en place une galerie d'images sans prétention afin d'exposer les captures d'écran oneshot que vous me ferez parvenir ☺