full listings » Playback, Web Browser


Tag Cloud Generator araz

Adding tags to media items and using the tag cloud to navigate through your music


Tag Cloud Generator



Description

Helps you to tag your music (manually or automatically from last.fm artist tags) and use the tag cloud to browse your music library.




Release Notes

maxVersion changed to 1.4.0a




Images

(1)
  • Screenshot-songbird_thumbnail
 

Comments

(40)


GeekShadow
GeekShadow

You need to bump minVersion to 1.2.0 and maxVersion to 1.3.0a, so people can install it !

7 months ago
araz
araz

sorry for the inconvenience. minVersion & maxVersion are fixed now.

7 months ago
Stuffy
Stuffy

Great add-on! I've been waiting for something like this.

Two questions/suggestions:
Would it be able to fetch tags only from a specific (my own!) last.fm account?
I think it would be better to have the tagging form in a separate preferences window and just display the tag cloud in the media view.

Cheers!

7 months ago
atreiu
atreiu

A screenshot wouldn't be bad, too... took me 5min to figure out, that it's a Media-View ;)

Very good start! I love the tag-cloud and how it behaves. :-)

Also I would like to know, where do you save the tags?

It's the first release, so I don't know if you already like suggestions, but I do it anyway: ;)
1. The Editor-Interface is not very pretty & functional. (It doesn't work with smaller window at all, doesn't respect the colors of the feather, lags resizing functionality etc.). Would you allow me, to contribute a patch? If yes, I would try to group with Murphy, a guy who does fantastic interface design, and send you a new media-page.xul.
2. If I fetch tags from last.fm, the "tags on selected item"-field is not updated automatically. I have to select another song and switch back to the first one, to see the tags. Same thing, if I remove tags (they don't get removed from the list, i have to switch away and back again).

Thanks for your work, this is really nice feature, if been long waiting for. Keep up the good work! :-)

/(° v °)/=@

7 months ago
atreiu
atreiu

PS: I add your Media-View to my Pane Buttons Addon as soon as I can, of course ;)

7 months ago
brudaswen
brudaswen

The look and feel of this add-on could be improved - but I know, a programmer is not a good designer. ;) And it is of course the first version.

Nevertheless, the idea behind this add-on is ingenious. I hope you keep on working on this! :)

7 months ago
araz
araz

to Stuffy: thanks. at first I tried that (tagging forms in a separate window) then changed it like this, now I think its better to put them on a separate panel as more actions are added.
great idea on fetching a specific account tags. I'll work on it.

7 months ago
araz
araz

to atreiu: sure I'd like to get suggestion, thanks for your care. tags are saved as media items property (comma separated string) and are stored in songbird's main library db in "resource_properties" table along with other properties (property name is: "http://songbirdnest.com/tag-cloud#tags").
1. you're right about the interface, I'm not satisfied with that too. UI was the hardest point for me ever. I would be grateful for your help. don't hesitate to inform me if you needed more info or I could be of any help.
2. that's a bug I've missed. I'll fix that soon.

cheers

7 months ago
boosh
boosh

awesome. suggestion: could you make a progress bar of some sorts.. cause when "selecting all your music" and then "Adding tags" from last.fm (when you have a lot of music) takes a looong time to gather them; freezing a lot during the fetching... so yaaa.. that would be swell... Thanks for the add-on!

7 months ago
brudaswen
brudaswen

Just two short questions to the functionality:

1. What exactly is the option "Min tag count" good for?
2. "Remove all tags" removes all tags of
 (a) the selected song(s) or
 (b) of all songs in the list or
 (c) of all songs in the library or
 (d) something else?

7 months ago
araz
araz

to brudaswen:
1) when fetching tags from last.fm, there are so many tags with low counts that might be irrelevant. setting the min tag count will cause the tags with lower counts not to be added.
2) it will remove all tags from all songs in the library

cheers

7 months ago
araz
araz

to boosh: thanks for that. I'm working on the ui, trying to make a better look. the progress bar is a good idea I haven't thought about. I'll consider that in the new version.

