Python-Quvi

Tags:: python :: youtube :: quvi

Vous connaissez peut-être les projets minitube, cclive ou clive qui sont des outils permettant la récupération d'information de médias (vidéos, audio...) provenant de sites tels que Youtube, Dailymotion... Ces outils utilisent en fait la librairie "quvi", et un outil en ligne de commande permet d'utiliser cette dernière. La librairie est en C. J'ai donc décidé de créer le wrapper pour Python. http://github.com/metal3d/python-quvi

En relation avec l'auteur de la librairie http://quvi.sourceforge.net/ la discussion s'est d'abord orienté sur SWIG. Ce système permet assez facilement de créer une librairie python compilé depuis une librairie C. Or, après un test ou deux, j'ai trouvé assez compliqué de travailler avec ce système.

D'abord parce que SWIG (bien que très puissant et facile d'accès) me sort en fait les fonctions C telles quelles, sans vraiment s'adapter au langage visé, du moins pour python. Et secondo, parce que je connais bien Cython qui me permet de faire la même chose, mais en plus maîtrisable.

Si vous ne connaissez pas Cython, allez faire un tour sur mon blog fedora, j'ai écris ce billet pour proposer une introduction assez simple: http://blog.fedora-fr.org/metal3d/post/Cython-pour-optimis%C3%A9-Python

Le billet présente déjà comment compiler un "shared object" pour python, je me suis orienté alors sur la page de documentation http://docs.cython.org/src/tutorial/clibraries.html qui m'a parut assez claire pour débuter le travail.

L'idée principale a été de lire le fichier "quvi.h" pour y remonter les déclarations dont j'avais besoin, puis de préparer une classe qui me permet de récupérer les type C, pour les passer en objet python.

Le résultat a été immédiat. D'abord un ".so" bien plus petit qu'avec SWIG, mais en plus une classe que je pouvais mieux adapter au langage. Option qui ne m'a pas déplut, c'est qu'en plus j'ai un seul fichier "quvi.so" et non un "_quvi.so" et un "quvi.py" à utiliser.

Et enfin, la compilation se faisant via les "distutils" de python, la librairie est compilée et installé par un simple "setup.py".

Je vous invite donc à tester et me dire si la librairie fonctionne, non pas ici sur le blog mais sur la page du projet: http://github.com/metal3d/python-quvi

N'oubliez pas que sur github, il est préférable de forker le projet pour me proposer des pull request plutôt que des patchs. Notes enfin que je développe dans la branche "developpement" et non dans le "master".

Voilà pour la news :)

Utilisez le code barre pour ouvrir le ticket dans votre mobile:
This ticket on you mobile
1 Jeudi 27 Octobre 2011 12:25:46, casino francais

Option qui ne m'a pas déplut, c'est qu'en plus j'ai un seul fichier "quvi.so" et non un "_quvi.so" et un "quvi.py" à utiliser.

2 Dimanche 06 Novembre 2011 15:03:28, Metal3d

@casinofrancais effectivement, c'est une option très appréciable. C'est la grande différence entre SWIG et Cython, le fait que Cython est un langage à part entière et non un bridge maker, du coup on a pas une interface mais une librairie

Ajouter un commentaire
Veuillez répondre à la question suivante : Tapez en minuscule le nom de l'animal qui fait miaou

Trackbacks

Pour ajouter un trackback (retrolien) sur ce ticket, utilisez cette adresse: http://www.metal3d.org/index.php/trackback/default/tb?id=blog%2F283

Tags

Blog Copix Communication PC Config Fedora Vidéo Humour Autre Web Materiel Informatique PHP Développement Mootools HTML Linux WEB IE CSS Vista Microsoft Sympa XHTML Quizz Widget Klik CWE Voeux Bonne année Musique CCRMA Son Audio MAO Reconnaissance vocale Windows Mac Compiz MacOS Mysql Sun Base de données BD Screenlets Screenlet RPM compiz Ubuntu Live FireFox Derambarsh Facebook media informations Sécurité javascript SSH Commande Marketing concours ipod wii QT Trooltech Nokia Libre Logiciels GPL Attali Gnome Dock Compiler Bench undelete reiserfs recovery recover Thread Serveur Optimisation Server Apache Album RSS Flash Air XML Firefox Blender Opensource Orange Internet LiveBox Animaux Droits Logiciels Libres Google Loi RBS netcat Bash Téléphone Spam 3D NIDIA Standards Widgets Merise UML Streaming Developpement Perl MySQL Firewall Parfeu Bayes Novell Réseau Python LVS Salon FTP Dedibox Chrome Administration IRC Gentoo troll video Nouveauté Finance Etudiant spéctacle OpenOffice Javascript Java Info Eclpise ATI design mootools KDE Bureau Design GNU C Pages Jaunes Fun Bijoux Art mail Admin vmware fedora linux VirtualBox VMWare Qemu KVM vim Grep Fglrx Webkit GTK google web JQuery Coup de gueule coup de gueule Lois SVG Raycaster Canvas Hadopi Desktop Jeux Les Sims développement astuces Screen firefox Mobile Safaru Wine bash commande astuce Wave ooc C++ C# Netbook Hercules Bureautique Twitter Safari W3C chrome kazehakaze midori navigateur gecko webkit Links Liens Pyhon Nouvelles Metal Perso Conférence JDLL PCC Roadsend OOC News Acteur Cinéma Chanteur Seven windows orthographe pcc php jdll Slide Application mysql Html twitter python screen curses SVN Android Gphone iPhone OpenGL MindMap Projet Javascrtip Ajax Guitare Tab Tablature JSON firebug Chromium Iphone Titanium music sound android ogg ogv streaming Arkyne svn subversion gnome VLC Tv encoder ffmpeg Cryptage apple microsoft HTML5 Max Apple code youtube quvi git uzbl webgl chromium

  Catalogue professionnel de musique libre


  • twitter entries...
follow me on Twitter

Valid XHTML 1.0 Strict

tumblr visitor