Pagina 1 di 2

voglio un chilo di loghi canale

Inviato: 02 giu 2010, 14:32
da johnnyrun
ciao!
Ieri ho messo skinenigmang (ero fermo all'osd classico)... solo che poi mancano un sacco di loghi, in primis quelli del dvbt.
Aggiungerli a mano mi sembrava esagerato e mi son fatto uno scriptino per aiutarmi.
In pratica: prendo il nome del canale, lo cerco in "google immagini", prendo il primo risultato, lo salvo.

Codice: Seleziona tutto

LISTA="/tmp/channels.conf";
DAL=$1;
QUANTI=$2; # dal 100, ne aggiungo 50, quindi fino al 150

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for CHAN in $(cat $LISTA|grep -v ^:|tail -n +$DAL|head -n $QUANTI |awk -F\; '{print $1}'|awk -F: '{print $1}'); do
echo $CHAN;
  OC=$CHAN;
  if [[ -r $OC ]] ; then continue; fi
  CHAN=$(echo $CHAN|sed s/+/%2B/|sed s/\ /+/g);
  echo cerco $CHAN;
#  LOGOURL=$(curl -A "mozilla/1.0" 'http://www.google.it/images?um=1&hl=it&gbv=2&'q=$CHAN'+logo&aq=f&aqi=g10&aql=&oq=&gs_rfai='|lynx -stdin -dump|grep -m1 imgurl|sed s/.*imgurl=//|sed s/\&.*//);
  LOGOURL="http://t2.gstatic.com/images?q=tbn:"$(curl -A "mozilla/1.0" 'http://www.google.it/images?um=1&hl=it&gbv=2&'q=$CHAN'+logo&aq=f&aqi=g10&aql=&oq=&gs_rfai='|lynx -stdin -dump|grep -m1 tbnid|sed s/.*tbnid=//|sed s/:.*//)
  echo $LOGOURL
  if [[ $LOGOURL = "" ]] ; then continue;fi
  wget -t 4 --timeout=5 -O "$OC" $LOGOURL;
  sleep 0.2;
done

Utilizzo:

Codice: Seleziona tutto

prendi_canali.sh <DA_CHE_CANALE> <QUANTICANALI>
esempio:
./prendicanali.sh 100 50
(ovvero fa le richieste per i canali 100-150
Poi per converitre in xpm ho usato convert:

Codice: Seleziona tutto

convert -resize 64x48 --colors 16 RAI1 RAI1.xpm
ovviamente in un loop ;)

E infine ho aggiornato solo i loghi che non erano già presenti.
Ovvio che tira dentro tanta porcheria, ma direi che all'80% il logo è giusto o c'entra abbastanza.

Re: voglio un chilo di loghi canale

Inviato: 02 giu 2010, 14:54
da ragno
Mi sembra un ottimo lavoro.

Tieni presente che se restringi la ricerca di google su lyngsat-logo.com (site:lyngsat-logo.com) sei sicuro di beccare tutta roba pertinente.

Ci sono pagine gia pronte tutte con loghi tipo questa: http://www.lyngsat-logo.com/tvcountry/it_1.html

ciao

Re: voglio un chilo di loghi canale

Inviato: 02 giu 2010, 17:18
da johnnyrun
si hai ragione.. potevo raffinare la ricerca
tipo usando il site:lyngsat-logo.com
oppure cercando per dimensioni (tipo 139x99).

Edit:
sì, ho provato e va meglio. Magari manca qualche canale ma molta meno porcheria.
Diciamo che nei primi 300 miei canali ora quasi tutti hanno il logo e meno del 10% ha un logo sbagliato.
Per essere completamente automatico penso non si possa ottenere di meglio.
Però c'è da prenderli direttamente dal sito, non dalla cache di google come facevo prima.
Ovvero:

Codice: Seleziona tutto

LISTA="/tmp/channels.conf";
DAL=$1;
QUANTI=$2; # dal 100, ne aggiungo 50, quindi fino al 150

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for CHAN in $(cat $LISTA|grep -v ^:|tail -n +$DAL|head -n $QUANTI |awk -F\; '{print $1}'|awk -F: '{print $1}'); do
echo $CHAN;
  OC=$CHAN;
  if [[ -r $OC ]] ; then continue; fi
  CHAN=$(echo $CHAN|sed s/+/%2B/|sed s/\ /+/g);
  echo cerco $CHAN;

  LOGOURL=$(curl -A "mozilla/1.0" 'http://www.google.it/images?hl=it&gbv=2&tbs=isch%3A1&sa=1&q='$CHAN'+site%3Alyngsat-logo.com&aq=f&aqi=&aql=&oq=&gs_rfai='|lynx -stdin -dump|grep -m1 imgurl|sed s/.*imgurl=//|sed s/\&.*//);

  echo $LOGOURL
  wget -t 4 --timeout=5 -O "$OC" $LOGOURL;
  sleep 0.2;
done
~                  
e Poi:

Codice: Seleziona tutto

IFS=$(echo -en "\n\b")
mkdir xpm
for file in *; do CMD="convert -resize 64x48 -colors 16 \"$file\" \"xpm/$file.xpm\"";echo $CMD;bash -c $CMD;done
e integrare con quelli esistenti :D

Re: voglio un chilo di loghi canale

Inviato: 02 giu 2010, 20:48
da davidea
visto che ti sei fatto il mazzo, e te ne siamo grati, te ne saremmo di piu' se metti in risorse il file gia' pronto!!!! :D

Re: voglio un chilo di loghi canale

Inviato: 02 giu 2010, 21:19
da johnnyrun
Bè non è che mi voglio tenere per me il lavoro.
E' che la mia lista potrebbe essere diversa (come nomi) dalla tua.
Infatti vedo che molte icone già le avevo ma con nomi sbagliati..

Cmq posto volentieri quel che ho fatto fin'ora: ovvero i miei primi 300 canali, lista del biondo di un pò di tempo fa + dvb-t
Prendi con le pinze, perchè manca parecchia roba, ma complletamente automatico questo è il risultato migliore
Li trovi in risorse -> altro

Ciao

Re: voglio un chilo di loghi canale

Inviato: 03 giu 2010, 07:50
da ragno
@johnnyrun: ripeto mi sembra un ottimo lavoro.

Se posso permettermi di darti qualche consiglio:

Ad esempio per estrarre tutti i loghi italiani:

1) ciclare con wget le pagine su http://www.lyngsat-logo.com/tvcountry/it_N.html (N da 1 a 15, o oltre basta verificare il 404 se il server non effettua il redirect)
2) estrarre gli url filtrando per /logo/tv/LL (LL= lettere dell'alfabeto da 'aa' a 'zz')
3) scaricare le jpg
4) applicare un controllo sui nomi creando link simbolici per gli equivalenti (ad esempio "RAI 1" -> "Rai Uno")
5) creare dei pacchetti tar di icone (dimensioni diverse per i vari skin di vdr) by johnnyrun e metterli su risorse.

