Jondalar: Kann man das Python-Script aus dem Plexforum ohne Code-Änderungen auch als TV-Serien-Scanner nutzen (also nicht als Movie-Scanner)? Ich würde dann meine VDR-Aufnahmen nach Spielfilme und Serien getrennt einbinden wollen.
Momentan habe ich es also Movie-Scanner hinzugefügt und bin nicht ganz zufrieden damit, wie die Serien angezeigt werden, welche in meinem Aufnahmeverzeichnis unter "Serien" liegen.
Gruß
hepi
Hallo,
Ich habe mit dem Script ebenfalls erfolgreich meine VDR Filme in den Plex Server integriert. Bei Serien ging es mir wie dir. Die Lösung war nicht ausreichend.
Nachdem ich mir überlegt hatte selber etwas über Python zu lernen und ggf. das Script auf Serien anzupassen bin ich aber auf eine etwas andere Idee gekommen. Der PMS braucht für Serien eine bestimmte Struktur.
/Heroes
/Season 1
Heroes - s01e01.avi
Heroes - s01e02.avi
Heroes - s01e03.mp4
/Season 2
Heroes - s02e01.avi
Heroes - s02e02.mkv
Heroes - s02e03.m4v
Da ich meine Serien in einer ähnlichen Struktur habe
/Serien/Abenteuer/Black_Sails/Season_01/01~03_Unheilige_Allianzen/2014-04-27.20.15.71-0.rec/00001.ts
habe ich ein Script "gebastelt" das mir aus der Verzeichnisstruktur einen Symlink auf das ts File generiert. Da in dem Pfad alle Informationen sind die auch Plex benötigt habe ich mit awk einen ein nicht gerade schönes aber funktionierendes Script erstellt das mir in diesem Beispiel folgenden Symlink erstellt
S01E03_Unheilige_Allianzen.ts -> 01~03_Unheilige_Allianzen/2014-04-27.20.15.71-0.rec/00001.ts
Durch diesen Symlink halte ich nun die von Plex vorgegeben Struktur wieder ein:
/Black_Sails/Season_01/S01E03_Unheilige_Allianzen.ts
und kann den Standard Scanner von Plex inkl. TVDB Agent benutzen.
Ich habe ein 08/15 Script erstellt dass als cronjob täglich läuft.
#!/bin/shPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin#Use this script with care it maybe delete all your symbolic links or create a hack of symbolic links.inputFile=/tmp/videofilesseriesFolder=/srv/vdr/video.00/Serien/awkScript=/usr/local/bin/createSeriesSyms.awk# Delete all symbolic links - use only to reset the the original VDR structure# find /srv/vdr/video.00/Serien/ -type l -exec rm -rf {} \;# Delete all symbolic dead links in the series folderecho "CSS: Deleteing old symbolic links"find -L $seriesFolder -type l -exec rm -rf {} \;# find all 0001.ts files in the series folder and put it into die inputFileecho "CSS: Searching for videofiles"find $seriesFolder -name 00001.ts > $inputFile# Call the awk File to create the symbolic linksecho "CSS: Starting the AWK Script"awk -f $awkScript $inputFile
Im awk File werden dann die symlinks gebastelt. Ich sage hier bewusst gebastelt weil ich wenig Ahnung von awk habe. Jemand der sich damit auskennt darf das gerne verbessern ;).
#! /usr/bin/awk -f# set the file separator for my series folder.# Example: /srv/vdr/video.00/Serien/Crime/Banshee:_Small_Town._Big_Secrets./Season_02/02~05_Die_Wahrheit_über_Einhörner/2014-05-15.22.05.38-0.rec/00001.ts# so the separator here ist the / for the normal file structure and the ~ for my season and episode# If you want to use this script you have to specify your own separators.BEGIN{FS="[/|~]*";}{ #print FILENAME; #f=FILENAME;}{ # Because the result of the find command does not have any escaped chars I use gsub to escape special characters. # There maybe some characters more. They can be added by a another gsub command gsub(/\:/,"\:"); gsub(/\(/,"\("); gsub(/\)/,"\)"); gsub(/\'/,"\'"); #This combination will only work for MY structure of folders. If you want to use this you have to determine your own structure. #The example from the top will look like: #$0 /srv/vdr/video.00/Serien/Crime/Banshee:_Small_Town._Big_Secrets./Season_02/02~05_Die_Wahrheit_über_Einhörner/2014-05-15.22.05.38-0.r$ #$1 #$2 srv #$3 vdr #$4 video.00 #$5 Serien #$6 Crime #$7 Banshee:_Small_Town._Big_Secrets. #$8 Season_02 #$9 02 #$10 05_Die_Wahrheit_über_Einhörner #$11 2014-05-15.22.05.38-0.rec #$12 00001.ts #This results in: ln -s 02~05_Die_Wahrheit_über_Einhörner/2014-05-15.22.05.38-0.rec/00001.ts /srv/vdr/video.00/Serien/Crime/Banshee\:_Small_Town._Bi$ #For Testing you can use the print statement #print("ln -s " $9"~"$10"/"$11"/"$12" ""/"$2"/"$3"/"$4"/"$5"/"$6"/"$7"/"$8"/""S"$9"E"$10".ts"); system("ln -s " $9"~"$10"/"$11"/"$12" ""/"$2"/"$3"/"$4"/"$5"/"$6"/"$7"/"$8"/""S"$9"E"$10".ts"); # With this you can get your own variables #for (i=0;i<15;i++) #{ #print ("Field "i" "$i); #}}
Natürlich darf es dafür nur eine 00001.ts geben und keine 00002.ts usw. Das war bei mir seit der Umstellung auf mein NAS der Fall. Leider bei älternen Aufnahmen nicht. Deswegen auch hier noch ein auf die schnelle gebasteltes Script das die ts files zu einem zusammensetzt.
#!/bin/bashfind "/srv/vdr/video.00/" -path "/srv/vdr/video.00/Serien/*" -prune -o -name 00002.ts -exec dirname {} \; | sort -u > tsfilesPFADE=$(cat tsfiles)for f in $PFADEdo echo $f # add every 0000x.ts file to the 00001.ts file cat $f/00002.ts $f/00003.ts $f/00004.ts $f/00005.ts >> $f/00001.ts rm $f/00002.ts $f/00003.ts $f/00004.ts $f/00005.tsdone
Vielleicht hilft es ja jemandem weiter oder noch besser jemand mit mehr Zeit und Ahnung macht ein schönes Script daraus. Funktionieren tut das ganze auf alle Fälle seit ca. einer Woche bei mir ohne Probleme. Natürlich aber nicht mit den Informationen aus der VDR Info sondern denen aus der TVDB. Was mich nicht wirklich stört. Endlich habe ich alle meine Aufnahmen auf einem SErver und kann mit Plexbmc oder plex auf meine Tablett tun und machen was ich möchte egal wo ich bin.
Alles in allem denke ich eine tragbare Lösung für das Problem mit den Serien und sicher auch auf Filme anwendbar falls man auf die VDR Infos verzichten kann. Die Scripts dürfen natürlich gerne von jemand der es besser kann als ich optimiert werden ;).
Ciao
Wyse