EquinoxeFR

Tag: perl

Import en masse de photos dans F-spot: une solution ;-)

by EquinoxeFR on juil.08, 2008, under Linux

Depuis pas mal de temps, j’accumule les numériques comme beaucoup d’entre vous. J’en suis à 14000 en 8 ans, mon système de classement en dehors de tout logiciel de gestion de , se base sur une arborescence chronologique.

Capture-Photos2007 - Navigateur de fichiers

On voit bien les limites de ce système, il manque une gestion efficace des tags. Après avoir testé divers produits: digikam, picasa, jbrout, mon intérêt s’est porté sur . Étant utilisateur de , c’est celui qui semble le mieux intégré à l’environnement. Les fonctionnalités sont intéressantes, mais il manque cruellement d’une fonctionnalité d’import en masse qui marche (l’import prévu dans ne permet pas de dépasser le millier de sous peine de saturer toute la ram) et qui ne perturbe pas mon classement en dossiers. Après une petite analyse de leur système de stockage des metadata (sqlite3), voici un petit script vite fait qui permet d’importer en masse sans déplacer vos .

sudo apt-get install libdbd-sqlite3- libdate-manip- libdbi- libimage-exiftool-

wget http://www.equinoxefr.org/wp-content/uploads/2008/07/import2fspot.pl

chmod +x import2fspot.pl

Lancez maintenant une première fois si ce n’est pas déjà fait afin qu’il créé une base de donnée vierge.

F-spot vide

Quittez ,ensuite, dans un terminal, lancez l’import.

Capture-pierre@EquinoxeFR: ~-.gnome2-f-spot.png

Quelques minutes plus tard, vous voilà avec toutes vos importées dans . Voilà les temps relevés avec la commande time pour importer 13800 :

real    17m28.227s
user    12m12.038s
sys    0m23.117s

Les sont toutes taggées avec le nom du répertoire dans lequel elles se trouvent pour ne pas perturber le classement par répertoire. Normalement, les déjà importées ne sont pas réimportées.

F-Spot bien rempli

Je n’ai pas importé les éventuels tags exifs existants dans les (je n’en ai pas) mais ce n’est pas très difficile à faire. Si jamais quelqu’un s’y intéresse, merci de m’envoyer le code, je publierai les modifs ici ;-)

5 Comments :, , , , , , , more...

Grisbi et un compte de la BanquePostale

by EquinoxeFR on jan.02, 2008, under Linux

Etant utilisateur de grisbi et titulaire d’un compte à la BanquePostale, je souhaitais contrôler facilement mes comptes au travers du service Videoposte.

Comme d’habitude, mon fidèle ami est là pour m’aider :-)

Grisbi est un excellent logiciel de comptabilité personnelle. Seulement voilà, il permet d’importer des fichier pour faire des pointages, mais pas de les récupérer directement sur les sites internet des banques. Voilà un petit script pour combler cette lacune.

Tout d’abord, il faut récupérer le module permettant d’accéder au site web de votre banque, ici la BanquePostale.

wget http://search.cpan.org/CPAN/authors/id/P/PI/PIXEL/Finance-Bank-LaPoste-4.00.tar.gz
tar xvf Finance-Bank-LaPoste-4.00.tar.gz
cd Finance-Bank-LaPoste-4.00
Makefile.PL
make sudo make install

Ensuite, il fait créer le script videoposte.pl suivant:

#!/usr/bin/ -w

use Finance::Bank::LaPoste;
use POSIX;

my @accounts = Finance::Bank::LaPoste->check_balance(username => “XXXXXX”,
password => “NNNNNN”);

foreach my $account (@accounts)
{
my $date=strftime(”%Y%m%d”, localtime);
my $qifdate=strftime(”%d/%m/%Y”, localtime);
my $filename=$account->;account_no.”_”.$date.”.qif”;
open(FD,”> $filename” );
print FD “!Type:Bank\n”;
print FD “D”.$qifdate.”\n”;
print FD “T”.$account->balance.”\n”;
print FD “CX\n”;
print FD “PSolde\n”;
print FD “L[".$account->name."]\n”;
print FD “^\n”;
foreach ($account->statements)
{
my ($y,$m,$d)=($_->date =~ m/(\d+)\/(\d+)\/(\d+)/);
print FD “D”.$d.”/”.$m.”/”.$y.”\n”;
print FD “P”.$_->description.”\n”;
print FD “M”.$_->description.”\n”;
print FD “T”.$_->amount.”\n”;
print FD “L[Import AUTO]\n^\n”;
}
close(FD);
}

Pensez à remplacer les XXXX et NNNN par vos numéros de compte et votre mot de passe. Ensuite, le script va vous créer autant de fichier QIF que vous n’avez de comptes. Chaque fichier contient votre relevé de compte des 30 derniers jours. Vous pouvez par exemple placer ce script dans la crontab pour qu’il vous récupère vos relevés de comptes toutes les semaines.

Vous n’avez plus qu’à importer ces fichiers dans grisbi pour pointer automatiquement vos opérations.

Je n’ai pas testé, mais le script doit fonctionner pour les autres banques, il suffit juste d’utiliser le bon module .

Comme il est précisé sur le site de l’auteur, celui-ci vous invite à relire son code pour s’assurer de son intégrité (On ne sait jamais, quand il s’agit d’argent…).

Amusez vous bien ;-)

[EDIT 5/04]: Module mis à jour en version 4.00 pour supporter la nouvelle authentification mise en place par la Banque Postale.

4 Comments :, , more...

BibblePro et les RAW

by EquinoxeFR on déc.24, 2007, under Linux

Voilà quelques temps que j’utilise BibblePro pour exploiter les images RAW de mon appareil photo. Oui, je sais, ce n’est ni ni gratuit… mais je n’ai pas trouvé mon bonheur en et en plus il est bien alors j’ai craqué…

main_browser_800.jpg

(continue reading…)

Leave a Comment :, , , more...

GNU Linux Magazine N°100 et les articles du CD

by EquinoxeFR on déc.05, 2007, under Linux

Avec la super initiative de GLMF, vous voilà avec quelques 550 articles sur un CDROM. Voilà une petite astuce pour les exploiter au mieux ;-)

lmag100.jpg

A l’ouverture du CD, j’ai été un peu déçu de ne pas trouver un sommaire pour exploiter cette mine d’informations. Qu’à cela ne tienne, un petit coup de et nous voilà avec un apercu HTML de la première page des articles. Le script calcule le nombre de pages de l’article grâce à l’information contenue dans le nom du fichier et le compare avec le nombre de pages du PDF afin de déduire s’il s’agit d’un fichier avec un copyright normal ( 1 page au début ) ou avec une licence Creative commons (2 pages au début et 2 à la fin). Le script génère alors un aperçu PNG de la 1° page de l’article qu’il insère dans une page HTML.

voilà les actions à faire pour mettre en oeuvre le script. Les pdf sont copiés sur le disque dur pour plus de confort. (450Mo)

mkdir -p GLMF/PDF
cd GLMF
wget http://www.equinoxefr.org/public/build_index.pl
sudo apt-get install libpdf-api2- imagemagick
cd  PDF
find /media/cdrom/ -iname "*.pdf" -exec cp {} ./ \;
cd ..
./build_index.pl
reset

On aurait pu aussi supprimer les pages “gênantes”, ce que j’aurais fait sans scrupule s’il s’était agit d’une pub et non d’une licence (Cf GLMF N°97 P82) . On aurait juste aimé que ces pages soient en fin de fichier et non au début afin de ne pas perturber les aperçus de fichiers.

Capture-Index_Linux-Magazine_-_Mozilla_Firefox.png

Voilà le script, fait à la “vas vite” mais qui marche sauf pour quelques PDF qui semblent altérés (un petit bug dans ghostscript entraine un affichage tout pourri dans le terminal d’où est lancé le script. heureusement un coup de reset remet tout en ordre).

#! /usr/bin/

use strict;
use PDF::API2;

my $PDF_PATH="./PDF";

mkdir("THUMBNAILS");
open(FD,">index.html");
my $nb=0;
opendir(DIR, "$PDF_PATH") || die "can't opendir ./PDF: $!";
my @files = grep { /\.pdf$/ } readdir(DIR);
closedir DIR;

print FD "<BODY><TITLE>Index -</TITLE>\n";
print FD "<table border=1>\n";
foreach my $filename (sort(@files))
{
    if ($filename !~ /GLMF_083_014_021/i)
    {
	my $pdf = PDF::API2->open("$PDF_PATH/$filename");
	my $pdf_pages = $pdf->pages;
	$pdf->end();
	my ($mag_num,$page_start,$page_end) = ($filename =~ m/^GLMF_(\d+)_(\d+)_(\d+).pdf$/i);
	my $art_pages = $page_end - $page_start;
	my $copyright_pages = $pdf_pages - $art_pages;
	if (!($nb % 4))
	{
	    if ($nb)
	    {
		print FD "</TR><TR>";
	    }
	    else
	    {
		print FD "<TR>";
	    }

	}
	print "Convert $filename $pdf_pages pages in pdf, $art_pages in article diff:$copyright_pages\n";
	print "Info: Mag n° $mag_num, article page $page_start to $page_end\n";
	my ($base_name) = ( $filename =~ m/(.*?)\.pdf$/i );
	if (! -f "./THUMBNAILS/COVER_${base_name}.png")
	{
	    if ($copyright_pages >= 5)
	    {
	       `convert -scale 400x300 "${PDF_PATH}/${filename}\[2\]" ./THUMBNAILS/COVER_${base_name}.png`;
	    }
	    else
	    {
	       `convert -scale 400x300 "${PDF_PATH}/${filename}\[1\]" ./THUMBNAILS/COVER_${base_name}.png`;
	    }
	}
	print FD "<TD align=center>GLMF Numero $mag_num<br>$pdf_pages pages<br><a href=\"$PDF_PATH/$filename\"> <IMG src=\"./THUMBNAILS/COVER_${base_name}.png\"></a></TD>\n";
	$nb++;
    }
    }
print FD "</table>\n";
print FD "</BODY>\n";
close(FD);
6 Comments :, , , more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!