mvregen: un tool per rigenerare link MegaVideo

Ma quanto è bello MegaVideo? Per chi non lo sapesse, si tratta di una piattaforma per l’hosting di file video. Un utente si registra e carica i propri video su questo sito, e in cambio riceve un codice: usando quel codice un altro utente qualunque può vedere il suddetto video. Ovviamente, lo scopo nascosto (neanche troppo) della piattaforma è l’hosting di materiale protetto da copyright, ma si possono trovare anche cose legali.

Il problema è che, proprio per proteggere i contenuti (specie quelli illegali), non è possibile eseguire alcun tipo di ricerca sul sito: per vedere un video bisogna conoscerne il codice. Il codice è per intenderci quello nell’URL:

http://www.megavideo.com/?v=113GXHGK

E purtroppo i codici vengono spesso invalidati (o semplicemente scadono). Quindi capita molto spesso di trovarsi tra le mani con un elenco di URL che, una volta cliccati, puntano inesorabilmente a qualcosa del genere:

Per fortuna esiste la soluzione: in realtà, quando un file viene caricato su MegaVideo, ne vengono fatte più copie sui diversi server (o almeno così mi risulta), per meglio gestire il traffico sulla piattaforma. Quindi, per ogni URL cancellato spesso ne esistono altri che puntano allo stesso file. Si possono trovare facendo una ricerca (detta curiosamente “rigenerazione”) su certi siti specializzati, come ad esempio regen.megastreaming.org. Si va sul sito, si inserisce l’URL, si clicca, si aspetta, si dribbla la pubblicità, si ignorano i popup e forse alla fine si arriva al risultato (il risultato presentato in realtà mostra il link megavideo ma se cliccato porta a un servizio a pagamento, quindi bisogna pure fare il copia&incolla dell’url). Insomma, un pò lungo se uno si vuole rigenerare una lista completa di link..

E in questo punto si colloca mvregen. Si tratta di una simpatica utility in Python che si occupa di tutti i task noiosi relativi alla rigenerazione dei link MegaVideo. E’ sufficiente passare il codice da rigenerare da riga di comando (opzione -c):

./mvregen.py -c XXXXXXXX

oppure direttamente con l’url usando l’opzione -u:

./mvregen.py -u http://www.megavideo.com/v=XXXXXXXX

o addirittura si può passare un intero file esterno con un link per ogni riga, per rigenerare tutta una serie di link in un unico comando (vengono ignorate le linee vuote e quelle di commento, ovvero che iniziano con un #. Consiglio di mettere un commento prima di ogni link, poichè il commento viene stampato nell’output e aiuta a riconoscere il link rigenerato).

./mvregen.py -f miofile.txt

L’output (solo i link rigenerati più i commanti) può essere anche salvato su un file di testo, con l’opzione -o, o addirittura in formato HTML (per avere i link già pronti a essere cliccabili!), con l’opzione -t. Ad esempio, se ho un file di link megavideo non funzionanti chiamato link.txt e voglio creare un file HTML con i link rigenerati, basta usare:

./mvregen.py -f link.txt -t link.html

Per ulteriori informazioni è sufficiente lanciare il programma con l’opzione -h per leggere l’help online. Può anche essere interessante utilizzare l’opzione -v (verbose) per seguire i passaggi che il software esegue nel rigenerare i link.

Il tool, come dicevo, è scritto in Python, quindi si suppone che funzioni su qualunque piattaforma moderna. Io l’ho provato su MacOsX e Linux e funziona perfettamente. Lo sviluppo avviene su GitHub, da cui lo potete scaricare (c’è un pulsante “Downloads” da qualche parte). Ovviamente è rilasciato open source (sotto licenza MIT).

Spero possa essere utile a qualcuno. Se è così mi aspetto come minimo un commento :-)

Ciao!

 

English Verb Test Generator

Forse ricorderete di quel mio bislacco articolo circa un modo comodo per generare una verifica sui verbi irregolari inglesi mediante uno script in python. Tale script prendeva semplicemente un elenco di verbi, li mescolava, ne sceglieva alcuni, di ciascuno sceglieva una possibile voce da mostrare (forma base, passato, participio o traduzione in italiano) ed esportava il tutto in formato CSV; da qui l’utente finale doveva solamente importare il CSV in un foglio di calcolo, sistemare le caselline, le intestazioni, le dimensioni dei caratteri e stampare il tutto.

Carino, ma c’era ancora molto da fare. Lo scoglio maggiore all’usabilità era la necessità di utilizzare un foglio di calcolo, e con esso dover reimpostare ogni volta stili, dimensioni caratteri, bordi e cose così: scomodo!

Così, quando ieri sera mia madre mi ha chiesto di prepararle ancora qualche verifica, ho voluto mettere mano al programmino e apportare qualche modifica; come potrete vedere il risultato mi è decisamente sfuggito di mano :-)

Fatto sta che lo script ora è in grado di produrre un PDF multipagina perfettamente formattato, sfruttando le ottime librerie open a disposizione del python (ReportLab PDF Generator).

Per giunta già che c’ero ho creato con Platypus e CocoaDialog un bundle per Mac Os, così gli utenti mac possono tenere il programmino sulla loro scrivania :-D .

