[grilo-plugins/wip/jfelder/acoustid-creation-date] acoustid: Add support for creation_date
- From: Jean Felder <jfelder src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [grilo-plugins/wip/jfelder/acoustid-creation-date] acoustid: Add support for creation_date
- Date: Sun, 14 Jul 2019 13:22:17 +0000 (UTC)
commit a1cddb79af9e8db15790ba81ff488b860683a9a3
Author: Jean Felder <jfelder src gnome org>
Date: Mon Jul 8 16:05:37 2019 +0200
acoustid: Add support for creation_date
According to Picard
website (https://picard.musicbrainz.org/docs/mappings/), the creation
date is the earliest release in the release group.
Acoustid test is also updated to retrieve the creation_date.
src/lua-factory/sources/grl-acoustid.lua | 27 ++++++++++++++++++++++++++-
tests/lua-factory/sources/test_lua_acoustid.c | 27 +++++++++++++++++----------
2 files changed, 43 insertions(+), 11 deletions(-)
---
diff --git a/src/lua-factory/sources/grl-acoustid.lua b/src/lua-factory/sources/grl-acoustid.lua
index 07a2439..3879abc 100644
--- a/src/lua-factory/sources/grl-acoustid.lua
+++ b/src/lua-factory/sources/grl-acoustid.lua
@@ -28,7 +28,7 @@ source = {
id = "grl-acoustid",
name = "Acoustid",
description = "a source that provides audio identification",
- supported_keys = { "title", "album", "artist", "mb-recording-id", "mb-album-id", "mb-artist-id",
"mb-release-group-id", "mb-release-id", "album-disc-number", "publication-date", "track-number" },
+ supported_keys = { "title", "album", "artist", "mb-recording-id", "mb-album-id", "mb-artist-id",
"mb-release-group-id", "mb-release-id", "album-disc-number", "publication-date", "track-number",
"creation-date" },
supported_media = { 'audio' },
config_keys = {
required = { "api-key" },
@@ -103,6 +103,7 @@ function build_media(results)
local record, album, artist
local release_group_id
local sources = 0
+ local creation_date = nil
if results and #results > 0 and
results[1].recordings and
@@ -139,6 +140,30 @@ function build_media(results)
end
if album and album.releases and #album.releases > 0 then
+ if keys.creation_date then
+ for _, release in ipairs(album.releases) do
+ if release.date then
+ local month = release.date.month or 1
+ local day = release.date.day or 1
+ local year= release.date.year
+ if not creation_date or
+ year < creation_date.year or
+ (year == creation_date.year and
+ month < creation_date.month) or
+ (year == creation_date.year and
+ month == creation_date.month and
+ day < creation_date.day) then
+ creation_date = {day=day, month=month, year=year}
+ end
+ end
+ end
+
+ if creation_date then
+ media.creation_date = string.format('%04d-%02d-%02d', creation_date.year,
+ creation_date.month, creation_date.day)
+ end
+ end
+
release = album.releases[1]
media.mb_release_id = keys.mb_album_id and release.id or nil
diff --git a/tests/lua-factory/sources/test_lua_acoustid.c b/tests/lua-factory/sources/test_lua_acoustid.c
index a2255a5..bc08067 100644
--- a/tests/lua-factory/sources/test_lua_acoustid.c
+++ b/tests/lua-factory/sources/test_lua_acoustid.c
@@ -52,6 +52,7 @@ resolve (GrlSource *source,
gchar **out_mb_release_group_id,
gint *out_album_disc_number,
gchar **out_publication_date,
+ gchar **out_creation_date,
gint *out_track_number)
{
GList *keys;
@@ -59,7 +60,7 @@ resolve (GrlSource *source,
GrlOperationOptions *options;
GrlRegistry *registry;
GrlKeyID chromaprint_key, mb_release_id_key, mb_release_group_id_key;
- GDateTime *date;
+ GDateTime *publication_date, *creation_date;
GError *error = NULL;
registry = grl_registry_get_default ();
@@ -78,6 +79,7 @@ resolve (GrlSource *source,
GRL_METADATA_KEY_TITLE,
GRL_METADATA_KEY_ALBUM_DISC_NUMBER,
GRL_METADATA_KEY_PUBLICATION_DATE,
+ GRL_METADATA_KEY_CREATION_DATE,
GRL_METADATA_KEY_TRACK_NUMBER,
NULL);
options = grl_operation_options_new (NULL);
@@ -105,8 +107,10 @@ resolve (GrlSource *source,
*out_mb_release_group_id = g_strdup (grl_data_get_string (GRL_DATA (audio),
mb_release_group_id_key));
*out_album_disc_number = grl_media_get_album_disc_number (audio);
- date = grl_media_get_publication_date (audio);
- *out_publication_date = g_date_time_format (date, "%Y-%m-%d");
+ publication_date = grl_media_get_publication_date (audio);
+ *out_publication_date = g_date_time_format (publication_date, "%Y-%m-%d");
+ creation_date = grl_media_get_creation_date (audio);
+ *out_creation_date = g_date_time_format (creation_date, "%Y-%m-%d");
*out_track_number = grl_media_get_track_number (audio);
g_list_free (keys);
@@ -133,6 +137,7 @@ test_resolve_fingerprint (void)
gchar *mb_release_id;
gint album_disc_number;
gchar *publication_date;
+ gchar *creation_date;
gint track_number;
} audios[] = {
{ FINGERPRINT_LUDOVICO_EI, 445,
@@ -140,31 +145,31 @@ test_resolve_fingerprint (void)
"ac615d26-df00-3053-9462-7636375603b4", "The Number One Classical Album 2008",
"8f6ac978-95cf-41e8-82fb-043624652e04", "Primavera",
"d73e4041-375c-4b9f-8366-46089bca304c",
- 1, "2007-11-26", 19 },
+ 1, "2007-11-26", "2007-11-26", 19 },
{ FINGERPRINT_NORAH_JONES, 160,
"985c709c-7771-4de3-9024-7bda29ebe3f9", "Norah Jones",
"f5cffa96-262c-49af-9747-3f04a1d42c78", "\u00d63 Greatest Hits 49",
"6d8ba615-d8fe-4f99-b38f-0a17d657b1bb", "Chasing Pirates",
"1ee64f6c-560f-421f-83dc-7fd34e5b0674",
- 1, "2010-03-12", 18 },
+ 1, "2010-03-12", "2010-03-12", 18 },
{ FINGERPRINT_TROMBONE_SH, 243,
"cae4fd51-4d58-4d48-92c1-6198cc2e45ed", "Trombone Shorty",
"c3418122-387b-4477-90cf-e5e6d110e054", "For True",
"96483bdd-f219-4ae3-a94e-04feeeef22a4", "Buckjump",
"567621e3-b80f-4c30-af5f-2ecf0882e94a",
- 1, "2011-01-01", 1 },
+ 1, "2011-01-01", "2011-01-01", 1 },
{ FINGERPRINT_PHILIP_GLAS, 601,
"5ae54dee-4dba-49c0-802a-a3b3b3adfe9b", "Philip Glass",
"52f1f9d5-5166-4ceb-9289-6fb1a87f367c", "The Passion of Ramakrishna",
"298e15a1-b29b-4947-9dca-ec3634f9ebde", "Part 2",
"2807def3-7873-4277-b079-c9a963d99993",
- 1, "2012-01-01", 3 },
+ 1, "2012-01-01", "2012-01-01", 3 },
{ FINGERPRINT_RADIOHEAD_PA, 385,
"a74b1b7f-71a5-4011-9441-d0b5e4122711", "Radiohead",
"dd02a722-bb7f-4771-9a5b-681f5556ce71", "3X plus de bruit!",
"9f9cf187-d6f9-437f-9d98-d59cdbd52757", "Paranoid Android",
"67016a2b-118d-483d-9e36-49080ae43df4",
- 1, "1997-01-01", 4,
+ 1, "1997-01-01", "1997-01-01", 4,
},
};
@@ -175,7 +180,7 @@ test_resolve_fingerprint (void)
gsize size;
GError *error = NULL;
gchar *mb_artist_id, *artist, *mb_album_id, *album, *mb_recording_id, *title,
- *mb_release_id, *mb_release_group_id, *publication_date;
+ *mb_release_id, *mb_release_group_id, *publication_date, *creation_date;
gint album_disc_number, track_number;
file = g_file_new_for_uri (audios[i].fingerprint_file);
@@ -186,7 +191,7 @@ test_resolve_fingerprint (void)
resolve (source, data, audios[i].duration,
&mb_artist_id, &artist, &mb_album_id, &album, &mb_recording_id, &title,
&mb_release_id, &mb_release_group_id, &album_disc_number, &publication_date,
- &track_number);
+ &creation_date, &track_number);
g_free (data);
g_assert_cmpstr (audios[i].title, ==, title);
@@ -208,6 +213,8 @@ test_resolve_fingerprint (void)
g_assert_cmpint (audios[i].album_disc_number, ==, album_disc_number);
g_assert_cmpstr (audios[i].publication_date, ==, publication_date);
g_free (publication_date);
+ g_assert_cmpstr (audios[i].creation_date, ==, creation_date);
+ g_free (creation_date);
g_assert_cmpint (audios[i].track_number, ==, track_number);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]