ciao e grazie.

P.S. la cosa vale naturalmente anche per i loghi di altra nazionalita'... :)

Re: voglio un chilo di loghi canale

Inviato: 03 giu 2010, 08:56
da johnnyrun
Sì, potrebbe andare.
Il fatto che il nome dei file jpg su quel sito è assolutamente quasi random.
Come faccio ad associare il mio "Cinema 1" con sky_it_cinema_1.jpg?
Poi, a volte, quell'it slitta in fondo al file.
Direi che c'è troppo sbattimento, ma un paio di passate di wget posso anche farle per provare.
Se dovessi investire altro tempo in sta cosa, cercherei di rendere il plugin un pò più flessibile coi nomi, uppercase, lowercase e compagnia bella.
Così magari diventa quasi compatibile con lyngsat.

Re: voglio un chilo di loghi canale

Inviato: 03 giu 2010, 09:37
da Gringo
Riporto un paio di considerazioni:

1) io utilizzo di solito la risoluzione 80x80 per i loghi sempre con Skinenigmang
2) forse è possibile confrontrare (se non ho capito male) il nome del canale presente nella lista canali (prima colonna) e poi assegnare direttamente il nome del file xpm

Saludos desde Madrid!!!

Re: voglio un chilo di loghi canale

Inviato: 03 giu 2010, 14:03
da johnnyrun
Bene.. prego fornire i loghi 80x80 :D
Cmq nella pausa pranzo ho scritto uno scrippettone per prendere i loghi anche da lyngsat, se mancano prova con google per lyngsat, se mancano anche quelli con google secco e duro.
Un pò di roba la trova.
E posso cambiare lista senza pensarci troppo :D
Quando ho un altro minuto di tempo metto su risorse

Re: voglio un chilo di loghi canale

Inviato: 03 giu 2010, 14:36
da ragno
In effetti un pacco di nuovi loghi 80x80 non sarebbe male, considerando che la Rai ha cambiato da poco i propri...

@johnnyrun: i loghi dovrebbero stare su risorse, se ti mancano faccio un tar di quelli che ho io..(80x80)...sono pero' abbastanza stagionati... :)

ciao

Re: voglio un chilo di loghi canale

