summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Georg <mail@jensge.org>2014-11-11 22:23:29 +0100
committerJens Georg <mail@jensge.org>2014-11-11 22:23:29 +0100
commit5cb45ee45237ba5993636fc76192584ac51256a6 (patch)
tree8922946ed9765e9b5743fc7a9406010c9b4b76a3
parent43659d5ef2fc96e8e42bfb8364169f4f1758b04f (diff)
downloadrygel-wip/739692.tar.gz
server,media-export: Lookup media art for videoswip/739692
Signed-off-by: Jens Georg <mail@jensge.org>
-rw-r--r--src/librygel-server/rygel-media-art-store.vala7
-rw-r--r--src/librygel-server/rygel-video-item.vala27
-rw-r--r--src/plugins/media-export/rygel-media-export-media-cache.vala5
3 files changed, 37 insertions, 2 deletions
diff --git a/src/librygel-server/rygel-media-art-store.vala b/src/librygel-server/rygel-media-art-store.vala
index 3f2f35b4..338012dc 100644
--- a/src/librygel-server/rygel-media-art-store.vala
+++ b/src/librygel-server/rygel-media-art-store.vala
@@ -57,14 +57,17 @@ public class Rygel.MediaArtStore : GLib.Object {
return media_art_store;
}
- public Thumbnail? lookup_media_art (MusicItem item) throws Error {
+ public Thumbnail? lookup_media_art (MediaItem item) throws Error {
File file = null;
foreach (var type in MediaArtStore.types) {
MediaArt.get_file (item.artist,
- type == "album" ? item.album : item.title,
+ (type == "album" && item is MusicItem) ?
+ (item as MusicItem).album : item.title,
type,
out file);
+ message ("Trying to find file for type %s and %s -> %s",
+ item.title, type, file != null ? file.get_uri () : "None");
if (file != null && file.query_exists (null)) {
break;
diff --git a/src/librygel-server/rygel-video-item.vala b/src/librygel-server/rygel-video-item.vala
index 40bb4649..52dfbf50 100644
--- a/src/librygel-server/rygel-video-item.vala
+++ b/src/librygel-server/rygel-video-item.vala
@@ -61,6 +61,10 @@ public class Rygel.VideoItem : AudioItem, VisualItem {
*/
public ArrayList<Thumbnail> thumbnails { get; protected set; }
+ /// Media art for the video (poster etc.)
+ public Thumbnail media_art { get; protected set; }
+
+ /// Subtitles associated with this video
public ArrayList<Subtitle> subtitles { get; protected set; }
public VideoItem (string id,
@@ -223,4 +227,27 @@ public class Rygel.VideoItem : AudioItem, VisualItem {
this.add_thumbnail_proxy_resources (server, didl_item);
}
}
+
+ public void lookup_media_art () {
+ if (this.media_art != null) {
+ return;
+ }
+
+ var media_art_store = MediaArtStore.get_default ();
+ if (media_art_store == null) {
+ return;
+ }
+
+ try {
+ this.media_art = media_art_store.lookup_media_art (this);
+
+ // Add media art as first thumbnail until we get albumArt support
+ // for non-music items
+ if (this.media_art != null) {
+ this.thumbnails.insert (0, this.media_art);
+ }
+ } catch (Error error) {
+ debug ("Failed to look up album art: %s", error.message);
+ };
+ }
}
diff --git a/src/plugins/media-export/rygel-media-export-media-cache.vala b/src/plugins/media-export/rygel-media-export-media-cache.vala
index 3221e615..f37bb7b5 100644
--- a/src/plugins/media-export/rygel-media-export-media-cache.vala
+++ b/src/plugins/media-export/rygel-media-export-media-cache.vala
@@ -961,6 +961,11 @@ public class Rygel.MediaExport.MediaCache : Object {
visual_item.height = statement.column_int (DetailColumn.HEIGHT);
visual_item.color_depth = statement.column_int
(DetailColumn.COLOR_DEPTH);
+ if (item is VideoItem) {
+ var video_item = item as VideoItem;
+
+ video_item.lookup_media_art ();
+ }
}
}