downloadmanager/Readme.md
Robert Morrison 9a1838becc
EVIL COMMIT!
That one evil commit that means you've actually started development like
a real developer.
But before that you just wrote things
2023-05-12 22:58:58 +01:00

60 lines
1.8 KiB
Markdown

# DownloadManager
WARNING: this is WIP code and currently does NOT work properly
A simple yet complex program to do something dumb.
Basically write rules, run the program and watch your files fall in to
line. No more cluttered download folders.
## Features
You can currently
- Write rules
- Run rules
### Coming someday
Future features include.
- A built in rule editor/validator
- Command line options (the framework is there just need the implementation)
- More/Better output
- Interactive mode (E.G "Do you want to do this.")
- Pre-apply and Apply stages separated
- This allows for the showing of "SOME FILES -> Destination, OTHER
FILES -> Other destination"
- Also makes confirmation on batches easier.
- could also allow for making the Apply stage async, allowing the UI to
update as files are moved (progress bar much?)
## Rules
Rules are written in JSON and _must_ contain all 4 values to be loaded
properly, any malformed rules will not be loaded with the errors logged.
**NOTE**: For now _**ALL**_ paths must be absolute. This is due to C# being
generally designed around windows and as such not having the features to
handle unix style paths e.g `~/Downloads`. In the future I plan to add
replace `~` at the start of a path with the running users home directory.
Type is an integer that represents how to match the pattern
1. Exact match (**Implemented**)
2. Regex matching (**Being written**)
3. Shell style globbing (**This may never happen as it seems hard to do and
kinda redundant with regex**)
4. Danbooru - this is a special match type that doesn't use the pattern
field, instead it find files that are likely to be from danbooru
(prefixed with `__`) and then sorts them based on their aspect ratio.
```json
{
"Name" : "Example Rule",
"Type" : 1,
"Pattern" : "File.File",
"Destination" : "/Directory"
}
```