Inviato: 03 giu 2010, 18:16
da johnnyrun
Direi che ci siamo.
Facciamo così: qui ci sono i loghi scaricati con lo script senza integrarli con niente..
Risorse -> altro -> logos_AUTO_TEST.tar.gz
Utili per tirare fuori qualcosa a manina.

Poi qui invece metto uno script: settando bene le prime variabili: controlla se il canale è già stato preso, senò lo cerca con i tre metodi.
Non tocca nessuna directory di vdr, se non in lettura. Lavora in /tmp
I nuovi loghi trovati li mette (insieme ai vecchi) in /tmp/logos

Codice: Seleziona tutto

# chili_loghi.sh - VDR -JohnnyRun

# questi file /dir non vengono toccati
CF="/video/channels.conf"
LOGODIR="/video/plugins/skinenigmang/logos"
##... perchè i loghi li trovi poi qui
DESTLOGO="/tmp/logos";
NAZIONE="it";

OPTS=" -resize 80x80 -colors 16";

LYNGCOLL="/tmp/lyng"; ##collezione lyngsat
JPG="/tmp/jpg"
# questi vengono usati solo nel fetch da google
DAL=1;
QUANTI=300; # dal 100, ne aggiungo 50, quindi fino al 150
# fine google

mkdir -p $LOGODIR $DESTLOGO;
if [ -d $LOGODIR ]; then
 cp $LOGODIR/* $DESTLOGO;
fi
#scarico roba da lyng:
if [ -d /tmp/templyng ]; then
 echo temp lyng già presente..skippo il download
else 
  cd /tmp
  mkdir templyng;
  cd templyng;
  for num in $(seq 1 15); do 
    wget -p http://www.lyngsat-logo.com/tvcountry/$NAZIONE"_"$num.html;
  done
fi
mkdir -p /tmp/lyng
cp /tmp/templyng/www.lyngsat-logo.com/logo/tv/*/*jpg $LYNGCOLL;
cd $LYNGCOLL
echo cancello quel cazz di _$NAZIONE .... e l\'estensione .jpg
for file in *_$NAZIONE*; do echo $file;mv $file $(echo $file|sed s/_$NAZIONE//|sed s/.jpg//);done
echo fatto

# Metodo 1: da file già scaricati da lyngsat
mkdir -p $JPG;
if [ -d $LYNGCOLL ] ; then echo collezione presente;
else echo manca collezione lyngsat;
exit;
fi;


IFS=$(echo -en "\n\b")
for chan in $(cat $CF |awk -F \; '{print $1}'|awk -F : '{print $1}'); do 
  if [ -r "$DESTLOGO/$chan.xpm" ] ; then echo skip $chan;continue; fi;
  printf ".";
  rechan[0]=$(echo $chan|tr \[:upper:\] \[:lower:\]|sed s/\ /\_/g|sed s/\+1/plus1/); 
  rechan[1]=$(echo $chan|tr \[:upper:\] \[:lower:\]|sed s/\ /\_/g|sed s/\+1/_plus1/); 
  rechan[2]=$(echo ${rechan[0]}|sed s/\([0-9]*\)/_\1/);
  rechan[3]=$(echo ${rechan[2]}|sed s/^/mediaset_/);
  rechan[4]=$(echo ${rechan[2]}|sed s/_premium//);
  rechan[5]=$(echo ${rechan[2]}|sed s/_-_premium//);

  for num in $(seq 0 5); do 
#echo cerco $LYNGCOLL/${rechan[$num]} ;
    if [ -r $LYNGCOLL/${rechan[$num]} ]; then 
  echo trovato $num $chan ${rechan[$num]}
bash -c "convert $OPTS $LYNGCOLL/\"${rechan[$num]}\" $DESTLOGO/\"$chan\".xpm"
break;
    fi
  done
done

#metodo 2: cerco su google qualcosa che c'entra con lyngsat
for MODE in l g; do
 IFS=$(echo -en "\n\b")
 for CHAN in $(cat $CF|grep -v ^:|tail -n +$DAL|head -n $QUANTI |awk -F\; '{print $1}'|awk -F: '{print $1}'); do
   echo $CHAN;
   OC=$CHAN;
   if [ -r $DESTLOGO/$OC.xpm ] ; then echo skip $OC;continue; fi
   CHAN=$(echo $CHAN|sed s/+/%2B/|sed s/\ /+/g);
   echo cerco $CHAN;
   if [[ $MODE = "l" ]]; then
   echo LYNGSAT  MODE;
   LOGOURL=$(curl -A "mozilla/1.0" 'http://www.google.it/images?hl=it&gbv=2&tbs=isch%3A1&sa=1&q='$CHAN'+site%3Alyngsat-logo.com&aq=f&aqi=&aql=&oq=&gs_rfai='|lynx -stdin -dump|grep -m1 imgurl|sed s/.*imgurl=//|sed s/\&.*//);
     else
   echo GOOGLE  MODE;
   LOGOURL="http://t2.gstatic.com/images?q=tbn:"$(curl -A "mozilla/1.0" 'http://www.google.it/images?um=1&hl=it&gbv=2&'q=$CHAN'+logo&aq=f&aqi=g10&aql=&oq=&gs_rfai='|lynx -stdin -dump|grep -m1 tbnid|sed s/.*tbnid=//|sed s/:.*//)
    fi
   if [[ $LOGOURL = "" ]] ; then continue;fi
   echo $LOGOURL
   wget -t 4 --timeout=5 -O $JPG/"$OC" $LOGOURL;
   bash -c "convert $OPTS $JPG/\"$OC\" \"$DESTLOGO/$OC.xpm\""
   sleep 0.2;
 done
done
echo "trovi i loghi in $DESTLOGO";

Re: voglio un chilo di loghi canale

Inviato: 04 giu 2010, 08:06
da ragno
Eheeheh, i commenti sono la cosa piu' simpatica... ;)

Grazie...

Re: voglio un chilo di loghi canale

Inviato: 07 giu 2010, 17:01
da nino
Ciao a tutti,

in Risorse nuovo pacco loghi .xpm per skinelchi.

Saluti.

Nino

Re: voglio un chilo di loghi canale

Inviato: 19 giu 2010, 23:40
da Gringo
A proposito di loghi, dal forum tedesco:

http://www.htwm.de/~jesch/php/logomaker.php

Re: voglio un chilo di loghi canale

Inviato: 17 ago 2010, 01:07
da mona66
Ciao a tutti e @junnyrun complimenti per lo script...
ho provato ad fare uno partendo dal tuo e sono arrivato ad un punto morto..lo script è questo:

Codice: Seleziona tutto

#!/bin/bash

JPG="logo_dvb";
LOGO="$JPG/logo";

#----------------------------------------

mkdir logo_dvb_r;
cd $JPG;
  for num in $(seq 1 15); do
wget -p http://www.lyngsat-logo.com/tvcountry/it_$num.html;
  done
cp www.lyngsat-logo.com/logo/tv/*/*jpg ~/$JPG;

echo "....verifica ed elimina se esiste ancora quialche traccia nel nomefile di it_ e mediaset_...":
sleep 3
echo "---------------------------------------------------------------------":
#
#for i in * ; do [ -f $i ] && mv -i $i `echo $i | sed -r s/sky_it_//g`; done
for i in * ; do [ -f $i ] && mv -i $i `echo $i | sed -r s/mediaset_//g`; done
for i in * ; do [ -f $i ] && mv -i $i `echo $i | sed -r s/_it//g`; done
for i in * ; do [ -f $i ] && mv -i $i `echo $i | sed -r s/it_//g`; done
for i in * ; do [ -f $i ] && mv -i $i `echo $i | sed 's/\<./\U&/g'`; done
for i in * ; do [ -f $i ] && mv -i $i `echo $i | sed -r s/_/[:space]/g`; done
rm -Rf ~/logo_dvb/www.lyngsat-logo.com
echo "       fatto!        "
e ottengo dei file tipo:

Codice: Seleziona tutto

....
Sky_animal_planet
Eurosport2.Jpg Sky_calcio
Eurosport.Jpg Sky_cinema1
Eurosport_news.Jpg Sky_cinema_classics
Fashion_tv.Jpg Sky_cinema_family
Fox Sky_cinema_hits
Fox_crime Sky_cinema_italia
Fox_life Sky_cinema_mania
Fox_retro Sky_cinema_max
Fuego_tv.Jpg Sky_dea_kids
Fx Sky_meteo24
Gambero_rosso.Jpg Sky_prima_fila
Gbr.Jpg Sky_prima_fila_promo
Giorno_notte_total.Jpg Sky_show
Glamour_plus.Jpg Sky_sport1
Gxt.Jpg Sky_sport2
Gxt_plus1.Jpg Sky_sport24
Hallmark_channel Sky_sport3
Health_beauty_tv.Jpg Sky_sport_active1

il problema come si nota i nomi dei loghi c'è "_" non riesco a cambiarlo con uno spazio anche con il comando

Codice: Seleziona tutto

sed -r s/_/[:space]/g`
qualche suggerimento?
PS:
ho provato anche %20%
Grazie