deckerst / aves

Aves is a gallery and metadata explorer app, built for Android with Flutter.
BSD 3-Clause "New" or "Revised" License
2.54k stars 96 forks source link

Hierarchical Tags | Parent/Child Tags #836

Open OkyDooky opened 10 months ago

OkyDooky commented 10 months ago

Is your feature request related to a problem? Please describe. Detailed tagging can get tedious and redundant. This is one idea to help speed things up in a logical and, hopefully, intuitive way.

Describe the solution you'd like The idea is to set certain tags as a parent for others, so that tagging can be faster and still accurate. Essentially, one tag is describing a "type" and the other tag is describing a "subtype." Every time a subtype is added, the parent tag would be added as well. A photography example would be setting Italy as a dependency for Venice, so that every time a photo is tagged with Venice, Italy will also be added automatically. Or having food be added when tagging a photo of pasta. A non-photography example would be having a tag for a franchise and another for a character of that franchise. So, if I didn't feel like tagging a character I don't care about, but I want to make sure everyone (me) knows this is from Teenage Mutant Ninja Turtles, then I can simply add that tag on its own. But, if I want to add Donatello or Shredder or April O'Neil, then the TMNT (or the full name) tag gets added automatically. This can also be used for details, like jewelry (which could be the parent for earrings, bracelets, etc.) or any other arbitrary thing.

Describe alternatives you've considered Aside from others' suggestions of auto-tagging through either AI/ML detection methods or through learning to suggest tags by common association, I can't think of anything else, right now.

Additional context Admittedly, I haven't thought through the editing portion of this, so I'm not sure how best to suggest the interface for that. Mayne long-pressing on a tag from the main Tag Menu (in the shelf) and then adding an option in the 3-dot menu to "Set Parent" or "Set Child" or "Set As Parent(/Child)," which could then open the same kind of menu as the Move To/Copy To options, but it would show the other tags instead of albums? That might be easier, since it uses existing elements and, theoretically, wouldn't need to add much new designs or interfaces. 🤷‍♂️

And, thinking it through some more, there may be some issues (bugs) coming up with having unlimited "nesting" levels, but I think it would still be nice to have more than one layer of Parent/Child tags, so that I can select one tag and have two or more be applied as a result. Not sure about multiple parents for a child tag, but obviously this idea is intended to have multiple children attached to a parent tag. An example would be to have Captain America automatically add Avengers which would auto add Marvel. Or Flounder adding The Little Mermaid which would add Disney.

Maybe a button could be included to also show images tagged with child tags when selecting a tag from the Tag Menu? Idk. Low priority for me, but thought I'd mention it just in case.

Thanks again for this amazing app and the work and creativity you've put into it.

deckerst commented 9 months ago

Hierarchical tags are tricky.

There are some definitions for them in XMP (e.g. lr:hierarchicalSubject from Lightroom), but not a widely accepted official standard. Editing them (as you mentioned) is also problematic, especially on a mobile device. That's why I decided not to support them:

But your idea of associating a tag to another is interesting. It could be defined as you suggest by defining a parent/child relation. It could also be defined via event hooks: "when I add the tag X, do Y", "when I remove the tag X, do Y", etc.

I'm unlikely to work on it soon (if at all), but I'll keep this issue open as the idea could potentially address other needs.

OkyDooky commented 9 months ago

That's interesting. I didn't know that about XMP. But, the latter paragraph of yours is more what I was thinking: something internal to the app.

I'm interested in what other needs it could address, since my mind is mostly focused on just convenience and speeding up tagging workflow.

Thanks for considering it. I hope it does find its way in, eventually, or that another feature that does something similar. I also hope more people contribute to this project, so that it's not all up to you to code every feature or fix every bug, and since it's getting more popular.

deckerst commented 9 months ago

I also hope more people contribute to this project, so that it's not all up to you to code every feature or fix every bug, and since it's getting more popular.

I explicitly do not accept external code contributions. It is open-source because i value transparency and i want to give back to the public as i have benefited from open-source projects. But i am not making it open-source looking for collaboration. It's a hobby project that I do for fun.

OkyDooky commented 8 months ago

Forgot about that. Thanks for sharing, though.

OkyDooky commented 8 months ago

Actually, thanks for taking requests at all, since that isn't (per se) the point of sharing this project, based on what you wrote.