banshee r3291 - in trunk/banshee: . src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio src/Libraries/Lastfm src/Libraries/Lastfm/Lastfm.Data
- From: gburt svn gnome org
- To: svn-commits-list gnome org
- Subject: banshee r3291 - in trunk/banshee: . src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio src/Libraries/Lastfm src/Libraries/Lastfm/Lastfm.Data
- Date: Thu, 21 Feb 2008 01:32:33 +0000 (GMT)
Author: gburt
Date: Thu Feb 21 01:32:33 2008
New Revision: 3291
URL: http://svn.gnome.org/viewvc/banshee?rev=3291&view=rev
Log:
2008-02-20 Gabriel Burt <gabriel burt gmail com>
* src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSourceContents.cs:
If possible, set album art on the lists of tracks. Unfortunately the
Last.fm feed for recently loved songs doesn't include the album name, so
no cover art there.
* src/Libraries/Lastfm/Lastfm.Data/DataEntry.cs: Add new Entry types for
Artist data.
* src/Libraries/Lastfm/Makefile.am:
* src/Libraries/Lastfm/Lastfm.Data/LastfmArtistData.cs: Expose
artist-related data.
Added:
trunk/banshee/src/Libraries/Lastfm/Lastfm.Data/LastfmArtistData.cs
Modified:
trunk/banshee/ChangeLog
trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSourceContents.cs
trunk/banshee/src/Libraries/Lastfm/Lastfm.Data/DataEntry.cs
trunk/banshee/src/Libraries/Lastfm/Makefile.am
Modified: trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSourceContents.cs
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSourceContents.cs (original)
+++ trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSourceContents.cs Thu Feb 21 01:32:33 2008
@@ -8,13 +8,14 @@
using Banshee.Widgets;
using Banshee.Sources;
using Banshee.ServiceStack;
+using Banshee.Collection;
+using Banshee.Collection.Gui;
using Banshee.Gui;
using Banshee.Sources.Gui;
using Banshee.Web;
using Lastfm;
using Lastfm.Data;
-//using ConnectionState = Lastfm.ConnectionState;
namespace Banshee.Lastfm.Radio
{
@@ -140,6 +141,8 @@
protected class NumberedList : TitledList
{
+ protected ArtworkManager artwork_manager = ServiceManager.Get<ArtworkManager> ();
+
protected LastfmSource lastfm;
protected NumberedTileView tile_view;
protected Dictionary<object, RecentTrack> widget_track_map = new Dictionary<object, RecentTrack> ();
@@ -162,6 +165,18 @@
tile.PrimaryText = track.Name;
tile.SecondaryText = track.Artist;
tile.ButtonPressEvent += OnTileActivated;
+
+ // Unfortunately the recently loved list doesn't include what album the song is on
+ if (!String.IsNullOrEmpty (track.Album)) {
+ AlbumInfo album = new AlbumInfo (track.Album);
+ album.ArtistName = track.Artist;
+
+ Gdk.Pixbuf pb = artwork_manager == null ? null : artwork_manager.LookupScale (album.ArtworkId, 40);
+ if (pb != null) {
+ tile.Pixbuf = pb;
+ }
+ }
+
tile_view.AddNumberedWidget (tile);
tile.Show ();
}
Modified: trunk/banshee/src/Libraries/Lastfm/Lastfm.Data/DataEntry.cs
==============================================================================
--- trunk/banshee/src/Libraries/Lastfm/Lastfm.Data/DataEntry.cs (original)
+++ trunk/banshee/src/Libraries/Lastfm/Lastfm.Data/DataEntry.cs Thu Feb 21 01:32:33 2008
@@ -184,4 +184,26 @@
}
}
}
+
+ // Artist entries
+ public class SimilarArtist : NamedEntry
+ {
+ public double Match { get { return Get<double> ("match"); } }
+ public int MatchAsInt { get { return (int) Math.Round (Match); } }
+ }
+
+ public class ArtistFan : Friend
+ {
+ public int Weight { get { return Get<int> ("weight"); } }
+ }
+
+ public class ArtistTopTrack : NamedEntry
+ {
+ public int Reach { get { return Get<int> ("reach"); } }
+ }
+
+ public class ArtistTopAlbum : NamedEntry
+ {
+ public int Reach { get { return Get<int> ("reach"); } }
+ }
}
Added: trunk/banshee/src/Libraries/Lastfm/Lastfm.Data/LastfmArtistData.cs
==============================================================================
--- (empty file)
+++ trunk/banshee/src/Libraries/Lastfm/Lastfm.Data/LastfmArtistData.cs Thu Feb 21 01:32:33 2008
@@ -0,0 +1,96 @@
+//
+// LastfmArtistData.cs
+//
+// Authors:
+// Gabriel Burt <gburt novell com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using System.Collections.Generic;
+
+namespace Lastfm.Data
+{
+ public class LastfmArtistData
+ {
+ protected Dictionary <string, object> cache = new Dictionary <string, object> ();
+
+ protected string name;
+ public string Name {
+ get { return name; }
+ }
+
+ public LastfmArtistData (string name)
+ {
+ this.name = name;
+ }
+
+ protected LastfmData<T> Get<T> (string fragment) where T : DataEntry
+ {
+ return Get<T> (fragment, null);
+ }
+
+ protected LastfmData<T> Get<T> (string fragment, string xpath) where T : DataEntry
+ {
+ if (cache.ContainsKey (fragment)) {
+ return (LastfmData<T>) cache [fragment];
+ }
+
+ LastfmData<T> obj = new LastfmData<T> (String.Format ("artist/{0}/{1}", name, fragment), xpath);
+ cache [fragment] = obj;
+ return obj;
+ }
+
+#region Public Properties
+
+ public LastfmData<SimilarArtist> SimilarArtists {
+ get { return Get<SimilarArtist> ("similar.xml"); }
+ }
+
+ // ?showtracks=1
+ public LastfmData<ArtistFan> Fans {
+ get { return Get<ArtistFan> ("fans.xml"); }
+ }
+
+ public LastfmData<ArtistTopTrack> TopTracks {
+ get { return Get<ArtistTopTrack> ("toptracks.xml"); }
+ }
+
+ public LastfmData<ArtistTopAlbum> TopAlbums {
+ get { return Get<ArtistTopAlbum> ("topalbums.xml"); }
+ }
+
+ public LastfmData<TopTag> TopTags {
+ get { return Get<TopTag> ("toptags.xml"); }
+ }
+
+ public LastfmData<EventEntry> CurrentEvents {
+ get { return Get<EventEntry> ("events.rss"); }
+ }
+
+#endregion
+
+ }
+}
+
Modified: trunk/banshee/src/Libraries/Lastfm/Makefile.am
==============================================================================
--- trunk/banshee/src/Libraries/Lastfm/Makefile.am (original)
+++ trunk/banshee/src/Libraries/Lastfm/Makefile.am Thu Feb 21 01:32:33 2008
@@ -10,6 +10,7 @@
Lastfm.Data/DataEntry.cs \
Lastfm.Data/DataEntryCollection.cs \
Lastfm.Data/LastfmData.cs \
+ Lastfm.Data/LastfmArtistData.cs \
Lastfm.Data/LastfmUserData.cs
include $(top_srcdir)/build/build.mk
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]