meven's blog

Aller au contenu | Aller au menu | Aller à la recherche

Tag - python

Fil des billets

vendredi 16 janvier 2009

musicimporter, nouvelle version

Voici une nouvelle version de mon script musicimporter qui permet de déplacer, renommer et nettoyer des fichiers musicaux. Par nettoyer, j'entends supprimer les tags inutiles dans les fichiers mp3 (commentaires,...).

Le script permet désormais également de supprimer les dossiers qui contenaient les fichiers musicaux lorsqu'ils sont devenus inutiles pour encore davantage automatiser l'import de fichier de musique.

Les nouveautés

  • supporte les fichiers ogg avec l'extension oga
  • nouvelle option -d, supprime les fichiers inutiles dans le dossier source (fichier txt jpg m3u et nfo) et les dossiers sources qui sont devenus vides suite à l'exécution du script. À utiliser conjointement avec l'option -m.
  • nouvelle option -c, pour copier les fichiers au lieu de les déplacer, modifie les tags après le déplacement.
  • amélioration générale du code, plusieurs bugs corrigés

Exemple d'utilisation

On vérifie que l'import est possible (le script indiquera si il manque des tags aux fichiers par exemple):

musicimporter -v Dossier\ Source/ ~/Musique/

Si tout c'est bien passé, on importe dans sa collection :

musicimporter -vmwd Dossier\ Source/ ~/Musique/

La prochaine fonctionnalité envisagée est de permettre l'utilisation d'un fichier de configuration plutôt que des options en ligne de commande.

Téléchargement : musicimporter.py.

Tous les commentaires sont les bienvenus.

dimanche 7 septembre 2008

MusicImporter, importer proprement ses fichiers audio dans sa collection.

Je viens d'écrire un script en python pour se simplifier la vie dans le classement/rangement de fichier audio récupéré. Il s'appelle simplement musicimporter.

Utilisation

Le script prend en entrée un nombre quelconque de dossiers et un dossier de sortie. Il cherche récursivement les fichiers se trouvant dans les sous répertoires des dossiers en entrée. Il traite ensuite les dossiers trouvés selon les options sélectionnées. Pour l'instant, seuls les formats ogg vorbis, flac et mp3 sont supportés.

  • L'option -w nettoie les tags des fichiers mp3 trouvés, en supprimant tous les tags ne concernant pas le titre, l'album, l'année ou le numéro de la chanson. L'option convertit également le tags ID3v1 subsistant en tag ID3v2.4.
  • L'option -m déplace les fichiers dans le dossier output_dir suivant le format de sortie. Le format peut être changer avec l'option -o.
  • -v, verbose mode, permet de suivre de plus prêt ce que fait le script.
Usage: musicimporter.py [options] src_dir... output_dir

moves and renames audio files cleaning files metadata. It supports mp3 Ogg
Vorbis and Flac

Options:
  -h, --help            show this help message and exit
  -v, --verbose
  -w, --write           clean metadata of mp3 files, delete ID3v1 tags in
                        favor of ID3v2.4
  -m, --move            move files
  -o OUTPUT_FORMAT, --output-format=OUTPUT_FORMAT
                        The format of renamed files. Default is
                        '$artist/$album/$track $title.$extension'

Ce script nécessite mutagen. Disponible dans Debian/ubuntu dans le paquet python-mutagen .
Téléchargement : musicimporter.py.
Si vous avez des remarques ou suggestions laissez un commentaire.

jeudi 19 juin 2008

afpyro le mardi 24 juin, 19h30 : Apéro Rennais des utilisateurs de python

afpy logoGulliver organise un apéro sur le modèle de ceux organiser par l'association francophone Python. L'idée est très simple: tu utilises python, ou des projets gravitant autour comme django ou zope, tu aimes bien causer et boire un verre, alors cette apéro est faite pour toi!

Cela se passe au O'Connels Pub itinéraire

Plus d'info sur le site de Gulliver

lundi 16 juillet 2007

Storm le sqlobject de canonical

caninical.pngCanonical vient de libérer un composant de leur site launchpad. Ils ont libérer Storm, un Object-relational mapping en python, autrement dit un composant qui permet de simplifier les relations entre les données d'une base de données et les instances des objets instanciés.
Etant un utilisateur de django, je suis déjà familier avec ce genre de concept.
Leur implémentation est un peu différente de celle de django, mais elle permet les mêmes possibilités et même plus.
Un projet à surveiller.

Plus d'infos sur le site officiel :

vendredi 29 juin 2007

Django-fr ouvre ses portes

J'apprends aujourd'hui la création d'une communauté française de django.
Je suis très content de cette création étant moi même un utilisateur de django et un supporteur.

Pour rappel django est un framework de développement web en python. Sa philosophie est simplicité et efficacité.
Je vous le conseille. Il est facile à prendre en main grâce à la documentation(ce sera plus long si vous découvrez aussi python :)).

samedi 26 mai 2007

Helloworld série : faire une fenêtre helloworld en Python et Gtk

J'entame une série de billet avec pour thème la comparaison de différents langages de programmation moderne et de différentes bibliothèques graphiques.
J'ai choisi de faire simple et, pour être un tant soit peu comparable, j'ai choisi de créer une fenêtre helloworld standard dans chacune des paires langage/librairie graphique. Juste une fenêtre et un bouton qui ferme la fenêtre. Le but étant de faire découvrir les B-A-Ba de la programmation d'une interface graphique avec les différentes approches à la fois des langages et des librairies. Au menu :

  • les langages python,java,c++
  • les librairies graphiques qt,gtk et swing.

Je ferais des billets python/gtk, python/qt, java/swing, c++/qt, au moins, et certainement c++/gtk.
Le premier de la série Helloworld est en python/Gtk.

La capture d'écran. helloworld py/gtk Attention elle a été faire sous kubuntu/KDE, elle n'aurait pas la même décoration et apparence sous ubuntu/GNOME. Le source :

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pygtk # on importe les librairies grâce au module pygtk qui permet la communication entre python et gtk (qui est écrit dans un autre langage)
import gtk

class HelloWorld(gtk.Window): # remarquer la syntax python pour hériter d'une super-classe, ici gtk.Window qui est la classe de base des fenêtres en gtk
        def __init__(self):
                self = gtk.Window(gtk.WINDOW_TOPLEVEL) # appelle du constructeur de la super-classe
                self.set_title("Hello World !") # On choisit le titre de la fanêtre
                button = gtk.Button("Hello World !") # création d'un bouton
                button.connect("clicked", gtk.main_quit ) # connection de l'évènement du bouton clicked avec la fonction gtk.main_quit
                self.add( button) # on ajoute le bouton à la fenêtre
                self.connect("delete_event", gtk.main_quit ) # on "connecte" l'évènement de la fenêtre avec la même fonction
                self.show_all() # on affiche les composants
        def main(self):
                gtk.main()                 # pour pouvoir afficher des composants Gtk il est nécessaire de lancer cette fonction

if __name__ =="__main__": # équivalent du 'main' de java et c++
        hello = HelloWorld() # on  crée instance de l'objet HelloWorld - noter le typage dynamique de python
        hello.main() # lancement de l'interface

Plus aller plus loin, je vous recommande ces tutoriels :