#htmlscript.sh # #htmlscript.sh (Version 0.3.8) wandelt Filmlisten aus Textdateien nach HTML 4.01 Transitional um. #Zusätzlich wird eine kleine Statistik ausgegeben(noch unvollständig), und eine "Bestellfunktion" #hinzugefügt (Browser und Mailer müssen dazu harmonieren). # #Die Quelldateien sollten wie folgt formatiert sein: # #"Filmname" "Codec" Größe "Darsteller" "Sprache" "Abspann" "Informationen" Spielzeit "Auflösung" Bitrate # #Die Zwischenräume sind Tabs. # #Die Anführungszeichen dienen nicht der Verzierung! # #Die ersten zwei Zeilen werden nicht beachtet, um einen Tabellenkopf gefolgt von einer Leerzeile zuzulassen. # #Codec ist der Video-Codec. htmlscript.sh erkennt ihn automatisch, es sollte also keine Probleme mit #"unbekannten" Codecs geben. # #Darsteller/innen werden durch Kommata separiert. # #Sprache kann Deutsch, Englisch oder Deutsch/Englisch sein, bei Abweichungen muss der Quelltext verändert #werden, so denn die Sprache in der Statistik vorkommen soll. # #Abspann gibt an, ob der Abspann komplett oder geschnitten ist. Abspann wird nicht ausgegeben. # #Informationen kann alles mögliche sein (Drehbuch von X; Twopass codiert usw.). # #Größe (in MB), Spielzeit (in Minuten) und Bitrate (in KByte/s) sind ohne Einheiten anzugeben. # #Eine Beispielzeile könnte so aussehen: #"1984" "DivX 5.02" 681 "John Hurt, Richard Burton, Suzanna Hamilton, Cyril Cusack" "Deutsch" "Geschnitten" "Two Pass codiert; Gecaptured; Buch: George Orwell" 103 "352 x 240" 113 # #Werte in der Statistik werden teilweise mit der 5121-Methode gerundet ;-) # #Dieses Skript steht unter der GPL. # #Fragen, Anregungen, gefundene Fehler oder Verbesserungen werden gerne per Mail entgegen genommen. # #Fabian Keil (fk@fabiankeil.de) #http://www.fabiankeil.de version="0.3.8"; text_pfad="/cygdrive/g/filme.txt" #Pfad der Textdatei, ziel_pfad="/cygdrive/g/Filme.html" #Pfad der Zieldatei und mailadresse='fk@fabiankeil.de'; #Mailadresse anpassen. printf "htmlscript ($version)\n" printf "Fabian Keil (fk@fabiankeil.de)\n" printf "http://www.fabiankeil.de\n" awk -v mailadresse=$mailadresse -v version=$version ' BEGIN{ FS="\t"; printf("\n"); printf("\n"); printf(" \n"); printf(" Filmliste\n"); printf(" \n"); printf(" \n",version); printf(" \n"); printf(" \n"); printf(" \n"); printf("

Filmliste

\n"); printf("

Statistik

"); printf("
\n",mailadresse); printf(" \n"); } (NF!=10 || $1==" "){ printf "\nZeile %i entspricht nicht den Bedingungen und wurde übersprungen.\n",FNR | "cat 1>&2"; } (FNR>2 && NF==10){ i++; #printf "\nBearbeite Filmnummer %i",i | "cat 1>&2"; #Entities bei Bedarf anpassen sub(/&/,"\\&"); while(sub(/é/,"\\é")); while(sub(/Ä/,"\\Ä")); while(sub(/ä/,"\\ä")); while(sub(/Ö/,"\\Ö")); while(sub(/ö/,"\\ö")); while(sub(/Ü/,"\\Ü")); while(sub(/ü/,"\\ü")); while(sub(/ß/,"\\ß")); while(sub(/“/,"\\"")); while(sub(/„/,"\\"")); while(sub(/–/,"\\–")); split($1,filmname,"\""); if(filmname[2]==0){ filmname[2]=filmname[1]; } split($2,codec,"\""); groesse=$3; split($4,darsteller,"\"");#split($4,darsteller,"[\",]"); split($5,sprache,"\""); split($6,abspann,"\""); split($7,info,"\""); spielzeit=$8; split($9,aufloesung,"\""); bitrate=$10; bitratequer+=bitrate; groessequer+=groesse; spielzeitquer+=spielzeit; zaehler[codec[2]]+=1; if(sprache[2]=="Deutsch") deutsch++; else if(sprache[2]=="Englisch") englisch++; else #Achtung! Jeder Film, der nicht deutsch- oder englischsprachig ist wird als deutsch- und englischsprachig gezählt. deutsch_und_englisch++; #printf("\n"); printf(" \n",filmname[2]); printf(" \n",filmname[2]); printf(" \n",i); printf(" \n",codec[2]); printf(" \n",groesse); printf(" \n",darsteller[2]); printf(" \n",sprache[2]); printf(" \n",spielzeit); printf(" \n",aufloesung[2]); printf(" \n",bitrate); printf(" \n",info[2]); split(darsteller[2],schauspieler,", "); for (k in schauspieler){ darstelleranzahl[schauspieler[k]]++; #printf "%s ",schauspieler[k] | "cat 1>&2"; } #printf "\n"; } END{ printf("
Filmname:%s
Anfordern
Filmnummer:%i
Codec:%s
Größe:%i MB
Darsteller:%s
Sprache:%s
Spielzeit:%i Min.
Auflösung%s
Bitrate%i KByte/Sek.
Weitere Informationen%s
\n"); printf(" \n"); printf("
\n"); printf("

Statistik

\n"); printf(" \n"); printf(" \n",i); printf(" \n",bitratequer/i); printf(" \n",groessequer/i); printf(" \n",groessequer/1024); printf(" \n",spielzeitquer/i); printf(" \n",spielzeitquer/1440) p=100/i*deutsch; printf(" \n",deutsch,p); p=100/i*englisch; printf(" \n",englisch,p); p=100/i*deutsch_und_englisch; printf(" \n",deutsch_und_englisch,p); #Codec-Statistik for (c in zaehler){ j++; while(length(zaehler[c] " ")<4){ zaehler[c] = " " zaehler[c]; } codec_und_anzahl[j]=zaehler[c] "," c; z+=zaehler[c]; } asort(codec_und_anzahl); split(codec_und_anzahl[j],temp,","); verzerrer=100/(100/i*int(temp[1])); #printf "\nVerzerrer = %f",verzerrer | "cat 1>&2"; while (j!=0){ split(codec_und_anzahl[j],temp,","); p=100/i*int(temp[1]); printf(" \n",temp[2],p*verzerrer,temp[1],p); j--; } #Darsteller-Statistik delete darstelleranzahl["\""]; delete darstelleranzahl["-"]; delete darstelleranzahl[" "]; delete darstelleranzahl[""]; j=0; for (c in darstelleranzahl){ verschiedeneschauspieler++; j++; while(length(darstelleranzahl[c] " ")<20){ darstelleranzahl[c] = " " darstelleranzahl[c]; } darsteller_und_anzahl[j]=darstelleranzahl[c] "," c; } printf(" \n",verschiedeneschauspieler); asort(darsteller_und_anzahl); split(darsteller_und_anzahl[j],temp,","); verzerrer=100/(100/i*int(temp[1])); while (j!=0){ split(darsteller_und_anzahl[j],temp,","); p=100/i*int(temp[1]); if (temp[1]>1){#Wenn auch jeder Schauspieler, der nur einmal vorkommt, aufgelistet wird, wird die Datei sehr groß! printf(" \n",temp[2],p*verzerrer,temp[1],p); #printf "%s\n",temp[2] | "unix2dos|cat >darsteller.txt"; Zum füttern von Myrnas Fernsehdienst auskommentieren. j--; } else { break; } } #printf "\nIndex = \"%s\"",temp[2] | "cat 1>&2"; printf("
Anzahl der Filme: %i
Durchschnittliche Bitrate:%.2f KByte/Sek
Durchschnittliche Größe:%.2f MB
Größe aller Filme zusammen:%.2f GB
Durchschnittliche Spielzeit:%.2f Minuten
Gesamtspielzeit:%.2f Tage
Nur deutschsprachige Filme:%i%.2f%%
Nur englischsprachige Filme:%i%.2f%%
Deutsch- und englischsprachige Filme:%i%.2f%%
%s codierte Filme:
%i%.2f%%
Anzahl verschiedener Schauspieler:%i
Filme mit %s:
%i%.2f%%
\n"); printf("

Erstellt: %s

\n",strftime("%d.%m.%Y",systime())); printf(" \n") } ' $text_pfad | unix2dos > $ziel_pfad