Skip to content

Instantly share code, notes, and snippets.

@mossspence
Forked from jmorenoamor/JSON.mte
Last active October 23, 2023 10:01
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mossspence/11055073 to your computer and use it in GitHub Desktop.
Save mossspence/11055073 to your computer and use it in GitHub Desktop.
MP3Tag export script for generating a JSON, updated for my usage and JSONLint validation
$filename(json,utf-8){$loop(%_filename_ext%)$puts(CountMax,%_counter%)$loopend()
"numSongs": $get(CountMax),
"songs": '['
$loop(%_filename_ext%) {
"title": "%title%",
"album": "%album%",
"artist": "%artist%",
"album_artist": "%albumartist%",
"composer": "$meta(composer,1)",
"publisher": "%publisher%",
"year": $left(%year%,4),
"track": $num(%track%,1),
"comment": "%comment%",
"codec": "%_codec%",
"bitrate": $mul(%_bitrate%,1000),
"vbr": $if($or($eql(%_vbr%,VBR),$eql(%_tag%,FLAC)),true,false),
"mode": "%_mode%",
"samplerate": %_samplerate%,
"length_seconds": %_length_seconds%,
"tag": "%_tag%",
"tag_read": "%_tag_read%",
"tag_size": %_tag_size%,
"tag_size_appended": %_tag_size_appended%,
"tag_size_prepended": %_tag_size_prepended%,
"id3v2_encoding": "%_id3v2_character_encoding%",
"filename": "%_filename%",
"extension": "%_extension%",
"location": "$regexp(%_folderpath%,'\\','\\\\')",
"directory": "%_directory%",
"file_size": %_file_size_bytes%,
"bpm": %bpm%,
"bpm_start": %BPM_START%,
"fBPM": %fbpm%,
"key_start": "%key_start%",
"key_end": "%key_end%",
"initial_key": "%initialkey%",
"content_group_description": "%contentgroup%",
"genres": '['$if(%genre%,"$meta_sep(genre,"', '")",)']',
"composers": '['$if(%composer%,"$meta_sep(composer,"', '")",)']',
"covers": '['$if($grtr(%_covers%,0),
{
"mimetype": $if2("%_cover_mimetype%",null)','
"type": $if2("%_cover_type%",null)','
"size": $if2(%_cover_size%,0)
}
,)'],'
"n_genres": $if(%genre%,$add($len($regexp($meta(genre),'[^,]',)),1),0),
"n_composers": $if(%composer%,$add($len($regexp($meta(composer),'[^,]',)),1),0),
"n_covers": $if2(%_covers%,0)
}$if($eql($get(CountMax),%_counter%),,',')
$loopend() ']'
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment