ffxiv-screenshot-organiser/README.md

95 lines
3.7 KiB
Markdown
Raw Permalink Normal View History

2018-08-13 23:01:36 +00:00
# FFXIV Screenshot Organiser
I opened up my screenshots folder that has been populating over many years, and I realised it's a
mess. Sometimes I want to go back and view older screenshots, but there are so many, and it's a
huge, disorganised mess.
I created this tool to sort and convert existing screenshots however you prefer and automatically
sort and convert new ones.
## Usage
`./screenshot_organiser <config file>`
If you don't specify a config file, it will try to read `config.json` from the current directory.
## Annotated example config
```javascript
{
"options": {
// Where your screenshots are located.
//
// This is the base directory for everything this program does. Reshade and FFXIV should both
// output their screenshots here. This folder is the folder that will be sorted and watched for
// new screenshots.
"screenshots_dir": "D:\\FFXIV Screenshots",
// Regular expressions to match on.
//
// If a file in the top level of screenshots_dir matches one of these, it will be run through
// the pipeline. Every regular expression in this array must have six named groups: year, month,
// day, hour, minute, second.
"match": [
"ffxiv_(?P<month>\\d{2})(?P<day>\\d{2})(?P<year>\\d{4})_(?P<hour>\\d{2})(?P<minute>\\d{2})(?P<second>\\d{2}).(?:jpg|png)",
"ffxiv_dx11 (?P<year>\\d{4})-(?P<month>\\d{2})-(?P<day>\\d{2}) (?P<hour>\\d{2})-(?P<minute>\\d{2})-(?P<second>\\d{2}).(?:png|bmp)"
],
// How long, in milliseconds, to wait before sending FS events. You should probably not touch
// this.
//
// To ensure files are fully written before being run through the pipeline, there is a delay
// before checking them. Increase this by increments of 1,000 if you notice your screenshots are
// being cut off.
"event_delay": 1000
},
// The meat of the application: the pipeline.
//
// The pipeline defines jobs to run on each screenshot. The jobs are run in order and can be
// specified in any order or omitted. If this array is empty, the program will do nothing.
//
// There are currently only two jobs: move and convert.
//
// The convert job takes whatever screenshot it finds and converts it to whichever format you
// choose. In the configuration below, all screenshots will be converted to JPGs with a quality of
// 90/100. This is a pretty safe default.
//
// The quality configuration option is only used with JPG. Supported files types are PNG, JPG,
// GIF, BMP, and ICO. Note that they must be specified in lowercase.
//
// There is one more option that can be specified for the convert job. keep_original allows you to
// keep the original file. Note that any move jobs done will move both the converted and original
// file if the original is kept. This defaults to off.
//
// The move job is very simple. All it does is move the screenshot to whatever path you would
// like, relative to screenshots_dir.
//
// The path is specified using a time format string. Please see
// https://docs.rs/chrono/0.4.5/chrono/format/strftime/index.html for more information on what
// special symbols can be used.
//
// In the example below, the file is moved into several subdirectories. They will be created
// automatically if they do not exist.
//
// Note that local is set to true in this configuration. If set to false, the timestamp will be
// UTC. You probably want to keep it set to true. The default is true.
"pipeline": [
{
"job": "convert",
"options": {
"to": {
"format": "jpg",
"quality": 90
}
// "keep_original": true
}
},
{
"job": "move",
"options": {
"to": "%Y\\%m\\%d\\ffxiv.%Y-%m-%d.%H-%M-%S",
"local": true
}
}
]
}
```