giovedì 23 luglio 2009

Installare script python con setup.py

Il modo più pratico per distribuire uno script python è sfruttare le potenzialità stesse del linguaggio e creare un file setup.py che permetta l'installazione.

Per gli anglofoni consiglio vivamente di andarsi guardare la documentazione ufficiale di python al riguardo: qui e qui.

Creare il file è molto semplice, basta creare un nuovo file chiamato setup.py e inserire le seguenti righe:
#!/usr/bin/env python

from distutils.core import setup

setup(name='Distutils',
version='1.0',
description='Python Distribution Utilities',
author='Greg Ward',
author_email='gward@python.net',
url='http://www.python.org/sigs/distutils-sig/',
packages=['distutils', 'distutils.command'],
)


La prima riga permette l'esecuzione del file anche senza richiamarlo con il prefisso python nel terminale.
La seconda importa la funzione setup dal modulo distutils (che dovete quindi avere installato).
Infine si richiama la funzione setup con tutti i parametri necessari.

I campi importanti da considerare sono:

  • name - nome dello script da installare
  • version - versione dello script
  • description - Una rapida descrizione dello script
  • author - autore del programma
  • author_email - email di contatto per l'autore
  • url - eventuale sito da cui scaricare lo script

Questi erano i campi necessari per la descrizione del programma da installare, quello che segue sono i parametri leggermente più tecnici che servono al sistema per sapere cosa installare.

  • packages - la lista dei packages che compongono lo script, per ogni package che viene aggiunto, ade esempio packages=['packagename'] setup presume l'esistenza di un file packagename/__init__.py relativo alla cartella dove risiede lo script.
  • py_modules - se lo script non dovesse avere un set di packages, ma soltanto qualche modulo, magari nella stessa cartella dello script principale, vanno indicati usando questo parametro.
    es. py_modules = ['mod1', 'pkg.mod2']
  • scripts - indicano gli script (ovvero quei file che hanno un # e python nella prima riga del file) che vanno installati nella cartella /usr/bin del sistema per essere eseguiti facilmente dalla riga di comando.
    es. scripts=['scripts/xmlproc_parse', 'scripts/xmlproc_val']
  • package_data - se fosse necessario aggiungere altri file relativi a un package (ad esempio immagini o file di supporto), si utilizza questa funzione che richiede il nome del package a cui ci si sta riferendo e il percorso relativo al package dove trovare i dati necessari. I packages devono essere stati inclusi in precedenza con il parametro packages.
    es. package_data={'mypkg': ['data/*.dat']}
  • data_files - se fosse necessario aggiungere altri file al programma, come ad esempio file di configurazione o di dati, si utilizza questa funzione che rihiede l'elenco delle coppie (cartella, file) dove la cartella indica il percorso dove installare e file la lista di file da installare nella cartella.
    es. data_files=[('bitmaps', ['bm/b1.gif', 'bm/b2.gif']),
    ('config', ['cfg/data.cfg']),
    ('/etc/init.d', ['init-script'])]


Queste sono solo alcune delle opzioni disponibili per la creazione di un file di setup per python, a mio parere le più utili.
Per informazioni più approfondite e dettagliate vi invito a consultare le guide ufficiali.

Read more!

martedì 21 luglio 2009

video2psp - Convert your videos for your PSP



This is a little script I created a while ago, which allows you to convert videos, to watch them on the PSP, using ffmpeg or mencoder.

All the programs to convert videos require you to select the file you want to convert then set the conversion parameters with various listboxes. A lot of clicks for my tastes, non mentioning that not all of them allow you to setup batch conversions, which is bad if you have a lot of videos to put on the PSP.

Things work differently here.

First thing you notica is the lack of a graphical interface, this was necessary to grant greater efficiency, in fact you just need to open a terminal in the right folder and type video2psp * to convert all the videos in the folder.

Let's see how it works:
Once installed, all you have to do in open a terminal, type video2psp and add all the videos you want to convert.
You can add videos in 3 ways:
- put the list of files that you want to convert from the current folder,
es. $ video2psp video1.avi video2.avi video3.avi

- use the * to add multiple files at once,
es. $ video2psp video*

- or you can just drag and drop the videos you want to convert on the open terminal window and the computer will put the absolute path to the file, this is practical if you want to convert a lot files from different folders.
es. $ video2psp '/home/user/Videos/video1.avi' '/home/user/Videos/video2.avi' '/home/user/Videos/video3.avi'

Once you selected the files a quick multiple choice menu will allow you to select conversion parameters.



Requirements:
- The script is written in python, so you will need to have it installed.
- Conversion in MPEG4/SP will work out-of-the-box with ffmpeg and mencoder packaged for ubuntu, but for H264/AVC conversion you will need to recompile ffmpeg.

The program is available for download as a tar.gz archive or as a deb package for ubuntu and debian, if you install it with the deb package the system will take care of all dependencies automatically.

Read more!

lunedì 20 luglio 2009

video2psp - Converti i tuoi video per la tua PSP



Questo è un piccolo script che ho creato tempo fa con cui si possono facilmente convertire video, per vederli sulla PSP, usando ffmpeg o mencoder.

Tutti i programmi per convertire filmati richiedono di selezionare il file che si vuole convertire e poi impostare i parametri di conversione con vari menù a tendina. Un sacco di click per i miei gusti, senza contare che non tutti permettono di impostare conversioni in batch cosa seccante se si hanno numerosi filmati da convertire.

Qui le cose funzionano diversamente.

Prima cosa che si nota è la mancanza di una interfaccia grafica, cosa necessaria per garantire una maggior efficienza, infatti basta aprire un terminale nella cartella giusta e dare video2psp * per convertire tutti i video della cartella.

Vediamo il funzionamento nei particolari:
Una volta installato, quello che basta fare è aprire un terminale scrivere video2psp e aggiungere dietro i video che si vogliono convertire.
Per aggiungere i video possiamo utilizzare 3 metodi,
- possiamo mettere l'elenco dei file che vogliamo convertire nella cartella corrente,
es. $ video2psp video1.avi video2.avi video3.avi

- possiamo utilizzare la * per aggiungere molti file in una volta,
es. $ video2psp video*

- oppure possiamo trascinare i file sulla finestra del terminale e il pc si occuperà di aggiungere il percorso completo ai file, molto utile se si vogliono convertire insieme molti video da diverse cartelle.
es. $ video2psp '/home/user/Videos/video1.avi' '/home/user/Videos/video2.avi' '/home/user/Videos/video3.avi'

Una volta selezionati i file un rapido menù a scelta rapida permette di selezionare le opzioni per la conversione di tutti i file.



Requisiti:
- Lo script è scritto un python, quindi sarà necessario averlo installato.
- La conversione in MPEG4/SP può essere effettuata subito con ffmpeg e mencoder pacchettizzati per ubuntu, per la conversione in H264/AVC sarà necessario ricompilare ffmpeg.

Il programma è disponibile per il download come archivio tar.gz o come pacchetto deb per ubuntu o debian, installandolo tramite deb si installeranno automaticamente tutti i pacchetti necessari.

Read more!

venerdì 5 giugno 2009

Scaricare interi siti con wget

Anche se solitamente ignorato, wget è un programma eccezionale per scaricare da internet.
Il suo uso standard permette di scaricare un file dal web, basta chiamarlo da terminale con un url
wget http://2mlabs.blogspot.com/

a questo punto potreste potenzialmente navigare in internet a colpi di wget "nomepagina" e less "nomepagina", ma non credo sia molto pratico ne utile.

Vediamo piuttosto le funzioni interessanti.

Quello che wget ci permette di fare è il download ricorsivo dei siti, ovvero oltre alla pagina iniziale che gli abbiamo fornito, lui scaricherà anche tutto quello a cui quella pagina aveva collegamenti, quindi immagini, file, etc. Se fra questi link dovesse comparire un'altra pagina html lui scaricherebbe anche da tutti i link presenti in quella e avanti così a cascata!
Il tutto aggiungendo soltanto l'opzione -r al comando scritto prima
wget -r http://2mlabs.blogspot.com/


Un'opzione essenziale se si stanno scaricando delle pagine html è --convert-links che ci permette, una volta scaricato la sito, di navigarci localmente anche offline. In caso contrario avremmo tutte le pagine, ma cliccare sul link non ci porterebbe da nessuna parte.

Non tutti i siti potrebbero essere felici ad avervi lì a scaricare tutto quanto. Quindi molto spesso richiedono che il browser di identifichi, e solitamente inviano una pagina bianca o di errore se scoprono che si sta usando qualcosa che non è un web browser. Vi sarà probabilmente capitato se avete usato in passato programmi come GetRight, FlashGet o qualsiasi altro download manager.
Per risolvere questo problema entra in gioco l'opzione -U browser che ci permette di dire al sito che stiamo usando un browser di quelli normalmente accettati
wget -r -U Mozilla http://2mlabs.blogspot.com/

Aggiungendo Mozilla sarà come se ci fossimo collegati con Firefox o qualsiasi altro browser Mozilla.

Nonostante tutto, scaricare un sito implica un sacco di traffico, quindi se la cosa non aggrada troppo al gestore potremmo trovarci rapidamente in una blacklist senza poter più accedere al sito per un pò.
In nostro aiuto questa volta intervengono altre due opzioni --limit-rate= e --wait=, la prima ci permette di limitare la banda di scaricamento, mentre la seconda ci permette di inserire un'attesa fra le richieste di download. Mettendo un minimo di attesa e limitazione al download non avremo sicuramente problemi di finire in nessuna blacklist.
Aggiungiamo quindi anche queste due opzioni alla riga di comando, con il tempo di attesa in secondi e il limite di scaricamento in bytes, o Kilobytes se ci aggiungiamo un K
wget -r --limit-rate=50K --wait=20 -U Mozilla http://2mlabs.blogspot.com/


Un ultima opzione molto utile è il --no-parent che impedisce al programma di scaricare le cartelle allo stesso livello. Questo vi permette di scaricare solo i contenuti di una particolare cartella, senza scaricare più di quello che vi serve.

Per ulteriori comandi e approfondimenti vi rimando al completissimo manuale
man wget

e alle pagine di wikipedia su wget in inglese e italiano.

Read more!

mercoledì 3 giugno 2009

Usare immagini .IMG con VirtualBox

Preso dalla foga dopo aver letto la notizia che alcune delle maggiori distribuzioni baseranno le loro distro per netbook su Moblin, ho deciso prontamente di darci un'occhiata.

Dal sito di Moblin possiamo scaricare facilmente la versione 2.0 Beta, distribuita come immagine IMG, pronta da essere messa su una pennina USB per il vostro netbook.
Essendone sprovvisto però del suddetto netbook l'unica alternativa che mi rimane è utilizzare una Virtual Machine per provarlo, purtroppo però le immagini .IMG funzionano direttamente solo con VMWare...

Vediamo come fare quindi per usarle su VirtualBox.

Dopo una rapida ricerca in giro per il web, ho scoperto questo post e questa guida del sito di Debian e la procedura è alquanto semplice.

Basterà prendere l'immagine in IMG e convertirla in un'immagine VDI con il seguente comando in un terminale
VBoxManage convertfromraw -format VDI binary.img binary.vdi
A questo punto basterà aggiungerla come nuovo Hard Disk in VirtualBox

e far partire la Virtual Machine


Fatto! Godetevi Moblin in VirtualBox!

Read more!

martedì 5 maggio 2009

10 visite!

Ringrazio di cuore Stefano e Marco e forse anche te misterioso lettore, per aver premuto aggiorna quella volta di troppo.

Grazie, sono commosso.

Read more!

Installare il vecchio Amarok 1.4 in Jaunty

Uno dei programmi più attesi con l'avvento di kde4 e delle nuove qt era la nuova versione di Amarok, release per cui siamo stati riempiti di screenshot fantascientifici e promesse di feature altrettanto fantastiche, a quanto pare il sottotitolo per la nuova versione doveva essere "Dio è sceso in terra, e riproduce gli mp3".
Purtroppo però come per quasi tutto il resto di kde4, la versione attuale non è che un'ombra di quella stabile precendente, e il perchè avranno deciso di metterla come unica versione disponibile rimarrà sempre un mistero. Mah...
Tuttavia questo si può risolvere, una rapida ricerca mi ha portato alla scoperta di questa PPA che racchiude al suo interno dei comodi pacchetti per rimettere il nostro amato lettore musicale nel sistema.

Ecco come fare:
innanzitutto aggiungiamo i repository, in un terminale diamo:
sudo gedit /etc/apt/sources.list.d/amarok.list

e dentro aggiungiamo le righe
deb http://ppa.launchpad.net/bogdanb/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/bogdanb/ppa/ubuntu jaunty main

Aggiungiamo la chiave per il PPA
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0x1d7e9dd033e89ba781e32a24b9f1c432ae74ae63

aggiorniamo il sistema, rimouviamo amarok2 e installiamo il vecchio
sudo apt-get update
sudo apt-get remove amarok
sudo apt-get install amarok14

e il nostro caro vecchio amarok è di nuovo pronto all'uso.

Read more!

sabato 2 maggio 2009

Ripristinare il vecchio funzionamento di update-manager

Per questo primo post di natura tecnica, vi propongo la guida per ripristinare il vecchio funzionamento del sistema di update in ubuntu.

Come avrete notato se avete già aggiornato a Jaunty il comportamento dell'update manager è cambiato. Invece di notificare le nuove upgrades disponibili nella barra di notifica, si avvia direttamente la finestra principale del programma, cosa che a quanto pare dovrebbe servire a aiutare tutti gli utenti che non sono in grado di capire dall'icona nella barra di notifica che ci sono degli aggiornamenti per il sistema. Se anche voi però fate parte di quella, a quanto pare piccola, parte di utenti che riesce a capire il significato di un'icona nella barra di notifica vi farà piacere ripristinare il vecchio funzionamento del sistema.

Se masticate l'inglese consiglio la lettura del bug report che ha anche qualche link a una interessante discussione sull'argomento, che spiega accuratamente le motivazioni di questi cambiamenti.

Ma diamo un taglio alle storie e passiamo alla parte pratica.
Per rispristinare il vecchio funzionamento sarà necessario soltanto eseguire questa riga di comando in un terminale
gconftool -s --type bool /apps/update-notifier/auto_launch false

in alternativa è possibile usare gconf-editor, navigare a mano fino a /apps/update-notifier/ e togliere la spunta da auto_launch.
Nel caso vi rendiate conto che tutto sommato il nuovo funzionamento vi piaceva, per ripristinarlo basterà usare il comando qui sopra sostituendo true al false.

Read more!

giovedì 23 aprile 2009

The sound of drums.

Can't you hear it?
The drum beat... the drums are coming closer... and closer.

Read more!

martedì 21 aprile 2009

Initial commit.

The story of this terrible, stupid blog, the story of its extraordinary consequences, and the story of how these consequences are inextricably intertwined with this remarkable blog begins very simply.

It begins with a post.

Read more!