Skript zum automatischen verschieben und einordnen von TV-Aufnahmen

Status
Für weitere Antworten geschlossen.

iceman5

Benutzer
Mitglied seit
24. Aug 2013
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
Hallo zusammen,

nachdem ich hier im Forum schon x-Mal "passive" Hilfe erhalten habe, ersuch ich nun mal um "aktive" Hilfe. :)

Ich habe vollgendes Anliegen:
Ich bin im Wohnzimmer vor kurzem von einem Windows Media PC (HTPC) wieder auf einen Receiver umgestiegen (Vu+). Mit dem HTPC haben die Aufnahmen und das darauffolgende verschieben und - bei Serien - das Einordnen wunderbar geklappt. Plex aktualisiert dann nachts seine Datenbank und am nächsten Tag sind alle Infos im Plex.
Seit dem Umstieg auf den Linux Receiver haperts da aber etwas...

Aktueller Stand:
Der Receiver hat einige Shares (NFS) von meiner RS812+ als Festplatte gemountet. Unter anderem auch das Share "TV-Aufzeichnungen". Die Aufzeichnung in dieses Share funktioniert. Die Daten werden da drin vom Receiver allerdings im Format " Aufzeichnungsdatum Startzeit - Sender - Serie - SXXEXX - Titel.xxx " abgelegt. Ich möchte nun einerseits den führenden Teil des Dateinamens (Datum, Zeit und Sender) entfernen, und die Files dann in eine Ordnerstruktur im Sinne von NAS/Serien/SerienName/StaffelXX/ automatisch verschieben lassen. Die Aufgabe wollte ich einem Script umhängen. Und damit hab ich als Windows-versäuchter User so meine Problemchen.

Ein Grundkonstrukt des Skripts habe ich schon. Allerdings, wenn dies die erforderlichen Verzeichnisse erstellt, dann wirds "kreativ". Da werden abgesehen von den erwarteten Verzeichnisse noch einige mehr erzeugt - warum auch immer.

Vielleicht könnte ja einer der "ash Spezialisten" mal kurz einen Blick drauf werfen und mir ein paar gute Tips geben, war gestern irgendwie eine lange Nacht und komm mir noch immer vor wie die Kuh vor'n neuen Tor! :)

Hier mal mein Script:

Rich (BBCode):
clear
	pfadAufnahmen=/volume1/public/TV-Test
	pfadSerien=/volume1/public/TV-Test/Serien
#cd $pfadAufnahmen
find "$pfadAufnahmen" -type f -regex ".*/*S[0-9][0-9]E[0-9][0-9]*.*" | while read FILE
	do 
		#Serienname komplett auslesen
		DateiName=${FILE#"./"}
		#Serienname auslesen
		Serie=`echo $FILE | awk -v FS="- " '{print $3}'`
		Serie=${Serie#"./"} 
		
		#Staffel Nummer auslesen
		#Staffel=`echo $FILE | awk -v FS="-" '{print $4}'`  '.*{S}[0-9][0-9]{E}[0-9][0-9].*
		Staffel=`echo $FILE | grep -o '[Ss][0-9][0-9][Ee][0-9][0-9]'`
		echo Staffel ist $Staffel
		StaffelNr=${Staffel:1:2}
		
		#Titel auslesen
		Titel=`echo $FILE | awk -v FS="- " '{print $5}'`
		echo "$DateiName"
		echo "$Serie"
		echo "$Titel"
		echo "$StaffelNr"
		echo +++++++
		
		DestPath="$pfadSerien/$Serie/$Staffel/"
		if [ ! -d "$DestPath" ]; then
			mkdir -p "$DestPath"
			# Control treten hier $-Verzeichnis existiert nicht
		fi
		cd $pfadAufnahmen
		mv "$FILE" "$DestPath"
	done

Für hilfreiche Tips wäre ich echt dankbar, vielleicht gibts da ja doch auch schon was fertiges was ich einfach nicht gefunden habe... :)

Viele Grüße und schon mal Danke im Vorhinein

Günther
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.057
Punkte für Reaktionen
3.872
Punkte
488
Da werden abgesehen von den erwarteten Verzeichnisse noch einige mehr erzeugt - warum auch immer.
Da deine Schleife nur einen mkdir-Befehl enthält können maximal nur so viele Verzeichnisse entstehen, wie der find-Befehl findet.
Also gilt es erstmal den find-Befehl zu isolieren und die Ausgabe zu prüfen, ob da was dabei ist, das nicht dazugehört.
Ist es Absicht, dass find auch das Unterverzeichnis Serien durchsucht? - wohl nicht
 

iceman5

Benutzer
Mitglied seit
24. Aug 2013
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
Hallo & Danke für die Antwort!

Also, stimmt, ich vermute da waren schon einige Verzeichnisse vorhanden und in Kombination mit der Durchsuchung der Unterverzeichnisse wirds wohl zu den dubiosen zusätzlichen Ordnern gekommen sein. --> Also nein, find sollte die Unterverzeichnisse nicht durchsuchen... :)

Aber jetzt ergibt sich noch ein anderes Problem: Mit find finde ich alle Dateien die dem Suchmuster entsprechen (S01E02), mit grep -o kann ich genau diesen Teil herausschreiben. Aber wie erkenne ich, an welcher Stelle dieser Teilstring beginnt? Mir ist nämlich gerade aufgefallen, das das Benennungsformat doch etwas anders ist:

20130823 1658 - 13th Street - Navy CIS_ L_A_ S02E21 Ein letzter Test.ts

D.h. die Infos die ich rausschneiden möchte sind ab dem zweiten Bindestrich (plus ein Leerzeichen) bis zum Teilstring (S01E01), den Teilstring selber, und dann alles danach....

Gäbe es da einen Tipp mit welchem Befehl ich dies hinbekomm? :)

Danke für die Hilfe,

Viele Grüße
Günther
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Anfang: echo `expr "$filename" : '.*-.*-.\(.*\)[Ss][0-9][0-9][Ee][0-9][0-9]'`
Mitte: echo `expr "$filename" : '.*\([Ss][0-9][0-9][Ee][0-9][0-9]\).*'`
Ende: echo `expr "$filename" : '.*[Ss][0-9][0-9][Ee][0-9][0-9]\(.*\)'`
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat