[sound-juicer] Add album & track composer format specifiers for file name & path



commit a2cc010644ff6fb261b2c76f7ec0c7b5b27c638c
Author: Phillip Wood <phillip wood dunelm org uk>
Date:   Tue Nov 1 10:22:25 2011 +0000

    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

 data/sound-juicer.schemas.in |   16 +++++++++++++++
 src/sj-extracting.c          |   44 ++++++++++++++++++++++++++++++++++++++++++
 src/sj-prefs.c               |    8 +++++++
 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}
 };
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]