Twisted Python Twitter library with OAuth support

I have just pushed OAuth support in  my Twitty Twister branch on GitHub. This library created by dustin allows to access the Twitter API  using Twisted for Python: a high performance networking engine. It is to my knowledge the first Twitter library written in Python that supports authentication via OAuth. My version of Twitty Twister is backward compatible, allows to choose between standard or OAuth authentication and even allows to change the user’s avatar via OAuth.

The library does not currently support tokens exchanges (the login flow). So, to use this library and the associated examples you need to  register your application on Twitter and get users access tokens using something like Django Twitter Auth for Django.

The 4 first parameters of the examples commands (files ending with -oauth.py in the example/ directory) are always the application’s key, the application’s secret, the user’s key and the user’s secret. See the OAuth Twitter  FAQ for futher information.

Have fun!

Tweet13 sur Presse-Citron

Ok ça date un peu, comme vous avez pu le constater je n’ai pas eu l’occasion de bloguer beaucoup ces temps ci.

Mon dernier jouet pour Twitter, Tweet13, à fait l’objet d’une revue par Eric Dupin sur son blog Presse-Citron. Merci à lui !

Pour rappel Tweet13 est une petite application web qui permet de chiffrer les messages Twitter à l’aide de ROT13 avant des les envoyer.

En parlant d’applications Twitter, je vous en ai concocter une nouvelle sur le thème de la musique qui devrait être disponible sous peu :)

Joyeuses fêtes à tous.

Jouons un peu avec Tweet13

Voici Tweet13, le dernier petit gadget Twitter que je viens de programmer.

Comme son nom l’indique, Tweet13 chiffre vos updates Twitter avec ROT13 et ajoute optionellement un lien pour déchiffrer le message.

Quel intérêt de chiffrer un message si tout le monde peut le lire ?
Révéler la fin des films que vous avez vu, donner la réponse à de petits quizz que vous avez créés ou encore parler plus crument que d’habitude sans choquer vos followers sensibles :)

Tweet13 à été développé avec Django, JQuery et l’API Twitter.

Voir Tweet13.

Build your own website thumbnail generator with Django

On many website you can see a awesome link preview effect using a thumbnail of the page. There is some web services such as Websnapr or Thumbalizr providing an API to make your own webpages screenshots but it can be annoying to rely on third party projects: free accounts can only display a small among of screenshots and, cannot customize the size of the image, you cannot render Flash animations or Javascript…

Webkit Logo

We will build a website thumbnail generator using CutyCapt, a Webkit based free software designed to make screenshots of web pages, and Django, the powerful Python web framework.

The first step is to download and install CutyCapt. On a Debian-based system (such as Ubuntu) just type the following commands:

sudo apt-get install subversion libqt4-webkit libqt4-dev g++
svn co https://cutycapt.svn.sourceforge.net/svnroot/cutycapt
cd cutycapt/CutyCapt
qmake
make
./CutyCapt --url=http://lapin-blanc.net --out=example.png

Try to open the example.png (i.e: eog example.png), if the install is OK you must see a screenshot of this blog.

I assume your Django installation is working fine. Start a new project if needed (django-admin.py startproject mysite) and create an application called webthumb

with python manage.py startapp in your project.

Django Reinhardt

Edit your urls.py file to add a new pattern to the tuple urlpatterns. It will match screenshots requests and call the thumb view:

(r'^thumb/(?P.*)', 'mysite.webthumb.views.thumb'),

Now create a view called thumb in webthumb/view.py with this code:

import os
import subprocess
import md5
from django.http import HttpResponse

CUTYCAPT = '/home/keyes/cutycapt/CutyCapt/CutyCapt'
THUMBS_DIR  = '/home/keyes/Documents/Projets/kakofony/thumbs/'

def thumb(request, url):
    hash = md5.new(url).hexdigest()
    path = THUMBS_DIR + hash + '.png'
    print path

    if not os.path.isfile(path):
        try:
            subprocess.check_call([CUTYCAPT,\
                '--url=' + url,\
                '--min-width=200',\
                '--out=' + path])
        except subprocess.CalledProcessError:
            return django.http.HttpResponseServerError

    img = open(path, 'rb').read()
    return django.http.HttpResponse(img, mimetype='image/png')

Adapt the variables CUTYCAPT and THUMBS_DIR with your settings. Of course the directory pointed by THUMBS_DIR must be writeable (chmod 777).

You can now embed website thumbnails in your websites just with this HTML markup <img src="http://localhost/thumb/http://lapin-blanc.net" alt="Lapin Blanc" />.

Enjoy !

The last update of Aptana block Django development server

The last update of Aptana Studio come with a new built-in Jetty-based HTTP server running on port 8000… the same as Django development server. There is no good way to disable the preview server feature of the popular editor, but our favorite web framework can be launched on another port. Just type python manage.py runserver 8080 instead of python manage.py and access to your work on http://localhost:8080.

Django logo

hosting.py: un gestionnaire de serveur web pour Debian/Ubuntu

hosting.py, c’est un petit script d’administration de serveurs Debian et ses dérivés (testé sous lenny et Ubuntu).

C’est un outils très simple destiné à gérer les utlisateurs d’un serveur Web (Linux Apache PHP MySQL). Il permet la création, la modification et la suppression d’utilisateurs UNIX et d’hôtes virtuels Apache. Le support des comptes MySQL n’est pas encore publié, mais il le sera bientôt !

La philosophie derrière ce petit programme écrit en Python est d’utiliser au maximum le compte UNIX plutôt que des utilisateurs virtuels pour chaque services. Configurez vos serveurs FTP, Mail et compagnie pour utiliser l’authentification UNIX.

Petit bonus, la gestion des utilisateurs pour le webmail RoundCube est fournie dans les commentaires.

Pour tester : svn checkout http://debian-hosting.googlecode.com/svn/trunk/ debian-hosting-read-only

Pour l’aide : ./hosting.py --help

hosting.py fonctionne en root (sudo ./hosting.py sur Ubuntu).

Mes projets à nouveau en téléchargement

Après avoir été séquestrés pas mal de temp dans ma cave numérique, mes projet peuvent à nouveau regagner l’air libre !

Retrouvez certains de mes projets sous licence libre en téléchargement ! On y trouve essentiellement des logiciels pour le web et pour Ubuntu Linux, jettez-y un oeil.

Les archives de Bienvenue chez moi enfin en ligne

Chose promise chose due !

Les archives de Bienvenue chez moi, mon ancien blog, sont désormais disponibles. Tous les commentaires et articles ont étaient restaurés. Vous y trouverez un grand nombre de tutoriels pour Ubuntu et Linux en général ainsi que les anciennes version de Easy Ubuntu, des modules pour PunBB, et des billets traitant de programmation (PHP, Python, DokuWiki, …).

Bienvenue chez moi c’est plus de 100 billets et de 15 000 commentaires, c’est quelques premières pages de Digg, et ce fut une partie de moi pendant un certain temps !

Google héberge gratuitement vos applications web !

Google a annoncé ce matin la disponibilité de App Engine. App Engine c’est à la fois un framework web Python et une solution d’hébergement “scalable” sur l’infrastructure de Google. L’offre de base est gratuite, propose 500 Mo d’espace disque et assez de bande passante comme de temps CPU pour un site à 5 millions de pages vues par mois.

Logo de Google App Engine

Le SDK est libre et gratuitement téléchargeable, il semble basé sur Django. Comme toujours chez Google, la documentation est claire et complète, et une importante logithèque est déjà disponible.

Cerise sur le gâteau, 10 000 développeurs ont pus obtenir gratuitement un compte fonctionnel dès ce matin. Comme lors du lancement de Gmail, Google fait monter le buzz en nous promet une nouvelle vague de comptes prochainement !

Que devient Easy Ubuntu ?

Vous vous en souvenez certainement, il y a quelques années maintenant j’avais publié un petit logiciel qui eu un grand succès : Easy Ubuntu.

Easy Ubuntu servait à configurer automatiquement Ubuntu et à y installer les logiciels nécessaires à son utilisation courante (Flash, Java, codecs audio et vidéo, …). Il a participé à la démocratisation de cette distribution et a permis à un grand nombre de personnes de franchir le pas vers GNU/Linux.

Aujourd’hui, Ubuntu a évolué et Easy Ubuntu n’a plus aucune raison d’être. La distribution inclus désormais des utilitaires très “user friendly” qui permettent de récupérer et d’installer les modules propriétaires mais utiles par elle même.

Pourtant, de nombreuses requêtes arrivent toujours sur ce blog en provenances de recherches telles que “télécharger Easy Ubuntu”.

La première version, écrite en Bash et utilisant Zenity pour l’interface est toujours disponible dans les archives de mon ancien blog. (On y trouve aussi des scripts PHP et quelques mods pour PunBB et XOOPS sur lesquels je reviendrais peut-être ultérieurement.) Elle ne fonctionne que sur les veilles version d’Ubuntu (Warty, Breezy).

Capture d'écran d'Easy Ubuntu

J’avais ensuite ré-écrit entièrement le logiciel en Python / Glade pour qu’il soit plus stable et performant puis m’étais retiré du projet par manque de temps. Il avait été repris par une équipe de passionnés. À l’époque, nous avions créé un site internet pour Easy Ubuntu. Les archives de la version Python sont toujours disponible sur celui-ci.

Ce fût la fin de mon aventure avec Easy Ubuntu, mais pas celle avec Ubuntu. J’ai ensuite conçu Conceal, un gestionnaire de dossiers chiffrés pour GNU/Linux en général et Ubuntu en particulier, lors du Summer of Code 2007. J’ai du le mettre en demeure au cours de cette année suite à un emploi du temps chargé mais je reprend son développement. Une nouvelle version sortira très prochainement !

Next Page →