From e8b13a9e67a231556bae2cd718d5de302cfbe69b Mon Sep 17 00:00:00 2001 From: dakkar Date: Sun, 16 Oct 2016 13:43:37 +0100 Subject: rough skeleton of the script --- anidb-renamer | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 anidb-renamer 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 ', + [ '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}); +} + -- cgit v1.2.3