diff options
author | Mikael Ottela <mikael.ottela@ixonos.com> | 2010-08-03 20:39:15 +0300 |
---|---|---|
committer | Mikael Ottela <mikael.ottela@ixonos.com> | 2010-08-12 17:21:54 +0300 |
commit | fefe77ce85e736158c9a3b9aec3d92d2bfe39e1d (patch) | |
tree | 03b4fbd29af50e1f438ebebf08dad21c5a7afa0b | |
parent | b4508c4d8309427ea055a9f1000ab6083e251062 (diff) | |
download | tracker-fefe77ce85e736158c9a3b9aec3d92d2bfe39e1d.tar.gz |
Added nfo:encodedBy property.
Fixes NB#177663, Tracker does not harvest ID3v2 tags
-rw-r--r-- | data/ontologies/33-nfo.ontology | 8 | ||||
-rw-r--r-- | src/tracker-extract/tracker-extract-mp3.c | 25 |
2 files changed, 33 insertions, 0 deletions
diff --git a/data/ontologies/33-nfo.ontology b/data/ontologies/33-nfo.ontology index 609ff6962..d12a0cc06 100644 --- a/data/ontologies/33-nfo.ontology +++ b/data/ontologies/33-nfo.ontology @@ -639,6 +639,14 @@ nfo:codec a rdf:Property ; rdfs:domain nfo:Media ; rdfs:range xsd:string . +# FIXME Added property +nfo:encodedBy a rdf:Property ; + rdfs:label "encodedBy" ; + rdfs:comment "The contains the name of the person or organisation that encoded the media" ; + nrl:maxCardinality 1 ; + rdfs:domain nfo:Media ; + rdfs:range xsd:string . + nfo:fontFamily a rdf:Property ; rdfs:label "fontFamily" ; rdfs:comment "The name of the font family." ; diff --git a/src/tracker-extract/tracker-extract-mp3.c b/src/tracker-extract/tracker-extract-mp3.c index d1ab435a6..4de682874 100644 --- a/src/tracker-extract/tracker-extract-mp3.c +++ b/src/tracker-extract/tracker-extract-mp3.c @@ -87,6 +87,7 @@ typedef struct { gchar *comment; gchar *content_type; gchar *copyright; + gchar *encoded_by; guint32 length; gchar *performer1; gchar *performer2; @@ -109,6 +110,7 @@ typedef enum { ID3V2_TAL, ID3V2_TCO, ID3V2_TCR, + ID3V2_TEN, ID3V2_TLE, ID3V2_TPB, ID3V2_TP1, @@ -129,6 +131,7 @@ typedef enum { ID3V24_TCOP, ID3V24_TDRC, ID3V24_TDRL, + ID3V24_TENC, ID3V24_TEXT, ID3V24_TIT1, ID3V24_TIT2, @@ -159,6 +162,7 @@ typedef struct { const gchar *genre; const gchar *text; const gchar *recording_time; + const gchar *encoded_by; const gchar *copyright; const gchar *publisher; const gchar *comment; @@ -208,6 +212,7 @@ static const struct { { "TCOP", ID3V24_TCOP }, { "TDRC", ID3V24_TDRC }, { "TDRL", ID3V24_TDRL }, + { "TENC", ID3V24_TENC }, { "TOLY", ID3V24_TOLY }, { "TEXT", ID3V24_TEXT }, { "TIT1", ID3V24_TIT1 }, @@ -231,6 +236,7 @@ static const struct { { "TAL", ID3V2_TAL }, { "TCO", ID3V2_TCO }, { "TCR", ID3V2_TCR }, + { "TEN", ID3V2_TEN }, { "TLE", ID3V2_TLE }, { "TP1", ID3V2_TP1 }, { "TP2", ID3V2_TP2 }, @@ -463,6 +469,7 @@ id3v2tag_free (id3v2tag *tags) g_free (tags->publisher); g_free (tags->recording_time); g_free (tags->release_time); + g_free (tags->encoded_by); g_free (tags->text); g_free (tags->toly); g_free (tags->title1); @@ -1283,6 +1290,9 @@ get_id3v24_tags (const gchar *data, tag->release_time = tracker_date_guess (word); g_free (word); break; + case ID3V24_TENC: + tag->encoded_by = word; + break; case ID3V24_TEXT: tag->text = word; break; @@ -1488,6 +1498,9 @@ get_id3v23_tags (const gchar *data, case ID3V24_TCOP: tag->copyright = word; break; + case ID3V24_TENC: + tag->encoded_by = word; + break; case ID3V24_TEXT: tag->text = word; break; @@ -1640,6 +1653,9 @@ get_id3v20_tags (const gchar *data, case ID3V2_TCR: tag->copyright = word; break; + case ID3V2_TEN: + tag->encoded_by = word; + break; case ID3V2_TLE: tag->length = atoi (word) / 1000; g_free (word); @@ -2039,6 +2055,10 @@ extract_mp3 (const gchar *uri, md.id3v22.comment, md.id3v1.comment); + md.encoded_by = tracker_coalesce_strip (3, md.id3v24.encoded_by, + md.id3v23.encoded_by, + md.id3v22.encoded_by); + if (md.id3v24.track_number != 0) { md.track_number = md.id3v24.track_number; } else if (md.id3v23.track_number != 0) { @@ -2196,6 +2216,11 @@ extract_mp3 (const gchar *uri, tracker_sparql_builder_object_blank_close (metadata); } + if (md.encoded_by) { + tracker_sparql_builder_predicate (metadata, "nfo:encodedBy"); + tracker_sparql_builder_object_unvalidated (metadata, md.encoded_by); + } + if (md.track_number > 0) { tracker_sparql_builder_predicate (metadata, "nmm:trackNumber"); tracker_sparql_builder_object_int64 (metadata, md.track_number); |