-#!/usr/bin/env perl
-# torn - Musical files renaming with russian language transliteration
-# Copyright (C) 2007-2020 Sergey Matveev (stargrave@stargrave.org)
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, version 3 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-=pod
-
-=head1 DESCRIPTION
-
-This Perl script takes directory file list and renames all files,
-making some substitution changes. It has some rules for musical
-files and rules to convert russian filenames to translit.
-
-=head1 USAGE
-
-Simply run this script in directory where you want files and/or
-directorires to be renamed.
-
-=head1 OVERVIEW
-
-=over 4
-
-=item * Transliterate everything
-
-=item * Replaces spaces with underscore
-
-=item * Downcase all extensions
-
-=item * "_-_" so good looking on the screen is replaced by single dash
-
-=item * Remove spaces before and after brackets
-
-=item * Remove "[]" brackets
-
-=item * Replace ampersand with "and" word
-
-=back
-
-=head1 AUTHOR
-
-Sergey Matveev L<mailto:stargrave@stargrave.org>
-
-=cut
-
-use strict;
-use utf8;
-use Encode;
-
-binmode STDOUT, ":utf8";
-
-my $VERSION = "0.9";
-
-my $src;
-my $dst;
-my $src_filename;
-
-if ($#ARGV >= 0) {
- print "torn version $VERSION, Copyright (C) 2007-2020 Sergey Matveev
-torn comes with ABSOLUTELY NO WARRANTY. This is free software,
-and you are welcome to redistribute it under certain conditions.\n
-Usage: just run inside the directory. Look for POD inside the script itself.\n";
-};
-
-opendir DIR, "." or die "Can not open directory\n";
-foreach (sort readdir DIR) {
- # Skip directory itself
- next if /^\.{1,2}$/;
- next if -d;
-
- $src_filename = $_;
- $src = decode "utf-8", $src_filename;
- $dst = $src;
-
- # Basic corrections for music files
- $dst =~ s/ /_/g;
- $dst =~ s/_-_/-/g;
- $dst =~ s/_\(/\(/g;
- $dst =~ s/-\(/-/g;
- $dst =~ s/\)_/-/g;
- $dst =~ s/\,_/\,/g;
- $dst =~ s/\[//g;
- $dst =~ s/\]//g;
- $dst =~ s/\(_/\(/g;
- $dst =~ s/_\)/\)/g;
- $dst =~ s/\&/and/g;
-
- # Make translit
- $dst =~ y/абвгдеёзийклмнопрстуфхцьъыэ/abvgdeezijklmnoprstufhcjjye/;
- $dst =~ y/АБВГДЕЁЗИЙКЛМНОПРСТУФХЦЬЪЫЭ/ABVGDEEZIJKLMNOPRSTUFHCJJYE/;
- $dst =~ s/ж/zh/g;
- $dst =~ s/ч/ch/g;
- $dst =~ s/ш/sh/g;
- $dst =~ s/щ/sch/g;
- $dst =~ s/я/ja/g;
- $dst =~ s/ю/ju/g;
- $dst =~ s/Ж/Zh/g;
- $dst =~ s/Ч/Ch/g;
- $dst =~ s/Ш/Sh/g;
- $dst =~ s/Щ/Sch/g;
- $dst =~ s/Я/Ja/g;
- $dst =~ s/Ю/Ju/g;
-
- # Lowercase file extensions
- if($dst =~ /^(.*)\.([^\.]+)$/){
- $dst = $1 . "." . lc $2;
- };
-
- # Change looking of track numbers
- # And renaming itself
- if($dst =~ /^(\d+)\-(.+)$/){
- print "$src -> $1.$2\n";
- rename $src_filename, "$1.$2";
- } else {
- print "$src -> $dst\n";
- rename $src_filename, $dst;
- };
-};
-closedir DIR;