Howto use the tag "album_artist"

  • Christian Niebuhr

    Hello all,

    my music collection is among others tagged with the information:
    - artist (the song artist of course)
    - album_artist (in the majority of the cases the same like artist, but especially in samplers it is different (Various Artist)).

    The standard import.js script uses "M_Description" to address the samplers differently. But this does not work with my tags above.

    Does anyone have an idea, if I can also parse the "album_artist" within mediatomb.


  • Christian Niebuhr

    How do you handle the "various artists" albums in mediatomb?

    Unfortunately I have not found a solution so far.

  • Manu

    Manu - 2011-03-12

    No possibility at that time for this. I have worked on the m4a problematic and implemented the whole m4a tags in mediatomb source code. I will propose the modifications it the near future…

  • paddler247

    paddler247 - 2011-03-27

    TPE2 works, but there is another form of 'Album artist' encoding which uses the TXXX frame. TXXX might even be a multi value frame which (I think) Mediatomb does not support in aux data.

  • paddler247

    paddler247 - 2011-03-28

    Ok, in order to solve the problem this little patch saves multiple TXXX frame values as \n separated lines in auxdata:

    --- mediatomb-0.12.1.orig/src/cds_objects.h     2010-03-25 15:58:11.000000000 +0100
    +++ mediatomb-0.12.1/src/cds_objects.h  2011-03-28 02:01:56.000000000 +0200
    @@ -230,7 +230,15 @@
         /// \brief Set a single auxdata value.
         inline void setAuxData(zmm::String key, zmm::String value)
    -    { auxdata->put(key, value); }
    +//  { auxdata->put(key, value); }
    +    { zmm::String val;
    +      val=getAuxData(key);
    +      if (val != nil)
    +      {
    +        value=val + "\n" + value; 
    +      }
    +      auxdata->put(key, value);
    +    }
         /// \brief Set entire auxdata dictionary.
         inline void setAuxData(zmm::Ref<Dictionary> auxdata)

    This allows then for parsing out the album artist in the import script with something like the following function:

    function getAlbumArtist(obj)
        var txxx = obj.aux["TXXX"];
        var albumartist = null;
        if (txxx)
           var txx = txxx.split('\n');
           for (var i=0; i<txx.length; i+=1)
              var match = /\[album artist\] album artist (.+)/i.exec(txx[i]);
              if (match)
                albumartist = match[1];
        return albumartist;

    Hope this helps, suggestions for improvements welcome!


Log in to post a comment.

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

No, thanks