FilterRename app

FilterRename is a bulk renaming tool, based on the concept of filters as small operations to perform over sections of the full filename logically organized in targets, like name, extension, path, full_path. These filters can also be organized in macros and recall some specific metadata in mp3, jpg, and pdf files to create the final filename.

Main Features

  • Represents a filename as targets to operate on, allowing to focus only on the parts to rename;
  • New targets can be defined at runtime or depending from the filetype;
  • Support a preview mode and a dry-run mode;
  • Support for mp3 tags in read/write mode;
  • Support for pdf metadata in read mode;
  • Support for image metadata in read mode;
  • Filters can operate on the full text, single words (defined by the word_separator config), and numbers;
  • When a file exists it shows the different hash digests to know whether or not they are identical;
  • Can define group of filters as macros in the config file;
  • Can define a dictionary of words to replace.

Installation

From Rubygems

$ gem install filter_rename

Changelog

Version 1.1.0 (September 23, 2022)

  • Fixed the error on the cached file hash calculation in dry_run mode;
  • Fixed the hash visualization of the destination file in the file_hash method;
  • Improved the tag selection and displaying in the changed_tags message;
  • Fixed the 'track' tag attribution;
  • Added the JoinNumbers filter;
  • Fixed the JoinWords filter;
  • Added Rspec tests for some FilterWord filters;
  • Added CopyOccurrenceTo, DeleteOccurrence, MoveOccurrenceTo, ReplaceOccurrence filters;
  • Fixed AppendNumberTo, CopyNumberTo, MoveNumberTo filters;
  • Added the FilterOccurrence among the basic classes;
  • Refactored the IndexedParams module and the FilterWord and FilterNumber classes, moving
  • Added the PrependWordFrom filter;
  • Refactored the filtered_number methods removing obsolete params, fixed AppendWordTo, reimplemented SwapNumber filter;
  • Added the number_separator filter config variable;
  • Added FilterBase#current_target, refactored and moved into IndexedParams the string_to_loop and self_targeted? methods, extended the changes from FilterWord to FilterNumber class refactoring the loop_number method too;
  • Added the get_numbers method to the String class;
  • Refactored the FilterWord filters to integrate the last FilterWord changes;
  • Added the return_filtered_word and string_to_loop methods to FilterWord class to alter the returned string and the target string to modify;
  • Refactored the IndexedPArams to provide params and parames_expanded accessors to loops, FilterWord updated;
  • Added the ability to refer separated index values for Word and Number based filters;
  • Added LowercaseWord filter;
  • Added UppercaseWord filter;
  • Added the file hash display underneath the file exists error message;
  • Fixed the message to show in the apply operation when the filename exists;
  • Added the CapitalizeWord filter;
  • Added the genre_s tag;
  • Fixed the File not found error for file starting with white space char;
  • Fixed the append_issue macro;
  • Improved the filtered_regexp parameter, the separated matches instead of a single string;
  • Improved the camels_to_words macro;
  • Fixed the backreference for capturing groups;
  • Added AddNumberFrom filter;
  • Created the FilterRegexp class for filters based on Regular Expressions and refactored the filters involved;
  • Fixed the nil string assignment error;
  • Updated to indexed_params method in SwapWords and WrapWords filters.

Version 1.0.0 (March 16, 2020)

  • First public release



Leave a Comment