wowThingSync is a lightweight, high-performance Rust tool designed to automatically sync your World of Warcraft addon data with wowthing.org. It watches for changes to your WoW collector files and uploads them in real-time, ensuring your characters are always up-to-date.
- Automated Sync: Watches your WoW
WTFfolder for changes toWoWthing_Collector.luaand uploads them instantly. - Initial Scan: Automatically scans and uploads data on startup.
- Gzip Compression: Compresses payloads before uploading to reduce bandwidth usage.
- Cross-Platform: Built with Rust, runs on Windows, Linux, and macOS.
- Low Overhead: Extremely memory and CPU efficient, runs silently in the background.
- Rust and Cargo (to build from source)
git clone https://github.com/yourusername/wowThingSync.git
cd wowThingSync
cargo build --releaseThe executable will be available at target/release/wowThingSync.
You can run wowThingSync with command-line arguments or using a configuration file.
./wowThingSync --api-key YOUR_API_KEY --wow-folder "/path/to/World of Warcraft"-a, --api-key: Your wowthing.org API key.-w, --wow-folder: Path to your World of Warcraft installation folder.-c, --config: (Optional) Path to a customconfig.jsonfile.-v, --verbose: Enable verbose logging for debugging.
By default, wowThingSync looks for a configuration file at:
- Linux/macOS:
~/.config/WowthingAutoUploader/config.json - Windows:
%USERPROFILE%\.config\WowthingAutoUploader\config.json
You can use the provided config.example.json as a template:
{
"ApiKey": "YOUR_API_KEY_HERE",
"WowFolder": "C:\\Program Files (x86)\\World of Warcraft"
}- Startup: The tool performs an initial scan of your
WTFfolder for any existingWoWthing_Collector.luafiles and uploads them. - Watching: It uses the
notifycrate to watch for file system events (specificallymodifyandcreate) in your WoW directory. - Trigger: When a change to
WoWthing_Collector.luais detected (typically when you log out or reload your UI in WoW), a sync is triggered. - Compression & Upload: The tool waits for 2 seconds (to ensure the file is fully written), reads the Lua file, wraps it in a JSON payload, compresses it using Gzip, and POSTs it to the
wowthing.orgAPI.
wowThingSync uses env_logger. You can control the log level via the RUST_LOG environment variable:
RUST_LOG=debug ./wowThingSyncThis project is licensed under the MIT License - see the LICENSE file for details (if applicable).