myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Linux & BSD
Seite neu laden

pyload - automatische Sortierung von Serien mit Bash

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 19.04.13, 01:05   #1
thyriel
Banned by himself
 
Benutzerbild von thyriel
 
Registriert seit: May 2009
Beiträge: 2.941
Bedankt: 2.103
thyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punkte
Standard pyload - automatische Sortierung von Serien mit Bash

Nachdem ich nen Haufen Serien runterlade und sich da im Laufe der Zeit dann im download Ordner von pyload eine ganze Menge ansammelt dacht ich mir das müsste sich doch mit einem netten bash S***** automatisieren lassen die richtig in einen Serien Ordner einzusortieren


Da das vielleicht auch der eine oder andere gerne hätte post ich das mal hier zur freien Verwendung.

Folgende Einstellungen müssen im pyload vorgenommen werden damit das funktionieren kann:
General -> "Create Folder for each package" auf "an"
Permissions -> es muss sichergestellt werden das der user der das S***** laufen lässt auch Schreibzugriff auf alle Ordner / Dateien hat die pyload runterlädt / erstellt.
Sieht bei mir zb folgendermaßen aus:

Zusatzprogramme -> ExtractArchive -> "Extract archives in archvies" auf "an"
Zusatzprogramme -> ExtractArchive -> "Create subfolder for each package" auf "an"
Zusatzprogramme -> ExtractArchive -> "Extract files to" Pfad merken um das S***** anzupassen
Zusatzprogramme -> ExtractArchive -> "Delete Archives when done" auf "an" (braucht ja keiner mehr nach dem extracten)
Erklärung des S*****s:


Beim hinzufügen der Dateien im Downloader muss sichergestellt sein das diese richtig benannt sind zb "Walking Dead S03E02".
Ladet man sich DLCs von share-links ist das eh normalerweise schon der Fall.

Nun das S*****:
Code:
#!/bin/bash

#Variablen für die Suche setzen
#-> brauchen nicht für jede Serie angepasst zu werden
search="*.avi"  #Dateityp definieren
sourcedir="/mnt/int/pyload/" #absoluter Dateipfad wo die Dateien aktuellen liegen
globaldestinationdir="/mnt/int/serien/" #Zielpfad (für alle Serien gleich)
usergroup="users"  #Benutzergruppe für neue Verzeichnisse
umaskused="007"  #umask für neue Verzeichnisse
i=-1  #Counter startwert -1

############################################################################
#Serien definieren
#für jede weitere Serie alle drei Zeilen kopieren und 
#innerhalb des Blocks anhängen.
#die let i=i+1 Zeile unverändert lassen

let i=i+1 #array counter um 1 raufsetzen
#relativer Zielpfad (wird an $globaldestinationdir angehängt)
destinationdir[$i]="The Walking Dead/S03/"
#Name der Serie (muss genau so ein Teil des Verzeichnis Namens sein)
name[$i]="Walking Dead S03"

let i=i+1 #array counter um 1 raufsetzen
#relativer Zielpfad (wird an $globaldestinationdir angehängt)
destinationdir[$i]="Noch so ne Serie/S01/"
#Name der Serie (muss genau so ein Teil des Verzeichnis Namens sein)
name[$i]="Noch so ne Serie S01"

############################################################################


#PART 1
#Löschen vorhandener Sample Files
echo "PART 1 -> sample Files löschen"
for x in $(seq 0 $i)
do
   #Ordner finden die den Namen der Serie enthalten
   #danach in jedem gefundenen Ordner nach sample Files suchen
   find "${sourcedir}" -name "*${name[$x]}*" -exec find "{}" -name "*sample*" \; | while read FILE; do
      #Samples löschen
      rm -v "${FILE}"
   done
done

#PART 2
#Dateien sortieren und verschieben
echo "PART 2 -> Files verschieben"
for x in $(seq 0 $i)
do
   #Zielverzeichnis erstellen (falls es nicht existiert) und Dateirechte anpassen
   ( umask ${umaskused} ; mkdir -p -v "${globaldestinationdir}${destinationdir[$x]}" ; )
   chown -R -v :${usergroup} "${globaldestinationdir}${destinationdir[$x]%%/*}"
   #Ordner finden die den Namen der Serie enthalten
   #danach in jedem gefundenen Ordner nach Dateien suchen die dem $search Kriterium entsprechen
   find "${sourcedir}" -name "*${name[$x]}*" -exec find "{}" -name "${search}" \; | while read FILE; do
      #jede gefundene Datei ins entsprechende Zielverzeichnis verschieben
      mv -v "${FILE}" "${globaldestinationdir}${destinationdir[$x]}"
   done