7 months ago
ihavnoclue
ihavnoclue

Is there a way to have it get the tags from somewhere instead of me having to manually tag all of my songs?
Thanks

7 months ago
araz
araz

to ihavnoclue: like what?

7 months ago
Rolle
Rolle

Really too wide for my taste. It could be nice to be able to import tags from last.fm, or from id-tags. It's pain to add tags to thousand and thousands of songs.

7 months ago
MSex
MSex

A very interesting extension! It can be quite useful.

I had a problem with the "Remove All" button (sometimes it does nothing, sometimes it works). And with the "Remove" Button when there is only one tag in the song (I get songs with no tags but with a checkbox and the remove button).

I wonder if this comment section is the best way to report problems.

7 months ago
MSex
MSex

When I select a tag, the list of music shows not only the music with this tag, but also music with the the text of the tag in the title, or in other metadata.

7 months ago
araz
araz

to MSex:
Yeah I know about this two bugs. But I donno how can I fix them. Please help me if anyone knew how they could be fixed.
The one with "Remove All" button is because I use a DatabaseQuery to remove all tags, and it seems like it takes some time for the query to be committed on the database. I refresh the MediaPage right after executing the query, but sometimes its not committed then. Refreshing the MediaPage after a while you'll see that all the tags are removed.
For the filter applied on the library when selecting a tag, I should use a search filter. There is the default search filter in the filters that I can not remove, and can't add another search filter either. So I have to append my search to that. And the default search filter searches all properties of songs.

7 months ago
Seb
Seb

I use it but he don't work. I try to fetch tags from songs but tag's don't appear...
Is that a bug ?

7 months ago
araz
araz

how did you tried fetching tags? no errors or sth? did you checked fetching from your own tags checkbox? if so, are you sure you've tagged that artist before? give me some more details so I can find whats going wrong...

7 months ago
Seb
Seb

There's no problem. Excuse me...

7 months ago
MSex
MSex

I tried but could not find a solution to the search all field problem (see my other post). I found another related problem. If you select some tags and then make a search, the tag selection is lost.

I think that the appendSearch is not the ideal method to do the filtering, but the appendFilter is not any better because it only matches the exact text in http://songbirdnest.com/tag-cloud#tags. Unfortunately I don't know the API well enough to offer a solution :-( nor to say that there is no good solution.

So i propose a different approach: what about creating a playlist for each tag?

7 months ago
araz
araz

thanks MSex. I don't know much about the api too, and there is not much documents there. I'll give it a try to see what happens.

cheers

7 months ago
MSex
MSex

Hi, I'm back again :-) this time with good news... I just found a solution to the filter problem.
 I will post here the code, then in the next post I'll make some remarks.


var TagFilter = {
    selectedTags : null,
    selectedGuid : null,


    filterByTags : function(mediaListView, selTags) {
        if (!window.SBProperties) Components.utils.import("resource://app/jsmodules/sbProperties.jsm");


        if (selTags.length < 1) {
            mediaListView.filterConstraint = null;
            return;
        }


        this.selectedTags = selTags;
        mediaListView.mediaList.enumerateAllItems(this);
        var builder = Components.classes["@songbirdnest.com/Songbird/Library/ConstraintBuilder;1"].createInstance(Components.interfaces.sbILibraryConstraintBuilder);


        if (this.selectedGuid.length > 0) {
            for (var i=0; i < this.selectedGuid.length; i++) {
                builder.include(SBProperties.GUID, this.selectedGuid[i]);
            }
        } else {
            builder.include(SBProperties.GUID, "a"); // should make an empty list
        }
        mediaListView.filterConstraint = builder.get();
    },


    onEnumerationBegin: function(list) {
        this.selectedGuid = new Array();
    },


    onEnumeratedItem: function(list, item) {
        if (item.getProperty(SBProperties.isList) == 1) return;
        if (this.selectedTags.length < 1) return;


        var tags = item.getProperty('http://songbirdnest.com/tag-cloud#tags');
        if (tags != null) {
            var tagsArray = tags.split(",");
            if (tagsArray.length < 1) return;


            for (var i = 0; i < tagsArray.length; i++) {
                tagsArray[i] = tagsArray[i].trim();
            }
            for (var i = 0; i < this.selectedTags.length; i++) {
                if (! this.contains(tagsArray, this.selectedTags[i].trim())) return;
            }
            this.selectedGuid.push(item.guid);
        }
    },


    onEnumerationEnd: function(list) {
    },


    contains : function(list, item) {
        for (var i = 0; i < list.length; i++) {
            if (list[i] == item) {
                return true;
            }
        }
        return false;
    }
}

