tracker r2823 - in trunk: . src/tracker-extract tests/tracker-extract tests/tracker-extract/data/mp3
- From: mottela svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r2823 - in trunk: . src/tracker-extract tests/tracker-extract tests/tracker-extract/data/mp3
- Date: Thu, 22 Jan 2009 22:33:40 +0000 (UTC)
Author: mottela
Date: Thu Jan 22 22:33:39 2009
New Revision: 2823
URL: http://svn.gnome.org/viewvc/tracker?rev=2823&view=rev
Log:
Added regex for additional TCON to id3v1 genre mapping and testcases
Added:
trunk/tests/tracker-extract/data/mp3/id3v23_tcon_1.data
trunk/tests/tracker-extract/data/mp3/id3v23_tcon_2.data
trunk/tests/tracker-extract/data/mp3/id3v23_tcon_3.data
trunk/tests/tracker-extract/data/mp3/id3v23_tcon_4.data
trunk/tests/tracker-extract/data/mp3/id3v23_tcon_5.data
trunk/tests/tracker-extract/data/mp3/id3v23_tcon_6.data
Modified:
trunk/ChangeLog
trunk/src/tracker-extract/tracker-extract-mp3.c
trunk/tests/tracker-extract/data/mp3/create_mp3_testdata
trunk/tests/tracker-extract/tracker-extract-mp3-test.c
trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.c
trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.h
Modified: trunk/src/tracker-extract/tracker-extract-mp3.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-mp3.c (original)
+++ trunk/src/tracker-extract/tracker-extract-mp3.c Thu Jan 22 22:33:39 2009
@@ -292,7 +292,7 @@
memcpy(&c, data, 2);
- switch (c) {
+switch (c) {
case 0xfeff:
case 0xfffe:
be = (G_BYTE_ORDER == G_BIG_ENDIAN);
@@ -310,6 +310,47 @@
return utf8;
}
+/* Get the genre codes from regular expressions */
+static gboolean
+get_genre_number (const char *str, guint *genre)
+{
+ static GRegex *regex1 = NULL;
+ static GRegex *regex2 = NULL;
+ GMatchInfo *info = NULL;
+ gchar *result = NULL;
+
+ if (!regex1)
+ regex1 = g_regex_new("\\(([0-9]+)\\)", 0, 0, NULL);
+
+ if (!regex2)
+ regex2 = g_regex_new("([0-9]+)\\z", 0, 0, NULL);
+
+ if (g_regex_match(regex1, str, 0, &info)) {
+ result = g_match_info_fetch(info, 1);
+ if (result) {
+ *genre = atoi(result);
+ g_free (result);
+ g_match_info_free (info);
+ return TRUE;
+ }
+ }
+
+ g_match_info_free (info);
+
+ if (g_regex_match(regex2, str, 0, &info)) {
+ result = g_match_info_fetch(info, 1);
+ if (result) {
+ *genre = atoi(result);
+ g_free (result);
+ g_match_info_free (info);
+ return TRUE;
+ }
+ }
+
+ g_match_info_free (info);
+
+ return FALSE;
+}
static gboolean
get_id3 (const gchar *data,
@@ -755,27 +796,10 @@
}
if (strcmp (tmap[i].text, "TCON") == 0) {
- if (g_pattern_match_simple ("(*)*", word)) {
- gchar *begin;
- gchar *end;
- guint genre;
- gchar *new_word;
-
- begin = strchr (word,'(');
- if (!begin)
- continue;
- begin++;
- end = strchr (begin, ')');
- if (!end)
- continue;
- end[0] = '\0';
-
- genre = (guint)strtol(begin,&end,10);
-
- if (begin != end) {
- g_free (word);
- word = g_strdup (genre_names[genre]);
- }
+ gint genre;
+ if (get_genre_number (word, &genre)) {
+ g_free (word);
+ word = g_strdup (genre_names[genre]);
}
}
@@ -1052,27 +1076,10 @@
}
if (strcmp (tmap[i].text, "TCON") == 0) {
- if (g_pattern_match_simple ("(*)*", word)) {
- gchar *begin;
- gchar *end;
- guint genre;
- gchar *new_word;
-
- begin = strchr (word,'(');
- if (!begin)
- continue;
- begin++;
- end = strchr (begin, ')');
- if (!end)
- continue;
- end[0] = '\0';
-
- genre = (guint)strtol(begin,&end,10);
-
- if (begin != end) {
- g_free (word);
- word = g_strdup (genre_names[genre]);
- }
+ gint genre;
+ if (get_genre_number (word, &genre)) {
+ g_free (word);
+ word = g_strdup (genre_names[genre]);
}
}
Modified: trunk/tests/tracker-extract/data/mp3/create_mp3_testdata
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/create_mp3_testdata (original)
+++ trunk/tests/tracker-extract/data/mp3/create_mp3_testdata Thu Jan 22 22:33:39 2009
@@ -38,6 +38,26 @@
echo Basic id3v23 tags 1| text2wave - | lame --resample 48 - "id3v23_comm_3.mp3"
id3v2 --id3v2-only -t "The titlev23" -a "The artistv23" -A "The album namev23" -y 1969 -c "c" -T 8 -g 8 "id3v23_comm_3.mp3"
+#TCON
+echo id3v23 tcon 1| text2wave - | lame --resample 48 - "id3v23_tcon_1.mp3"
+id3v2 --id3v2-only --TCON "Red Metal" "id3v23_tcon_1.mp3"
+
+echo id3v23 tcon 2| text2wave - | lame --resample 48 - "id3v23_tcon_2.mp3"
+id3v2 --id3v2-only --TCON "(42)" "id3v23_tcon_2.mp3"
+
+echo id3v23 tcon 3| text2wave - | lame --resample 48 - "id3v23_tcon_3.mp3"
+id3v2 --id3v2-only --TCON "(42)Soul" "id3v23_tcon_3.mp3"
+
+echo id3v23 tcon 4| text2wave - | lame --resample 48 - "id3v23_tcon_4.mp3"
+id3v2 --id3v2-only --TCON "(42)Smooth Soul Metal" "id3v23_tcon_4.mp3"
+
+#TCON the next ones are "against the spec", but usually handled this way
+echo id3v23 tcon 5| text2wave - | lame --resample 48 - "id3v23_tcon_5.mp3"
+id3v2 --id3v2-only --TCON "42" "id3v23_tcon_5.mp3"
+
+echo id3v23 tcon 6| text2wave - | lame --resample 48 - "id3v23_tcon_6.mp3"
+id3v2 --id3v2-only --TCON "42 Red Metal" "id3v23_tcon_6.mp3"
+
#Others
echo Basic id3v23 tags 1| text2wave - | lame --resample 48 - "id3v23_tags_1.mp3"
id3v2 --id3v2-only --PCNT "4" --TALB "Album/Movie/Show" --TCON "content type" --TCOP "copyright me" --TDAT "2312" --TENC "julkaisija" --TEXT "Monday, monday.. yeah yeah.. monday" --TIT2 "Title or songname" --TLAN "fin" --TPE1 "lead performer" --TYER "2003" "id3v23_tags_1.mp3"
Added: trunk/tests/tracker-extract/data/mp3/id3v23_tcon_1.data
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_tcon_1.data Thu Jan 22 22:33:39 2009
@@ -0,0 +1 @@
+Audio:Genre = "Red Metal"
Added: trunk/tests/tracker-extract/data/mp3/id3v23_tcon_2.data
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_tcon_2.data Thu Jan 22 22:33:39 2009
@@ -0,0 +1 @@
+Audio:Genre = "Soul"
Added: trunk/tests/tracker-extract/data/mp3/id3v23_tcon_3.data
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_tcon_3.data Thu Jan 22 22:33:39 2009
@@ -0,0 +1 @@
+Audio:Genre = "Soul"
Added: trunk/tests/tracker-extract/data/mp3/id3v23_tcon_4.data
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_tcon_4.data Thu Jan 22 22:33:39 2009
@@ -0,0 +1 @@
+Audio:Genre = "Soul"
Added: trunk/tests/tracker-extract/data/mp3/id3v23_tcon_5.data
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_tcon_5.data Thu Jan 22 22:33:39 2009
@@ -0,0 +1 @@
+Audio:Genre = "Soul"
Added: trunk/tests/tracker-extract/data/mp3/id3v23_tcon_6.data
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_tcon_6.data Thu Jan 22 22:33:39 2009
@@ -0,0 +1 @@
+Audio:Genre = "42 Red Metal"
Modified: trunk/tests/tracker-extract/tracker-extract-mp3-test.c
==============================================================================
--- trunk/tests/tracker-extract/tracker-extract-mp3-test.c (original)
+++ trunk/tests/tracker-extract/tracker-extract-mp3-test.c Thu Jan 22 22:33:39 2009
@@ -51,6 +51,8 @@
data, test_tracker_extract_mp3_id3v1_basic);
g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23_basic",
data, test_tracker_extract_mp3_id3v23_basic);
+ g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23_tcon",
+ data, test_tracker_extract_mp3_id3v23_tcon);
g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23_tags",
data, test_tracker_extract_mp3_id3v23_tags);
g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header_bitrate",
Modified: trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.c
==============================================================================
--- trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.c (original)
+++ trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.c Thu Jan 22 22:33:39 2009
@@ -43,6 +43,16 @@
{ NULL, NULL }
};
+static const ExtractData data_id3v23_tcon[] = {
+ { "/mp3/id3v23_tcon_1.mp3", "/mp3/id3v23_tcon_1.data" },
+ { "/mp3/id3v23_tcon_2.mp3", "/mp3/id3v23_tcon_2.data" },
+ { "/mp3/id3v23_tcon_3.mp3", "/mp3/id3v23_tcon_3.data" },
+ { "/mp3/id3v23_tcon_4.mp3", "/mp3/id3v23_tcon_4.data" },
+ { "/mp3/id3v23_tcon_5.mp3", "/mp3/id3v23_tcon_5.data" },
+ { "/mp3/id3v23_tcon_6.mp3", "/mp3/id3v23_tcon_6.data" },
+ { NULL, NULL }
+};
+
static const ExtractData data_id3v23_tags[] = {
{ "/mp3/id3v23_trck_1.mp3", "/mp3/id3v23_trck_1.data" },
{ "/mp3/id3v23_comm_1.mp3", "/mp3/id3v23_comm_1.data" },
@@ -128,6 +138,18 @@
}
}
+void test_tracker_extract_mp3_id3v23_tcon(gconstpointer data)
+{
+ const TrackerExtractorData *extractor = data;
+ guint i;
+
+ for (i=0; data_id3v23_tcon[i].filename; i++) {
+ extract_file (data,
+ data_id3v23_tcon[i].filename,
+ data_id3v23_tcon[i].testdata);
+ }
+}
+
void test_tracker_extract_mp3_header_bitrate(gconstpointer data)
{
const TrackerExtractorData *extractor = data;
Modified: trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.h
==============================================================================
--- trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.h (original)
+++ trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.h Thu Jan 22 22:33:39 2009
@@ -25,6 +25,7 @@
void test_tracker_extract_mp3_id3v1_basic (gconstpointer data);
void test_tracker_extract_mp3_id3v23_basic (gconstpointer data);
+void test_tracker_extract_mp3_id3v23_tcon (gconstpointer data);
void test_tracker_extract_mp3_id3v23_tags (gconstpointer data);
void test_tracker_extract_mp3_header_bitrate (gconstpointer data);
void test_tracker_extract_mp3_header_bitrate_vbr(gconstpointer data);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]