done

#PART 3
echo "PART 3 -> Dirs löschen"
#Verzeichnisse mit allen restlichen Inhalten löschen (zb unterarchive)
for x in $(seq 0 $i)
do
   find "${sourcedir}" -name "*${name[$x]}*" -exec rm -R -v "{}" \;
done
exit
Als erstes muss man nun das S***** an seine eigene Ordnerstruktur anpassen:
- sourcedir: man trägt das ein was in pyload im ExtractArchive eingetragen ist (mit Slash / am schluss)
- globaldestinationdir: das Zielverzeichnis eintragen in dem alle Serien abgelagert werden
- usergroup: Die Gruppe die für alle neu erstellten Verzeichnisse eingestellt wird
- die umask für neu erstellte Verzeichnisse (007 = besitzer und gruppe lesen/schreiben, andere gar nichts)
- im Block mit den vielen # kopiert man für jede Serie die man eingeordnet haben möchte die 3 (ohne Kommentarzeilen gezählt) Zeilen, beginnend mit "let i=i+1)
- destinationdir ist dann ein relativer Pfad. Er kann mehrere Subordner enthallten um zb Staffeln zu trennen.
- name ist ein Teil des jetzigen Ordnernamens. Am besten man trägt hier sowas wie "Walking Dead S03" ein. Funktioniert natürlich auch ohne das S03, aber wenn es zu dem Fall kommt das man mal mehrere Folgen verschiedener Staffeln runtergeladen hat kann das S***** diese dann nicht mehr unterscheiden

P.S: Verwendung auf eigene Gefahr
Ich rate dringend davon ab das s***** als root / sudo laufen zu lassen
Außerdem ist keinerlei Fehlerroutine enthallten, kommt es also zu einem Fehler (weil zb am Ziel kein Platz mehr ist oder Dateirechte falsch gesetzt sind) werden die Quelldateien trotzdem gelöscht
Das S***** wurde auch nur unter Arch Linux getestet, keine Garantie das es 1:1 unter Ubuntu/Debian läuft

P.P.S: Folgt soon(tm)

Wahrscheinlich pass ich das S***** demnächst noch so an das man es auch mit Parametern aufrufen kann zb:
Code:
s*****.sh "Startverzeichnis" "Zielverzeichnis" [optional "Dateityp"]
damit man damit auch ohne S*****passung sortieren kann, bzw. sich auch Filme sortieren lassen
__________________
Lebt wohl war mir eine Freude über viele Jahre mit euch, zumindest mit jenen die mich nicht des trollens bezichtigten...
thyriel ist offline   Mit Zitat antworten
Ungelesen 15.07.13, 22:09   #2
spartan-b292
Echter Freak
 
Benutzerbild von spartan-b292
 
Registriert seit: Mar 2010
Ort: /home/spartan-b292
Beiträge: 2.866
Bedankt: 1.700
spartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punkte
Standard

Super, dumm nur dass nicht jeder XBMC verwendet.
__________________
"They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety"
spartan-b292 ist offline   Mit Zitat antworten
Ungelesen 16.07.13, 07:34   #3
thyriel
Banned by himself
 
Benutzerbild von thyriel
 
Registriert seit: May 2009
Beiträge: 2.941
Bedankt: 2.103
thyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punktethyriel leckt gerne myGully Deckel in der Kanalisation! | 2153690 Respekt Punkte
Standard

Zitat:
Zitat von spartan-b292 Beitrag anzeigen
Super, dumm nur dass nicht jeder XBMC verwendet.
Vor allem läuft das sicher nicht auf einem mini Server der nichtmal X installiert hat
__________________
Lebt wohl war mir eine Freude über viele Jahre mit euch, zumindest mit jenen die mich nicht des trollens bezichtigten...
thyriel ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 Uhr.


Sitemap

().