X-Git-Url: http://git.pippins.net/embedvideo/.git/static/git-logo.png?a=blobdiff_plain;f=remove_empty_tv_dirs;fp=remove_empty_tv_dirs;h=b9b79418c426357c4e04f372af4889a9d3023ee5;hb=aea4af9869a2086c5085afb34a1bd790940c8b7d;hp=0000000000000000000000000000000000000000;hpb=2675e038e4a9ef7bf5cee7ff32a77a6f31799965;p=videoscripts%2F.git diff --git a/remove_empty_tv_dirs b/remove_empty_tv_dirs new file mode 100755 index 0000000..b9b7941 --- /dev/null +++ b/remove_empty_tv_dirs @@ -0,0 +1,79 @@ +#!/usr/bin/perl +# Author: Alan J. Pippin +# Description: Find and remove TV recording directories that don't contain any recordings in them + +use File::Copy; +use File::Basename; +use Getopt::Std; +use File::stat; +use Time::localtime; +use File::Pid; +use Data::Dumper; + +#################################################################################################### +# Configuration parameters +my $tv_src_dir = "/tvpool/tv"; +my $log = "/var/log/organize/remove_empty_tv_dirs.log"; +my $tv_file_ext = "-iregex \".*\.mov\" -o -iregex \".*\.avi\" -o -iregex \".*\.mp4\" -o -iregex \".*\.mpg\" -o -iregex \".*\.ts\" -o -iregex \".*\.mkv\""; +my $find_tv_show_dirs = "find \"$tv_src_dir/\" -maxdepth 1 -cmin +14400 -type d"; +my $find_tv_season_dirs = "find \"$tv_src_dir/\" -maxdepth 2 -mindepth 2 -cmin +14400 -type d"; +my $find_tv_shows = "find \"$tv_src_dir/\" -cmin +14400 $tv_file_ext"; + +#################################################################################################### +# Find empty TV show directories to remove + +my %tv_show_dirs; + +# Find all of our TV season dirs and store them in a hash +foreach $dir (`$find_tv_season_dirs`) { + chomp($dir); + my $season = basename($dir); + my $show = basename(dirname($dir)); + #print "-> Found dir $dir show $show season $season\n"; + $tv_show_dirs{$show}{$season}{has_recordings} = 0; +} +foreach $dir (`$find_tv_show_dirs`) { + chomp($dir); + my $show = basename($dir); + #print "-> Found dir $dir show $show\n"; + $tv_show_dirs{$show}{has_recordings} = 0; +} + +# Find all of our TV show recordings and store them in a hash +foreach $file (`$find_tv_shows`) { + chomp($file); + my $recording = basename($file); + my $season = basename(dirname($file)); + my $show = basename(dirname(dirname($file))); + #print "-> Found show $show season $season and recording $recording\n"; + $tv_show_dirs{$show}{$season}{has_recordings} = 1; + $tv_show_dirs{$show}{has_recordings} = 1; +} + +#print Dumper(\%tv_show_dirs); + +# For each season directory that doesn't have recordings, remove it +foreach $show (keys %tv_show_dirs) { + foreach $season (keys %{$tv_show_dirs{$show}}) { + if($season eq "has_recordings") { next; } + if ($tv_show_dirs{$show}{$season}{has_recordings} == 0) { + print "-> Removing season dir '$show/$season'\n"; + system("rm -rf \"$tv_src_dir/$show/$season/\""); + } + } +} + +# For each show directory that doesn't have any recordings under it, remove it +foreach $show (keys %tv_show_dirs) { + my $has_recordings = 0; + if($show eq ".grab") { next; } + foreach $season (keys %{$tv_show_dirs{$show}}) { + if ($tv_show_dirs{$show}{$season}{has_recordings} == 1) { + $has_recordings = 1; + } + } + if($has_recordings == 0) { + print "-> Removing show dir '$show'\n"; + system("rm -rf \"$tv_src_dir/$show/\""); + } +}