6 months ago
MSex
MSex

Well, the code i just posted do the filtering. To integrate in with your code just call:

TagFilter.filterByTags(this._mediaListView, this._selectedTags);

from the filterSelectedTags function

In the onUnload function of the media-page add this lines:

            if (this._mediaListView)
this._mediaListView.filterConstraint = null;

and all should work.

6 months ago
araz
araz

thanks MSex... just checked here and found your comments... I'll fix it as soon as possible

cheers

6 months ago
Kuba
Kuba

Having Your add-on in mind I posted an idea:

http://getsatisfaction.com/songbird/topics/an_idea_how_multiple_tagging_might_should_look_like

Hope You will like that direction and it might somewhat help You with further development of TagCloudGenerator.

And one more thing. Where can I find a file where multiple tags are stored? Is there any way to edit them "in file" cause I have some songs that have tag "X" on a cloud but don't have tag "X" in cloud controls. Tag "X" is inappropriate fot that songs but I cant remove it (cause it is not there in controls). :-(

6 months ago
Kuba
Kuba

Ok, I solved it for now. So at least in this version avoid using "spaces" in two-or-more-words tags.
Other thing is that pretty often I have to do little trick to "force refresh" tag cloud controls. The trick is change right pane and revert it back to tag cloud controls. Bit bothering. Anyways it's still the best multiple tagging add-on up to date.

6 months ago
MSex
MSex

Hi, back again.

This "force refresh" in the Kuba's post happens here me too.
Being more specific for me it happens when I change the focus of the media-pane. For exemple, if i am editing tags in my main library, then click in any playlist, the Tag Cloud Controls display panel get lost. even if a go back to library it don't come back to sync again.

I think its because the _mediaListView of the tag cloud control dont change when the focus of the main window is changed. Or the new media view after I change the focus dont call the onSelectionChanged function. Or something like that.

6 months ago
MSex
MSex

By the way,

under what license this add-on is released?

Do you intent to put the source code in some online repository like google code or something like that?

6 months ago
DivinityCycle
DivinityCycle

I'm not sure why but I get a "search failed 404" when attempting to tag Björk (with the umlaut). "Bjork" (no umlaut) works. Maybe special characters aren't URL-encoded properly or something?

5 months ago
DivinityCycle
DivinityCycle

Same issue shows up when I try to tag "Zoë Poledouris". If I switch it to "Zoe Poledouris" then it doesn't complain. Its gotta be something in how special characters are handled...

5 months ago
Vaer
Vaer

Great addon! :)

There are a few things that I think could make it better.

Firstly, It would be good if the tag cloud was cached. This would mean that it wouldn't need to be regenerated every time you wanted to look at it. Right now have 18k tracks in my library and it takes a long time to generate the tag cloud.

When I tagged my tracks from last.fm it took ages, which I would expect it to. After all the tracks were tagged there were a number of dialog boxes which were blank, they didn't have any text on them and I couldn't close them. I needed to restart songbird because I couldn't get rid of them.

Another thing which would be good is if you could specify a limit on what appears in the tag cloud to "only tags which appear more than n times" (n being a preference). Because I have so many tracks I also have loads of tags which pushes everything down and the tag cloud takes up most of the screen.

It'd be awesome if these things could be added :)

Is the code under an open license?

