Scaricare video da La7.tv

È da poco ricominciato lo show di Crozza (Italialand), uno dei miei programmi preferiti, che mi fa passare un paio di ore di allegria1 … tuttavia quando una cosa nasce sterco, sterco a vita resterà, indipendemente dal numero di versione.

Per vedere le repliche dello show in maniera più o meno lineare (senza un fastidioso sfarfallio e la CPU a mille) ho dovuto scrivermi uno script in bash che scarica il video da La7.tv e nel frattempo me lo apre con il mio lettore preferito (nel mio caso VLC).

Ora, non sono sicuro che funzioni per tutti i video de La7.tv, ma perché non lasciare ai posteri questa sentenza? :D

Vabbe, ecco lo script:

#!/bin/bash
## Descrizione:
## Script per scaricare video da La7
## Reference: http://www.leoiannacone.com/2011/10/script-scaricare-video-da-la7-tv

## Opzioni:
VIDEO_PLAYER="vlc --quiet"
DOWNLOAD_PROCESS="mplayer -quiet -dumpstream -dumpfile"
TMP_DIR_DOWNLOAD="/tmp/"
SLEEP_TIME=5

## Per usare da riga di comando usare:
#U=$1
## Altrimenti da interfaccia grafica:
U=`zenity --entry --text="Inserisci URL del video"`

## Prendo alcune informazioni sul file
ID=`echo $U | cut -d = -f2`
LINK=$(wget --quiet http://www.la7.tv/repliche/content/index.php?contentId=$ID \
       -O -| grep -o 'mp4:/[^<]*' | sed "s/]]>$//" | head -n1 )

## Imposto alcune variabili:
VIDEO_URL="rtmp://yalpvod.alice.cdn.interbusiness.it:1935/vod/"${LINK}
DUMP_FILE="${TMP_DIR_DOWNLOAD}/la7_$ID.mp4"

## Scarico il file
DUMP_PROCESS="${DOWNLOAD_PROCESS} ${DUMP_FILE} ${VIDEO_URL}"
${DUMP_PROCESS} &

## Avvio il player do SLEEP_TIME secondi
sleep $SLEEP_TIME
${VIDEO_PLAYER} ${DUMP_FILE}

## Quando il player viene chiuso, killo il download del video,
## commentare se si vuole scaricare tutto il file
pkill -f -x "${DUMP_PROCESS}"

## Decommentare questa riga se si vuole eliminare il file scaricato
## quando si esce dal player
#rm ${DUMP_FILE}

exit 0

Il codice è super commentato, così potete capirlo e modificarlo sulle vostre esigenze. La base proviene da un articolo di tdinox.

Vanno soddisfatte alcune dipendenze:

sudo apt-get install mplayer vlc procps wget zenity

TODO: riscriverlo in python per renderlo più flessibile.. lo fate voi? :)

Note all’articolo:

  1. della serie: “Ridere per non piangere” ! []

Un piccolo script per Rai.tv

Questo è un piccolo script che permette la visualizzazione di contenuti multimediali del sito rai.tv con il proprio player preferito (il mio è vlc, non so il vostro).

?Scarica rai.tv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/env python
 
from re import findall
from os import system
from urllib import urlopen
import sys
 
player = "vlc"
#player = "gnome-mplayer"
 
def usage():
	info = sys.argv[0].split('/')
	name = info[len(info)-1]
	print("Usage: %s URL_PAGE" % name)
	exit(0)
 
if len(sys.argv) is not 2:
	usage()
 
data = urlopen(sys.argv[1]).read()
url_video = findall('var videoURL = "(.*)";',data)
 
if len(url_video) < 1:
	print("No url video found in the page %s" % sys.argv[1])
	exit(0)
 
print("Launching: %s %s" % (player, url_video[0]))
system("%s %s" % (player, url_video[0]))
exit(0)

Niente di che eh… anzi, so che in rete ci sono già cose simili (in alcuni casi, anche migliori).

Vabbe’, cmq il coso funziona in questo modo:

nome_script   url_rai.tv

Ecco un esempio:

rai.tv    http://www.rai.tv/dl/RaiTV/programmi/media/ContentItem-313d71de-6846-46eb-92fa-7b6c07de5e86.html?p=0

Il "glande" Vauro :D
:D

