After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 324540 - support arbitrary tags
support arbitrary tags
Status: RESOLVED OBSOLETE
Product: rhythmbox
Classification: Other
Component: general
HEAD
Other Linux
: Normal enhancement
: ---
Assigned To: RhythmBox Maintainers
RhythmBox Maintainers
: 348460 504107 530048 583183 (view as bug list)
Depends on: 330259
Blocks:
 
 
Reported: 2005-12-19 21:07 UTC by William Jon McCann
Modified: 2018-05-24 11:00 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
tags support to rhythmdb (2.99 KB, patch)
2006-03-03 05:34 UTC, Sri Ramkrishna
none Details | Review
core support (100.84 KB, patch)
2007-02-25 00:11 UTC, James "Doc" Livingston
none Details | Review
add auto playlist support (102.10 KB, patch)
2007-02-25 01:06 UTC, James "Doc" Livingston
none Details | Review
upper-level bits (73.63 KB, patch)
2007-03-12 13:05 UTC, James "Doc" Livingston
none Details | Review
Right-click menu (74.19 KB, image/jpeg)
2007-12-18 09:55 UTC, David Prieto
  Details
The properties dialogue (24.82 KB, image/jpeg)
2007-12-18 10:05 UTC, David Prieto
  Details
Retrieving tags through automatic playlists (48.48 KB, image/jpeg)
2007-12-18 10:26 UTC, David Prieto
  Details
Rhythmbox UI Mockup with tagging (108.00 KB, image/png)
2008-01-01 11:48 UTC, Daniel Morrison
  Details
Improvements to the Python wrappers for keyword functions (2.16 KB, patch)
2008-06-13 02:10 UTC, John Millikin
committed Details | Review

Description William Jon McCann 2005-12-19 21:07:55 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
Comment 1 William Jon McCann 2005-12-19 21:08:46 UTC
Some ideas here:
http://mail.gnome.org/archives/rhythmbox-devel/2005-December/msg00101.html
Comment 2 Hidde Brugmans 2005-12-28 23:01:21 UTC
I'd love to see this
Comment 3 James "Doc" Livingston 2006-02-07 12:05:06 UTC
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.
Comment 4 Sri Ramkrishna 2006-03-03 05:34:15 UTC
Created attachment 60528 [details] [review]
tags support to rhythmdb

initial support to rhythmdb to add tags to rhythmdbentry items.
Comment 5 Sri Ramkrishna 2006-03-03 05:36:10 UTC
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.
Comment 6 James "Doc" Livingston 2006-07-24 02:13:15 UTC
*** Bug 348460 has been marked as a duplicate of this bug. ***
Comment 7 Łukasz Stelmach 2006-08-28 23:34:35 UTC
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.
Comment 8 James "Doc" Livingston 2007-02-25 00:11:43 UTC
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.
Comment 9 James "Doc" Livingston 2007-02-25 01:06:54 UTC
Created attachment 83284 [details] [review]
add auto playlist support

This adds support for automatic playlists to match keywords.
Comment 10 James "Doc" Livingston 2007-03-12 13:05:06 UTC
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.
Comment 11 Alex Lancaster 2007-03-13 08:16:21 UTC
What needs to most work on this patch?  Is it UI goodness or basic functionality still?
Comment 12 James "Doc" Livingston 2007-03-13 08:51:34 UTC
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".
Comment 13 Phil Bordelon 2007-11-15 23:16:52 UTC
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.)
Comment 14 Jonathan Matthew 2007-12-17 21:35:34 UTC
*** Bug 504107 has been marked as a duplicate of this bug. ***
Comment 15 David Prieto 2007-12-18 09:21:54 UTC
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.
Comment 16 David Prieto 2007-12-18 09:55:50 UTC
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.
Comment 17 David Prieto 2007-12-18 10:05:56 UTC
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?)
Comment 18 David Prieto 2007-12-18 10:26:51 UTC
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.
Comment 19 Daniel Morrison 2008-01-01 11:48:31 UTC
Created attachment 101936 [details]
Rhythmbox UI Mockup with tagging

Proposed UI Mockup for source list.
Comment 20 Jonathan Matthew 2008-01-02 13:47:50 UTC
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.
Comment 21 David Prieto 2008-01-02 14:12:05 UTC
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?
Comment 22 Jonathan Matthew 2008-01-03 03:56:05 UTC
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.
Comment 23 David Prieto 2008-01-03 10:41:51 UTC
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.
Comment 24 Edgar Luna 2008-03-21 23:13:49 UTC
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.
Comment 25 pt3 2008-03-22 18:54:52 UTC
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.

Comment 26 beerfan 2008-03-29 22:06:02 UTC
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.
Comment 27 Edgar Luna 2008-04-13 16:51:49 UTC
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.
Comment 28 Jonathan Matthew 2008-04-27 01:23:26 UTC
*** Bug 530048 has been marked as a duplicate of this bug. ***
Comment 29 Steeve McCauley 2008-06-09 14:40:41 UTC
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.
Comment 30 John Millikin 2008-06-13 02:10:40 UTC
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.
Comment 31 Jonathan Matthew 2008-06-15 10:11:38 UTC
Committed, thanks.
Comment 32 David Prieto 2008-08-17 00:31:29 UTC
Any advances? Thanks.
Comment 33 Andrew Conkling 2008-08-17 19:00:21 UTC
(In reply to comment #32)
> Any advances? Thanks.

Add yourself to the CC field; when there are advances, you'll be notified about them.
Comment 34 Sri Ramkrishna 2008-08-18 17:23:14 UTC
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
Comment 35 Jonathan Matthew 2009-05-19 09:36:13 UTC
*** Bug 583183 has been marked as a duplicate of this bug. ***
Comment 36 jaapkroes 2009-05-19 10:34:01 UTC
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
Comment 37 Thorsten Sick 2009-06-11 07:42:00 UTC
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.
Comment 38 GNOME Infrastructure Team 2018-05-24 11:00:20 UTC
-- 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.