#!/usr/bin/perl

use strict ;
use locale ;
use warnings ;

use File::Find ;
use File::Copy ;
use File::Basename ;

# use $ create_last_subdir.pl  /Vdr_video_dir

my $InDir = $ARGV[0] ;


if ( -l $InDir ) { $InDir = readlink ( $InDir ) } ; # das Video Directory

my %VideoList ;
find ( \&funcfind , "$InDir" )  ; # alle /.*\/\[cut\].*\/.*rec\/index.vdr?/  Dateien finden

foreach my $last_dir ( keys %VideoList ) {
	print  "° $last_dir\n" ;
	my @entrys = <$last_dir/*rec> ;
#	print "@entrys" , "\n" ;
	if ( $#entrys > 0 ) {
#			print "@entrys" , "\n" ;
			foreach my $curr ( @entrys ) {
			#/video/Supernatural_(Supernatural)/03.09-Hexenzauber/2009-03-06.20.50.50.50.rec
			my $dir = dirname($curr) ;
			my $rec = basename($curr) ;
			( my $new_subdir ) = $rec =~ /(\d+-\d+-\d+)\./ ;
			print  "-> $new_subdir\n" ;
			my $newdir = dosh("$dir/$new_subdir/$rec") ;
			system ("mkdir -p $newdir" ) ;
			my $from = dosh("$curr") ;
			system ("cp -v $from/* $newdir/") ;
			}
	}
}

#### Subs

sub funcfind {
return unless ( $File::Find::name =~ /(.*)\/.*rec\/index.vdr?/ ) ;
 $VideoList{$1} = "" ;
}

#################################################################
sub dosh {
my $in = $_[0] ;
$in =~ s/\s+/\ /g ; ## doppelte oder mehrere Leerzeichen auf eins reduzieren
$in =~ s/([\s \( \) \$ \& \§ \" \! \? \[  \] \' \,])/\\$1/g; # viele absonderliche Sonderzeichen für die shell qouten
$in =~ s/\\\\/\\/g ; # wenn ausdruck vorher schon geqotet war, die doppelten backslashes wieder auf einen kompenisieren
return $in ;
}
#################################################################