POPULARIMETER tag

Mediamonkey stores all its rating info in the POPULARIMETER tag. It's value in Mp3tag comes up like this:

That means it has a star rating of 4. And if it it says 255 inplace of 205 then it means it has a star rating of 5.

My question - is there a configuration for a custom column that displays the ratings as a * or single digit number, instead of the 'no@email|205|0' information?

Can that tag also contain 208 for example? Could you also write the values written for 1, 2 and 3 stars?

I had a look at the program and made this format string:

$ifgreater($mid(%comment%,$add($strchr(%comment%,|),1),$sub($strchr($mid(%comment%,$add($strchr(%comment%,|),1),$len(%comment%)),|),1)),52,$ifgreater($mid(%comment%,$add($strchr(%comment%,|),1),$sub($strchr($mid(%comment%,$add($strchr(%comment%,|),1),$len(%comment%)),|),1)),103,$ifgreater($mid(%comment%,$add($strchr(%comment%,|),1),$sub($strchr($mid(%comment%,$add($strchr(%comment%,|),1),$len(%comment%)),|),1)),153,$ifgreater($mid(%comment%,$add($strchr(%comment%,|),1),$sub($strchr($mid(%comment%,$add($strchr(%comment%,|),1),$len(%comment%)),|),1)),204,$ifgreater($mid(%comment%,$add($strchr(%comment%,|),1),$sub($strchr($mid(%comment%,$add($strchr(%comment%,|),1),$len(%comment%)),|),1)),254,*****,****),***),**),*),)

Hope it's OK. :stuck_out_tongue:

Thanks for the feedback.

no@email|255|0 = 5
no@email|205|0 = 4
no@email|154|0 = 3
no@email|104|0 = 2
no@email|53|0 = 1

That code you provided. Is it for an action? Or a columns value? I tried putting it in the columns field, but nothing happend.

Using $ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),52,$ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),103,$ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),153,$ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),204,$ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),254,***,*),),),*),)
at View > Columns > Value and $mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)) at Sort by should speed up things a little bit.

Best regards,
~ Florian

Ok, just use your code Florian. And it works perfectly.

Thanks so much everyone.

Sorry dass ich den alten Beitrag nochmal rauskrame.
Aber in dem Code stimmen die Werte nicht ganz außer 254, die anderen Werte müssen niedriger sein, dann zeigts die Sterne richtig an.
Ich hab mich jetzt mal nach den Werten von Helium Music Manager gerichtet, der unterstützt Popularimeter.

Hab noch die halben Sterne ergänzt und durch nen hochgesetzten Punkt dargestellt (·) $ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),24,$ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),50,$ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),75,$ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),101,$ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),126,$ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),152,$ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),177,$ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),203,$ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),228,$ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),254,*****,·),),·),),·),**),·),),·),)View > Columns > Value

$mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)) <span style='color:green'>Sort by</span>

Danke an Florian für dein Tolles Programm, nutze es schon seit Jahren und hab auch schon Gespendet, weiter so :wink:

Mfg Brakker

This thread has been started with a question regarding Mediamonkey stores rating info in the POPULARIMETER tag.

There is described a known ID3v2 rating tag issue ... and a loose de facto standard for implementation of song ratings ...
https://en.wikipedia.org/wiki/ID3

This list details how Windows Explorer reads and writes the POPM frame:
224-255 = 5 stars when READ with Windows Explorer, writes 255
160-223 = 4 stars when READ with Windows Explorer, writes 196
096-159 = 3 stars when READ with Windows Explorer, writes 128
032-095 = 2 stars when READ with Windows Explorer, writes 64
001-031 = 1 star when READ with Windows Explorer, writes 1

Now you report a different rating scale especially regarding the Helium Music Manager?
Please verify which 'trigger numbers' are right for the Helium Music Manager to show the correct 'half-/star systematics' ...

  •    000  000
    

° 024 025

  •     050  051
    

*° 075 076
** 101 102
**° 126 127
*** 152 153
***° 177 178
**** 203 204
****° 228 229
***** 254 255

... or is there any different systematic?

Thank you in advance.

DD.20170520.1237.CEST

I think the right column of your list has exactly the values that Helium Music Manager uses.

The deleted values are only the correct ones for the code for Mp3tag (because of "$ifgreater")

  •     000
    

° 025

  •      051
    

*° 076
** 102
**° 127
*** 153
***° 178
**** 204
****° 229
***** 255

Ok, let us take this as reality. Thanks for checking.

DD.201705.22.1010.CEST

Maybe something like this comparison table could be helpful:
https://docs.google.com/spreadsheets/d/1kO1...dit?usp=sharing

Everyone is invited to add "his" media program and POPM values (no login is necessary to change the google spreadsheet :wink: ). Would be nice to see the actual values for some popular media management programs.

Please add a comment for your changes in the changelog.

I had to edit Florian's script to display "MusicBee's" rating stars:

$ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),0,$ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),63,$ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),127,$ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),195,$ifgreater($mid(%popularimeter%,$add($strchr(%popularimeter%,|),1),$len(%popularimeter%)),254,*****, ****), ***), **), *), -)

[I had to include some spaces in the script, otherwise it is 'distorted' the asterisks - take care.]

Thanks Florian

Just to let you see the differences:

Florian's version:

igavio's version:

Ratings, a nasty story in tagging music.

I use MusicBee to listen to music and occasionally I rate it there. The star ratings update the MP3 file and are stores in tag 'POPULARIMETER' coded as a number 1-64-128-196-255 for 1 to 5 stars (see messages above).

There are also ratings stored in tag 'RATING MM' coded as an integer 1 to 5.

Is there a script (or a guide for scripts) that scans all collection songs, retrieves the POPULARIMETER value and saves it as RATING MM ?

Essentially something like:
UPDATE "SongsCollection"
SET [RATING MM] = func([POPULARIMETER])
WHERE Not IsNull([POPULARIMETER]) And IsNull([RATING MM]);

AFAIK it is always the field POPULARIMETER or POPM - only the internal format varies.
E.g. for MM the real, unprocessed format is:
5 stars, writes no@email|255|0
4 stars, writes no@email|196|0
3 stars, writes no@email|128|0
2 stars, writes no@email|64|0
1 stars, writes no@email|1|0
0 stars, writes no@email|0|0

Whereas Rating WMP takes
Windows Media Player 9 Series|255
Windows Media Player 9 Series|196
Windows Media Player 9 Series|128
Windows Media Player 9 Series|64
Windows Media Player 9 Series|1
To see the actual raw contents of the field POPULARIMETER, see Tools>options>Tags>Enhanced.
If you toggle that option and you have 2 columns, one for POPULARIMETER and one for e.g. Rating MM then switching off the raw values will display an empty column for POPULARIMETER and a filled one for Rating MM. Vice versa, you will see the raw value in POPULARIMETER and nothing in Rating MM.
So it should be easy to write a set of actions to replace a single digit with the further info for the respective player.