// Mp3 Tag File // (c) 2024 DASOTA // Script para Directory Opus. var configName = "genero"; function OnInit(initData) { initData.name = "Mp3 Tag File"; initData.version = "1.0"; initData.copyright = "(c) 2024 DASOTA"; initData.desc = "Mp3 Tag File"; initData.default_enable = true; initData.min_version = "13.0"; initData.config_desc = DOpus.Create.Map(); initData.config_desc(configName) = "Modify musical genres"; var gen_perso = DOpus.NewVector(); gen_perso.push_back('A Cappella'); gen_perso.push_back('Abstract'); gen_perso.push_back('Acid'); gen_perso.push_back('Acoustic'); gen_perso.push_back('Alternative'); gen_perso.push_back('Ambient'); gen_perso.push_back('Anime'); gen_perso.push_back('Ballad'); gen_perso.push_back('Baroque'); gen_perso.push_back('Blues'); gen_perso.push_back('Breakbeat'); gen_perso.push_back('Cabaret'); gen_perso.push_back('Chorus'); gen_perso.push_back('Christian'); gen_perso.push_back('Classical'); gen_perso.push_back('Comedy'); gen_perso.push_back('Country'); gen_perso.push_back('Cult'); gen_perso.push_back('Dance'); gen_perso.push_back('Disco'); gen_perso.push_back('Dream'); gen_perso.push_back('Electro'); gen_perso.push_back('Electronic'); gen_perso.push_back('Folklore'); gen_perso.push_back('Freestyle'); gen_perso.push_back('Funk'); gen_perso.push_back('Fusion'); gen_perso.push_back('Game'); gen_perso.push_back('Gospel'); gen_perso.push_back('Gothic'); gen_perso.push_back('Grunge'); gen_perso.push_back('Hard Rock'); gen_perso.push_back('Hardcore'); gen_perso.push_back('Heavy Metal'); gen_perso.push_back('Hip-Hop'); gen_perso.push_back('House'); gen_perso.push_back('Humour'); gen_perso.push_back('Industrial'); gen_perso.push_back('Industro-Goth'); gen_perso.push_back('Instrumental'); gen_perso.push_back('Jazz'); gen_perso.push_back('Latin'); gen_perso.push_back('Meditative'); gen_perso.push_back('Merengue'); gen_perso.push_back('Metal'); gen_perso.push_back('Musical'); gen_perso.push_back('Noise'); gen_perso.push_back('Oldies'); gen_perso.push_back('Opera'); gen_perso.push_back('Other'); gen_perso.push_back('Podcast'); gen_perso.push_back('Pop'); gen_perso.push_back('Pranks'); gen_perso.push_back('Primus'); gen_perso.push_back('Punk'); gen_perso.push_back('Rap'); gen_perso.push_back('Reggae'); gen_perso.push_back('Retro'); gen_perso.push_back('Rock'); gen_perso.push_back('Rock & Roll'); gen_perso.push_back('Salsa'); gen_perso.push_back('Samba'); gen_perso.push_back('Sonata'); gen_perso.push_back('Soul'); gen_perso.push_back('Space'); gen_perso.push_back('Tango'); gen_perso.push_back('Techno'); gen_perso.push_back('Trailer'); gen_perso.push_back('Tribal'); gen_perso.push_back('Vocal'); initData.config[configName] = gen_perso; } function OnAddCommands(addCmdData) { var cmd = addCmdData.AddCommand(); cmd.name = "Mp3TagFile"; cmd.method = "OnMp3TagFile"; cmd.desc = ""; cmd.label = "Mp3 Tag File"; cmd.template = "Mp3TagFile"; cmd.hide = false; cmd.icon = "script"; } function OnMp3TagFile(scriptCmdData) { var dlg = scriptCmdData.func.Dlg(); dlg.title = "Mp3 Tag File - Directory Opus"; dlg.template = 'Mp3TagFile'; dlg.detach = true; dlg.Create var tab = scriptCmdData.func.sourcetab; var item = tab.selected_files(0); function cargar_valores() { dlg.Control("archivo").value = item.name; dlg.Control("titulo").value = item.metadata.audio.mp3title; dlg.Control("artista").value = item.metadata.audio.mp3artist; dlg.Control("album").value = item.metadata.audio.mp3album; dlg.Control("anio").value = item.metadata.audio.mp3year; dlg.Control("pista").value = item.metadata.audio.mp3track; dlg.Control("genero").label = item.metadata.audio.mp3genre; for (var i = 0; i < Script.config[configName].count; i++) { dlg.Control("genero").AddItem(Script.config[configName][i]); } dlg.Control("comentario").value = item.metadata.audio.mp3comment; dlg.Control("artista_album").value = item.metadata.audio.mp3albumartist; dlg.Control("compositor").value = item.metadata.audio.composers; dlg.Control("derechos").value = item.metadata.audio.copyright; dlg.Control("numero_disco").value = item.metadata.audio.mp3disc; if (item.metadata.audio.coverart > 0) { var tmpFile = DOpus.FSUtil().GetTempFile(); tmpFile.Write(item.metadata.audio.coverart(0).data); tmpFile.Close(); dlg.Control("caratula").label = Script.LoadImage(tmpFile); } else { dlg.Control("caratula").label = ''; } dlg.Control("caratula").bg = "#FFFFFF"; if (item.metadata.audio.coverart > 0) { var tmpFile = DOpus.FSUtil().GetTempFile(); tmpFile.Write(item.metadata.audio.coverart(0).data); tmpFile.Close(); var reso = item.metadata.audio.coverart(0); dlg.Control("resolucion").label = reso.width + " x " + reso.height + " x " + reso.depth + " (" + reso.size.fmt + ")"; } else { dlg.Control("resolucion").label = ''; } //Fondo etiqueta dlg.Control("resolucion").fg = "#000000"; dlg.Control("resolucion").bg = "#FFFFFF"; } cargar_valores(); dlg.Show while (true) { msg = dlg.GetMsg(); if (!msg.result) break; var cmd = scriptCmdData.func.command; var coverart_usuario; if (msg.event == "click") { switch (msg.control) { case "btn_anterior": var items = tab.all; if (items.count == 0) return; var primer_item = items(0); var ultimo_item = items(items.count - 1); var compare = DOpus.FSUtil.ComparePath(tab.GetFocusItem(), primer_item); if (compare == true) { cmd.RunCommand("Select LAST"); } else { cmd.RunCommand("Select PREV"); var item = tab.GetFocusItem; cargar_valores(); } break; case "btn_siguiente": var items = tab.all; if (items.count == 0) return; var primer_item = items(0); var ultimo_item = items(items.count - 1); var compare = DOpus.FSUtil.ComparePath(tab.GetFocusItem(), ultimo_item); if (compare == true) { cmd.RunCommand("Select FIRST"); } else { cmd.RunCommand("Select NEXT"); var item = tab.GetFocusItem; cargar_valores(); } break; case "btn_desde_archivo": var name = dlg.Control("archivo").value; var pista_name = name.replace(/(^[0-9]*)(.*)/, "$1"); var match = name.match(/(^[0-9\.\s]*)(.*)(\s-\s)(.*)/); if (match) { var title_name = name.replace(/(^[0-9\.\s]*)(.*)(\s-\s)(.*)/, "$2"); var artist_name = name.replace(/(^[0-9\.\s]*)(.*)(\s-\s)(.*)/, "$4"); } else { var title_name = name.replace(/(^[0-9\.\s]*)(.*)/, "$2"); var artist_name = ""; } var carpeta_superior = item.path.filepart; dlg.Control("pista").value = pista_name; dlg.Control("titulo").value = title_name; dlg.Control("artista").value = artist_name; dlg.Control("album").value = carpeta_superior; break; case "btn_ayuda": var dlg2 = DOpus.Dlg; dlg2.window = dlg; dlg2.title = "Help"; dlg2.icon = "info"; dlg2.message = "This option allows you to set the values of the track, title, artist and album fields from the file name.\n\nEXAMPLE\n\nFavorite ballads (folder)\n 01. Words - Bee Gees.mp3\n \nRESULT \n\nTrack: 01\nTitle: Words\nArtist: Bee Gees\nAlbum: Favorite Ballads\n\nNote: This option will work even if the file name does not exactly match with the format ##. Title - Artist, applying only information that matches."; dlg2.buttons = "OK"; dlg2.Show(); break; case "btn_anadir_caratula": coverart_usuario = dlg.open("Carátula"); dlg.Control("caratula").label = Script.LoadImage(coverart_usuario); break; case "btn_eliminar_caratula": dlg.Control("caratula").label = ''; dlg.Control("resolucion").label = ''; var permitir = true; break; case "btn_eliminar_todo": dlg.Control("titulo").value = ''; dlg.Control("artista").value = ''; dlg.Control("album").value = ''; dlg.Control("anio").value = ''; dlg.Control("pista").value = ''; dlg.Control("genero").label = ''; dlg.Control("comentario").value = ''; dlg.Control("artista_album").value = ''; dlg.Control("compositor").value = ''; dlg.Control("derechos").value = ''; dlg.Control("numero_disco").value = ''; dlg.Control("caratula").label = ''; dlg.Control("resolucion").label = ''; break; case "btn_guardar": var item = tab.GetFocusItem; cmd.RunCommand('SetAttr' + ' FILE="' + item + '" META "title:' + dlg.Control("titulo").value + '"'); cmd.RunCommand('SetAttr' + ' FILE="' + item + '" META "artist:' + dlg.Control("artista").value + '"'); cmd.RunCommand('SetAttr' + ' FILE="' + item + '" META "album:' + dlg.Control("album").value + '"'); cmd.RunCommand('SetAttr' + ' FILE="' + item + '" META "year:' + dlg.Control("anio").value + '"'); cmd.RunCommand('SetAttr' + ' FILE="' + item + '" META "track:' + dlg.Control("pista").value + '"'); cmd.RunCommand('SetAttr' + ' FILE="' + item + '" META "genre:' + dlg.Control("genero").value.name + '"'); cmd.RunCommand('SetAttr' + ' FILE="' + item + '" META "comment:' + dlg.Control("comentario").value + '"'); cmd.RunCommand('SetAttr' + ' FILE="' + item + '" META "albumartist:' + dlg.Control("artista_album").value + '"'); cmd.RunCommand('SetAttr' + ' FILE="' + item + '" META "composers:' + dlg.Control("compositor").value + '"'); cmd.RunCommand('SetAttr' + ' FILE="' + item + '" META "copyright:' + dlg.Control("derechos").value + '"'); cmd.RunCommand('SetAttr' + ' FILE="' + item + '" META "discnumber:' + dlg.Control("numero_disco").value + '"'); if (coverart_usuario || permitir == true) { cmd.RunCommand('SetAttr' + ' FILE="' + item + '" META "coverart:3:' + coverart_usuario + '"'); } break; case "btn_cancelar": dlg.EndDlg(0); break; } } //DOpus.Output("Evento: " + msg.event + ", Control: " + msg.control) //Ver eventos y controles que se que se activan, en el Registro de script } } ==SCRIPT RESOURCES