This is supposed to be published last week, but…
Last week, I have worked on the advanced search branch of Music. The branch just got merged last Monday, and will be released along Music 3.13.2 on Monday next week.
Update: Got confused on the dates, it should be next, next week.
The first thing I’ve worked on are the queries for the search results used for Tracker, which actually happened last month. I’ve done some rebasing of the search branch as stated in one of my earlier posts.
Then last week, I’ve worked on the Search view. At first, it can only show songs, then you could play them by selecting them in the search results.
Enabling selection mode will allow you to add the selected items from the search results to one of your playlists.
Next that I’ve worked on are the results for Albums. Selecting an album in the results will show its contents, just like the Albums view. Then added selection to albums.
Searching in Web Services
I skipped Artists for now, and started working on making search in web services work. The dropdown for selecting sources is already in the branch, so I just did some cleanup to filter out some sources like Bookmarks which are not used by Music, and fixed some bugs preventing the search by sources to work.
At first, it could only show songs since grilo doesn’t have objects for albums and artists. Music actually creates them as containers using SPARQL queries when using Tracker. Unfortunately, we can’t use queries in sources other than Tracker for searching since each source has its own type of queries – which is simply inflexible and hard to maintain, and not all sources support queries anyway.
Seems like currently there are only two web services we could use for searching music in grilo: Jamendo and Magnatune. I’ve only tested Jamendo, for some reason Magnatune don’t return any results in my computer even though it works in my mentor’s computer. Maybe it’s not available in the Philippines, and I don’t have money for subscription. (Tried again today and it worked, weird.)
Unfortunately, you could only play them – adding them to playlists will produce a crash. Playlists view, currently, could only show local files. Maybe we could do some importing to the user’s Music directory, or do something so that grilo accepts URLs with a source (we could only store the URIs, so we don’t know what source the playlist items came from).
If you only search in local files, you could select which field to search in – Artist Name, Album Name, Track Title, or all of them. Made possible by queries.
Then, I went ahead on making Artists show up in the results. This one took most of my time because I have to allow selection of songs from the artist’s albums. Selection on Artists view happens in the sidebar, by artists instead of by songs, but we can’t show it here since it is supposed to show only one artist. The design is not clear on this, and the designers are not around either because of the DX Hackfest, so I just copied how selection in albums work – selecting by songs.
Apart from the design issues, I also have to add lots of callbacks for loading the songs of each album of each artist selected by the user when adding them to a playlist.
The media art shown is from the first album found for each artist.
Afterwards, I’ve changed the code so that it would create dummy containers for albums and artists for results from web services. Selecting an album or artist could only show songs included in the search result though. I’m still checking if showing all of songs with the same album/artist is possible with grilo without using queries.
I’ll be working on rewriting parts of Playlists view so that it stores playlists into Tracker instead of using files, rewriting the Playlists view so there is a separate widget for showing playlists, writing queries for searching in playlists, and making those results show up in the Search view.
I’ve created another Fedora COPR repository for GSoC here, but it is currently useless since the advanced search branch was already merged to master. Any future updates will be there though.
So, that’s all for my first report on my GSoC 2014 project. I’ve taken a break for now because my final exam is near and to catch some sleep (plus my anime watchlist is getting longer hehe…). I got so busy last week that I don’t notice how much time passes by – I usually start working at 6PM and sometimes sleep around 4AM.
Update: You currently need GNOME 3.12 to use gnome-music because of a bug I introduced. I didn’t notice that I used a function that is only available in GTK+ 3.12. This will be fixed soon.