/////////////////////////////////////////////////////////////////////////////// //v0.1 - 2o14 //- initial //v0.1.1 //- min version added //- prepared for automatic updates/scriptwizard /////////////////////////////////////////////////////////////////////////////// function OnInit(data){ //uid added via script wizard (do not change after publishing this script) var uid = "BA74AA3B-9915-4C7C-B3BD-0B2A007E328E"; //resource center url added via script wizard (required for updating) var url = "http://resource.dopus.com/viewtopic.php?f=35&t=22649"; data.name = "Command.File: JoinMP3"; data.desc = "Join mp3 music files (and other?) with ffmpeg.exe."; data.copyright = "tbone"; data.version = "0.1.1"; data.min_version = "11.1"; data.default_enable = false; data.config["FFMpegExe"] = "c:\\program files\\ffmpeg\\bin\\ffmpeg.exe"; data.config["PauseAtEnd"] = true; var cmd = data.AddCommand(); cmd.name = "JoinMP3"; cmd.method = "Command_JoinMP3"; cmd.desc = data.desc; cmd.label = "JoinMP3"; cmd.template = "FFMPEGEXE/K,TARGETFILE/K,FILES/M,PAUSEATEND/K"; } /////////////////////////////////////////////////////////////////////////////// function Command_JoinMP3(data) { DOpus.Output("JoinMP3:"); var files = GetFiles(data); if (!files || files.count==1){ DOpus.Output("Not enough files given."); return false; } data.func.command.ClearFiles(); data.func.command.SetType("msdos"); var pause = ForceBoolean(GetParameter(data, "pauseatend", "PauseAtEnd", true)); var ffmpegExe = GetParameter(data, "ffmpegexe", "FFMpegExe", "c:\\program files\\ffmpeg\\bin\\ffmpeg.exe"); if (!DOpus.FSUtil.Exists(ffmpegExe)){ DOpus.Output("FFMpeg.exe not found ["+ffmpegExe+"]. Check FFMPEGEXE cmdline parameter or script-config."); return false; } var firstFile = ""; var fileNamesJoined = ""; for(var file;!files.enumerator.atEnd();) { file=files.enumerator.item(); files.enumerator.moveNext(); DOpus.Output("File to join: "+file); fileNamesJoined+=file; if (firstFile=="") firstFile=file; if (!files.enumerator.atEnd()) fileNamesJoined+="|"; } if (!(targetFile = GetParameter(data, "targetfile", "targetfile", firstFile.path+"\\joined_"+firstFile.name_stem+"_joined"+firstFile.ext))){ DOpus.Output("No targetfile given. Check TARGETFILE cmdline parameter or script-config."); return false; } DOpus.Output("Target: " + targetFile); var cmd = '"'+ffmpegExe+'" -i "concat:'+fileNamesJoined+'" -acodec copy "'+targetFile+'"'; DOpus.Output("Command: "+cmd); data.func.command.AddLine(cmd); if (pause===true) data.func.command.AddLine("Pause"); data.func.command.Run(); return true; } /////////////////////////////////////////////////////////////////////////////// function GetFiles(data){ if (data.func.args.got_arg.files) var files = data.func.args.files; else if (data.func.sourcetab.selected_files.count) var files = data.func.sourcetab.selected_files; else var files = data.func.sourcetab.files; return { enumerator:new Enumerator(files), count:files.count}; } /////////////////////////////////////////////////////////////////////////////// function GetParameter( data, templateName, configName, defaultValue){ if (templateName && data.func.args.got_arg[templateName]) return data.func.args[templateName] if (configName && Script.config[configName]!=undefined){ switch(typeof(Script.config[configName])){ case "string": if(Script.config[configName]!=="") return Script.config[configName]; break; case "boolean": return Script.config[configName]; } } return defaultValue; } /////////////////////////////////////////////////////////////////////////////// function ForceBoolean(variant){ switch(variant+"".toLowerCase()){ case "true": case "yes": case "1": return true; case "false": case "no": case "0": case null: return false; default: return Boolean(string); } } /////////////////////////////////////////////////////////////////////////////// function OnAboutScript(data){ //v0.1 var cmd = DOpus.Create.Command(); if (!cmd.Commandlist('s').exists("ScriptWizard")){ if (DOpus.Dlg.Request("The 'ScriptWizard' add-in has not been found.\n\n"+ "Install 'ScriptWizard' from [resource.dopus.com].\nThe add-in enables this dialog and also offers "+ "easy updating of scripts and many more.","Yes, take me there!|Cancel", "No About.. ", data.window)) cmd.RunCommand('http://resource.dopus.com/viewtopic.php?f=35&t=23179');} else cmd.RunCommand('ScriptWizard ABOUT WIN='+data.window+' FILE="'+Script.File+'"'); } //MD5 = "d0d92a0e09822a4e626edd6112b2560c"; DATE = "2014.11.21 - 01:49:34"