PROJET AUTOBLOG


Tiger-222

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 ☺

Vie privée : les fuites

lundi 24 juin 2013 à 17:57

Pourquoi cet article ?


Pour avoir un recueil de documents qui serviront à prouver que la vie privée sur le web, et bien... Ce n'est pas vraiment ça !
À force de rechercher des preuves pour mes interlocuteurs/interlocutrices lorsque je parle des grandes firmes comme Apple, Google ou Facebook, je me suis dit qu'un article à jour serait intéressant.
Le voici donc ! Couplé aux autres informations portant sur la sécurité des télécommunications, il y a de quoi faire réagir.

Pour ceux et celles qui pensent qu'ils/elles n'ont rien à cacher, visionnez les quelques vidéos en bas de page.
Pour agir => Reprenez le contrôle de vos données !, PRISM Break.


État français


Apple

Liste des services, logiciels et matériels faussement transparents : iMessage, iPad, iPhone, iPod, iTunes, SIRI

Facebook


FBI


Google

Liste des services et logiciels faussement transparents : Android, Google AdSense, Google AdWords, Google Agenda, Google Analytics, Google Code, Google Docs, Google Drive, Google Fonts, Google Glass, Google Music, Google+, GMail, Google Group, Google Street View, Picasa, Youtube

HP

Liste des services et produits impactés : Portables, StoreVirtual (et du coup, très certainement d'autres produits)

Microsoft

Liste des services, logiciels et consoles faussement transparents : Microsoft Outlook, Microsoft Live, SkyDrive, Skype, XBox One

Nintendo

Liste des services, logiciels et consoles faussement transparents : Nintendo 3DS

NSA


Twitter

Yahoo


Autres services, logiciels

Liste des services et logiciels faussement transparents, traitres : LinkedIn, Snapchat

Dans un registre un peu plus physique, la poste américaine garde des traces de tous les envois hors du territoire (nom, adresse, et toutes les informations possibles de rappatrier). Vous avez très certainement déjà acheté sur Amazon ou eBay (en autres), non ?

Conférences, vidéos


Références multiples

Vie privée : les fuites

lundi 24 juin 2013 à 17:57

Pourquoi cet article ?


Pour avoir un recueil de documents qui serviront à prouver que la vie privée sur le web, et bien... Ce n'est pas vraiment ça !
À force de rechercher des preuves pour mes interlocuteurs/interlocutrices lorsque je parle des grandes firmes comme Apple, Google ou Facebook, je me suis dit qu'un article à jour serait intéressant.
Le voici donc ! Couplé aux autres informations portant sur la sécurité des télécommunications, il y a de quoi faire réagir.

Pour ceux et celles qui pensent qu'ils/elles n'ont rien à cacher, visionnez les quelques vidéos en bas de page.
Pour agir => Reprenez le contrôle de vos données !, PRISM Break.


État français


Apple

Liste des services, logiciels et matériels faussement transparents : iMessage, iPad, iPhone, iPod, iTunes, SIRI

Facebook


FBI


Google

Liste des services et logiciels faussement transparents : Android, Google AdSense, Google AdWords, Google Agenda, Google Analytics, Google Code, Google Docs, Google Drive, Google Fonts, Google Glass, Google Music, Google+, GMail, Google Group, Google Street View, Picasa, Youtube

HP

Liste des services et produits impactés : Portables, StoreVirtual (et du coup, très certainement d'autres produits)

Microsoft

Liste des services, logiciels et consoles faussement transparents : Microsoft Outlook, Microsoft Live, SkyDrive, Skype, XBox One

Nintendo

Liste des services, logiciels et consoles faussement transparents : Nintendo 3DS

NSA


Twitter

Yahoo


Autres services, logiciels

Liste des services et logiciels faussement transparents, traitres : LinkedIn, Snapchat

Dans un registre un peu plus physique, la poste américaine garde des traces de tous les envois hors du territoire (nom, adresse, et toutes les informations possibles de rappatrier). Vous avez très certainement déjà acheté sur Amazon ou eBay (en autres), non ?

Conférences, vidéos


Références multiples

Inno Setup : page personnalisée

lundi 17 juin 2013 à 17:24

Inno Setup c'est bien, mais la documentation est un peu brouillon et trouver des informations précises n'est pas chose facile.
Pour la prochaine version de Pombo, j'avais besoin d'avoir une liste contenant plusieurs choix sur une seule page, et surtout pouvoir utiliser l'élément sélectionné par la suite.

Voici le code source de getmark.iss, pour l'utiliser, il suffit d'ajouter cette instruction dans la section [Code] :
#include "getmark.iss"

Avant d'entrer plus dans les détails, pour récupérer l'élément sélectionné (pour les section [Files] ou [Registry] par exemple) :
{code:GetTheMark} renverra "Acer"


Dans les entrailles du monstre script


Voici les différents composants :
Les procédures suivantes s'occupent de l'intégration de la page personnalisée.

C'est simple, ici on vient ajouter la page personnalisée à l'installeur :
procedure InitializeWizard;
begin
CreatePageStealthMode;
end;

La portion de code suivante sert uniquement à désactiver le bouton Suivant lorsque l'on est sur la page personnalisée afin d'obligé l'utilisateur à faire un choix :
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = PageStealthMode.ID then
if ChosenMark.ItemIndex = -1 then
WizardForm.NextButton.Enabled := False;
end;


Les procédures suivante s'occupent de la création et de la gestion de la page personnalisée.

La fonction CreateCustomPage() permet de spécifier après quelle page standard il faut insérer la nôtre, un titre et un texte explicatif. Ici, je choisis d'afficher la page personnalisée juste après la page qui affiche la licence (wpLicense). La liste de choix est une simple TListBox ajoutée en pleine page :
procedure CreatePageStealthMode;
var
j : Integer;
begin
PageStealthMode := CreateCustomPage(wpLicense, ExpandConstant('{cm:marque_title}'), ExpandConstant('{cm:marque_texte}'));
ChosenMark := TListBox.Create(PageStealthMode);
ChosenMark.Width := PageStealthMode.SurfaceWidth;
ChosenMark.Height := PageStealthMode.SurfaceHeight - 10;
ChosenMark.Parent := PageStealthMode.Surface;
{ Assignement de la procédure lorsqu'un élément est choisi. }
ChosenMark.OnClick := @OnPageStealthModeClicked;
for j := 0 to High(Marks) do begin
ChosenMark.Items.Add(Marks[j]);
end;
end;

On stocke l'élément sélectionné dans la variable TheMark puis on réactive le bouton Suivant, ça peut toujours être pratique :
procedure OnPageStealthModeClicked(Sender: TObject);
var
list : TListBox;
begin
list := TListBox(Sender);
TheMark := list.Items[list.ItemIndex];
WizardForm.NextButton.Enabled := True;
end;

Il nous reste la fonction GetTheMark(), qui est on ne peut plus simple :
function GetTheMark(Param: String): String;
begin
Result := TheMark;
end;
Elle sert uniquement à avoir accès à l'élément sélectionné en dehors du code, pour les autres pages/étapes de l'installeur.

Inno Setup : page personnalisée

lundi 17 juin 2013 à 17:24

Inno Setup c'est bien, mais la documentation est un peu brouillon et trouver des informations précises n'est pas chose facile.
Pour la prochaine version de Pombo, j'avais besoin d'avoir une liste contenant plusieurs choix sur une seule page, et surtout pouvoir utiliser l'élément sélectionné par la suite.

Voici le code source de getmark.iss, pour l'utiliser, il suffit d'ajouter cette instruction dans la section [Code] :
#include "getmark.iss"

Avant d'entrer plus dans les détails, pour récupérer l'élément sélectionné (pour les section [Files] ou [Registry] par exemple) :
{code:GetTheMark} renverra "Acer"


Dans les entrailles du monstre script


Voici les différents composants :
Les procédures suivantes s'occupent de l'intégration de la page personnalisée.

C'est simple, ici on vient ajouter la page personnalisée à l'installeur :
procedure InitializeWizard;
begin
CreatePageStealthMode;
end;

La portion de code suivante sert uniquement à désactiver le bouton Suivant lorsque l'on est sur la page personnalisée afin d'obligé l'utilisateur à faire un choix :
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = PageStealthMode.ID then
if ChosenMark.ItemIndex = -1 then
WizardForm.NextButton.Enabled := False;
end;


Les procédures suivante s'occupent de la création et de la gestion de la page personnalisée.

La fonction CreateCustomPage() permet de spécifier après quelle page standard il faut insérer la nôtre, un titre et un texte explicatif. Ici, je choisis d'afficher la page personnalisée juste après la page qui affiche la licence (wpLicense). La liste de choix est une simple TListBox ajoutée en pleine page :
procedure CreatePageStealthMode;
var
j : Integer;
begin
PageStealthMode := CreateCustomPage(wpLicense, ExpandConstant('{cm:marque_title}'), ExpandConstant('{cm:marque_texte}'));
ChosenMark := TListBox.Create(PageStealthMode);
ChosenMark.Width := PageStealthMode.SurfaceWidth;
ChosenMark.Height := PageStealthMode.SurfaceHeight - 10;
ChosenMark.Parent := PageStealthMode.Surface;
{ Assignement de la procédure lorsqu'un élément est choisi. }
ChosenMark.OnClick := @OnPageStealthModeClicked;
for j := 0 to High(Marks) do begin
ChosenMark.Items.Add(Marks[j]);
end;
end;

On stocke l'élément sélectionné dans la variable TheMark puis on réactive le bouton Suivant, ça peut toujours être pratique :
procedure OnPageStealthModeClicked(Sender: TObject);
var
list : TListBox;
begin
list := TListBox(Sender);
TheMark := list.Items[list.ItemIndex];
WizardForm.NextButton.Enabled := True;
end;

Il nous reste la fonction GetTheMark(), qui est on ne peut plus simple :
function GetTheMark(Param: String): String;
begin
Result := TheMark;
end;
Elle sert uniquement à avoir accès à l'élément sélectionné en dehors du code, pour les autres pages/étapes de l'installeur.