All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Javinizer now runs multi-threaded by default by use of Invoke-Parallel (Allowed up to 10 threads)
-Depth
parameter to specify-Recurse
depth-Set
parameter to update any setting from the commandline via a hashtable-SettingsPath
parameter to specify an external settings file-HideProgress
parameter to hide the progress bar when sorting- PSEdition Core requirement added to all public functions
- Settings validation function
- Re-added
-MoveToFolder
and-RenameFile
parameters - Re-added
-Strict
parameter
FullName
column added to thumbnail csv - Not required if adding actress manually- Changed function name
Update-JVThumbs
->Update-JVThumbCsv
- Setting name
sort.metadata.thumbcsv.path
->location.thumbcsv
- Setting name
sort.metadata.genrecsv.path
-> 'location.genrecsv` - Setting name
admin.log.path
->location.log
-Version
parameter output- Url matches using
-Find
are more intuitive
- Missing setting
scraper.movie.javbuzh
added to jvSettings.json file - Encoding errors where
sort.metadata.nfo.translate
is enabled - Error when running
-Find
without any scrapers enabled
Logging
module dependency
- Site scrapers now run in asynchronous threads
- Scraping a single movie with -Url now works more intuitively
- Thumbnail csv is improved with both English/Japanese names
- Thumbnail csv now supports multiple actress aliases with '|' delimiter in the Alias column
- Thumbnail csv now better matches actresses
- Allow to prefer English or Japanese actress names in metadata
- If a Japanese name is found from site metadata, thumbnail csv will automatically be used to try to match it to its English name and vice-versa
- User definable genre csv path
- User definable thumbnail csv path
- User definable javlibrary baseUrl - some reports of cloudflare issues
- Improved logging
- Functions now public for power users
- Settings file changed from .ini to .json format
- Path/DestinationPath now work a bit differently.
- Running Javinizer -Path $Path used to automatically set the DestinationPath as $Path. Now it is either required to be set in the command line or it will default to the path in the settings file
- <year> data in nfo
- <rating> data in nfo
- Restored some scraper settings defaults
- .wmv to file extension default
- scrape-r18/dmm to true
- Added
-Strict
functionality to-SetJavlibraryOwned
- Error when running with
-Multi
due to dev code
- Settings file validation for:
- True/False values
- Integer values
- Multi-sort throttle value
-SetJavlibraryOwned
now accepts a Path as well as a text list of movie IDs- If a path is detected, it will use Javinizer's default movie matching scheme to match IDs (regex-match supported as well)
- e.g.
Javinizer -SetJavlibraryOwned "C:\JAV\Sorted" -Recurse
- e.g.
- If a file is detected, it will use the text list of movie IDs
- e.g.
Javinizer -SetJavlibraryOwned "C:\JAV\movies.txt"
- e.g.
- If a path is detected, it will use Javinizer's default movie matching scheme to match IDs (regex-match supported as well)
- Timeout for setting owned movies on JAVLibrary is now user-defined (in seconds)
- Setting
request-timeout-sec
- Setting
- Regex match sorting now allows user-defined match values (use
$DebugPreference = 'Continue'
if troubleshooting your matches)- Setting
regex-id-match
andregex-pt-match
- Setting
-Multi
sort now uses PowerShell nativeStart-ThreadJob
cmdlet as opposed to PoshRSJob- Progress bar when using parameter
-Multi
now includes current in-progress threads
- Movies failing to be sorted into separate folders when using
-Multi
with default settings - Javinizer failing when regex match fails on an item and returns a null value
- Javinizer not ignoring movies that don't match the regex string when
regex-match=True
- PoshRSJob dependency removed
- Parameter
-SetJavlibraryOwned
to add a list of movies as owned on JAVLibrary- Requires a flat text file of movie IDs
- e.g. `Javinizer -SetJavlibraryOwned 'C:\Downloads\javlist.txt'
- 60s timeout when attempting to set owned status on JAVLibrary
- Error check to test successful authentication to JAVLibrary before running sort
- Fixed movie count being doubled on sort
- Fixed movie mismatch when
regex-match=True
- Fixed running Javinizer
-Multi
sort whenset-owned=True
- Removed verbose messages on GET/POST requests to JAVLibrary when setting owned status
- Added setting to match JAV files using regular expressions
- Regex match will not perform any string transformations, so the movie ID in your filename will need to match the website metadata exactly
- This is intended for users who have previously sorted files using a unique template and are unable to match using Javinizer's default matcher
# Default values [General] regex-match=false regex=([a-zA-Z|tT28]+-\d+z{0,1}Z{0,1}e{0,1}E{0,1})(?:-pt){0,1}(\d{1,2})?
- Experimental Added JAVLibrary integration with setting movies as "Owned" when sorting with Javinizer
# Default values [JAVLibrary] set-owned=True username= session-cookie=
- Fixed
-GetThumbs
and-UpdateThumbs
functionality- Removed PoshRSJob dependency, instead using PowerShell Core native
ForEach-Object -Parallel
for multi-threaded webpage scraping- There will no longer be a progress bar displayed
- Removed PoshRSJob dependency, instead using PowerShell Core native
- Fixed error output due to missing native dependencies when checking for Javinizer module updates
- Initial Jav321 scraper functionality
- Setting scrape-jav321
- Actress thumb url scraping for JavBus scraper
- Initial JavBus scraper functionality
- Setting scrape-javbus, scrape-javbusja
- Setting toggle for r18.com actress name language scraping to csv when using -GetThumbs or -UpdateThumbs
- scrape-actress-en
- scrape-actress-ja
- Setting
max-path-length
to allow user to define maximum path length of sorted files - Enhanced
-ViewLog
functionality and parameters- Colored output for ERROR and WARN log messages
- -ViewLog (List, Object, Table, Grid)
- -Entries
- -Order (Asc, Desc) Default: Desc
- -LogLevel (Info, Error, Warn, Debug)
- Examples:
Javinizer -ViewLog List
Javinizer -ViewLog Table -LogLevel Error -Entries 10
Javinizer -ViewLog Object | Where-Object {$_.message -like 'Skipped*'}
- Host output when Javinizer function is started/stopped
-MoveToFolder
and-RenameFile
being incorrectly applied when-Multi
is applied- Files being moved/named incorrectly when
rename-file=False
- nfo files being named incorrectly when
rename-file=False
andcreate-nfo-per-file=True
- Fixed Javinizer update check
- Ability to select which file extensions to use with Javinizer with setting
included-file-extensions
- Ability to exclude files that match a string/wildcard value with setting
excluded-file-strings
- This uses the
-Exclude
parameter on cmdletGet-ChildItem
which supports string paths/strings with wildcard (*) Regex is NOT supported
- This uses the
- Ability to omit the creation of a nfo file for a movie with setting
create-nfo
- Ability to create a nfo file per movie file sorted (for multi-part videos) with setting
create-nfo-per-file
- This is now set as default, as this is a requirement for metadata to be loaded with movies into Emby/Jellyfin
- Better logging functionality and setting of a static log path with setting
log-path
- View logs from console with
Javinizer -ViewLog
- Output as a PowerShell object, so you can specify pipeline elements (e.g
Javinizer -ViewLog | Select-Object -First 10 | Sort-Object timestamp -Descending | Format-Table -Wrap
)
- View logs from console with
- Removed r18 from default description
- Logging to JSON formatted
-MoveToFolder
,-RenameFile
,-Force
parameters when using-Multi
sort not being passed through- Duplicates being added to r18-thumbs.csv
- Poster images failing to be cropped from Python when using Windows UNC paths (e.g \server\jav\unsorted)
- Additional language support for existing scraper sources
- JavLibrary ZH (CN)
scrape-javlibraryzh=True
- JavLibrary JA
scrape-javlibraryja=True
- R18 ZH
scrape-r18zh=True
- JavLibrary ZH (CN)
- Original Japanese actress entries to r18-thumbs.csv
- Alternate language selection for description translation
translate-description-language=en
- Parameter
-ImportSettings
to specify an external settings file- Example:
Javinizer -Path C:\Downloads\JAV-Unsorted -ImportSettings C:\settings-template1.ini -Multi
- This is for those of you running Javinizer in automation or want to just specify different presets when sorting
- Example:
- Parameter
-MoveToFolder
and-RenameFile
to set true/false value formove-to-folder
andrename-file
in the commandline- Example:
Javinizer -Path C:\Downloads\JAV-Sorted -Recurse -MoveToFolder:$false -RenameFile:$false
- This is for when you want to refresh metadata for already sorted videos but don't want to manually adjust your settings file
- Example:
- Default naming of
poster.jpg
->folder.jpg
- This allows the poster image to show up as the default folder thumbnail in Windows File explorer
- I have not noticed any issues with Plex/Emby/Jellyfin for this naming convention but let me know if there is a conflict
- Default throttling of thumbnail updates to 5
- Requests have been erroring out due to the speed of the requests and Cloudflare throttling
- Update check will only occur once per session by checking global variable
- Actresses from DMM not being properly added to nfo when
first-last-name-order=false
- R18 thumbnail csv adding duplicate entries with reversed order when
first-last-name-order=false
- Functionality to download actress images that are pulled from r18-thumbs.csv
- Functionality to check for Javinizer module updates on startup
- Setting
check-updates=<True/False>
- Setting
- Issue where actresses scraped from JAVLibrary found in the r18-thumbs.csv file but not matching the correct casing (upper/lowercase) would erroneously be replaced with the last entry in r18-thumbs.csv
- Hotfix for 1.1.13 - Actresses failing to write to metadata properly when falling back to secondary or greater priority
- Hotfix for 1.1.13 - Actors/screenshots metadata failing to download when setting
move-to-folder=false
- Basic logging functionality for sorted and skipped files
- Logs will be written by default, and cannot be turned off
- View using
Javinizer -OpenLog
- Additional file renaming strings
- <ACTORS>
- <SET>
- <LABEL>
- <ORIGINALTITLE>
- Setting option
actors-name-delimiter=", "
- Cap of 215 max path length for created directories
- Genres failing to write to metadata properly when falling back to secondary or greater priority
- Actors/screenshots metadata failing to download when setting
move-to-folder=false
- More flexible metadata file naming in settings
- poster-file-string="poster"
- thumbnail-file-string="fanart"
- trailer-file-string="<ID>-trailer"
- nfo-file-string="<ID>"
- screenshot-folder-string="extrafanart"
- screenshot-img-string="fanart"
- actorimg-folder-string=".actors"
- Console output now includes timestamps
- Condensed warning output on files failed to sort
- Files not failing to sort when genres are null
- Error on creating cloudflare session with Javlibrary.com
- Script failing when certain criteria are met when downloading actress thumbnails
-Strict
parameter to not clean filenames when scrapingrename-file
setting functionality
- R18/DMM matching function to be more accurate and resilient
- JAVLibrary matching function to be more accurate and resilient
- Matching for r18 videos with only 1 returned search result or 0 matched search results
- Additional error with downloading actress images with single actress video
- Fixed single-word actresses appending underscore
_
to filename when downloading actress images - Director and Genre metadata fields being cut off by slash
/
in Plex, replaced text with-
- Behavior when description translation fails to let original DMM description be written to nfo metadata
- Description metadata being set to null when
translate-description
is set to False - JAVLibrary maker being set in director field when there is no director
- Additional R18 censors
-UpdateThumbs
parameter erroring out on actress written due to missing ReversedFullName
- Running Javinizer without
-Multi
parameter fails to sort any files - Having setting
move-to-folder=False
writing non-video files to the root-Path
directory
- Throttle limit from 5 --> 15
<set>
nfo metadata added by default,<tag>
still optional
- Most redundant error messages when running multisort with multi-part videos
- Invalid trailer in aggregated object if R18 trailers not found
- Tag from
Series: <tag>
to<tag>
- Null series being added as a tag with
add-series-as-tag
true - R18 series string not uncensoring censored words
- Additional R18 censored words
- Additional issues to writing missing actresses to
r18-thumbs.csv
- Videos with 2+ actresses not writing to
r18-thumbs.csv
if missing
- Add
SetEmbyActorThumbs
parameter to push actor thumbnails to your Emby/Jellyfin instance - Add
BackupSettings
parameter to backup configuration files to an archive - Add
RestoreSettings
parameter to restore configuration files from an archive to module root
- Actor role tag
Actress
for each actress
- JAVLibrary metadata title null when scraping non-standard title such as T28-*
- Verbose messages for start/end of each file sort to more easily diagnose where issues arise during
multi
sort
- Null/invalid actresses being added to
r18-thumbs.csv
when found missing actress - Direct file specified in
Path
parameter erroring due to DestinationPath being set to the file rather than its directory
- Setting
download-actress-img
to download actress images to video's local.actors
folder - Parameter
GetThumbs
,UpdateThumbs
, andOpenThumbs
to update r18 actress and thumburl csv file - Parameter
Recurse
to find all video files recursively from sort path - Feature to attempt to match actresses with missing thumburl to r18-thumbs.csv file
- Feature to automatically add scraped R18 actresses/thumburls to
r18-thumbs.csv file
- Feature to normalize JAVLibrary genres to their R18 counterparts with setting
normalize-genres
move-to-folder
functionality to allow user to not move file to new folder when sortingminimum-filesize-to-sort
functionality to set minimum filesize video to sortm4v
andrmvb
video match support
- Script to start cloudflare session before multi-sort begins
- All file downloads to run asynchronously except cover image
- Calling a relative destination path errored when running using
-Multi
- Actress thumburl being ignored for single actress videos if actress priority set as
r18,javlibrary
- Parameter
OpenSettings
to open your settings file - Parameter
Help
to display comment-based help for Javinizer usage
- Single actress sames scraped from R18 with trailing space
- Various parts for compatibility with PowerShell Gallery releases
- Muli-threaded sorting functionality with parameter
Multi
- Ability to select name order for actress with setting
first-last-name-order
- Comment based help
PS> Help Javinizer
- Default DestinationPath will be set to your
Path
parameter rather than your settingsoutput-path
- Javlibrary failing to match if the first result is error
- R18 failing to match video if ID doesn't return results, but ContentID does
- R18 finding
----
as ID set to null - Actress thumburls being assigned to wrong actress
- File displayname being affected by
max-title-length
- Invalid label on DMM when label is null
- Metadata values nulled if first priority did not return results
- Error message when actress is present but thumburl is null
<RUNTIME>
as filename option- Add setting
max-title-length
- Filename string replacement of
/
to-
- Keep empty
<thumb></thumb>
tag when actress thumburl is null
- Alternate actress names surrounded by parentheses in metadata
- Brackets
[]
in filename titles erroring - Writing actresses to nfo for videos with more than one actress
- Settings being written in debug output
- T28/T-28 video recognition support
- String replacement for censored words on R18.com
- Error throw messages on unsuccessful download of images/trailer
- Non-creation of
extrafanart
directory if no screenshots are downloaded - More settings defaults to javlibrary
- Python dependency to Python3
- Unix operating systems will now call
python3
rather thanpython
- Spaces between
-
in part number and trailer
- Genres failing to be written to nfo if first priority setting did not find video
- Actresses failing to be written to the nfo if there was only one actress
- Description translation failing due to unicode errors from Python 2 versions
- Having multipart videos in the sort directory causes non-multipart videos to have part number assigned to it
- JAVLibrary url search fail on first non-matched result
- Set
Test-Path
to literalpath for Unix compatibility - Titles in directory name failing due to special characters not being removed
- .NET CultureInfo class conversion to hard coded month values for R18 data scrape
- Better catch for separation between multi-part and single videos
- Genre not being output in nfo
- Rating vote count not added in aggregated data object and nfo
- Setting
add-series-as-tag
set default false - Remove debug output for
Convert-HTMLCharacter
- Fixed
<trailer>
nfo data not appearing in scraped .nfo file - Fixed javlibrary data object not being output
- Fix spacing in nfo between
<mpaa>
and next tags
- Multi-part video support
<mpaa>XXX</mpaa>
tag in nfo metadata- Better console output for skipped files
- Setting
download-trailer-vid
to allow downloading of movie trailers
<rating>
tag in nfo metadata to legacy format- Cloudflare
$session
scope toglobal
instead ofscript
-Find
parameter better search output
- R18 series title scrape not working properly
- Function stopping on first skipped file
- Directory match Write-Host under the single match
- JAVLibrary url parsing and multiple result check
- Comma separated format with an extra space ', ' instead of ','
- Type 'attemping' to 'attempting'
- Try/catch for directory sort
- Initial functionality release
- Web searching with
-Find
- File and directory sort with
-Path
and-Apply