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-01 20:30:06 +0200
commit5d48a2fcac71e3deec4e0ccb6ac65cf194f3885a (patch)
treefc938853a26e4c8c17af7b4e808eb009e4b5f833
parent4a35d20d9829cd6c95604056715da3480f9a76c4 (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}
};