Use appropriate digest header caches
Name fixups
Encode hashes with pgzip and a buffered writer
Add --use-all-checksums for faster default exports
Only create the hash server when hash saving is enabled
Write through a diode queue so a slow writer never blocks the
caller
Aliases allow multiple loggers to have their level set at the same time
The "main" logger is a default normal logger "" is rewritten to "main"
The ALL pseudo-logger controls the default logger level
FormatInt formats human readable numbers
Supply a flag.Value for parsing a cli flag
logger names preserve case. Prefer functions over setting values directly
Tests are included
Add a basic map storage that does manual searches to conserve memory
Change saved hashes format to allow multiple hashes for a given ID
Add a vptree storage
Maps in Go take up a huge amount of space changing IDList to []ID took
memory from over 1GB down to 200MB (note this was on aarch64 MacOS
which for some reason uses less memory than aarch64 Linux).
Exhaustive searches using slices took about 30 ms search now takes
50-60 ms as it takes longer to iterate a map. Partial hashes will
speed up searches to 8 ms at the cost of 700MB initial memory usage
and 400MB idle (though this is on MacOS, which for some reason uses
less memory that aarch64 Linux so probably more like
900MB initial -> 600 MB idle on an RPI running Linux)
Make a pip installable package for quick-tag
Save and load hashes from msgpack/json
Embed hashes of all thumb_urls from ComicVine
Allow associating new IDs to old IDs
Support multiple domains
Support hashing local covers
Support simple list of ids and distance and results including the hash