Modificare la stringa player per impostare il lettore multimediale preferito.

Un piccolo plugin per Sonata

Un semplice plugin che usa pynotify per notificare il cambio di canzone in sonata.

Questa è un anteprima se non si usano le cover degli album:

no-album-cover

Questa immagine invece mostra il plugin quando si possiede la “copertina” dell’album (e il file mp3 ha dei id3-tags decenti):

notify-with-album-prew

Download:
Scaricare il plugin con bzr:

bzr branch lp:~l3on/sonata/sonata-plugins

Successivamente copiare il file notify.py nella cartella dei plugin di sonata.

Prerequisiti:
* Sonata git
* pacchetto python-notify installato

Suggerimento:
Per un migliore risultato, deselezionare: Sonata -> Preferences -> Extra -> Popup notification on song changes

Regards.

Una piccola patch per Gnome-Panel

Avevo già parlato tempo fa di gnome-panel (Ho come l’impressione che…). In quel post cercavo di fare una critica costruttiva al quel “Run application…” (detto anche gnome-panel-run-dialog) che messo a confronto con krunner di Kde fa davvero una magra figura.

In realtà quando scrivevo quelle righe avevo già pensato a quali modifiche effettuare a quel “coso” e le avevo proposte a Gaspa, il quale con grande entusiasmo ha subito risposto positivamente all’invito di capirci qualcosa in quell’ammasso di codice che è gnome-panel.

Dopo pochi giorni di lavoro, prendendo come esempio il coso del volume:

media-keyssiamo riusciti subito a raggiungere degli ottimi risultati.

Con lo stesso criterio del popup del volume, ovvero se il Composite è attivo “fammi gli effetti fighi” altrimenti vai “con la finestra di default” abbiamo portato delle modifiche al codice (utilizzando proprio le stesse funzioni che usa il media-keys). Il risultato è davvero carino, date un occhiata:

gnome-panel-patch-prew

Non è male, dai!

Gaspa è stato poi così gentile (pensate che il grosso del lavoro l’ha fatto proprio lui…) che ha caricato nel suo ppa i pacchetti per Intrepid e Jaunty.

Per avere il pannello in “questa nuova veste”, potrete usufruire direttamente dei suoi repository:

Reinstallate il pacchetto “gnome-panel“:

sudo apt-get install --reinstall gnome-panel

Successivamente sarà possibile (e lo consigliamo) rimuovere il repository dalla propria lista.
Dovrete ovviamente importare con il solito comando la chiave pubblica del repository:

gpg --keyserver keyserver.ubuntu.com --recv-keys B0EBBB9491B7031A
gpg --export B0EBBB9491B7031A --armor | sudo apt-key add -

Se poi siete anche interessati a dare un occhiata alla patch, vi rimando direttamente al bzr di ubuntu-it-dev che utilizzavamo per sincronizzarci:

Test on some patch for gnome-panel.

bzr branch lp:~ubuntu-it-dev/gnome-panel/gp-patches

Il file della patch lo trovate in:

gp-patches/panel_changes/panel-run-dialog.patch

Intanto sia su Launchpad che su Bugzilla di Gnome sono stati aperti dei bug wishlist per segnalare la presenza di questa modifica:

Sono graditi feedback.

Una piccola patch per Kaffeine…

Mi sono da poco avvicinato a questo Lettore Multimediale, a detta di Wikipedia, il più completo per sistemi Unix-like.

Non è che mi trovavo proprio male con il buon vecchio VLC o con mplayer, ma kaffeine mi offre qualcosa in più, mi permette di vedere la TV satellitare tramite la mia schedina PCI DVB.

Ho trovato subito qualche problemino, tipo la ricerca dei canali è impressionante! Kaffeine tira giù dal satellite tutti (ma proprio tutti!) i canali che vengono trasmessi. Mi sono ritrovato quindi con reti che avrei benissimo potuto farne a meno. Con quasi 700 canali, Hotbird (il “nostro” satellite) offre infatti una copertura che include grossomodo tutta l’Europa, con una parte del Nord Africa e del Medio Oriente.

