summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2016-10-16 13:43:37 +0100
committerdakkar <dakkar@thenautilus.net>2016-10-16 13:43:37 +0100
commite8b13a9e67a231556bae2cd718d5de302cfbe69b (patch)
tree8282ce98287f6639f980f40f1beef836a0d422f0
parentignore list (diff)
downloadanidb-renamer-e8b13a9e67a231556bae2cd718d5de302cfbe69b.tar.gz
anidb-renamer-e8b13a9e67a231556bae2cd718d5de302cfbe69b.tar.bz2
anidb-renamer-e8b13a9e67a231556bae2cd718d5de302cfbe69b.zip
rough skeleton of the script
-rw-r--r--anidb-renamer51
1 files changed, 51 insertions, 0 deletions
diff --git a/anidb-renamer b/anidb-renamer
new file mode 100644
index 0000000..e9a3451
--- /dev/null
+++ b/anidb-renamer
@@ -0,0 +1,51 @@
+#!/usr/bin/env perl
+use 5.024;
+use strict;
+use warnings;
+use Log::Any::Adapter;
+use Log::Any::Adapter::Util;
+use Log::Any '$log';
+use Path::Tiny;
+use Getopt::Long::Descriptive;
+
+my ($opt, $usage) = describe_options(
+ '%c %o <directories>',
+ [ 'database|d=s', 'the database to cache things into',
+ { default => 'aindb-renamer.db' } ],
+ [],
+ [ 'verbose|v=+', 'print extra stuff' ],
+ [ 'help', 'print usage message and exit',
+ { shortcircuit => 1 } ],
+ {
+ getopt_conf => [qw( posix_default bundling no_ignore_case )],
+ show_defaults => 1,
+ },
+);
+print($usage->text), exit 0 if $opt->help;
+
+Log::Any::Adapter->set(
+ 'Stdout',
+ log_level => Log::Any::Adapter::Util::numeric_level('warning')
+ + $opt->verbose,
+);
+
+my $data = AniDB::Data->new($opt->database);
+my %new_name_for;
+
+for my $dir (@ARGV) {
+ my $path_iter = path($dir)->iterator({recurse=>1,follow_symlinks=>0});
+ while (my $path = $path_iter->()) {
+ next unless $path->is_file;
+ $log->info("looking at $path")
+ $data->update($path);
+ if (my $new_name = $data->maybe_new_name_for($path)) {
+ $new_name_for{$path->stringify} = $new_name;
+ }
+ }
+}
+
+for my $current_name (sort keys %new_name_for) {
+ $log->infof('renaming %s to %s',$current_name,$new_name_for{$current_name});
+ $data->rename($current_name,$new_name_for{$current_name});
+}
+