Hallo zusammen,
hier mein kleiner Beitrag an die VDR-Gemeinde
für die, die noch nicht wissen, was "filmesortieren.sh" macht, hier eine Beschreibung:
filmesortieren ist ein Shellscript das in mehreren Verzeichnissen nach Filmen sucht und zu diesen Softlinks in mehreren Sammelverzeichnisse erzeugt.
Diese Sammelverzeichnisse sind "Alle Filme", "Die 30 neusten Filme", "Neu dazugekommen am", "Name beginnt mit", und "30 Zufallsfilme".
Der Sinn des ganzen ist folgender:
Bei mir z.B. stapeln sich mittlerweile die Festplatten die voller Filme sind (meisst umgewandelte VDR-Aufnahmen als divx oder svcd). Ich kann mittlerweile bei >1200 Filmen nicht mehr im Kopf behalten welcher Film wo auf welcher Festplatte ist. Nachdem mein Script durchgelaufen ist habe ich nur noch ein Verzeichnis wo alle Filme drin sind und sogar noch mehr (Die 30 neusten Filme, etc.). Zudem kann ich endlich die Filme hin und her verschieben oder jede Festplatte bis zum Bersten unsortiert "vollschmeissen"
Es kann mit jeglichen Filmdateien umgehen, solange die Filme das Schema "/wo/auch/immer/FILMTITEL.ENDUNG_ERLAUBT" haben.
Zudem kann es auch mit kopierten (S|RS|M)VCD-Verzeichnissen umgehen, bedeutet: "/wo/auch/immer/FILMTITEL/MPEG<1|2>/AVSEQ[ZAHL].ENDUNG_ERLAUBT" wird zu "/ZIELVERZEICHNIS/FILMTITEL.ENDUNG".
Es erstellt beim ersten durchlaufen die Zielverzeichnisse. Beim nächsten durchlaufen räumt es vorher auf, es kann also per Cronjob o.ä. laufen.
Meiner meinung nach ganz besonders Sinnvoll wenn man das Zielverzeichnis in der mplayersources.conf "ganz oben" hat oder wenn man ein NFS oder Sambashare freigibt in dem alle Filme zu finden sein sollen. (Bei Samba (und NFS?) MUSS "unix extensions = no" gesetzt sein damit die Softlinks nicht von der Clientmaschine als Links erkannt werden!)
Es existieren von dieser Art momentan auch noch "seriensortieren" (noch nicht stabil bzw. intelligent genug) und "mp3sortieren" (noch nicht fertig).
Hier ein Beispiel:
Vorher:
/tmp/tesetfilme/Festplatte2/SciFi/Star_Trek/Star Trek 2.avi
/tmp/tesetfilme/Festplatte2/SciFi/Star_Trek/Star Trek 1.avi
/tmp/tesetfilme/Festplatte2/SciFi/Mad Max 2.avi
/tmp/tesetfilme/Festplatte2/Juni07/Stargate.avi
/tmp/tesetfilme/Festplatte2/Juni07/The Rock.mpg
/tmp/tesetfilme/Festplatte1/November06/Mad Max 1.avi
/tmp/tesetfilme/Festplatte1/Comedy/Liebling ich habe die Kinder geschrumpft.avi
/tmp/tesetfilme/Festplatte1/Comedy/Was Frauen wollen.mpg
Nachher:
Alle Filme: (Softlinks zu ALLEN Filmen in allen angegebenen Verzeichnissen)
/tmp/Zielverz/Alle_Filme/Was Frauen wollen.mpg
/tmp/Zielverz/Alle_Filme/Liebling ich habe die Kinder geschrumpft.avi
/tmp/Zielverz/Alle_Filme/Mad Max 1.avi
/tmp/Zielverz/Alle_Filme/The Rock.mpg
/tmp/Zielverz/Alle_Filme/Stargate.avi
/tmp/Zielverz/Alle_Filme/Mad Max 2.avi
/tmp/Zielverz/Alle_Filme/Star Trek 1.avi
/tmp/Zielverz/Alle_Filme/Star Trek 2.avi
Name beginnt mit: (Sortiert in 0-C, D-F, G-L, M-R, S-T, U-Z. Diese Sortierung ergab bei meinen >1200 Filmen ein Gleichgewicht...)
/tmp/Zielverz/Name_beginnt_mit/G-L/Liebling ich habe die Kinder geschrumpft.avi
/tmp/Zielverz/Name_beginnt_mit/M-R/Mad Max 1.avi
/tmp/Zielverz/Name_beginnt_mit/M-R/Mad Max 2.avi
/tmp/Zielverz/Name_beginnt_mit/S-T/Star Trek 1.avi
/tmp/Zielverz/Name_beginnt_mit/S-T/Star Trek 2.avi
/tmp/Zielverz/Name_beginnt_mit/S-T/Stargate.avi
/tmp/Zielverz/Name_beginnt_mit/S-T/The Rock.mpg
/tmp/Zielverz/Name_beginnt_mit/U-Z/Was Frauen wollen.mpg
30 Zufallsfilme (OK, mit 8 Beispielfilmen ist das witzlos :-) Aber der Sinn ist folgender: Manchmal fehlt mir einfach die Inspiration welchen Film ich gucken soll. Hier findet sich meisst unter den 30 Filmen einer, an den ich garnicht mehr gedacht habe aber "schon immer noch gucken wollte")
/tmp/Zielverz/30_Zufallsfilme/1_Mad Max 2.avi
/tmp/Zielverz/30_Zufallsfilme/2_Mad Max 1.avi
/tmp/Zielverz/30_Zufallsfilme/3_Stargate.avi
/tmp/Zielverz/30_Zufallsfilme/4_Star Trek 1.avi
/tmp/Zielverz/30_Zufallsfilme/5_Was Frauen wollen.mpg
...
Die 30 neusten Filme (Auch dies ist mit 8 Beispielfilmen unlustig... Hilft gegen den "Da letztens habe ich einen aufgenommen, den wollte ich unbedingt gucken, welcher war das noch gleich?!"-Gedanken)
/tmp/Zielverz/Die_30_neusten_Filme/Was Frauen wollen.mpg
/tmp/Zielverz/Die_30_neusten_Filme/Liebling ich habe die Kinder geschrumpft.avi
...
Neu dazu gekommen am (Erstellt Unterverzeichnisse im Schema: Jahr-Monat)
/tmp/Zielverz/Neu_dazu_gekommen_am/2006-05/Star Trek 1.avi
/tmp/Zielverz/Neu_dazu_gekommen_am/2006-05/Star Trek 2.avi
/tmp/Zielverz/Neu_dazu_gekommen_am/2006-11/Mad Max 1.avi
/tmp/Zielverz/Neu_dazu_gekommen_am/2007-06/Stargate.avi
/tmp/Zielverz/Neu_dazu_gekommen_am/2007-06/The Rock.mpg
/tmp/Zielverz/Neu_dazu_gekommen_am/2008-01/Liebling ich habe die Kinder geschrumpft.avi
/tmp/Zielverz/Neu_dazu_gekommen_am/2008-09/Mad Max 2.avi
/tmp/Zielverz/Neu_dazu_gekommen_am/2008-09/Was Frauen wollen.mpg
Display More
Konfigurierbar ist:
# Hier alle Verzeichnisse angeben wo Filme zu finden sind. Eingeschlossen von Hochkommata und von Leerzeichen getrennt.
Wo_die_Filme_sind='/media/Festplatte1/Filme /media/Festplatte2/Stuff/Filme/ /media/Filme3/ '
# Hier das Zielverzeichnis für die Softlinks angeben. (Wird erstellt falls nicht vorhanden!)
Filme_Zielverzeichnis=/Storage/Virtual/Filme
# Die Dateiendungen für die Filme, von Hochkommata und Klammern umgeben, von Pipes getrennt. Groß/kleinschreibung wird ignoriert!
Dateiendungen='\.(mpg|avi|dat|mpeg|divx|iso|bin|nrg|mp4)$'
# Die Dateinamen von den Text-Filmlisten. Besonders Sinnvoll wenn diese mit /var/www verlinkt werden, dann kann ein Freund mal eben durchgucken und eine "Bestellung" aufgeben (Kann auch ein absoluter Pfad sein, ansonsten unter Zielverzeichnis)
# Filmliste_Datum: Alle Filme aber chronolgisch sortiert, neuste oben
# Filmliste_Alphabet: Alle Filme alphabetisch sortiert
# Filmarchiv: pro Durchlauf/Datum eine Liste. Hilft gegen "Eine Festplatte hat den Geist aufgegeben, was waren da für Filme drauf?"
Filmliste_Datum=/Storage/Virtual/Filmliste_Datum.txt
Filmliste_Alphabet=/Storage/Virtual/Filmliste_A-Z.txt
Filmarchiv=/Storage/Virtual/Filmarchiv_`date +%F`.txt
# Sollen die Dateiendungen in den Filmlisten enthalten bleiben? (ja|nein)
ListenMitEndung=ja
# Die unter Zielverzeichnis zu erzeugenden Film Verzeichnisse.
NameDesNeueFilmeDirs=Die_30_neusten_Filme
NameDesMonatDirs=Neu_dazu_gekommen_am
NameDesAlphabetischDirs=Name_beginnt_mit
NameDesAlleDirs=Alle_Filme
NameDesRndDirs=30_Zufallsfilme
# Die Anzahl der neusten Filme, die unter NameDesNeueFilmeDirs verlinkt werden sollen.
AnzahlDerNeuenFilme=30
# Die Anzahl der Zufallsfilme unter NameDesRnrDirs
AnzahlDerRndFilme=30
# Tempfile wo die gefunden Filme abgelegt werden (wird wieder gelöscht)
AlleFilmeTemp=/tmp/filme
Beim durchlaufen gibt es das folgende aus:
silence:~# filmesortieren.sh
-> Räume Filme Zielverzeichnis auf...
-> 1216 Filme gefunden...
-> Erstelle Softlinks...
-> 1216 Softlinks erstellt...
-> Kopiere Filme in Monatsverzeichnisse und erzeuge diese vorher...
-> Kopiere neueste Filme...
-> Kopiere Zufallsfilme...
-> Erstelle Verzeichnisse für Anfangsbuchstaben...
-> Kopiere Filme für Anfangsbuchstaben...
-> Erstelle Filmlisten...
-> Fertig mit Filmen :)
Insgesamt 1208GB in 1216 Dateien.
silence:~#
Display More
Wenn jemand Änderungswünsche, neue Ideen oder Bugs gefunden hat kann er sich gerne bei mir melden
Ich bin auf der Suche nach einem neuen sinnvollen und beschreibenden Namen, also falls jemand eine (gute) Idee hat: Her damit!
Zudem würde ich mich freuen wenn jemand auf seiner (VDR-bezogen) Webseite Platz für das Script, eine Beschreibung etc. hätte. Am liebsten hätte ich dort einen eigenen CMS Account damit ich das Script dort pflegen kann. (Bitte per PM)
Kleiner Zusatz:
Ich habe bewusst auf Schleifen verzichtet* und fast ausschließlich Pipe-Konstrukte verwendet, meiner Ansicht nach läuft es so schneller. Also nicht wundern wenn es "komisch" aussieht
*-> Nur bei Zufallsfilmen fällt mir keine Möglichkeit ein ohne eine Schleife zu arbeiten...
Grüße
sphere