[rygel] media-export: Use display_name as fall-back title
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rygel] media-export: Use display_name as fall-back title
- Date: Tue, 12 Jun 2012 20:55:21 +0000 (UTC)
commit cad3c73008d656afe6c23b31bad73d36c645eca6
Author: Jens Georg <mail jensge org>
Date: Tue Jun 12 22:47:03 2012 +0200
media-export: Use display_name as fall-back title
Prevent that invalid or legacy encoding of the filename is imported into
the DIDLLite data and breaks XML validity.
https://bugzilla.gnome.org/show_bug.cgi?id=677959
.../rygel-media-export-harvesting-task.vala | 12 +---
.../media-export/rygel-media-export-item.vala | 74 ++++++++-----------
.../rygel-media-export-metadata-extractor.vala | 19 ++----
3 files changed, 39 insertions(+), 66 deletions(-)
---
diff --git a/src/plugins/media-export/rygel-media-export-harvesting-task.vala b/src/plugins/media-export/rygel-media-export-harvesting-task.vala
index 8b2f496..27a9dc1 100644
--- a/src/plugins/media-export/rygel-media-export-harvesting-task.vala
+++ b/src/plugins/media-export/rygel-media-export-harvesting-task.vala
@@ -284,9 +284,7 @@ public class Rygel.MediaExport.HarvestingTask : Rygel.StateMachine,
private void on_extracted_cb (File file,
GUPnP.DLNAInformation? dlna,
- string mime,
- uint64 size,
- uint64 mtime) {
+ FileInfo file_info) {
if (this.cancellable.is_cancelled ()) {
this.completed ();
}
@@ -302,16 +300,12 @@ public class Rygel.MediaExport.HarvestingTask : Rygel.StateMachine,
if (dlna == null) {
item = ItemFactory.create_simple (this.containers.peek_head (),
file,
- mime,
- size,
- mtime);
+ file_info);
} else {
item = ItemFactory.create_from_info (this.containers.peek_head (),
file,
dlna,
- mime,
- size,
- mtime);
+ file_info);
}
if (item != null) {
diff --git a/src/plugins/media-export/rygel-media-export-item.vala b/src/plugins/media-export/rygel-media-export-item.vala
index da2354d..cc775b5 100644
--- a/src/plugins/media-export/rygel-media-export-item.vala
+++ b/src/plugins/media-export/rygel-media-export-item.vala
@@ -30,11 +30,10 @@ using Gst;
namespace Rygel.MediaExport.ItemFactory {
public static MediaItem create_simple (MediaContainer parent,
File file,
- string mime,
- uint64 size,
- uint64 mtime) {
- var title = file.get_basename ();
+ FileInfo info) {
+ var title = info.get_display_name ();
MediaItem item;
+ var mime = ContentType.get_mime_type (info.get_content_type ());
if (mime.has_prefix ("video/")) {
item = new VideoItem (MediaCache.get_id (file), parent, title);
@@ -45,19 +44,19 @@ namespace Rygel.MediaExport.ItemFactory {
}
item.mime_type = mime;
- item.size = (int64) size;
- item.modified = mtime;
+ item.size = (int64) info.get_size ();
+ item.modified = info.get_attribute_uint64
+ (FileAttribute.TIME_MODIFIED);
item.add_uri (file.get_uri ());
return item;
}
- public static MediaItem? create_from_info (MediaContainer parent,
- File file,
- GUPnP.DLNAInformation dlna_info,
- string mime,
- uint64 size,
- uint64 mtime) {
+ public static MediaItem? create_from_info
+ (MediaContainer parent,
+ File file,
+ GUPnP.DLNAInformation dlna_info,
+ FileInfo file_info) {
MediaItem item;
string id = MediaCache.get_id (file);
GLib.List<DiscovererAudioInfo> audio_streams;
@@ -80,9 +79,7 @@ namespace Rygel.MediaExport.ItemFactory {
file,
dlna_info,
video_streams.data,
- mime,
- size,
- mtime);
+ file_info);
} else if (video_streams != null) {
item = new VideoItem (id, parent, "");
@@ -96,18 +93,14 @@ namespace Rygel.MediaExport.ItemFactory {
dlna_info,
video_streams.data,
audio_info,
- mime,
- size,
- mtime);
+ file_info);
} else if (audio_streams != null) {
item = new MusicItem (id, parent, "");
return fill_music_item (item as MusicItem,
file,
dlna_info,
audio_streams.data,
- mime,
- size,
- mtime);
+ file_info);
} else {
return null;
}
@@ -135,15 +128,13 @@ namespace Rygel.MediaExport.ItemFactory {
private static MediaItem fill_video_item (VideoItem item,
- File file,
+ File file,
DLNAInformation dlna_info,
DiscovererVideoInfo video_info,
DiscovererAudioInfo? audio_info,
- string mime,
- uint64 size,
- uint64 mtime) {
+ FileInfo file_info) {
fill_audio_item (item as AudioItem, dlna_info, audio_info);
- fill_media_item (item, file, dlna_info, mime, size, mtime);
+ fill_media_item (item, file, dlna_info, file_info);
item.width = (int) video_info.get_width ();
item.height = (int) video_info.get_height ();
@@ -156,10 +147,8 @@ namespace Rygel.MediaExport.ItemFactory {
File file,
DLNAInformation dlna_info,
DiscovererVideoInfo video_info,
- string mime,
- uint64 size,
- uint64 mtime) {
- fill_media_item (item, file, dlna_info, mime, size, mtime);
+ FileInfo file_info) {
+ fill_media_item (item, file, dlna_info, file_info);
item.width = (int) video_info.get_width ();
item.height = (int) video_info.get_height ();
@@ -172,11 +161,9 @@ namespace Rygel.MediaExport.ItemFactory {
File file,
DLNAInformation dlna_info,
DiscovererAudioInfo? audio_info,
- string mime,
- uint64 size,
- uint64 mtime) {
+ FileInfo file_info) {
fill_audio_item (item as AudioItem, dlna_info, audio_info);
- fill_media_item (item, file, dlna_info, mime, size, mtime);
+ fill_media_item (item, file, dlna_info, file_info);
if (audio_info != null) {
if (audio_info.get_tags () != null) {
@@ -218,16 +205,14 @@ namespace Rygel.MediaExport.ItemFactory {
}
private static void fill_media_item (MediaItem item,
- File file,
- DLNAInformation dlna_info,
- string mime,
- uint64 size,
- uint64 mtime) {
+ File file,
+ DLNAInformation dlna_info,
+ FileInfo file_info) {
string title = null;
if (dlna_info.info.get_tags () == null ||
!dlna_info.info.get_tags ().get_string (TAG_TITLE, out title)) {
- title = file.get_basename ();
+ title = file_info.get_display_name ();
}
item.title = title;
@@ -242,19 +227,22 @@ namespace Rygel.MediaExport.ItemFactory {
}
// use mtime if no time tag was available
+ var mtime = file_info.get_attribute_uint64
+ (FileAttribute.TIME_MODIFIED);
+
if (item.date == null) {
TimeVal tv = { (long) mtime, 0 };
item.date = tv.to_iso8601 ();
}
- item.size = (int64) size;
+ item.size = (int64) file_info.get_size ();
item.modified = (int64) mtime;
-
if (dlna_info.name != null) {
item.dlna_profile = dlna_info.name;
item.mime_type = dlna_info.mime;
} else {
- item.mime_type = mime;
+ item.mime_type = ContentType.get_mime_type
+ (file_info.get_content_type ());
}
item.add_uri (file.get_uri ());
diff --git a/src/plugins/media-export/rygel-media-export-metadata-extractor.vala b/src/plugins/media-export/rygel-media-export-metadata-extractor.vala
index ace1d51..c38525e 100644
--- a/src/plugins/media-export/rygel-media-export-metadata-extractor.vala
+++ b/src/plugins/media-export/rygel-media-export-metadata-extractor.vala
@@ -35,10 +35,8 @@ using GUPnP;
public class Rygel.MediaExport.MetadataExtractor: GLib.Object {
/* Signals */
public signal void extraction_done (File file,
- GUPnP.DLNAInformation? info,
- string mime,
- uint64 size,
- uint64 mtime);
+ GUPnP.DLNAInformation? dlna,
+ FileInfo file_info);
/**
* Signalize that an error occured during metadata extraction
@@ -131,7 +129,8 @@ public class Rygel.MediaExport.MetadataExtractor: GLib.Object {
(FileAttribute.STANDARD_CONTENT_TYPE
+ "," +
FileAttribute.STANDARD_SIZE + "," +
- FileAttribute.TIME_MODIFIED,
+ FileAttribute.TIME_MODIFIED + "," +
+ FileAttribute.STANDARD_DISPLAY_NAME,
FileQueryInfoFlags.NONE,
null);
} catch (Error error) {
@@ -144,17 +143,9 @@ public class Rygel.MediaExport.MetadataExtractor: GLib.Object {
throw error;
}
- var content_type = file_info.get_content_type ();
- var mime = ContentType.get_mime_type (content_type);
- var size = file_info.get_size ();
- var mtime = file_info.get_attribute_uint64
- (FileAttribute.TIME_MODIFIED);
-
this.extraction_done (file,
dlna,
- mime,
- size,
- mtime);
+ file_info);
} catch (Error error) {
debug ("Failed to extract basic metadata from %s: %s",
file.get_uri (),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]