GNOME Bugzilla – Bug 324540
support arbitrary tags
Last modified: 2018-05-24 11:00:20 UTC
Might be nice to support arbitrary tagging of tracks. Some other GNOME tagging attempts: http://jimmac.musichall.cz/weblog.php/2005/Nov/11#Tags?flav=php http://www.chipx86.com/blog/?p=140
Some ideas here: http://mail.gnome.org/archives/rhythmbox-devel/2005-December/msg00101.html
I'd love to see this
This could be implemented using the mechanism for arbitrary metadata suggested by bug 330259, using the key "catagory:tag-name" and using NULL for the value.
Created attachment 60528 [details] [review] tags support to rhythmdb initial support to rhythmdb to add tags to rhythmdbentry items.
There's still more work to do, but we will need to figure out how to save and load the tag information. I'm thinking of putting it in "tags.xml" or something. The ui bits needs to be discussed. I'll try to see if I can come up with a ui for it. Secondly, optional support to leaftag might be a nice thing. If nautilus is able to tag songs I think rhythmbox should know about it.
*** Bug 348460 has been marked as a duplicate of this bug. ***
Ogg Vorbis Tag support seems to be very basic compared to what can be done (see http://www.gophernet.org/articles/vorbiscomment.html, http://reactor-core.org/ogg-tagging.html and of course http://www.xiph.org/vorbis/doc/v-comment.html). For example I've got remastered edition of Miles Davis' "Kind of Blue" and it is quite reasonable to keep two dates in the comments. The recording date which holds true information for automated playlists because I don't want this tracks to be mixed with 1990' jazz tracks. As well as the re-release date (1997) which... I would like to keep as well. This is only a simple example but more or less it shows what I mean. Another as yet unsupported situation is a track with multiple genres assigned I would like to appear always when I search for tracks of either genre.
Created attachment 83280 [details] [review] core support This patch adds "keywords" for entries to rhythmdb, a RhythmDBKeywordModel (like RhythmDBPropertyModel) and a RhythmDBKeywordView. As proof that it works, I've stuck a KeywordView in RBLibraryBrowser, so you can see the keywords, but clicking on things in it doesn't do anything. You can test it by adding "<keyword>Foo</keyword> lines into entries in your rhythmdb.xml file. RhythmDBKeywordModel is 90% the same as RhythmDBPropertyModel, and the view classes are 99% the same, so we should factor out base classes for these. I'm not sure what a decent UI for this will look like, but having core support is the first step, so people can play with ideas.
Created attachment 83284 [details] [review] add auto playlist support This adds support for automatic playlists to match keywords.
Created attachment 84427 [details] [review] upper-level bits I've committed the low-level (RhythmDB and RhythmDBTree) bits to svn trunk, this patch is the remaining upper-level stuff which still needs improvement.
What needs to most work on this patch? Is it UI goodness or basic functionality still?
1) factoring out a base class for the property/keyword model and view classes. 2) making RhythmDBKeyworkModel have a property (on by default) for whether to only have "user" tags (those that start with "user:") 3) making RBKeywordView strip "user:" from the tags (2) and (3) are to give some namespacing to keywords. So "user tags/keywords/labels/categories/whatever" would be of the form "user:foo", other uses in core would be "rb:namespace-id:foo" and plugins can use "plugin-id:foo".
I'd just like to say that, although I use Rhythmbox as my day-to-day music player nowadays (having switched from a 7-year bad XMMS habit), this particular feature would be the thing that gets me singing RB's praises from the rooftops. I occasionally DJ for friends on the Internet, and when I want to dig up a cool guitar-driven track as a followup I have to mentally thumb through all the artists I have that are guitar-driven. Having the ability to type 'guitar' and pull 'em all up would be, uh, awesome. There are many other really cool things that could be done with this too. So, um, I hope someone figures out a good way to expose this in the UI, because it would be really, really nice to have. (And these sorts of 'folksonomies'--a terrible term, but there you have it--have become, if anything, /more/ ubiquitous since the initial request in 2005.)
*** Bug 504107 has been marked as a duplicate of this bug. ***
This is what I wrote on the other (duplicate) bug: "I recently started sharing my computer with my girlfriend. We don't have one user for each of us (in short) because that's the way she wants it, so we share most of our stuff. A while ago we started merging our photo collections and we decided to do so with F-spot. I tend to be quite selective with my pictures and delete all the ones I don't like, while she keeps tons of them, so I was worried that her pictures would keep me from even finding mine. That was not the case, as I soon found I could just tag the pictures I like as "David's favourites" and the ones she likes as "Susana's favourites". That way I can watch only mine when I'm alone, and we can watch together the ones we BOTH like by looking for "David's" and "Susana's", or even easily delete the pictures neither of us likes by excluding both tags. I was astonished by how powerful the tagging system really was. I would like to be able to do the same with our music. Our taste in music is quite different and most times I don't want to listen to her music if I'm not with her, so basically I'm the one who uses Rhythmbox and she plays her music by dragging the folders to Totem. I would like her to use RB, though, and would like to have it tell the music I like apart from the music SHE likes. Is there any way to let Rhythmbox use tags just like f-spot does? I think it would be very easy to put it into the GUI... just include a "tag" option in the browser, alongside with the artist and album, and a right-click menu option that lets you add a tag." Jonathan recommended using playlists, which kinda solves the problem; I can't ask my girlfriend to manually add all her new albums to her playlists, that would be too cumbersome for her. I created a specific folder for MY albums and one for hers, though, and made one automatic playlist for each route; That seems to work. Still, it's still difficult to add albums we BOTH like, and we can't decide which songs we (individually) don't like and then erase them when we're together. Those things would be SO simple with tagging. As for how to implement it in the UI, we can make it as unobstrusive as we want: adding tags could be done through the right-click menu (one menu entry for "add tag" and one for "remove tag", just like f-spot does) or, if we don't want to clutter the menu, through a field in the properties window. Searching for tags could be even less obstrusive: automatic playlists could point to tags, in a fashion like this: "tag" → "is" / "is not" → (name of the tag) That way I can tag songs or albums I like (David's favourites) and songs my girlfriend likes (Susana's favourites), then make a playlist with my songs ("tag → is → David's"), one with hers ("tag → is → Susana's"), one with the ones we both like to listen when we're together ("tag → is → David's" + "tag → is → Susana's") or one with the ones neither likes and need erasing ("tag → is not → David's" + "tag → is not → Susana's"). She can also tag the songs she likes for her brother's wedding, and Phil can tag his cool guitar tracks, and it would be all nearly invisible to the user who DOESN'T want to use tags. I will try to post some mockups later, see what you think of them.
Created attachment 101165 [details] Right-click menu This is how the tag interface could look if added to the right-click menu. It could be added to the File menu instead, if we don't want to clutter the former.
Created attachment 101166 [details] The properties dialogue Tags could be checked, added and removed through the properties dialogue. Either selected through a drop-down list, or written directly (maybe with autocompletion?)
Created attachment 101167 [details] Retrieving tags through automatic playlists Automatic playlists can be created to find songs that have (or don't have) one or several specific tags. In the mockup we see a playlist including songs I like but my girlfriend doesn't, useful if I want to piss her off.
Created attachment 101936 [details] Rhythmbox UI Mockup with tagging Proposed UI Mockup for source list.
I can see two problems with that: it doesn't allow me to select multiple tags to find the union (or intersection, or any other combination), and it wouldn't work very well with the 50-100 tags I estimate I'd create.
Jonathan, what about my method? It would allow unions and intersections, as you want. Would it work well with the amount of tags you would create? Is there any other potential problem with it?
I don't see a mockup for a tag-based browsing interface amongst any of yours. Enabling the use of tags in automatic playlists is fine, but it's no replacement for a browsing interface.
A tag browsing interface that allows unions and intersections AND feels in place with rhythmbox interface is something I wouldn't know how to do. After all, rhythmbox existing brosing panels (genre, artist, album) do NOT support unions / intersections. How do other apps do it? The only one I know is f-spot, which has this amazing search bar where you can drop tags. Something like that, however, would not fit well in RB's interface. Is there any other app that we can take ideas from? All in all I think both methods should be adopted, which would cater all needs. Let's use a simple tag-browsing pane for the user who just wants to add a song to more than one category and then be able to browse them, and THEN automatic playlists for the user who wants to use unions and intersections. After all, we're already doing that with artists and albums.
What about adding a button "Tag" to the search buttons, then create a syntax with `and', `or' and `not' or with =, + and -. Somehow based on http://banshee-project.org/OnePointEx/Search I would be amazingly cool have auto-completion for tags in that case.
I think this would be very useful because the problem with Genre is that it is one dimensional and not flexible. For example you have a slow Brazilian rock song that you added recently. You could add labels: Slow, Rock, Brazil and New So then you can create a Slow playlist that will look for the label slow. Similarly you can create Brazil, Rock, and New playlists based on labels. You also mix labels to create a variety of smart playlists. Also it will be useful if it was an option in the "Browse" section.
The genre tag accepts only a single value but there can be multiple genre tags. At least ID3 supports this and other tagging schemes likely do though I expect few applications support this use. There's no reason Rhythmbox couldn't use them though. Having a single "tags" field overloaded with possibly unrelated things defeats the purpose of having specific meta-data fields. I would MUCH rather see Rhythmbox be able to handle arbitrary meta-data fields in it's playlist creator. It should be possible to use any defined tag as a criteria and not only those which Rhythmbox happens to know about.
My Comment #24 was a proposal to Comment #22. Here is another: A tag cloud? (Yeah I'm on crack) In search bar: it will search for tags in addition to artists, albums, genres and tracks; and add a Tag Button, so user can restrict only search for tags. In toolbar, adding a button to show/hide tag cloud (which could be not a tag cloud after all) but a list of elements of the form tagname(#tangelements), just like jimmac has in the tag list of his blog: http://jimmac.musichall.cz/log/, without font size changing or things like that, just a placeholder to a big lists of things trying to maximize space. Then a Find: bar like the one on f-spot. Which show the actual tags selection. So when user adds a tags in any search bar or tag-cloud/list. It will be represented there. Just like f-spot. This one could be avoided if we can make sufficient clear in the tag-cloud/lists which tags are being used for criteria. We could make that using the tag-cloud/list only makes unions of sets, not intersections and if you want that kind of power a expression-like language in the search bar could help. In this prposal, one question that I do to myself is: If user is using browser: does she needs/wants the taglist? Hope I get at least some bash for this.
*** Bug 530048 has been marked as a duplicate of this bug. ***
Just want to be added to the CC list for this. I also agree that this would be incredibly powerful for playlist creation. The idea of having a simple syntax for creating joins/unions/whatever is also very cool 'speed|grunge&!metal'. This kind of interface is pretty straighforward, a list of inclusions and exclusions with logical operators in drop down listboxes at the beginning of each line. F-spot's use of tags is pretty nice in this respect.
Created attachment 112655 [details] [review] Improvements to the Python wrappers for keyword functions Some improvements to the Python wrappers. The old wrapper for rhythmdb_entry_keyword_add() wouldn't allow a keyword to be added unless a refstring for it already existed, so I replaced the call to rb_refstring_find() with rb_refstring_new(). Also, added a wrapper to rhythmdb_entry_keywords_get() that returns the list of keywords as a list of Python bytestrings.
Committed, thanks.
Any advances? Thanks.
(In reply to comment #32) > Any advances? Thanks. Add yourself to the CC field; when there are advances, you'll be notified about them.
I'm really of the opinion that we should branch with keyword editing and just play around. Especially when we seem to hit a wall with how exactly to merge this feature. The only way to really move forward is to use it in practice and see what changes can be made. I don't agree it should be in HEAD or the main branch but those interested in seeing tags should have a branch they can play in especially since it's a fairly big feature. sri
*** Bug 583183 has been marked as a duplicate of this bug. ***
Any work done on an import script for last.fm-tags? For Amarok there is something like this: http://www.kde-apps.org/content/show.php?content=48128
An idea would be to write a plugin that adds the UI for keywords. The plugin could offer several different UI layouts (configurable) just to test what looks good and works. If we can experiment a bit with the layouts, we can reduce them to the one that works and implement it properly.
-- GitLab Migration Automatic Message -- This bug has been migrated to GNOME's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.gnome.org/GNOME/rhythmbox/issues/107.