0
Mag 19 2016

vCard Cleaner

Una funzionalità che trovo molto comoda della rubrica Android è la possibilità di poter esportare la rubrica in VCF.

Non so se più per romanticismo o più per fondata paranoia, non voglio salvarla su un servizio cloud come Gmail, però non voglio neanche rischiare di perderla, quindi questi file sono la scelta migliore.

Sul mio vecchio Huawei Y530 andavo abbastanza bene, perché riuscivo a esportare insieme tutti i contatti da un unico provider di rubrica, in particolare dall’archiviazione locale del telefono, possibilità che non ho più trovato nella Cyanogenmod che uso sul mio Oneplus One.

Infatti adesso posso sì decidere che contatti esportare, ma vedo tutti i contatti insieme, compresi i duplicati creati da Telegram e Whatsapp e i contatti di cui ho solo l’indirizzo e-mail su Gmail.

Ho così deciso di fare uno script in Python che ripulisce il file esportato, cancellando i contatti privi di numero telefonico e mette insieme i duplicati. Inoltre se uno stesso numero è ripetuto più di una volta per il contatto, viene tenuto solo una volta.

Lo script potrebbe essere un po’ migliorato, facendo in modo che, per esempio, accetti da argomenti i file da pulire, anziché scriverli nel file stesso.

Come dipendenza ha solo VObject che può essere installata tramite pip oppure tramite altri gestori di pacchetti (è presente, per esempio, nei repository Debian, sotto nome di python-vobject).

Il mio script è rilasciato nel pubblico dominio, invece VObject (almeno al momento di scrittura dell’articolo) è rilasciato sotto licenza Apache 2.0.

Download: vcard_cleaner.py.

0
Nov 17 2014

Python SSH Tunnel Server

SSH tunnels are great!

They allow to bypass firewalls and NAT problems, and you can use as unprivileged user, since you don’t have to install virtual network devices such as TUN or TAP.

Another good reason to chose SSH is that it is a standard protocol, so there are many implementations: OpenSSH on most Unices, PuTTY on Windows and cross platform libraries (Java, Python…).

However there is a great disadvantage: the SSH server. If you have a server you probably already use SSH, therefore you don’t want to share your custom port and grant access to your server, or create accounts to allow it.

A solution could be creating a chroot or something like that, but I wasn’t really confident in it, therefore I looked for an alternative SSH server, and I’ve come up with this library: TunnelServer.

Python already has a brilliant SSH library: Paramiko. It’s very transparent: it manages the packages for you, but you are the one who should manage the rest (login check, shell comunication, PTY allocation…, socket-ssh channel synchronization). That’s great, but sometimes unhandy, so I’ve written this class, which is a middleware: the class user still has to check login, but you don’t have to create… [Leggi il resto...]

0
Mag 08 2014

Download video in streaming flash con Python

Un tempo su Linux si poteva trovare un video guardato in streaming direttamente nella directory /tmp.

In seguito, con degli aggiornamenti, flash scaricava il video sempre lì, ma veniva eliminato, anche se fisicamente presente.

Per ritrovarlo bastava trovare il processo dell’implementazione flash del browser, solitamente con ps aux | grep flash e così si trovavano i possibili pid.

Andando a vedere nella directory /proc/pid/fd, si trovavano tanti link, uno di questi a un file tipo /tmp/Flash.... In seguito si poteva trattare quel link come se fosse un file normale, quindi riprodurlo, passarlo a mencoder o ffmpeg etc… Se volevate copiarlo dovevate aspettare che il browser avesse finito di scaricare il video!

In seguito sembrava essere scomparsa anche questa possibilità, ma oggi mi sono accorto che è tornata, quindi vi lascio un breve file in python che permette di trovare automaticamente i vari file:

[Leggi il resto...]
2
Gen 15 2012

Panda3D: ruotare la telecamera col mouse

Come l’avevo fatto con Blender, ora lo faccio con Panda3D ;)

Dall’hello world della documentazione ufficiale, ho fatto questo script che muove la telecamera col mouse.

In pratica esegue un task - una funzione eseguita ad ogni frame - che controlla la posizione del mouse, la trasforma da radianti a gradi sessagesimali (usati da Panda) e alla rotazione che ha in quel momento la telecamera aggiunte quella ottenuta con la trasformazione. Infine centra il mouse.

Devo ancora capire perché trasformando le coordinate del mouse - il cui intervallo in panda è [-1; 1] - si riesca a ottenere una buona rotazione con Panda, però sembra funzionare bene!

Ecco lo script python:

[Leggi il resto...]
0
Gen 01 2012

Socket e thread in Python

Chi è interessato a sviluppare un’applicazione che utilizzi in un modo anche semplice la rete deve spesso documentarsi sulle socket, in qualsiasi linguaggio di programmazione, anche per il python.

In questo campo ho lavorato più di una volta, però mi sono limitato alla creazione di socket con una sola connessione alla volta.

Tuttavia non è molto utile: penso che la maggior parte delle applicazioni pratiche richiedano più di un client connesso e “addirittura” la possibilità di dialogare tra di loro.

Quindi intervengono i thread.

Non so darvi la spiegazione tecnica di cosa siano, però so darvi una spiegazione pratica: i thread permettono di eseguire contemporaneamente più operazioni, senza però creare un altro processo. Il vantaggio è che si ottiene il famoso multi tasking.

Documentandomi ho trovato che uno degli svantaggi è che non avviene il controllo sull’uso contemporaneo di alcune risorse come file, tuttavia in questo caso usiamo solo la RAM e perciò non ci poniamo il problema.

In python usare i thread è abbastanza semplice: una volta importato il modulo threading o solamente la classe Thread da esso, bisogna estenderla e fare una funzione chiamata run in cui… [Leggi il resto...]