5 months ago
araz
araz

Thanks all, and excuse me for I've been so busy lately I couldn't check here or do anything on this. Thanks for your great ideas and help.
I've created a project for this add-on on sourceforge.net ( https://sourceforge.net/projects/songbird-tag-cl/ ) and I've put the source codes there and I'll update it on further developments. I do appreciate any kind of help on the project. Please let me know if you like to help with the development and I'll add you as a developer so you can submit your changes to the project.
I'll do my best to consider all these good ideas and submit a new update soon. I'll try to fix these issues in the new update:

- the filter problem
- force refresh problem
- the bug with special characters
- avoiding spaces

And I found these ideas so attractive but I think I need some time to find how they could be implemented please share your ideas on them:

- caching the tag cloud
- limit on shown tags in the cloud
- multiple tagging

Cheers

5 months ago
araz
araz

I had to put selected items tags under the tag-cloud in mediaPage to fix the force refresh bug. I was trying to add onSelectionChange listener to the meiaListView selection in the sidebar script like this:

var wMediator = Cc["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator);
Cu.import("resource://app/jsmodules/sbProperties.jsm");
var mainWindow = wMediator.getMostRecentWindow("Songbird:Main");
var tabBrowser = mainWindow.gTabBrowser;
var mediaListView = tabBrowser.currentMediaListView;
        tabBrowser.currentMediaListView.selection.addListener(this);

but the problem is that the sidebar is loaded faster that the main page so when it was loaded for the first time there is no tabBrowser there to get objects from. So I tried to put the listener on the mediaPage and update the sidebar when selection changes but this didn't work either cause I couldn't find a way to access the sidebar panel object in mediaPage. The final solution I could think of was to put the selected items tags box on mediaPage so it can be updated right there.
After all I'm happy with the result. :) I think it looks better now.

5 months ago
klint
klint

Hi araz
thanks for this update! You extension is a very nice and useful one.
would you mind updating the max version to make it compatible with 1.3.1 at least (may be also 1.4!!)
Thanks

5 months ago
taojack
taojack

Is this possible to migrate my own tag from one computer to another? I try backing up my songbird profile but it looks like the tag data is not stored in the profile. I would really appreciate if someone can tell me how to do it if there is a way.

Thanks!

3 months ago
tralston
tralston

love the addon! So I thought of a way that would really help boost the compatibility with iTunes. In iTunes I have smart playlists set up where they contain songs with certain tags. Since iTunes doesn't have a "tag" field, I was thinking if maybe functionality could be added to this addon: when I add a tag to a particular track in songbird, instead of just adding it to the internal database, it also writes the tag to the mp3 tag under say "Grouping" (I don't use that for anything else, and iTunes recognizes it). Too hard? Are you willing to open-source your plugin?

2 months ago
araz
araz

Sorry for I've been so busy last days I couldn't check out your comments on the plugin. I'll give it a try to add features requested here but it may take some time. The project is open source. Here you can find source codes: https://sourceforge.net/projects/songbird-tag-cl/ I'd be happy to apply any features you might add to the plugin.

about 1 month ago
HonoredMule
HonoredMule

I would really love to have a tagging extension that adds a tag list to the filter pane. Tag clouds have extremely limited usefulness, but what I really need is a many-to-many alternative to the insufficient and outdated one-to-many genre classification system. Tags can provide exactly that, but they need to work in the filter pane just like genres, with inclusive match-any selection (and perhaps for other use cases, an additional alternate pane that offers exclusive match-all selection).

I don't know anything about extension development, but, I will look at the code and APIs myself if I get a chance before the holiday season is over.

about 1 month ago



Log in to Post a Comment


Download
Statistics
Downloads: 6,054

Average Rating:
3 out of 5  based on 13 ratings

Images: 1

Comments: 40

Last Updated: 5 months ago
Details
Name: Tag Cloud Generator

Author: araz

Version: 1.2.0.1 version history

Categories:


Log in to Add a Tag
Share
Embed:

Share: