Déplacer des mails selon un critère donné dans une architecture Mailbox

Aujourd’hui, j’ai décidé d’utiliser les services de mon hébergeur afin de gérer mes mails. Le switch se passe bien, à un détail près : les newsgroups. Je suis abonné au groupe django-developers des Google groups. Le problème, c’est que c’est environ 15 mails de plus dans mon inbox tous les jours. Sur Gmail, j’utilisais un filtre. Pourquoi pas là ?

Me voila donc partit pour lire les bases de l’utilisation de Script Sieve afin de gérer côté serveur les filtres. Après 3 minutes de recherche, voici le "script" :

if header :contains "Reply-To" "django-developers@googlegroups.com" {fileinto "Django-dev";}

Hop. Mais, quid des emails déjà reçus ? Tant qu’à les filtrer, autant tous les ranger au même endroit. Et c’est après bien 20 / 25 minutes de recherche que me voilà prêt avec un gentil petit script bash :

#!/bin/bash

cd mail/kiznet.fr/thomas/cur/
FILES="*"

for f in $FILES
do
    result=$(cat $f | grep -i reply-to)
    if [[ $result =~ "django-developers@googlegroups.com" ]]; then

        echo "Processing $f file..."
        mv $f mail/kiznet.fr/thomas/.Django-dev/cur/
    fi

done

Et voilà. Le script regarde chaque fichier présent dans l’inbox. Il regarde si il trouve un champs reply-to ayant pour valeur django-developers@googlegroups.com (marque de tous les mails venant du groupe). Si il trouve, il déplace dans le dossier approprié (Django-dev chez moi).

En espérant que ces petits scripts pourront être utiles à quelques uns. Bonne journée.

Posted in None at June 17th, 2009. Comments.

Quelques infos

Bon, c’est pas vraiment utilie pour la plupart des gens mais bon.

LifeDo à l’air de marcher pas trop mal. J’vais essayer de chiffrer tout ça avec Google Analytics et quelques sondages. J’ai rajouté un petit script aux KTools. Il s’agit en fait d’un court programme pour récupérer tous les fichiers .tex et .pdf d’un certain site web. Il est à usage très spécifique et ne va donc probablement survire à personne, mais je le laisse comme mémo (comment récupérer un fichier, la fonction slugify etc…). Décidément, il faut vraiment que je trouve un moyen d’augmenter mon espace web… Ah aussi, je tests plusieurs moyens de gérer un site web. Au niveau sources j’entends. Je pense qu’un de ces jours je vais faire un compte rendu de toutes les méthodes que j’ai essayé. Si j’ai le temps. En parlant de temps, il faut que je refasse ce blog. Encore des choix en perspective !

Il y a des choses qui changent, et d’autres qui ne changent pas…

Posted in None at April 18th, 2009. Comments.

Script Perl Edition de ID3 massive

Je le met là comme mémo, même si il ne sert jamais à personne dans son intégralité. C’est un script Perl qui m’a servit à renommé toute ma playlist d’XMMS, dont les fichiers étaient sous forme nn_cccc_cccc_ccc.mp3 (où nn est un nombre et ccc_cccc_ccc le titre de la chanson). Le nom de l’auteur et l’album sont des données fixes. Bien sûr, il y a sûrement mieux comme méthode pour effectuer cette tâche, mais cela m’a permis d’en apprendre un peu plus sur la programmation en langage Perl. La prochaine fois, j’essayerais en Python ;)

#!/usr/bin/perl
use Xmms::Remote;
use MP3::Tag;

sub set_tag { my $file = shift @; my $tag = shift @; my $mp3 = MP3::Tag->new($file); print Dumper $tag; my $tags = $mp3->get_tags(); my $id3v2;

if (ref $tags eq ''HASH'' && exists $tags->{ID3v2}) {
    $id3v2 = $tags->{ID3v2};
}
else {
    $id3v2 = $mp3->new_tag("ID3v2");
}

my %old_frames = %{$id3v2->get_frame_ids()};
foreach my $fname (keys %$tag) {
    $id3v2->remove_frame($fname)
    if exists $old_frames{$fname};
    if ($fname eq ''WXXX''){
        $id3v2->add_frame(''WXXX'', ''ENG'', ''FreeDB URL'', $tag->{WXXX}) ;
    }
    elsif ($fname eq ''COMM'') {
        $id3v2->add_frame(''COMM'', ''ENG'', ''Comment'', $tag->{COMM}) ;
    }
    else {
        $id3v2->add_frame($fname, $tag->{$fname});
    }
}

$id3v2->write_tag();
return 0;

}

$xmms_remote = Xmms::Remote->new(); @list = @{$xmms_remote->get_playlist_files}; foreach $el (@list){ $orig = $el; $file_mp3 = MP3::Tag->new($el); $file_mp3->get_tags(); if(!exists $file_mp3->{ID3v1}){ #On prend que les fichiers qui n''ont pas de tags } if($el =~ /^[\/[a-z0-9_]+\/]*([0-9_]){2}(.+).mp3$/i){ $track_num = $1; $name = $2; @tmp = split(//,$name); $counter = 0; foreach $mot (@tmp){ @tmp[$counter] = ucfirst($mot); $counter++; } $name = join(" ",@tmp); print $name . "\n"; $artist = "Nobuo Uematsu"; $album = "Final Fantasy X"; $tags = {}; $tags->{TIT2} = $name; $tags->{TPE1} = $artist; $tags->{TALB} = $album; $tags->{TRCK} = $track_num; set_tag($orig,$tags); }

$count++;

}

Posted in None at November 21st, 2008. Comments.

Xchat : Votre musique XMMS v0.2 !

Alors voila. J’me suis rendu compte que le script que j”ai écrit dans le post précédent n’est pas compatible avec les ID3v2. Voici la nouvelle version du script. Lien : Télécharger.

Posted in None at November 21st, 2008. Comments.

Xchat : Votre musique XMMS !

Voici un petit script écrit en Perl qui affiche en tant qu’emote (/me) votre musique en cours de lecture sur XMMS. Pour l’installer, téléchargez-le (lien en bas de la page), placez le dans un répertoire (genre ~/.xchat2/ chez moi), lancez Xchat. Allez dans Fenêtre -> Greffons et scripts. Cliquez sur Charger, puis sélectionnez votre script. C”est bon =). Pour l’utiliser, tapez /kxmms dans le canal où vous souhaitez afficher votre musique. Voici le lien de téléchargement.

use POSIX qw(ceil floor);
use Xmms::Remote;
use MP3::Tag;

------------- XCHAT VARIABLES

$script_name = "KXMMS"; $script_version = "0.1"; $script_creator = "Kizlum"; $script_homepage = "http://devellinux.free.fr"; $script_command = "kxmms";

------------- XCHAT LOAD UP

Xchat::register($script_name, $script_version); Xchat::hook_command($script_command, "kxmms_handler"); Xchat::printf($script_name . "v" . $script_version . " by " . $script_creator . " successfully loaded. Use /" . $script_command . ".");

------------- FUNCTIONS

sub get_xmms_tags{ $xmms_remote = Xmms::Remote->new(); $position = $xmms_remote->get_playlist_pos; #On recupere le nom de fichier correspondant $file_name = $xmms_remote->get_playlist_file($position);

#On creer un nouveau fichier mp3
$file_mp3 = MP3::Tag->new($file_name);

#On charge les tags presents dans le fichier MP3
$file_mp3->get_tags();

#Creation d''un tableau qui va contenir les tags $tags = {};

#Si il existe des infos ID3V1, alors on les exploites if(exists $file_mp3->{ID3v1}){ my $id3v1 = $file_mp3->{ID3v1}; #On recupere les tags dans la variable id3v1 #On remplit la variable $tags avec les infos des tags $tags->{COMM} = $id3v1->comment(); $tags->{TIT2} = $id3v1->song(); $tags->{TPE1} = $id3v1->artist(); $tags->{TALB} = $id3v1->album(); $tags->{TYER} = $id3v1->year(); $tags->{TRCK} = $id3v1->track(); $tags->{TIT1} = $id3v1->genre(); } return $tags; }

sub get_avancement{ $xmms_remote = Xmms::Remote->new(); $position = $xmms_remote->get_playlist_pos; #On recupere le temps et l''avancement, on met le tout en pourcentages $current_time = $xmms_remote->get_output_time(); $total_time = $xmms_remote->get_playlist_time($position); $avancement_percent = floor(($current_time*100)/$total_time); return $avancement_percent; }

sub kxmms_handler{ #On recupere les tags avec notre fonction $xmms_tags = get_xmms_tags();

#On recupere l'avancement
$xmms_avan = get_avancement();

#On creer la chaine qui va etre ecrite
$output_string = "ecoute [" . $xmms_tags->{TIT2} . "] interprete par [" . $xmms_tags->{TPE1} . "] extrait de l''album [" . $xmms_tags->{TALB} . "]. Avancement : [" . $xmms_avan . "%].";

#On l''affiche en emote
Xchat::commandf("me %s", $output_string);

}

Posted in None at November 21st, 2008. Comments.

Script d’installation Amsn (v0.2)

Hop : une mise à jours du script pour installer Amsn : pas d”installation de plugins. Utilisation de la dernière version de TCL et TK : 8.5.2. Possibilité (activée par défaut) d”installer les dépendances pour Ubuntu (voir Debian, si c’est compatible, à tester). C’est par là que ça se passe.

Posted in None at November 21st, 2008. Comments.

Convertisseur CSV en QIF

J’en profite de cette mise à jour du blog pour remettre en ligne mon script pour convertir un fichier .csv en .qif : à télécharger ici !

Posted in None at November 21st, 2008. Comments.