TagStudio icon indicating copy to clipboard operation
TagStudio copied to clipboard

[Feature Request]: Share-able / Merge-able Tags and Text-Entries between Libraries

Open tlranda opened this issue 3 months ago • 0 comments

Checklist

  • [x] I am using an up-to-date version.
  • [x] I have read the documentation.
  • [x] I have searched existing issues.

Description

I'm part of a small community where providing ground-truth references is highly valued, so being able to share tag or text-field metadata between disparate TagStudio libraries would be valuable for communal knowledge accumulation.

For example, if two users have some common files between their TagStudio libraries and intend to keep similar tags on those files, this could permit them a mechanism to synchronize their TagStudio metadata. The same could also apply to text fields associated to files. In our community we often save metadata that is not supported by the file formats themselves (such as source URLs, author and artist credits), which TagStudio already supports. However, TagStudio does not currently have a mechanism to share this metadata between discrete libraries that have common files.

Solution

Hypothetically, files from one library (the source) can have their Tags and Text Entry data exported into a shareable format (for simplicity, consider naively exporting just the folders, entries, text_fields, tags, and tag_entries tables from the existing TagStudio sqlite database to a "share-able" database). Another library (the target) may import this shared database to automatically create/connect tags and text entry data to any files that are common to both the source and target libraries.

If implemented as a MWE, this feature would require both libraries to maintain the same directory structure and file naming. However, the existing roadmap indicates a desire to improve capabilities for re-linking library entries, which is also useful for improving the sharing capability.

It appears that two comments (https://github.com/TagStudioDev/TagStudio/issues/36#issuecomment-2075777588 and https://github.com/TagStudioDev/TagStudio/issues/36#issuecomment-2442669117) from about a year ago indicated that version 9.5 was intended to eventually include this kind of behavior, but I don't believe it is currently present in v9.5.5 -- perhaps it is nearer on the horizon now! My idea is highly similar to what was discussed here, using some kind of hash per-file in the entry table to assist in matching files between source/target libraries (or relinking moved/renamed files).

Alternatives

Hashing all files in the library can carry high performance cost for libraries with large volumes of data (not necessarily large quantities of files) and as previously mentioned in #36 not inherently robust if files are edited.

It could be more appropriate for sharing metadata to be maintained separately from TagStudio (or provided as an optional plugin) rather than integrating it as a full feature. I intend to create standalone programs for my personal use that can read/modify the TagStudio sqlite database as I described, but I would be interested in finding a way to contribute these efforts to the project if there is shared interest.

tlranda avatar Oct 07 '25 21:10 tlranda