]>
git.rmz.io Git - dotfiles.git/blob - bin/renameseries.cron
13 use File
::Path
qw(make_path remove_tree);
14 #use File::Glob ':glob';
22 getopts
('nh') or $opt_h = 1; # sets opt_n to true if -n is given
23 #+or dies when options are unknown
26 print "Usage: renameseries [OPTION]... SOURCE DESTINATION\n";
27 print "Rename all files in SOURCE to the name downloaded from epguides.com then copy ".
28 "the files to DESTINATION.\n";
30 print " -n will only print what would happen, doesn't change anything\n";
31 print " -h shows this help message\n";
37 my $url = 'http://epguides.com';
46 opendir(my $dh, $dir) or die "Couldn't open dir '$dir': $!";
47 my @files = readdir $dh;
50 foreach my $file (@files) {
51 next if $file =~ /^\./;
52 my $path = "$dir/$file";
56 parse_file
($dir,$file);
63 my $path = $_[0]."/".$_[1];
66 if ($file =~ /(?<name>.*?)\.S?0*(?<season>\d+)(E|x)0*(?<episode>\d+).*\.(?<extension>.*)/i) {
68 print "Parsing '$file\n'";
70 my $season = $+{season
};
71 my $episode = length($+{episode
}) == 1 ? '0' . $+{episode
} : $+{episode
};
72 my $pattern = '(0?'.$+{season
}.')-([0 ]?'.$+{episode
}.').*?>(.*?) *<\/a>';
73 my $extension = $+{extension
} ? lc($+{extension
}) : "avi";
74 (my $name = $+{name
}) =~ s/\./ /g;
76 (my $series_name = $name) =~ s/^The //i;
77 $series_name =~ s/ //g;
80 $series_name =~ s/(DoctorWho)(2005)/$1_$2/;
81 $series_name =~ s/(Doctor.Who).(2005)/$1_$2/;
82 $name =~ s/(Doctor Who) (2005)/$1 ($2)/;
84 my $tmp = '/tmp/renameseries';
85 if ($opt_n) { print "Downloading '$url/$series_name'\n"; }
86 getstore
("$url/$series_name", $tmp);
87 open FILE
, $tmp or die "Could not download '$series_name' from '$url'";
92 foreach my $line (@lines) {
93 if ($line =~ /$pattern/) {
94 my $new_file_name = "$1x$episode $3.$extension";
95 if ($opt_n) { print "New Filename '$new_file_name'\n"; }
96 decode_entities
($new_file_name);
98 my $new_path = "$dst/$name/Season $1";
99 make_path
("$new_path");
100 $new_path = "$new_path/$new_file_name";
104 print "File exists '$new_path'\n";
105 print "Unlink '$file'\n";
107 unlink("$path") or die "Couldn't unlink '$_[0]': $!";
111 copy
("$path", "$new_path");
113 print "Copied \'$file\' \n=> \'$new_path\'\n";