Immaginate ore quanti canali francesi, arabi, spagnoli e chissà cos’altro il mio Kaffeine aveva in Lista… Nono… Ho dovuto sistemare questa cosa; per farlo ho dovuto scrivermi un piccolo programmino in Java che, tramite un parser per la lista dei canali di kaffeine, un altro per la lista dei kanali (inzio a far confusione fra caffeine e kanali???) di Sky, presi sempre da Wikipedia, mi facesse un grep un po’ più intelligente sui canali italiani (almeno quelli trasmessi da Sky), impostando -cosa molto importante- il numero del canale come in un “normale decoder satellitare” e, visto che ci avevo preso gusto, anche un nome, per così dire, “decente” e una category per suddividere successivamente i canali in kaffeine.

Non è stato proprio banale, sul satellite, ad esempio (è un esempio!), non c’è un unico “Discovery Channel”, ma si trovano:

  • 1059 – Discovery Channel (eng)
  • 1060 – Discovery Ch. (ita,fra)
  • 1065 – Discovery Ch-1 (pol)

Quali fra questi scegliere? voi direte: è semplice… vai a vedere se la lingua è “ita”, invece no! ‘sti canali bastardi a volte omettono la lingua di default, che in alcuni casi è proprio “ita”… Il modo migliore di costruire la cosa è stata creare un file lista (quella di Wikipedia) che mi costruisse un oggetto “CanaleSky” con le proprietà:

TAG | NOME | NUMERO_CANALE

Ove TAG corrisponde al nome atteso del canale della lista di Kaffeine, NOME il nome che mi deve poi sostituire nella lista, e NUMERO_CANALE per impostare il num. come (già detto?) se avessi un “normale decoder satellitare”.

Parallelamente, leggo il file channels.dvb di Kaffeine e creo una lista di oggetti “CanaleKaffeine”, con varie proprietà, fra cui NOME e NUM. Per ogni CanaleSky, faccio poi una ricerca confrontando la ChannelSky.TAG (valore atteso) con ChannelKaffeine.NOME, se coincidono faccio le varie sostituzioni e scrivo il nuovo canale su un file. Un qualcosa tipo:

1
2
3
4
5
6
7
8
9
10
11
12
for (Channel c : skyChannels) {
      for (KaffeineChannel k : kaffChannels) 
      {
          if(k.getName().equalsIgnoreCase(c.getTag()))
          {
                    k.setChannelNum(""+c.getNum());
                    k.setCategory(c.getCategory());
                    k.setName(c.getName());
                    writer.println(k.toString());
          }
      }
}
[MODE_INCAZZATO_ON]‘Sto Html è razzista con i tab e i whitespace[/OFF]

Il risultato è una lista di canali italiani “decente”…. anche se alcuni canali ancora non funzionano bene, me li ritrovo in qualche lingua strana… Ma grossomodo quelli principali (testati) sono OK.
Vabbe’ ripulisco i sorgenti e poi ve lo mostro tutto… magari mi faccio un giro per tutti i canali prima e metto le cose apposto.

Ma oh, che ho fatto fin ora? azz, non era proprio il topic di cui volevo discutere. Porc’… Un altro problema che ho incontrato in kaffeine è stato che facendo “zapping” fra i vari canali in modalità OSD (visualizzando le informazioni del canale tipo il titolo del programma in onda) se mi trovavo al canale 303 e volevo passare al successivo (canale 306) kaffeine non faceva nulla, continuava a mostrarmi le info del canale corrente. Boh… ho preso i sorgenti e ho visto che effettivamente il problema era esistente; praticamente la funzione faceva qualcosa del tipo:
nextOSDChannel = currentChannel->num+1;
eh, ma se (come nel mio caso) il canale successivo non è sequenziale a quello corrente?
return null;
Mah dai!…

Ho quindi un po’ modificato la funzione vdbOSDSkip nel file kaffeine/src/input/dvb/dvbpanel.cpp, ora sembra andare perfettamente.

Eccola: dvbOSDSkip.patch

  1. Scaricare e scompattare i sorgenti di Kaffeine dal sito ufficiale
  2. Scaricare il file .patch e inserirlo nella cartella dei sorgenti di Kaffeine
  3. dare il comando: cat dvbOSDSkip.patch | patch -p0
  4. installare i pacchetti necessari: sudo apt-get build-dep kaffeine
  5. successivamente i soliti comandi per la compilazione: ./configure && make && sudo make install

Ho inviato anche una mail agli sviluppatori con la patch, ma ancora non mi rispondono. Boh.