SongKong Jaikoz

SongKong and Jaikoz Music Tagger Community Forum

first artist char as mask

because I would like to organize my huge music collection like this:

A/Artist/Album/Track

[quote=bugmenot]because I would like to organize my huge music collection like this:

A/Artist/Album/Track[/quote]

I would like both %firstartistchar% and %firstbestartistchar%

but what about bands like �Cubanismo! or …And You Will Know Us by the Trail of Dead? Would you want those as your folder name?

Eventually I want to add problem conditional controls and functions to this area but I havent worked out the best way to this I was hoping I coukld reuse something else.

why not do a $first() that way it could be Artist or album or anything that you want and will return the first letter.

yes, but I have to code that , I dont have an infrastructure for parsing ${first} in to the underlying code and I would like to find a library to do this for me instead of me reinventing it…

Completely understand. It would be nice feature to have I just thought there might already be a function there.

Hi at all,

I am really interested in such a function.
Are there any plans to realize such enhanced Masks in future versions of Jaikoz?

Did you made any progress om finding a suitable java parser for your purposes?

Best regards.

why not use these for other :]

variable(blahblah,4) - first 4 chars used ?

Extracting some parts of strings should not be the problem at all. In Java there is a String-Object method called:
substring(int begin, int end)

But it is slightly more compicated to parse the mask expression. If you want to do this “by the book” you should create a grammar for the desired language which covers all the possible mask statements. Then you can generate a parser class for java with some special tools. Then this parser class can “read” the mask expressions and transform them into a java object.
Afterward you have to integrate this parsing class into the function that is responsible for running the rename process. After that you can “react” on the term “variable” or “$variable(String, int)” and access the values via e.g. the myParserClassObject.way.through.the.parsed.term.getFunctionName().getParameter()[0]
Then you can e.g. process the retreived function name (in this case “variable”) out of the parser object and then call this method via java reflections api with the parsed parameters (in this case the String and the Integer value). In the “variable” method there can simply be this substring statement from the beginning of my post.

So I think this is a lot more complicated then “soley” add a new mask for only the first letter of the Interpret field, because you can “hardcode” this funktionality.

If I had missed the “easy way” please respond.
Best regards.

PS: sorry for my english - I am not a native speaker (writer) :slight_smile:

Oh and then there is the additional problem: what to do with bands like “The Beatles”, “The Police”, “A Fine Frenzy” and so on.

Personally I would like to have them filed under “B”, “P” and “F”, just like record stores do.

In Germany that would add the words “Die”, “Der”, “Das”, “Ein”, “Eine”, “Einer” and “Eines” to that list as well. In France probably “Le”, “La”, “Un” and “Une”, other languages will bring their own words. So it probably should be configurable with an “ignore words” list.

I have my library setup in a similar manner. I am not sure if this would be of any use, but you could always check out how mediamonkey does their file moves to get some ideas on how to do it. They have by far the best gui for being able to setup how to move files. Very easy to use and setup, yet powerful. I have mine setup to ignore words like The, And, A, El, La, Da, etc and to then to create folders and put them in the correct corresponding alphabet parent folder.