#!/usr/bin/perl -w
# sorta, alle Dateien aus allen Incoming-Foldern wegsortieren ...
# S O R T A 0.20
my $incoming = "/home/sco/P2P/INCOMING";
my $emule_in = "/home/sco/P2P/P2P/emule/Incoming";
my $winmx_in = "/home/sco/P2P/P2P/Incoming WinMX";
my $bittorrent_in = "/home/sco/P2P/P2P/BitTorrent++/incoming";
my $gift_in = "/home/sco/P2P/P2P/giFT/completed";
my $zeit = localtime;
open LOG, ">>/var/log/sorta.log"; select LOG;
# es geht los mit Emule ... mit globbing ...
chdir "$emule_in" or die "\n!:-( chdir nach $emule_in nicht moeglich: $!";
my @emule_dateien = <*>;
foreach (@emule_dateien) {
$dname=$_;
&dateityp;
&dateitest;
&logfile;
&verschieben;
}
# WinMX
chdir "$winmx_in" or die "\n:-( !chdir nach $winmx_in nicht moeglich: $!";
my @winmx_dateien = <*>;
foreach (@winmx_dateien) {
next if $_ =~ /^__INCOMPLETE___/; # nicht fertige Downloads uebergehen
$dname=$_;
&dateityp;
&dateitest;
&logfile;
&verschieben;
}
# Bittorrent
chdir "$bittorrent_in" or die "\n!:-( !chdir nach $bittorrent_in nicht moeglich: $!";
my @bittorrent_dateien = <*>;
foreach (@bittorrent_dateien) {
$dname=$_;
&dateityp;
&dateitest;
&logfile;
&verschieben;
}
# giFT (openFT und Fasttrack)
chdir "$gift_in" or die "\n!:-( !chdir nach $gift_in nicht moeglich: $!";
my @gift_dateien = <*>;
foreach (@gift_dateien) {
$dname=$_;
&dateityp;
&dateitest;
&logfile;
&verschieben;
}
close LOG;
# SUBROUTINE fuer den DATEITYP
sub dateityp {
$size = -s $dname;
if (-d $dname) {$typordner = "_ORDNER"; return $dtyp = "Ordner"}
if ($dname =~ /.*\.(mp3|wav|mpc|ogg|mid|pls|wma)$/i)
{$typordner="_AUDIO"; return $dtyp="Audio"}
if ($dname =~ /.*\.(rar|zip|arj|lha|ace|bzip|tar|jar|tz)$/i)
{$typordner="_ARCHIVE und EXEs"; return $dtyp="Archiv"}
if ($dname =~ /.*\.(avi|mpg|mpeg|mov|divx|xvid|ra|ram|rm|wmf|wmv)$/i)
{$typordner="_VIDEO"; return $dtyp="Video"}
if ($dname =~ /.*\.(iso|bin|cue|nrg|mdf)$/i)
{$typordner="_ISOs"; return $dtyp="ISO-Image"}
if ($dname =~ /.*\.(doc|pdf|nfo|txt|rtf|html|xml)$/i)
{$typordner="_DOCS"; return $dtyp="Dokument"}
if ($dname =~ /.*\.(exe|com)$/i)
{$typordner="_ARCHIVE und EXEs"; return $dtyp="Executable"}
if ($dname =~ /.*\.(gif|jpeg|jpg|bmp|png|tiff|psd)$/i)
{$typordner="."; return $dtyp="Grafik"}
$typordner = ".";
$dtyp="unbekannt";
}
# SUBROUTINE fuer den DATEITEST
sub dateitest {
$ok="1";
if (! -w $dname) { chmod 0777, $dname or print "\n:-( !Konnte Dateirechte nicht aendern: $!"; } # aendern falls Datei schreibgeschuetzt
if ( -s "$incoming/$typordner/$dname") {
# nachsehen ob Datei schon vorhanden
print "\n:-/ !Datei $dname ist bereits vorhanden und wird nicht verschoben.($zeit)";$ok="0";
}
}
sub logfile {
if ($ok=="1") { print"\n$dtyp: $dname ($size bytes) Zeit:$zeit";}
}
sub verschieben {
if ($ok=="1") { rename "$dname", "$incoming/$typordner/$dname" or print ":-( $!"; }
}