Notice
If you are the author of this plugin, you can claim this topic by clicking > at the bottom of this post. Select Something Else as a reason and leave a comment explaining you want to claim the topic. Include a link to your git profile or pull request showing ownership of the plugin.
![]() |
Summary | Rename/move filename based on a template. |
![]() |
Repository | https://github.com/f4bio/stash-plugins/tree/main/plugins/renamerOnUpdate |
![]() |
Source URL | https://f4bio.github.io/stash-plugins/main/index.yml |
![]() |
Install | How to install a plugin? |
renamerOnUpdate
Using metadata from your Stash to rename/move your file.
Requirement
- Stash (v0.24+)
- Python 3.6+ (Tested LIGHTLY on Python v3.12)
- Request Module (https://pypi.org/project/requests/)
Installation (manually)
- Download the whole folder βrenamerOnUpdateβ
renamerOnUpdate_config.py
log.py
renamerOnUpdate.py
renamerOnUpdate.yml
- Place it in your plugins folder (where the
config.yml
is) - Reload plugins (Settings > Plugins > Reload)
- renamerOnUpdate appears
_ Make sure to copy
renamerOnUpdate_config.py
to config.py
and configure the plugin before running it _
Installation (via manager)
- Go to Settings > Plugins
- Find Available Plugins and expand the package called Community (stable).
- Select
renamerOnUpdate
and click Install
_ Make sure to copy
renamerOnUpdate_config.py
to config.py
and configure the plugin before running it _
Usage
-
Everytime you update a scene, it will check/rename your file. An update can be:
- Saving in Scene Edit.
- Clicking the Organized button.
- Running a scan that updates the path.
-
By pressing the button in the Task menu.
- It will go through each of your scenes.
Itβs recommended to understand correctly how this plugin works,
and use DryRun first.
Configuration
-
Read/Edit
config.py
- Change template filename/path
- Add
log_file
path
-
There are multiple buttons in Task menu:
- Enable: (default) Enable the trigger update
- Disable: Disable the trigger update
- Dry-run: A switch to enable/disable dry-run mode
-
Dry-run mode:
- It prevents editing the file, only shows in your log.
- This mode can write into a file (
dryrun_renamerOnUpdate.txt
), the change that the plugin will do.- You need to set a path for
log_file
inrenamerOnUpdate_config.py
- The format will be:
scene_id|current path|new path
. (e.g.100|C:\Temp\foo.mp4|C:\Temp\bar.mp4
) - This file will be overwritten everytime the plugin is triggered.
- You need to set a path for
Custom configuration file
Due to the nature of how plugin updates work, your renamerOnUpdate_config.py
file will get replaced with the fresh copy resetting it to default values.
To work around that you can create a custom config file and use it instead.
- Create a copy of
renamerOnUpdate_config.py
- Rename your copy to
config.py
- Use the
config.py
(it will default torenamerOnUpdate_config.py
if not found)
Note: Since
config.py
file is not tracked
it wonβt get updated with new configuration options,
so you will need to update it manually.
renamerOnUpdate_config.py explained
Template
To modify your path/filename, you can use variables.
These are elements that will change based on your metadata.
- Variables are represented with a word preceded with a
$
symbol. (E.g.$date
) - If the metadata exists, this term will be replaced by it:
- Scene date = 2006-01-02,
$date
= 2006-01-02
- Scene date = 2006-01-02,
- You can find the list of available variables in
renamerOnUpdate_config.py
In the example below, we will use:
- Path:
C:\Temp\QmlnQnVja0J1bm55.mp4
- This file is Big Buck Bunny.
Filename
Change your filename (C:\Temp\QmlnQnVja0J1bm55.mp4)
Priority : Tags > Studios > Default
Filename - Based on a Tag
tag_templates = {
"rename_tag": "$year $title - $studio $resolution $video_codec",
"rename_tag2": "$title"
}
tag | new path |
---|---|
rename_tag | C:\Temp\2008 Big Buck Bunny - Blender Institute 1080p H264.mp4 |
rename_tag2 | C:\Temp\Big Buck Bunny.mp4 |
Filename - Based on a Studio
studio_templates = {
"Blender Institute": "$date - $title [$studio]",
"Pixar": "$title [$studio]"
}
studio | new path |
---|---|
Blender Institute | C:\Temp\2008-05-20 - Big Buck Bunny [Blender Institute].mp4 |
Pixar | C:\Temp\Big Buck Bunny [Pixar].mp4 |
Filename - Change filename no matter what
use_default_template = True
default_template = "$date $title"
The file became: C:\Temp\2008-05-20 - Big Buck Bunny.mp4
Path
Change your path (C:\Temp\QmlnQnVja0J1bm55.mp4)
Path - Based on a Tag
p_tag_templates = {
"rename_tag": r"D:\Video\\",
"rename_tag2": r"E:\Video\$year"
}
tag | new path |
---|---|
rename_tag | D:\Video\QmlnQnVja0J1bm55.mp4 |
rename_tag2 | E:\Video\2008\QmlnQnVja0J1bm55.mp4 |
Path - Based on a Studio
p_studio_templates = {
"Blender Institute": r"D:\Video\Blender\\",
"Pixar": r"E:\Video\$studio\\"
}
studio | new path |
---|---|
Blender Institute | D:\Video\Blender\QmlnQnVja0J1bm55.mp4 |
Pixar | E:\Video\Pixar\QmlnQnVja0J1bm55.mp4 |
Path - Based on a Path
p_path_templates = {
r"C:\Temp": r"D:\Video\\",
r"C:\Video": r"E:\Video\Win\\"
}
file path | new path |
---|---|
C:\Temp |
D:\Video\QmlnQnVja0J1bm55.mp4 |
C:\Video |
E:\Video\Win\QmlnQnVja0J1bm55.mp4 |
Path - Change path no matter what
p_use_default_template = True
p_default_template = r"D:\Video\\"
The file is moved to: D:\Video\QmlnQnVja0J1bm55.mp4
Path - Special Variables
$studio_hierarchy
- Create the entire hierarchy of studio
as folder (E.g. ../MindGeek/Brazzers/Hot And Mean/video.mp4
). Use your parent studio.
^*
- The current directory of the file.
Explanation:
- If:
p_default_template = r"^*\$performer"
- It creates a folder with a performer name
in the current directory where the file is. C:\Temp\video.mp4
so^*=C:\Temp\
, result:C:\Temp\Jane Doe\video.mp4
- If you donβt use
prevent_consecutive
option,
the plugin will create a new folder everytime (C:\Temp\Jane Doe\Jane Doe\...\video.mp4
).
Advanced
Groups
You can group elements in the template with {}
,
itβs used when you want to remove a character if a variable is null.
Example:
With date in Stash:
[$studio] $date - $title
β[Blender] 2008-05-20 - Big Buck Bunny
Without date in Stash:
[$studio] $date - $title
β[Blender] - Big Buck Bunny
If you want to use the -
only when you have the date,
you can group the -
with $date
Without date in Stash:
[$studio] {$date -} $title
β[Blender] Big Buck Bunny