Insomma, tira e molla e ho finito col creare un progetto su SourceForge, l’”English Verb Test Generator“. Se a qualcuno (insegnanti, studenti di medie/superiori, uomini d’affari che si vergognano per non aver mai imparato i verbi irregolari e fanno figuracce quando sono all’estero) interessa usarlo, provarlo o anche solo dare un’occhiata al codice è il benvenuto.

Ovviamente non mi dispiacerebbe una mail di feedback se il mio programma vi piace o se vi viene in mente qualche modifica interessante da apportarvi.

Ciao a tutti!

Una verifica di inglese.. in python!

Stasera, dopo le mie 8 ore abbondanti di lavoro davanti a un terminale di un AS400, più l’ora di macchina all’andata e l’ora al ritorno, mia madre è saltata fuori per chiedermi di prepararle una verifica di inglese sui verbi irregolari per la scuola dove insegna. Si tratta di prendere un elenco di verbi irregolari, sceglierne una quindicina a caso, mischiarli e scrivere su un foglio con quattro colonne (presente, passato, participio passato, traduzione in italiano) un solo valore, anch’esso scelto a caso; ovviamente gli altri tre valori dovranno essere inseriti da chi svolgerà la verifica. Come ulteriore complicazione, quà e là è necessario seminare qualche verbo regolare, che però richiede degli accorgimenti particolari: ne esistono diversi tipi, a seconda della desinenza e di conseguenza del modo di costruire i tempi verbali, e di ciascun tip deve essere presente un elemento, con già scritta la versione al presente oppure quella in italiano. Un bel pò di requisiti, eh?

Fare un lavoro del genere a mano è noioso e lungo, nonchè suscettibile di errori di vario genere. Eppoi è proprio per questo genere di lavori che esiste il computer, no? Di conseguenza ho scritto un piccolo programma in python che mi realizza la verifica come csv, che ho poi importato in excel per dargli una parvenza grafica decente. Ecco il codice:

pyenghw01

Nella prima parte (qui sopra) viene definita la lista di verbi, ciascuno dei quali in realtà a sua volta è una lista di 4 stringhe che rappresentano rispettivamente la forma al presente, al passato, al participio passato e in italiano. Mediante il comando random.shuffle() la lista viene mescolata casualmente, e mediante il comando immediatamente successivo viene troncata ai primi 15 elementi.

A questo punto per ciascun verbo (ovvero quartetto di stringhe) si chiama un random.random(), che moltiplicato per in numero di elementi del quartetto e troncato all’intero darà un numero casuale compreso tra 0 e 3; questo valore deciderà quale dei quattro elementi del quartetto dovrò scrivere (gli altri saranno lasciati in bianco). La stringa così realizzata (in forma CSV, ovvero valori separati da virgola) viene aggiunta come elemento della lista result.

pyenghw02

Il procedimento per i verbi regolari è simile ma un pochino più contorto. Esistono infatti diverse famiglie di verbi regolari, a seconda del modo in cui si costruiscono le loro forme verbali. Nell’esempio ho lasciato due famiglie, una composta da due e una da tre verbi (il quartetto di prima è diventato una coppia, poichè mi interessa rappresentare solo il presente oppure la forma italiana). In questo caso vado a:

  • selezionare una famiglia, cioè una lista di coppie, e metterla nella variabile verbfamily;
  • mescolo la lista verbfamily e ne prendo il primo elemento;
  • genero un numero casuale (0 oppure 1) che deciderà se andrò a scrivere la forma presente o quella in italiano;
  • aggiungo alla lista result anche questa stringa;
  • ripeto per tutte le famiglie di verbi.

A questo punto prendo la lista result, ovvero la lista delle stringhe che devo stampare, gli dò una bella mischiata e la stampo un elemento alla volta.

Salvo il tutto nel file verbiinglesi.py, e da terminale eseguo:

python verbiinglesi.py > verbi

il programma viene eseguito e il suo output viene memorizzato automaticamente in un file chiamato “verbi”. Una rapida occhiata a questo file con un editor di testo mostra che tutto ha funzionato per il meglio:

Yuna:~/Documents/provaPython mario$ cat verbi
,,,CREDERE
ARRIVE
FLY,,
,,,COLPIRE
,ATE,
,,DUG
,,LEFT
WATCH
,,,ANDARE

e così via.. A questo punto devo solo importare la lista in excel (stessa cosa in OpenOffice, credo) per sistemare un pò la presentazione e stamparla. Basta aprire il proprio foglio di calcolo, selezionare “Importa” dal menu “File”, scegliere l’opzione CSV, selezionare il file “verbi” (se non ve lo lascia selezionare è necessario scegliere “All Files” dalla lista sopra), impostare la virgola come carattere delimitatore et voilà! Ingrandiamo il carattere, allarghiamo le colonne, scriviamo l’intestazione, tiriamo di qua e molliamo di la e questo è il risultato:

pyenghw03

Ovviamente il grandissimo vantaggio di questo sistema è che è possibile realizzare in tempo zero decine di verifiche completamente diverse tra di loro, incubo di ogni studente che in tal modo non può proprio copiare dal compagni di banco! E’ sufficiente eseguire di nuovo lo script e importare il file in un nuovo foglio di calcolo: voilà!

Ciao a tutti!