// EBook Meta // (c) 2020 Steve Banham scriptName = "Epub Meta"; scriptVersion = "1.2"; scriptDate = "16/4/2020"; scriptCopyright = "(c) 2020 Steve Banham"; scriptMinVersion = "12.20"; scriptDesc = "Edit and polish epub metadata."; var pathCalibre; var flgAuthorChanged = false; var flgTitleChanged = false; var flgTitleSortChanged = false; var flgSeriesChanged = false; var flgSeriesNumChanged = false; var flgPublisherChanged = false; var flgBookProducerChanged = false; var flgLanguagesChanged = false; var flgPublishedChanged = false; var flgIdentifiersChanged = false; var flgTagsChanged = false; var flgJacket = false; var flgJacketRemove = false; var flgSoftHyphen = false; var flgSoftHyphenRemove = false; var flgInsertCover = false; var flgCompress = false; var flgEmbed = false; var flgUpgrade = false; var flgExtractCover = false; var flgSelectedItem = ""; var arrLines = []; var strAuthor, strTitle, strTitleSort, strSeries, strSeriesNum, strPublisher, strBookProducer, strLanguages, strPublished, strIdentifiers, strTags; var tmpCoverFile, tmpCoverFileNew; function OnInit(initData) { initData.name = scriptName; initData.version = scriptVersion; initData.copyright = scriptCopyright; initData.desc = scriptDesc; initData.default_enable = true; initData.min_version = scriptMinVersion; initData.log_prefix = "EBook Meta"; initData.url = "https://resource.dopus.com/t/epub-meta/35187"; initData.config_desc = DOpus.Create.Map(); var configName = ""; configName = "calibre_path"; initData.Config[configName] = "C:\\Program Files (x86)\\Calibre2"; initData.config_desc(configName) = "The path to your Calibre installation."; var cmd = initData.AddCommand(); cmd.name = "EpubMeta"; cmd.method = "onEpubMeta"; cmd.desc = "Edit and polish ebook (.epub) metadata."; cmd.label = "EpubMeta"; } function onEpubMeta(scriptCmdData) { var srcTab = scriptCmdData.func.sourcetab; pathCalibre = Script.Config["calibre_path"]; if (pathCalibre.substr(-1) == "\\") { pathCalibre = pathCalibre.substr(0, pathCalibre.length - 1); } if (srcTab.stats.selfiles == 0) { DOpus.Output("No file selected!", false, true); return; } var selectedFile = srcTab.selected_files(0); if (selectedFile.ext != ".epub") { DOpus.Output("Selected file not supported! \(.epub only\).", false, true); return; } var dlg = DOpus.Dlg; dlg.window = srcTab; dlg.title = scriptName + " " + scriptVersion + " - Directory Opus"; dlg.template = "dlgEpubMeta"; dlg.LoadPosition("Steve_EpubMeta"); dlg.detach = true; dlg.Show(); dlg.Control("staticFile").style = "b"; dlg.Control("staticNotify").style = "b"; if (DOpus.FSUtil.Exists(pathCalibre + "\\" + "\\" + "\\" + "ebook-meta.exe") == false) { DOpus.Output("Cannot find ebook-meta.exe"); DOpus.Output("Check the path to Calibre at the top of the script."); dlg.EndDlg(); return; } if (DOpus.FSUtil.Exists(pathCalibre + "\\" + "ebook-polish.exe") == false) { DOpus.Output("Cannot find ebook-polish.exe"); DOpus.Output("Check the path to Calibre at the top of the script."); return; } readMetadata(scriptCmdData, dlg, srcTab, selectedFile); updateDialog(srcTab, dlg, arrLines); while (true) { var msg = dlg.GetMsg(); if (!msg.result) break; if (msg.event == "dblclk" && dlg.Control("listMetadata").focus == true) { dlg.Control("editCurrentEntry").enabled = true; dlg.Control("btnUndo").enabled = true; if (dlg.Control("listMetadata").value == 0) { dlg.Control("editCurrentEntry").value = dlg.Control("listMetadata").GetItemAt(0).subitems(0); strUndoItem = dlg.Control("listMetadata").GetItemAt(0).subitems(0); flgSelectedItem = "Author\/s"; } if (dlg.Control("listMetadata").value == 1) { dlg.Control("editCurrentEntry").value = dlg.Control("listMetadata").GetItemAt(1).subitems(0); strUndoItem = dlg.Control("listMetadata").GetItemAt(1).subitems(0); flgSelectedItem = "Title"; } if (dlg.Control("listMetadata").value == 2) { dlg.Control("editCurrentEntry").value = dlg.Control("listMetadata").GetItemAt(2).subitems(0); strUndoItem = dlg.Control("listMetadata").GetItemAt(2).subitems(0); flgSelectedItem = "Title Sort"; } if (dlg.Control("listMetadata").value == 3) { dlg.Control("editCurrentEntry").value = dlg.Control("listMetadata").GetItemAt(3).subitems(0); strUndoItem = dlg.Control("listMetadata").GetItemAt(3).subitems(0); flgSelectedItem = "Series"; } if (dlg.Control("listMetadata").value == 4) { dlg.Control("editCurrentEntry").value = dlg.Control("listMetadata").GetItemAt(4).subitems(0); strUndoItem = dlg.Control("listMetadata").GetItemAt(4).subitems(0); flgSelectedItem = "Series Number"; } if (dlg.Control("listMetadata").value == 5) { dlg.Control("editCurrentEntry").value = dlg.Control("listMetadata").GetItemAt(5).subitems(0); strUndoItem = dlg.Control("listMetadata").GetItemAt(5).subitems(0); flgSelectedItem = "Publisher"; } if (dlg.Control("listMetadata").value == 6) { dlg.Control("editCurrentEntry").value = dlg.Control("listMetadata").GetItemAt(6).subitems(0); strUndoItem = dlg.Control("listMetadata").GetItemAt(6).subitems(0); flgSelectedItem = "Book Producer"; } if (dlg.Control("listMetadata").value == 7) { dlg.Control("editCurrentEntry").value = dlg.Control("listMetadata").GetItemAt(7).subitems(0); strUndoItem = dlg.Control("listMetadata").GetItemAt(7).subitems(0); flgSelectedItem = "Languages"; } if (dlg.Control("listMetadata").value == 8) { dlg.Control("editCurrentEntry").value = dlg.Control("listMetadata").GetItemAt(8).subitems(0); strUndoItem = dlg.Control("listMetadata").GetItemAt(8).subitems(0); flgSelectedItem = "Published Date"; } if (dlg.Control("listMetadata").value == 9) { dlg.Control("editCurrentEntry").value = dlg.Control("listMetadata").GetItemAt(9).subitems(0); strUndoItem = dlg.Control("listMetadata").GetItemAt(9).subitems(0); flgSelectedItem = "Identifiers"; } if (dlg.Control("listMetadata").value == 10) { dlg.Control("editCurrentEntry").value = dlg.Control("listMetadata").GetItemAt(10).subitems(0); strUndoItem = dlg.Control("listMetadata").GetItemAt(10).subitems(0); flgSelectedItem = "Tags"; } } if(msg.event == "click" && dlg.Control("btnUndo").focus == true) { if (flgSelectedItem == "Author\/s") { dlg.Control("listMetadata").GetItemAt(0).subitems(0) = strUndoItem; dlg.Control("editCurrentEntry").value = ""; dlg.Control("editCurrentEntry").enabled = false; dlg.Control("btnUndo").enabled = false; flgAuthorChanged = false; } if (flgSelectedItem == "Title") { dlg.Control("listMetadata").GetItemAt(1).subitems(0) = strUndoItem; dlg.Control("editCurrentEntry").value = ""; dlg.Control("editCurrentEntry").enabled = false; dlg.Control("btnUndo").enabled = false; flgTitleChanged = false; } if (flgSelectedItem == "Title Sort") { dlg.Control("listMetadata").GetItemAt(2).subitems(0) = strUndoItem; dlg.Control("editCurrentEntry").value = ""; dlg.Control("editCurrentEntry").enabled = false; dlg.Control("btnUndo").enabled = false; flgTitleSortChanged = false; } if (flgSelectedItem == "Series") { dlg.Control("listMetadata").GetItemAt(3).subitems(0) = strUndoItem; dlg.Control("editCurrentEntry").value = ""; dlg.Control("editCurrentEntry").enabled = false; dlg.Control("btnUndo").enabled = false; flgSeriesChanged = false; } if (flgSelectedItem == "Series Number") { dlg.Control("listMetadata").GetItemAt(4).subitems(0) = strUndoItem; dlg.Control("editCurrentEntry").value = ""; dlg.Control("editCurrentEntry").enabled = false; dlg.Control("btnUndo").enabled = false; flgSeriesNumChanged = false; } if (flgSelectedItem == "Publisher") { dlg.Control("listMetadata").GetItemAt(5).subitems(0) = strUndoItem; dlg.Control("editCurrentEntry").value = ""; dlg.Control("editCurrentEntry").enabled = false; dlg.Control("btnUndo").enabled = false; flgPublisherChanged = false; } if (flgSelectedItem == "Book Producer") { dlg.Control("listMetadata").GetItemAt(6).subitems(0) = strUndoItem; dlg.Control("editCurrentEntry").value = ""; dlg.Control("editCurrentEntry").enabled = false; dlg.Control("btnUndo").enabled = false; flgBookProducerChanged = false; } if (flgSelectedItem == "Languages") { dlg.Control("listMetadata").GetItemAt(7).subitems(0) = strUndoItem; dlg.Control("editCurrentEntry").value = ""; dlg.Control("editCurrentEntry").enabled = false; dlg.Control("btnUndo").enabled = false; flgLanguagesChanged = false; } if (flgSelectedItem == "Published Date") { dlg.Control("listMetadata").GetItemAt(8).subitems(0) = strUndoItem; dlg.Control("editCurrentEntry").value = ""; dlg.Control("editCurrentEntry").enabled = false; dlg.Control("btnUndo").enabled = false; flgPublishedChanged = false; } if (flgSelectedItem == "Identifiers") { dlg.Control("listMetadata").GetItemAt(9).subitems(0) = strUndoItem; dlg.Control("editCurrentEntry").value = ""; dlg.Control("editCurrentEntry").enabled = false; dlg.Control("btnUndo").enabled = false; flgIdentifiersChanged = false; } if (flgSelectedItem == "Tags") { dlg.Control("listMetadata").GetItemAt(10).subitems(0) = strUndoItem; dlg.Control("editCurrentEntry").value = ""; dlg.Control("editCurrentEntry").enabled = false; dlg.Control("btnUndo").enabled = false; flgTagsChanged = false; } } if (msg.event == "editchange" && dlg.Control("editCurrentEntry").focus == true) { if (flgSelectedItem == "Author\/s") { dlg.Control("listMetadata").GetItemAt(0).subitems(0) = dlg.Control("editCurrentEntry").value; flgAuthorChanged = true; } if (flgSelectedItem == "Title") { dlg.Control("listMetadata").GetItemAt(1).subitems(0) = dlg.Control("editCurrentEntry").value; flgTitleChanged = true; } if (flgSelectedItem == "Title Sort") { dlg.Control("listMetadata").GetItemAt(2).subitems(0) = dlg.Control("editCurrentEntry").value; flgTitleSortChanged = true; } if (flgSelectedItem == "Series") { dlg.Control("listMetadata").GetItemAt(3).subitems(0) = dlg.Control("editCurrentEntry").value; flgSeriesChanged = true; } if (flgSelectedItem == "Series Number") { dlg.Control("listMetadata").GetItemAt(4).subitems(0) = dlg.Control("editCurrentEntry").value; flgSeriesNumChanged = true; } if (flgSelectedItem == "Publisher") { dlg.Control("listMetadata").GetItemAt(5).subitems(0) = dlg.Control("editCurrentEntry").value; flgPublisherChanged = true; } if (flgSelectedItem == "Book Producer") { dlg.Control("listMetadata").GetItemAt(6).subitems(0) = dlg.Control("editCurrentEntry").value; flgBookProducerChanged = true; } if (flgSelectedItem == "Languages") { dlg.Control("listMetadata").GetItemAt(7).subitems(0) = dlg.Control("editCurrentEntry").value; flgLanguagesChanged = true; } if (flgSelectedItem == "Published Date") { dlg.Control("listMetadata").GetItemAt(8).subitems(0) = dlg.Control("editCurrentEntry").value; flgPublishedChanged = true; } if (flgSelectedItem == "Identifiers") { dlg.Control("listMetadata").GetItemAt(9).subitems(0) = dlg.Control("editCurrentEntry").value; flgIdentifiersChanged = true; } if (flgSelectedItem == "Tags") { dlg.Control("listMetadata").GetItemAt(10).subitems(0) = dlg.Control("editCurrentEntry").value; flgTagsChanged = true; } } if (msg.event == "click" && dlg.Control("checkJacket").focus == true) { if (dlg.Control("checkJacket").value == true) { dlg.Control("checkJacketRemove").enabled = false; flgJacket = true; } else { dlg.Control("checkJacketRemove").enabled = true; flgJacket = false; } } if (msg.event == "click" && dlg.Control("checkJacketRemove").focus == true) { if (dlg.Control("checkJacketRemove").value == true) { dlg.Control("checkJacket").enabled = false; flgJacketRemove = true; } else { dlg.Control("checkJacket").enabled = true; flgJacketRemove = false; } } if (msg.event == "click" && dlg.Control("checkSoftHyphen").focus == true) { if (dlg.Control("checkSoftHyphen").value == true) { dlg.Control("checkSoftHyphenRemove").enabled = false; flgSoftHyphen = true; } else { dlg.Control("checkSoftHyphenRemove").enabled = true; flgSoftHyphen = false; } } if (msg.event == "click" && dlg.Control("checkSoftHyphenRemove").focus == true) { if (dlg.Control("checkSoftHyphenRemove").value == true) { dlg.Control("checkSoftHyphen").enabled = false; flgSoftHyphenRemove = true; } else { dlg.Control("checkSoftHyphen").enabled = true; flgSoftHyphenRemove = false; } } if (msg.event == "click" && dlg.Control("checkCompress").focus == true) { if (dlg.Control("checkCompress").value == true) { flgCompress = true; } else { flgCompress = false; } } if (msg.event == "click" && dlg.Control("checkEmbed").focus == true) { if (dlg.Control("checkEmbed").value == true) { flgEmbed = true; } else { flgEmbed = false; } } if (msg.event == "click" && dlg.Control("checkUpgrade").focus == true) { if (dlg.Control("checkUpgrade").value == true) { flgUpgrade = true; } else { flgUpgrade = false; } } if (msg.event == "click" && dlg.Control("checkExtractCover").focus == true) { if (dlg.Control("checkExtractCover").value == true) { flgExtractCover = true; } else { flgExtractCover = false; } } if (msg.event == "click" && dlg.Control("checkInsertCover").focus == true) { if (dlg.Control("checkInsertCover").value == true) { if (!dlg.Control("editInsertCover").value == "") { dlg.Control("staticCover").label = tmpCoverFileNew; } dlg.Control("editInsertCover").enabled = true; dlg.Control("btnSelectCover").enabled = true; flgInsertCover = true; dlg.Control("staticNotify").label = ""; } else { dlg.Control("staticCover").label = tmpCoverFile; dlg.Control("editInsertCover").enabled = false; dlg.Control("btnSelectCover").enabled = false; flgInsertCover = false; } } if (msg.event == "click" && dlg.Control("btnSelectCover").focus == true) { var dlgResult = dlg.Open("Select a new cover image...", selectedFile.path, dlg); if(dlgResult && dlgResult.result) { if (dlgResult.metadata == "image") { var resultVector = dlgResult.path.split(); var strPath = ""; strPath = resultVector(0) + "\\"; for (i=1; i < resultVector.length; i ++) { var strPath = strPath + resultVector(i) + "\\\\"; } tmpCoverFileNew = strPath + dlgResult.name; dlg.Control("staticCover").label = tmpCoverFileNew; dlg.Control("editInsertCover").value = dlgResult; } else { dlg.Control("staticNotify").label = "Not an image file..."; dlg.Control("checkInsertCover").value = false; dlg.Control("editInsertCover").enabled = false; dlg.Control("btnSelectCover").enabled = false; flgInsertCover = false; } } } if (msg.event == "click" && dlg.Control("btnApply").focus == true) { dlg.Control("editCurrentEntry").value = ""; dlg.Control("editCurrentEntry").enabled = false; dlg.Control("btnUndo").enabled = false; flgSelectedItem = ""; applyChanges(selectedFile, dlg); readMetadata(scriptCmdData, dlg, srcTab, selectedFile); updateDialog(srcTab, dlg, arrLines); } if (flgAuthorChanged == true || flgTitleChanged == true || flgTitleSortChanged == true || flgSeriesChanged == true || flgSeriesNumChanged == true || flgPublisherChanged == true || flgBookProducerChanged == true || flgLanguagesChanged == true || flgPublishedChanged == true || flgIdentifiersChanged == true || flgTagsChanged == true || flgJacket == true || flgJacketRemove == true || flgSoftHyphen == true || flgSoftHyphenRemove == true || flgInsertCover == true || flgCompress == true || flgEmbed == true || flgUpgrade == true || flgExtractCover) { dlg.Control("btnApply").enabled = true; } else { if (flgAuthorChanged == false || flgTitleChanged == false || flgTitleSortChanged == false || flgSeriesChanged == false || flgSeriesNumChanged == false || flgPublisherChanged == false || flgBookProducerChanged == false || flgLanguagesChanged == false || flgPublishedChanged == false || flgIdentifiersChanged == false || flgTagsChanged == true || flgJacket == false || flgJacketRemove == false || flgSoftHyphen == false || flgSoftHyphenRemove == false || flgInsertCover == false || flgCompress == false || flgEmbed == false || flgUpgrade == false || flgExtractCover) { dlg.Control("btnApply").enabled = false; } } if (msg.event == "click" && dlg.Control("btnClose").focus == true) { cmd.RunCommand("DELETE NORECYCLE QUIET \"" + tmpFile + "\""); cmd.RunCommand("DELETE NORECYCLE QUIET \"" + tmpCoverFile + "\""); dlg.SavePosition("Steve_EpubMeta"); dlg.EndDlg(); return; } } cmd.RunCommand("DELETE NORECYCLE QUIET \"" + tmpFile + "\""); cmd.RunCommand("DELETE NORECYCLE QUIET \"" + tmpCoverFile + "\""); dlg.SavePosition("Steve_EpubMeta"); } function readMetadata(scriptCmdData, dlg, srcTab, selectedFile) { dlg.Control("staticNotify").label = "Reading metadata..."; cmd = scriptCmdData.func.command; cmd.SetType("msdos"); cmd.SetModifier("runmode","hide"); var fso = new ActiveXObject("Scripting.FilesystemObject"); var tfolder, tfile, tname, fname; tmpFolder = fso.GetSpecialFolder(2); tmpName = fso.GetTempName(); tmpCoverName = fso.GetTempName(); tmpFile = tmpFolder + "\\" + tmpName; tmpCoverFile = tmpFolder + "\\" + tmpCoverName; cmd.RunCommand("\"" + pathCalibre + "\\" + "\\" + "ebook-meta.exe\" " + "\"" + selectedFile + "\"" + " --get-cover " + tmpCoverFile); cmd.RunCommand("\"" + pathCalibre + "\\" + "\\" + "ebook-meta.exe\" " + "\"" + selectedFile + "\"" + " > " + tmpFile); dlg.Control("staticCover").label = tmpCoverFile; var tmpDataFile = fso.OpenTextFile(tmpFile, 1, 0); if (!tmpDataFile.AtEndOfStream) { var content = tmpDataFile.ReadAll(); arrLines = content.split(/\r\n|\n/); } tmpDataFile.Close(); dlg.Control("staticNotify").label = ""; } function updateDialog(srcTab, dlg, arrLines) { dlg.Control("staticFile").label = srcTab.selected_files(0).realpath; dlg.Control("listMetadata").AddItem("Author\/s"); // 0 dlg.Control("listMetadata").AddItem("Title"); // 1 dlg.Control("listMetadata").AddItem("Title Sort"); // 2 dlg.Control("listMetadata").AddItem("Series"); // 3 dlg.Control("listMetadata").AddItem("Series Number"); // 4 dlg.Control("listMetadata").AddItem("Publisher"); 5 dlg.Control("listMetadata").AddItem("Book Producer"); // 6 dlg.Control("listMetadata").AddItem("Languages"); // 7 dlg.Control("listMetadata").AddItem("Published Date"); // 8 dlg.Control("listMetadata").AddItem("Identifiers"); // 9 dlg.Control("listMetadata").AddItem("Tags"); // 10 for (i=0; i < arrLines.length; i ++) { if (arrLines[i].search("Author") > -1) { strAuthor = arrLines[i].substring(22); var hasSortField = strAuthor.search("\\["); if (hasSortField > -1) { strAuthor = strAuthor.substring(0,hasSortField); } strAuthor = strAuthor.replace(/^\s+|\s+$/gm,''); if (arrLines[i].search("Author") > -1) { dlg.Control("listMetadata").GetItemAt(0).subitems(0) = strAuthor; } } if (arrLines[i].search("Title") > -1) { if (arrLines[i].search("Title sort") == -1) { strTitle = arrLines[i].substring(22); strTitle = strTitle.replace(/^\s+|\s+$/gm,''); if (arrLines[i].search("Title") > -1) { dlg.Control("listMetadata").GetItemAt(1).subitems(0) = strTitle; } } else { strTitleSort = arrLines[i].substring(22); strTitleSort = strTitleSort.replace(/^\s+|\s+$/gm,''); if (arrLines[i].search("Title sort") > -1) { dlg.Control("listMetadata").GetItemAt(2).subitems(0) = strTitleSort; } } } if (arrLines[i].search("Series") > -1) { var strSeries = arrLines[i].substring(22); var hasSeriesNum = strSeries.search("#"); if (hasSeriesNum > -1) { var strSeriesNum = strSeries.slice(hasSeriesNum); strSeriesNum = strSeriesNum.replace("#",""); strSeries = strSeries.substring(0,hasSeriesNum); } strSeries = strSeries.replace(/^\s+|\s+$/gm,''); if (arrLines[i].search("Series") > -1) { dlg.Control("listMetadata").GetItemAt(3).subitems(0) = strSeries; dlg.Control("listMetadata").GetItemAt(4).subitems(0) = strSeriesNum; } } if (arrLines[i].search("Publisher") > -1) { strPublisher = arrLines[i].substring(22); strPublisher = strPublisher.replace(/^\s+|\s+$/gm,''); if (arrLines[i].search("Publisher") > -1) { dlg.Control("listMetadata").GetItemAt(5).subitems(0) = strPublisher; } } if (arrLines[i].search("Book Producer") > -1) { strBookProducer = arrLines[i].substring(22); strBookProducer = strBookProducer.replace(/^\s+|\s+$/gm,''); if (arrLines[i].search("Book Producer") > -1) { dlg.Control("listMetadata").GetItemAt(6).subitems(0) = strBookProducer; } } if (arrLines[i].search("Languages") > -1) { strLanguages = arrLines[i].substring(22); strLanguages = strLanguages.replace(/^\s+|\s+$/gm,''); if (arrLines[i].search("Languages") > -1) { dlg.Control("listMetadata").GetItemAt(7).subitems(0) = strLanguages; } } if (arrLines[i].search("Published") > -1) { strPublished = arrLines[i].substring(22); strPublished = strPublished.replace(/^\s+|\s+$/gm,''); if (arrLines[i].search("Published") > -1) { dlg.Control("listMetadata").GetItemAt(8).subitems(0) = strPublished; } } if (arrLines[i].search("Identifiers") > -1) { strIdentifiers = arrLines[i].substring(22); strIdentifiers = strIdentifiers.replace(/^\s+|\s+$/gm,''); if (arrLines[i].search("Identifiers") > -1) { dlg.Control("listMetadata").GetItemAt(9).subitems(0) = strIdentifiers; } } if (arrLines[i].search("Tags") > -1) { strTags = arrLines[i].substring(22); strTags = strTags.replace(/^\s+|\s+$/gm,''); if (arrLines[i].search("Tags") > -1) { dlg.Control("listMetadata").GetItemAt(10).subitems(0) = strTags; } } } dlg.Control("listMetadata").columns.AutoSize(); } function applyChanges(selectedFile, dlg) { dlg.Control("staticNotify").label = "Applying changes..."; if (flgAuthorChanged == true) { dlg.Control("staticNotify").label = "Changing author..."; cmd.RunCommand("\"" + pathCalibre + "\\" + "\\" + "ebook-meta.exe\" " + "\"" + selectedFile + "\"" + " -a " + "\"" + dlg.Control("listMetadata").GetItemAt(0).subitems(0) + "\""); flgAuthorChanged = false; } if (flgTitleChanged == true) { dlg.Control("staticNotify").label = "Changing title..."; cmd.RunCommand("\"" + pathCalibre + "\\" + "\\" + "ebook-meta.exe\" " + "\"" + selectedFile + "\"" + " -t " + "\"" + dlg.Control("listMetadata").GetItemAt(1).subitems(0) + "\""); flgTitleChanged = false; } if (flgTitleSortChanged == true) { dlg.Control("staticNotify").label = "Changing title sort..."; cmd.RunCommand("\"" + pathCalibre + "\\" + "\\" + "ebook-meta.exe\" " + "\"" + selectedFile + "\"" + " --title-sort " + "\"" + dlg.Control("listMetadata").GetItemAt(2).subitems(0) + "\""); flgTitleSortChanged = false; } if (flgSeriesChanged == true) { dlg.Control("staticNotify").label = "Changing series..."; cmd.RunCommand("\"" + pathCalibre + "\\" + "ebook-meta.exe\" " + "\"" + selectedFile + "\"" + " -s " + "\"" + dlg.Control("listMetadata").GetItemAt(3).subitems(0) + "\""); flgSeriesChanged = false; } if (flgSeriesNumChanged == true) { dlg.Control("staticNotify").label = "Changing series number..."; cmd.RunCommand("\"" + pathCalibre + "\\" + "ebook-meta.exe\" " + "\"" + selectedFile + "\"" + " -i " + "\"" + dlg.Control("listMetadata").GetItemAt(4).subitems(0) + "\""); flgSeriesNumChanged = false; } if (flgPublisherChanged == true) { dlg.Control("staticNotify").label = "Changing publisher..."; cmd.RunCommand("\"" + pathCalibre + "\\" + "ebook-meta.exe\" " + "\"" + selectedFile + "\"" + " -p " + "\"" + dlg.Control("listMetadata").GetItemAt(5).subitems(0) + "\""); flgPublisherChanged = false; } if (flgBookProducerChanged == true) { dlg.Control("staticNotify").label = "Changing book producer..."; cmd.RunCommand("\"" + pathCalibre + "\\" + "ebook-meta.exe\" " + "\"" + selectedFile + "\"" + " -k " + "\"" + dlg.Control("listMetadata").GetItemAt(6).subitems(0) + "\""); flgBookProducerChanged = false; } if (flgLanguagesChanged == true) { dlg.Control("staticNotify").label = "Changing languages..."; cmd.RunCommand("\"" + pathCalibre + "\\" + "ebook-meta.exe\" " + "\"" + selectedFile + "\"" + " --language " + "\"" + dlg.Control("listMetadata").GetItemAt(7).subitems(0) + "\""); flgLanguagesChanged = false; } if (flgPublishedChanged == true) { dlg.Control("staticNotify").label = "Changing published date..."; cmd.RunCommand("\"" + pathCalibre + "\\" + "ebook-meta.exe\" " + "\"" + selectedFile + "\"" + " -d " + "\"" + dlg.Control("listMetadata").GetItemAt(8).subitems(0) + "\""); flgPublishedChanged = false; } if (flgIdentifiersChanged == true) { dlg.Control("staticNotify").label = "Changing identifiers..."; cmd.RunCommand("\"" + pathCalibre + "\\" + "ebook-meta.exe\" " + "\"" + selectedFile + "\"" + " --identifier isbn:"); cmd.RunCommand("\"" + pathCalibre + "\\" + "ebook-meta.exe\" " + "\"" + selectedFile + "\"" + " --identifier " + "\"" + dlg.Control("listMetadata").GetItemAt(9).subitems(0) + "\""); flgIdentifiersChanged = false; } if (flgTagsChanged == true) { dlg.Control("staticNotify").label = "Changing tags..."; cmd.RunCommand("\"" + pathCalibre + "\\" + "ebook-meta.exe\" " + "\"" + selectedFile + "\"" + " --tags " + "\"" + dlg.Control("listMetadata").GetItemAt(10).subitems(0) + "\""); flgTagsChanged = false; } if (flgJacket == true) { dlg.Control("staticNotify").label = "Adding jacket..."; cmd.RunCommand("\"" + pathCalibre + "\\" + "ebook-polish.exe\"" + " -j " + "\"" + selectedFile + "\"" + " \"" + selectedFile + "\""); flgJacket = false; dlg.Control("checkJacket").value = false; dlg.Control("checkJacketRemove").enabled = true; } if (flgJacketRemove == true) { dlg.Control("staticNotify").label = "Removing jacket..."; cmd.RunCommand("\"" + pathCalibre + "\\" + "ebook-polish.exe\"" + " --remove-jacket " + "\"" + selectedFile + "\"" + " \"" + selectedFile + "\""); flgJacketRemove = false; dlg.Control("checkJacketRemove").value = false; dlg.Control("checkJacket").enabled = true; } if (flgSoftHyphen == true) { dlg.Control("staticNotify").label = "Adding soft hyphens..."; cmd.RunCommand("\"" + pathCalibre + "\\" + "ebook-polish.exe\"" + " -H " + "\"" + selectedFile + "\"" + " \"" + selectedFile + "\""); flgSoftHyphen = false; dlg.Control("checkSoftHyphen").value = false; dlg.Control("checkSoftHyphenRemove").enabled = true; } if (flgSoftHyphenRemove == true) { dlg.Control("staticNotify").label = "Removing soft hyphens..."; cmd.RunCommand("\"" + pathCalibre + "\\" + "ebook-polish.exe\"" + " --remove-soft-hyphens " + "\"" + selectedFile + "\"" + " \"" + selectedFile + "\""); flgSoftHyphenRemove = false; dlg.Control("checkSoftHyphenRemove").value = false; dlg.Control("checkSoftHyphen").enabled = true; } if (flgCompress == true) { dlg.Control("staticNotify").label = "Compressing images..."; cmd.RunCommand("\"" + pathCalibre + "\\" + "ebook-polish.exe\"" + " -i " + "\"" + selectedFile + "\"" + " \"" + selectedFile + "\""); flgCompress = false; dlg.Control("checkCompress").value = false; } if (flgEmbed == true) { dlg.Control("staticNotify").label = "Embedding fonts..."; cmd.RunCommand("\"" + pathCalibre + "\\" + "ebook-polish.exe\"" + " -e " + "\"" + selectedFile + "\"" + " \"" + selectedFile + "\""); flgEmbed = false; dlg.Control("checkEmbed").value = false; } if (flgUpgrade == true) { dlg.Control("staticNotify").label = "Upgrading epub format..."; cmd.RunCommand("\"" + pathCalibre + "\\" + "ebook-polish.exe\"" + " -U " + "\"" + selectedFile + "\"" + " \"" + selectedFile + "\""); flgUpgrade = false; dlg.Control("checkUpgrade").value = false; } if (flgExtractCover == true) { dlg.Control("staticNotify").label = "Extract cover to: " + selectedFile.name_stem + ".jpg\""; cmd.RunCommand("\"" + pathCalibre + "\\" + "ebook-meta.exe\" " + "\"" + selectedFile + "\"" + " --get-cover " + "\"" + selectedFile.path + "\\" + selectedFile.name_stem + ".jpg\""); flgExtractCover = false; dlg.Control("checkExtractCover").value = false; } if (flgInsertCover == true) { dlg.Control("staticNotify").label = "Inserting cover..."; cmd.RunCommand("\"" + pathCalibre + "\\" + "ebook-polish.exe\"" + " \"" + selectedFile + "\"" + " -c " + "\"" + tmpCoverFileNew + "\""); cmd.RunCommand("Delete NORECYCLE QUIET " + "\"" + selectedFile + "\""); cmd.RunCommand("Rename FROM " + "\"" + selectedFile.path + "\\" + selectedFile.name_stem + "_polished.epub\"" + " TO " + "\"" + selectedFile + "\""); flgInsertCover = false; dlg.Control("checkInsertCover").value = false; dlg.Control("editInsertCover").enabled = false; dlg.Control("editInsertCover").value = ""; dlg.Control("btnSelectCover").enabled = false; } dlg.Control("listMetadata").RemoveItem(-1); dlg.Control("btnApply").enabled = false; } function OnAboutScript(aboutData) { dlg = DOpus.Dlg; dlg.window = aboutData.window; dlg.title = scriptName + " " + scriptVersion; dlg.message = scriptName + " v" + scriptVersion + "\t\t\t\t\t" + scriptDate+ "\n\n" + scriptDesc + "\n\n" + scriptCopyright; dlg.buttons = "Close"; dlg.icon = "info"; dlg.show; } ==SCRIPT RESOURCES