static GrlKeyID register_metadata_key (GrlRegistry *registry, GrlKeyID bind_key, const char *name, const char *nick, const char *blurb) { GParamSpec *spec; GrlKeyID key; spec = g_param_spec_string (name, nick, blurb, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); key = grl_registry_register_metadata_key (registry, spec, bind_key, NULL); if (key == GRL_METADATA_KEY_INVALID) { key = grl_registry_lookup_metadata_key (registry, name); if (grl_metadata_key_get_type (key) != G_TYPE_STRING) { key = GRL_METADATA_KEY_INVALID; } } return key; }
static GrlKeyID register_gravatar_key (GrlRegistry *registry, const gchar *name, const gchar *nick, const gchar *blurb) { GParamSpec *spec; GrlKeyID key; spec = g_param_spec_string (name, nick, blurb, NULL, G_PARAM_READWRITE); key = grl_registry_register_metadata_key (registry, spec, NULL); /* If key was not registered, could be that it is already registered. If so, check if type is the expected one, and reuse it */ if (key == GRL_METADATA_KEY_INVALID) { key = grl_registry_lookup_metadata_key (registry, name); if (grl_metadata_key_get_type (key) != G_TYPE_STRING) { key = GRL_METADATA_KEY_INVALID; } } return key; }
static void ensure_hash_keyid (GrlLocalMetadataSourcePriv *priv) { if (priv->hash_keyid == GRL_METADATA_KEY_INVALID) { GrlRegistry *registry = grl_registry_get_default (); priv->hash_keyid = grl_registry_lookup_metadata_key (registry, "gibest-hash"); } }
static gboolean grl_bookmarks_plugin_init (GrlRegistry *registry, GrlPlugin *plugin, GList *configs) { GParamSpec *spec; GRL_LOG_DOMAIN_INIT (bookmarks_log_domain, "bookmarks"); GRL_DEBUG ("grl_bookmarks_plugin_init"); /* Initialize i18n */ bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); spec = g_param_spec_boxed ("bookmark-date", "Bookmark date", "When the media was bookmarked", G_TYPE_DATE_TIME, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE), GRL_BOOKMARKS_KEY_BOOKMARK_TIME = grl_registry_register_metadata_key (registry, spec, NULL); /* If key was not registered, could be that it is already registered. If so, check if type is the expected one, and reuse it */ if (GRL_BOOKMARKS_KEY_BOOKMARK_TIME == GRL_METADATA_KEY_INVALID) { g_param_spec_unref (spec); GRL_BOOKMARKS_KEY_BOOKMARK_TIME = grl_registry_lookup_metadata_key (registry, "bookmark-date"); if (grl_metadata_key_get_type (GRL_BOOKMARKS_KEY_BOOKMARK_TIME) != G_TYPE_DATE_TIME) { GRL_BOOKMARKS_KEY_BOOKMARK_TIME = GRL_METADATA_KEY_INVALID; } } GrlBookmarksSource *source = grl_bookmarks_source_new (); grl_registry_register_source (registry, plugin, GRL_SOURCE (source), NULL); return TRUE; }
void grl_tracker_setup_key_mappings (void) { GrlRegistry *registry = grl_registry_get_default (); /* Check if "tracker-urn" is registered; if not, then register it */ grl_metadata_key_tracker_urn = grl_registry_lookup_metadata_key (registry, "tracker-urn"); if (grl_metadata_key_tracker_urn == GRL_METADATA_KEY_INVALID) { grl_metadata_key_tracker_urn = grl_registry_register_metadata_key (grl_registry_get_default (), g_param_spec_string ("tracker-urn", "Tracker URN", "Universal resource number in Tracker's store", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE), NULL); } /* Check if "gibest-hash" is registered; if not, then register it */ grl_metadata_key_gibest_hash = grl_registry_lookup_metadata_key (registry, "gibest-hash"); if (grl_metadata_key_gibest_hash == GRL_METADATA_KEY_INVALID) { grl_metadata_key_gibest_hash = grl_registry_register_metadata_key (grl_registry_get_default (), g_param_spec_string ("gibest-hash", "Gibest hash", "Gibest hash of the video file", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE), NULL); } grl_to_sparql_mapping = g_hash_table_new (g_direct_hash, g_direct_equal); sparql_to_grl_mapping = g_hash_table_new (g_str_hash, g_str_equal); insert_key_mapping (grl_metadata_key_tracker_urn, NULL, "?urn", "file"); insert_key_mapping (GRL_METADATA_KEY_ALBUM, NULL, "nmm:albumTitle(nmm:musicAlbum(?urn))", "audio"); insert_key_mapping (GRL_METADATA_KEY_ARTIST, NULL, "nmm:artistName(nmm:performer(?urn))", "audio"); insert_key_mapping (GRL_METADATA_KEY_AUTHOR, NULL, "nmm:artistName(nmm:performer(?urn))", "audio"); insert_key_mapping (GRL_METADATA_KEY_BITRATE, "nfo:averageBitrate", "nfo:averageBitrate(?urn)", "audio"); insert_key_mapping (GRL_METADATA_KEY_CHILDCOUNT, "nfo:entryCounter", "nfo:entryCounter(?urn)", "directory"); insert_key_mapping (GRL_METADATA_KEY_SIZE, NULL, "nfo:fileSize(?urn)", "file"); insert_key_mapping (grl_metadata_key_gibest_hash, NULL, "(select nfo:hashValue(?h) { ?urn nfo:hasHash ?h . ?h nfo:hashAlgorithm \"gibest\" })", "video"); insert_key_mapping_with_setter (GRL_METADATA_KEY_MODIFICATION_DATE, "nfo:fileLastModified", "nfo:fileLastModified(?urn)", "file", set_date); insert_key_mapping (GRL_METADATA_KEY_DURATION, "nfo:duration", "nfo:duration(?urn)", "audio"); insert_key_mapping (GRL_METADATA_KEY_FRAMERATE, "nfo:frameRate", "nfo:frameRate(?urn)", "video"); insert_key_mapping (GRL_METADATA_KEY_HEIGHT, "nfo:height", "nfo:height(?urn)", "video"); insert_key_mapping (GRL_METADATA_KEY_ID, "tracker:id", "tracker:id(?urn)", "file"); /* insert_key_mapping (GRL_METADATA_KEY_LAST_PLAYED, */ /* "nfo:fileLastAccessed(?urn)", */ /* "file"); */ insert_key_mapping (GRL_METADATA_KEY_MIME, "nie:mimeType", "nie:mimeType(?urn)", "file"); insert_key_mapping (GRL_METADATA_KEY_SITE, "nie:url", "nie:url(?urn)", "file"); insert_key_mapping_with_setter (GRL_METADATA_KEY_TITLE, "nie:title", "nie:title(?urn)", "audio", set_title); insert_key_mapping_with_setter (GRL_METADATA_KEY_TITLE, "nfo:fileName", "nfo:fileName(?urn)", "file", set_title_from_filename); insert_key_mapping (GRL_METADATA_KEY_URL, "nie:url", "nie:url(?urn)", "file"); insert_key_mapping (GRL_METADATA_KEY_WIDTH, "nfo:width", "nfo:width(?urn)", "video"); insert_key_mapping (GRL_METADATA_KEY_SEASON, "nmm:season", "nmm:season(?urn)", "video"); insert_key_mapping (GRL_METADATA_KEY_EPISODE, "nmm:episodeNumber", "nmm:episodeNumber(?urn)", "video"); insert_key_mapping_with_setter (GRL_METADATA_KEY_CREATION_DATE, "nie:contentCreated", "nie:contentCreated(?urn)", "image", set_date); insert_key_mapping (GRL_METADATA_KEY_CAMERA_MODEL, NULL, "nfo:model(nfo:equipment(?urn))", "image"); insert_key_mapping (GRL_METADATA_KEY_FLASH_USED, "nmm:flash", "nmm:flash(?urn)", "image"); insert_key_mapping (GRL_METADATA_KEY_EXPOSURE_TIME, "nmm:exposureTime", "nmm:exposureTime(?urn)", "image"); insert_key_mapping (GRL_METADATA_KEY_ISO_SPEED, "nmm:isoSpeed", "nmm:isoSpeed(?urn)", "image"); insert_key_mapping_with_setter (GRL_METADATA_KEY_ORIENTATION, "nfo:orientation", "nfo:orientation(?urn)", "image", set_orientation); insert_key_mapping (GRL_METADATA_KEY_PLAY_COUNT, "nie:usageCounter", "nie:usageCounter(?urn)", "media"); insert_key_mapping (GRL_METADATA_KEY_LAST_PLAYED, "nie:contentAccessed", "nie:contentAccessed(?urn)", "media"); insert_key_mapping (GRL_METADATA_KEY_LAST_POSITION, "nfo:lastPlayedPosition", "nfo:lastPlayedPosition(?urn)", "media"); insert_key_mapping (GRL_METADATA_KEY_START_TIME, "nfo:audioOffset", "nfo:audioOffset(?urn)", "media"); if (grl_tracker_upnp_present) { insert_key_mapping (GRL_METADATA_KEY_THUMBNAIL, "upnp:thumbnail", "upnp:thumbnail(?urn)", "media"); } }
void grl_tracker_setup_key_mappings (void) { GrlRegistry *registry = grl_registry_get_default (); grl_metadata_key_tracker_urn = grl_registry_lookup_metadata_key (registry, "tracker-urn"); grl_metadata_key_gibest_hash = grl_registry_lookup_metadata_key (registry, "gibest-hash"); grl_to_sparql_mapping = g_hash_table_new (g_direct_hash, g_direct_equal); sparql_to_grl_mapping = g_hash_table_new (g_str_hash, g_str_equal); insert_key_mapping (grl_metadata_key_tracker_urn, NULL, "?urn", "file"); insert_key_mapping (GRL_METADATA_KEY_ALBUM, NULL, "nmm:albumTitle(nmm:musicAlbum(?urn))", "audio"); insert_key_mapping (GRL_METADATA_KEY_ALBUM_DISC_NUMBER, NULL, "nmm:setNumber(nmm:musicAlbumDisc(?urn))", "audio"); insert_key_mapping (GRL_METADATA_KEY_ARTIST, NULL, "nmm:artistName(nmm:performer(?urn))", "audio"); insert_key_mapping (GRL_METADATA_KEY_ALBUM_ARTIST, NULL, "nmm:artistName(nmm:albumArtist(nmm:musicAlbum(?urn)))", "audio"); insert_key_mapping (GRL_METADATA_KEY_AUTHOR, NULL, "nmm:artistName(nmm:performer(?urn))", "audio"); insert_key_mapping (GRL_METADATA_KEY_BITRATE, "nfo:averageBitrate", "nfo:averageBitrate(?urn)", "audio"); insert_key_mapping (GRL_METADATA_KEY_CHILDCOUNT, "nfo:entryCounter", "nfo:entryCounter(?urn)", "directory"); insert_key_mapping (GRL_METADATA_KEY_COMPOSER, NULL, "nmm:artistName(nmm:composer(?urn))", "audio"); insert_key_mapping (GRL_METADATA_KEY_SIZE, NULL, "nfo:fileSize(?urn)", "file"); insert_key_mapping (grl_metadata_key_gibest_hash, NULL, "(select nfo:hashValue(?h) { ?urn nfo:hasHash ?h . ?h nfo:hashAlgorithm \"gibest\" })", "video"); insert_key_mapping_with_setter (GRL_METADATA_KEY_MODIFICATION_DATE, "nfo:fileLastModified", "nfo:fileLastModified(?urn)", "file", set_date); insert_key_mapping (GRL_METADATA_KEY_DURATION, "nfo:duration", "nfo:duration(?urn)", "audio"); insert_key_mapping (GRL_METADATA_KEY_FRAMERATE, "nfo:frameRate", "nfo:frameRate(?urn)", "video"); insert_key_mapping (GRL_METADATA_KEY_HEIGHT, "nfo:height", "nfo:height(?urn)", "video"); insert_key_mapping (GRL_METADATA_KEY_ID, "tracker:id", "tracker:id(?urn)", "file"); insert_key_mapping_with_setter (GRL_METADATA_KEY_LAST_PLAYED, "nfo:fileLastAccessed", "nfo:fileLastAccessed(?urn)", "file", set_date); insert_key_mapping (GRL_METADATA_KEY_MIME, "nie:mimeType", "nie:mimeType(?urn)", "file"); insert_key_mapping (GRL_METADATA_KEY_SITE, "nie:url", "nie:url(?urn)", "file"); insert_key_mapping_with_setter (GRL_METADATA_KEY_TITLE, "nie:title", "nie:title(?urn)", "audio", set_title); insert_key_mapping_with_setter (GRL_METADATA_KEY_TITLE, "nfo:fileName", "nfo:fileName(?urn)", "file", set_title_from_filename); insert_key_mapping (GRL_METADATA_KEY_URL, "nie:url", "nie:url(?urn)", "file"); insert_key_mapping (GRL_METADATA_KEY_WIDTH, "nfo:width", "nfo:width(?urn)", "video"); insert_key_mapping (GRL_METADATA_KEY_SEASON, "nmm:season", "nmm:season(?urn)", "video"); insert_key_mapping (GRL_METADATA_KEY_EPISODE, "nmm:episodeNumber", "nmm:episodeNumber(?urn)", "video"); insert_key_mapping_with_setter (GRL_METADATA_KEY_CREATION_DATE, "nie:contentCreated", "nie:contentCreated(?urn)", "image", set_date); insert_key_mapping (GRL_METADATA_KEY_CAMERA_MODEL, NULL, "nfo:model(nfo:equipment(?urn))", "image"); insert_key_mapping (GRL_METADATA_KEY_FLASH_USED, "nmm:flash", "nmm:flash(?urn)", "image"); insert_key_mapping (GRL_METADATA_KEY_EXPOSURE_TIME, "nmm:exposureTime", "nmm:exposureTime(?urn)", "image"); insert_key_mapping (GRL_METADATA_KEY_ISO_SPEED, "nmm:isoSpeed", "nmm:isoSpeed(?urn)", "image"); insert_key_mapping_with_setter (GRL_METADATA_KEY_ORIENTATION, "nfo:orientation", "nfo:orientation(?urn)", "image", set_orientation); insert_key_mapping (GRL_METADATA_KEY_PLAY_COUNT, "nie:usageCounter", "nie:usageCounter(?urn)", "media"); insert_key_mapping_with_setter (GRL_METADATA_KEY_LAST_PLAYED, "nie:contentAccessed", "nie:contentAccessed(?urn)", "media", set_date); insert_key_mapping (GRL_METADATA_KEY_LAST_POSITION, "nfo:lastPlayedPosition", "nfo:lastPlayedPosition(?urn)", "media"); insert_key_mapping (GRL_METADATA_KEY_START_TIME, "nfo:audioOffset", "nfo:audioOffset(?urn)", "media"); if (grl_tracker_upnp_present) { insert_key_mapping (GRL_METADATA_KEY_THUMBNAIL, "upnp:thumbnail", "upnp:thumbnail(?urn)", "media"); } insert_key_mapping (GRL_METADATA_KEY_TRACK_NUMBER, "nmm:trackNumber", "nmm:trackNumber(?urn)", "audio"); insert_key_mapping_with_setter (GRL_METADATA_KEY_FAVOURITE, "nao:hasTag", "nao:hasTag(?urn)", "audio", set_favourite); }