summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhillip Wood <phillip.wood@dunelm.org.uk>2011-11-01 10:22:25 +0000
committerChristophe Fergeau <cfergeau@redhat.com>2012-09-06 19:58:38 +0200
commita2cc010644ff6fb261b2c76f7ec0c7b5b27c638c (patch)
treea2abfab1e875a50e4e629de73175e4cde71eaf39
parent25b2d50e06c3a07f32289343011e95fad5e39d86 (diff)
Add album & track composer format specifiers for file name & path
Added album and track composer options in the preferences dialog for path and file name of ripped tracks. Expand composer format specifiers in file names and paths Added support for the various %tc, %tp, %ac & %ap specifiers in output pathnames in filename_parse_pattern which actually generates the filenames. %ac -- album composer %aC -- album composer (lowercase) %ap -- album composer (sortable) %aP -- album composer (sortable lowercase) %tc -- track composer %tC -- track composer (lowercase) %tp -- track composer (sortable) %tP -- track composer (sortable lowercase) https://bugzilla.gnome.org/show_bug.cgi?id=661646
-rw-r--r--data/sound-juicer.schemas.in16
-rw-r--r--src/sj-extracting.c44
-rw-r--r--src/sj-prefs.c8
3 files changed, 68 insertions, 0 deletions
diff --git a/data/sound-juicer.schemas.in b/data/sound-juicer.schemas.in
index ed502e6..e5697fd 100644
--- a/data/sound-juicer.schemas.in
+++ b/data/sound-juicer.schemas.in
@@ -73,6 +73,10 @@
%aA -- album artist (lowercase)
%as -- album artist (sortable)
%aS -- album artist (sortable lowercase)
+ %ac -- album composer
+ %aC -- album composer (lowercase)
+ %ap -- album composer (sortable)
+ %aP -- album composer (sortable lowercase)
%ay -- album year
%tt -- track title
%tT -- track title (lowercase)
@@ -80,6 +84,10 @@
%tA -- track artist (lowercase)
%ts -- track artist (sortable)
%tS -- track artist (sortable lowercase)
+ %tc -- track composer
+ %tC -- track composer (lowercase)
+ %tp -- track composer (sortable)
+ %tP -- track composer (sortable lowercase)
</long>
</locale>
</schema>
@@ -100,6 +108,10 @@
%aA -- album artist (lowercase)
%as -- album artist (sortable)
%aS -- album artist (sortable lowercase)
+ %ac -- album composer
+ %aC -- album composer (lowercase)
+ %ap -- album composer (sortable)
+ %aP -- album composer (sortable lowercase)
%tn -- track number (i.e 8)
%tN -- track number, zero padded (i.e 08)
%tt -- track title
@@ -108,6 +120,10 @@
%tA -- track artist (lowercase)
%ts -- track artist (sortable)
%tS -- track artist (sortable lowercase)
+ %tc -- track composer
+ %tC -- track composer (lowercase)
+ %tp -- track composer (sortable)
+ %tP -- track composer (sortable lowercase)
%dn -- disc and track number (i.e Disk 2 - 6, or 6)
%dN -- disc number, zero padded (i.e d02t06, or 06)
</long>
diff --git a/src/sj-extracting.c b/src/sj-extracting.c
index 6619873..6b10757 100644
--- a/src/sj-extracting.c
+++ b/src/sj-extracting.c
@@ -953,6 +953,10 @@ lower_sanitize_sortname (const char *sortname, const char *name,
* %aA -- album artist (lowercase)
* %as -- album artist sortname
* %aS -- album artist sortname (lowercase)
+ * %ac -- album composer
+ * %aC -- album composer (lowercase)
+ * %ap -- album composer (sortable)
+ * %aP -- album composer (sortable lowercase)
* %tn -- track number (i.e 8)
* %tN -- track number, zero padded (i.e 08)
* %tt -- track title
@@ -961,6 +965,10 @@ lower_sanitize_sortname (const char *sortname, const char *name,
* %tA -- track artist (lowercase)
* %ts -- track artist sortname
* %tS -- track artist sortname (lowercase)
+ * %tc -- track composer
+ * %tC -- track composer (lowercase)
+ * %tp -- track composer (sortable)
+ * %tP -- track composer (sortable lowercase)
* %dn -- disc and track number (i.e Disk 2 - 6, or 6)
* %dN -- disc number, zero padded (i.e d02t06, or 06)
*/
@@ -974,6 +982,7 @@ filepath_parse_pattern (const char* pattern, const TrackDetails *track)
GFileInfo *fs_info;
const char *default_album = _("Unknown Album");
const char *default_artist = _("Unknown Artist");
+ const char *default_composer = _("Unknown Composer");
const char *default_track = _("Unknown Track");
if (pattern == NULL || pattern[0] == 0)
@@ -1051,6 +1060,24 @@ filepath_parse_pattern (const char* pattern, const TrackDetails *track)
track->album->artist, default_artist,
filesystem_type);
break;
+ case 'c':
+ string = sanitize_name (track->album->composer, default_composer,
+ filesystem_type);
+ break;
+ case 'C':
+ string = lower_sanitize_name (track->album->composer, default_composer,
+ filesystem_type);
+ break;
+ case 'p':
+ string = sanitize_sortname (track->album->composer_sortname,
+ track->album->composer, default_composer,
+ filesystem_type);
+ break;
+ case 'P':
+ string = lower_sanitize_sortname (track->album->composer_sortname,
+ track->album->composer,
+ default_composer, filesystem_type);
+ break;
default:
/* append "%a", and then the unicode character */
g_string_append (s, "%a");
@@ -1088,6 +1115,23 @@ filepath_parse_pattern (const char* pattern, const TrackDetails *track)
string = lower_sanitize_sortname (track->artist_sortname, track->artist,
default_artist, filesystem_type);
break;
+ case 'c':
+ string = sanitize_name (track->composer, default_composer,
+ filesystem_type);
+ break;
+ case 'C':
+ string = lower_sanitize_name (track->composer, default_composer,
+ filesystem_type);
+ break;
+ case 'p':
+ string = sanitize_sortname (track->composer_sortname, track->composer,
+ default_composer, filesystem_type);
+ break;
+ case 'P':
+ string = lower_sanitize_sortname (track->composer_sortname,
+ track->composer, default_composer,
+ filesystem_type);
+ break;
case 'n':
/* Track number */
string = g_strdup_printf ("%d", track->number);
diff --git a/src/sj-prefs.c b/src/sj-prefs.c
index 13ac22f..7ce30af 100644
--- a/src/sj-prefs.c
+++ b/src/sj-prefs.c
@@ -60,6 +60,10 @@ static const FilePattern path_patterns[] = {
{N_("Album Artist (sortable)"), "%as"},
{N_("Album Artist - Album Title"), "%aa - %at"},
{N_("Album Artist (sortable) - Album Title"), "%as - %at"},
+ {N_("Album Composer, Album Title"), "%ac/%at"},
+ {N_("Album Composer (sortable), Album Title"), "%ap/%at"},
+ {N_("Track Composer, Album Title"), "%tc/%at"},
+ {N_("Track Composer (sortable), Album Title"), "%tp/%at"},
{N_("[none]"), "./"},
{NULL, NULL}
};
@@ -73,6 +77,10 @@ static const FilePattern file_patterns[] = {
/* {N_("Number. Track Artist (sortable) - Track Title"), "%tN. %ts - %tt"}, */
{N_("Number-Track Artist-Track Title (lowercase)"), "%dN-%tA-%tT"},
/* {N_("Number-Track Artist (sortable)-Track Title (lowercase)"), "%tN-%tS-%tT"}, */
+ {N_("Track Composer - Track Artist - Track Title"), "%tc - %ta - %tt"},
+ {N_("Track Composer (sortable) - Track Artist (sortable) - Track Title"), "%tp - %ts - %tt"},
+ {N_("Number. Track Composer - Track Artist - Track Title"), "%dN. %tc - %ta - %tt"},
+ {N_("Number-Track Composer-Track Artist-Track Title (lowercase)"), "%dN-%tC-%tA-%tT"},
{NULL, NULL}
};