Skip to main content

A command-line tool designed to tag your doujin voice library.

Project description

DVTAG

Command-line tagger for doujin voice libraries. Point it at a folder tree that contains DLSite work numbers (RJ/BJ/VJ) in folder names and it will fetch metadata, write tags, and optionally transcode wav files.

What it does

  • Recursively finds directories whose names include RJxxxxxx, BJxxxxxx, or VJxxxxxx (6 or 8 digits) and treats each as a release.
  • Scrapes metadata from DLSite and refines title/cover details via Chobit when possible.
  • Writes tags for FLAC, M4A, and MP3 (album, date, circle, seiyu, genres, cover, track/disc numbers).
  • Tries to strip numbering prefixes from track titles based on filename patterns.
  • Optional: transcode .wav to .flac or .mp3 using ffmpeg, deleting the source wavs after success.

Requirements

  • Python 3.9+
  • ffmpeg on PATH (only needed when using transcoding flags)
  • Network access to dlsite.com and chobit.cc

Installation

pip install dvtag            # or: pipx install dvtag
pip install --upgrade dvtag  # upgrade (pipx upgrade dvtag)

Quick start

  1. Ensure each release folder name contains a work number (e.g., RJ123456, rj123456 bonus, xxx_RJ01123456).
  2. Run:
dvtag /path/to/your/library        # tag in place
dvtag -w2f /path/to/your/library   # tag + transcode wav -> flac
dvtag -w2m /path/to/your/library   # tag + transcode wav -> mp3 (320k)

CLI reference

usage: dvtag [-h] [-v] [-w2f] [-w2m] dirpath

Doujin Voice Tagging Tool (tagging in place)

positional arguments:
  dirpath        a required directory path

options:
  -h, --help     show this help message and exit
  -v, --version  show program's version number and exit
  -w2f           transcode all wav files to flac [LOSELESS]
  -w2m           transcode all wav files to mp3

How it works (and current quirks)

  • Discovery: walks the given directory; once a folder with a work number is found, tagging happens inside it instead of recursing deeper.
  • Metadata: pulls work name, circle, seiyu, genres, sale date, cover from DLSite; Chobit is queried for a potentially shorter title and a square thumbnail if available.
  • Cover choice: currently prefers the Chobit square thumbnail, but some releases look better with the standard DLSite cover (usually landscape). A user-selectable preference is a known need.
  • Genre order: genres are kept in the order returned by DLSite. The tag comparison logic may still rewrite files when the same genres appear in a different order; smarter equality is on the roadmap.
  • Track titles: attempts to remove numeric prefixes from filenames when they follow common track-number patterns; otherwise uses the raw stem.
  • Logging: minimal console logging; improving verbosity/structure is planned.
  • Idempotency: tags are only written when they differ from existing tags, but the gaps above can still cause redundant writes.

Current limitations and ideas

  • Caching: no cache; repeated runs on large libraries hit DLSite/Chobit every time, slowing execution and adding load. Add a local metadata cache with expiry.
  • Genre/tag comparison: treat genre lists as sets (or configurable) to avoid unnecessary rewrites while preserving source order.
  • Logging and observability: structured logs, progress, and clearer error handling.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dvtag-0.7.7.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dvtag-0.7.7-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file dvtag-0.7.7.tar.gz.

File metadata

  • Download URL: dvtag-0.7.7.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for dvtag-0.7.7.tar.gz
Algorithm Hash digest
SHA256 7bac9f0ffc5dd73316b6b2af101cf57e5e7da59b2adf2b67377eb8d9caab2b98
MD5 441c0fcef06f5a94275d7933c907ff9a
BLAKE2b-256 4d1b7240d4999775a43ead08742bc4c35a4fffeecbcbca8e919c148ab405b218

See more details on using hashes here.

File details

Details for the file dvtag-0.7.7-py3-none-any.whl.

File metadata

  • Download URL: dvtag-0.7.7-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for dvtag-0.7.7-py3-none-any.whl
Algorithm Hash digest
SHA256 7cd65fb65109443f7a8f0d4c2ab3cf537eaa056823a52d48e82b220ed4ac8d58
MD5 811b9132a06d85734790afb770f4ed15
BLAKE2b-256 d2f83c776a37725a078c6aedc3d5e6d66b952c274e9f1c4c8fd4c2674a333a52

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page