Added advance menu option to UI

This commit is contained in:
David Maisonave
2024-11-05 19:01:13 -05:00
parent f6a03afd28
commit ffd0dfec84
6 changed files with 59 additions and 39 deletions

View File

@@ -62,17 +62,17 @@ def installModule(moduleName):
# Note: Linux may first need : sudo apt install python3-pip
# if error starts with "Command 'pip' not found"
# or includes "No module named pip"
results = os.popen(f"pip --version").read()
results = os.popen(f"pip --disable-pip-version-check --version").read()
if results.find("Command 'pip' not found") != -1 or results.find("No module named pip") != -1:
results = os.popen(f"sudo apt install python3-pip").read()
results = os.popen(f"pip --version").read()
results = os.popen(f"pip --disable-pip-version-check --version").read()
if results.find("Command 'pip' not found") != -1 or results.find("No module named pip") != -1:
return -1
if isFreeBSD():
print("Warning: installModule may NOT work on freebsd")
pipArg = ""
pipArg = " --disable-pip-version-check"
if isDocker():
pipArg = " --break-system-packages"
pipArg += " --break-system-packages"
results = os.popen(f"{sys.executable} -m pip install {moduleName}{pipArg}").read() # May need to be f"{sys.executable} -m pip install {moduleName}"
results = results.strip("\n")
if results.find("Requirement already satisfied:") > -1:

View File

@@ -27,26 +27,36 @@
return JSON.parse(AjaxData.responseJSON.data.runPluginOperation.replaceAll("'", "\""));
}
var LocalDupReportExist = false;
var AdvanceMenuOptionUrl = "";
function GetLocalDuplicateReportPath(){
var LocalDuplicateReport = RunPluginDupFileManager("getLocalDupReportPath", "json");
var LocalDuplicateReportPath = "file://" + LocalDuplicateReport.Path;
console.log(LocalDuplicateReportPath);
AdvanceMenuOptionUrl = LocalDuplicateReportPath.replace("DuplicateTagScenes.html", "DupFileManager/advance_options.html");
LocalDupReportExist = LocalDuplicateReport.LocalDupReportExist;
return LocalDuplicateReportPath;
}
const PluginApi = window.PluginApi;
const React = PluginApi.React;
const GQL = PluginApi.GQL;
const { Button } = PluginApi.libraries.Bootstrap;
const { faEthernet } = PluginApi.libraries.FontAwesomeSolid;
const { Link, NavLink, } = PluginApi.libraries.ReactRouterDOM;
const ToolsMenuToolTip = "Show DupFileManager advance menu, which list additional tools and utilities.";
const ToolsMenuOptionButton = React.createElement(Link, { to: "/plugin/DupFileManager_ToolsAndUtilities", title: ToolsMenuToolTip }, React.createElement(Button, null, "DupFileManager Tools and Utilities"));
const ReportMenuButtonToolTip = "Main report menu for DupFileManager. Create and show duplicate files on an HTML report.";
const DupFileManagerReportMenuButton = React.createElement(Link, { to: "/plugin/DupFileManager", title: ReportMenuButtonToolTip }, React.createElement(Button, null, "DupFileManager Report Menu"));
// ToolTip text
const CreateReportButtonToolTip = "Tag duplicate files, and create a new duplicate file report listing all duplicate files and using existing DupFileManager plugin options selected.";
const CreateReportNoTagButtonToolTip = "Create a new duplicate file report listing all duplicate files and using existing DupFileManager plugin options selected. Do NOT tag files.";
const ToolsMenuToolTip = "Show DupFileManager advance menu, which list additional tools and utilities.";
const ShowReportButtonToolTip = "Open link to the duplicate file (HTML) report created in local path.";
const ReportMenuButtonToolTip = "Main report menu for DupFileManager. Create and show duplicate files on an HTML report.";
// Buttons
const DupFileManagerReportMenuButton = React.createElement(Link, { to: "/plugin/DupFileManager", title: ReportMenuButtonToolTip }, React.createElement(Button, null, "DupFileManager Report Menu"));
const ToolsMenuOptionButton = React.createElement(Link, { to: "/plugin/DupFileManager_ToolsAndUtilities", title: ToolsMenuToolTip }, React.createElement(Button, null, "DupFileManager Tools and Utilities"));
function GetShowReportButton(LocalDuplicateReportPath, ButtonText){return React.createElement("a", { href: LocalDuplicateReportPath, title: ShowReportButtonToolTip}, React.createElement(Button, null, ButtonText));}
function GetAdvanceMenuButton(){return React.createElement("a", { href: AdvanceMenuOptionUrl, title: "Open link to the advance duplicate tagged menu."}, React.createElement(Button, null, "Show Advance Duplicate Tagged Menu"));}
function GetCreateReportNoTagButton(ButtonText){return React.createElement(Link, { to: "/plugin/DupFileManager_CreateReportWithNoTagging", title: CreateReportNoTagButtonToolTip }, React.createElement(Button, null, ButtonText));}
function GetCreateReportButton(ButtonText){return React.createElement(Link, { to: "/plugin/DupFileManager_CreateReport", title: CreateReportButtonToolTip }, React.createElement(Button, null, ButtonText));}
const { LoadingIndicator, } = PluginApi.components;
const HomePage = () => {
var LocalDuplicateReportPath = GetLocalDuplicateReportPath();
@@ -55,19 +65,21 @@
if (LocalDupReportExist)
return (React.createElement("center", null,
MyHeader,
React.createElement("a", { href: LocalDuplicateReportPath, title: ShowReportButtonToolTip}, React.createElement(Button, null, "Show Duplicate-File Report")),
GetShowReportButton(LocalDuplicateReportPath, "Show Duplicate-File Report"),
React.createElement("p", null),
React.createElement(Link, { to: "/plugin/DupFileManager_CreateReportWithNoTagging", title: CreateReportNoTagButtonToolTip }, React.createElement(Button, null, "Create New Report (NO Tagging)")),
GetAdvanceMenuButton(),
React.createElement("p", null),
React.createElement(Link, { to: "/plugin/DupFileManager_CreateReport", title: CreateReportButtonToolTip }, React.createElement(Button, null, "Create New Report with Tagging")),
GetCreateReportNoTagButton("Create New Report (NO Tagging)"),
React.createElement("p", null),
GetCreateReportButton("Create New Report with Tagging"),
React.createElement("p", null),
ToolsMenuOptionButton
));
return (React.createElement("center", null,
MyHeader,
React.createElement(Link, { to: "/plugin/DupFileManager_CreateReportWithNoTagging", title: CreateReportNoTagButtonToolTip }, React.createElement(Button, null, "Create Duplicate-File Report (NO Tagging)")),
GetCreateReportNoTagButton("Create Duplicate-File Report (NO Tagging)"),
React.createElement("p", null),
React.createElement(Link, { to: "/plugin/DupFileManager_CreateReport", title: CreateReportButtonToolTip }, React.createElement(Button, null, "Create Duplicate-File Report with Tagging")),
GetCreateReportButton("Create Duplicate-File Report with Tagging"),
React.createElement("p", null),
ToolsMenuOptionButton
));
@@ -77,10 +89,11 @@
if (componentsLoading)
return (React.createElement(LoadingIndicator, {message: "Running task to create report. This may take a while. Please standby."}));
RunPluginDupFileManager("tag_duplicates_task");
var LocalDuplicateReportPath = GetLocalDuplicateReportPath();
return (React.createElement("center", null,
React.createElement("h1", null, "Report complete. Click [Show Report] to view report."),
React.createElement("a", { href: LocalDuplicateReportPath, title: ShowReportButtonToolTip}, React.createElement(Button, null, "Show Report")),
GetShowReportButton(GetLocalDuplicateReportPath(), "Show Report"),
React.createElement("p", null),
GetAdvanceMenuButton(),
React.createElement("p", null), DupFileManagerReportMenuButton, React.createElement("p", null), ToolsMenuOptionButton
));
};
@@ -89,10 +102,11 @@
if (componentsLoading)
return (React.createElement(LoadingIndicator, {message: "Running task to create report. Please standby."}));
RunPluginDupFileManager("createDuplicateReportWithoutTagging");
var LocalDuplicateReportPath = GetLocalDuplicateReportPath();
return (React.createElement("center", null,
React.createElement("h1", null, "Created HTML report without tagging. Click [Show Report] to view report."),
React.createElement("a", { href: LocalDuplicateReportPath, title: ShowReportButtonToolTip}, React.createElement(Button, null, "Show Report")),
GetShowReportButton(GetLocalDuplicateReportPath(), "Show Report"),
React.createElement("p", null),
GetAdvanceMenuButton(),
React.createElement("p", null), DupFileManagerReportMenuButton, React.createElement("p", null), ToolsMenuOptionButton
));
};
@@ -103,17 +117,21 @@
React.createElement("h3", {class:"submenu"}, "Report Options"),
React.createElement("p", null),
React.createElement(Link, { to: "/plugin/DupFileManager_CreateReportWithNoTagging", title: CreateReportNoTagButtonToolTip }, React.createElement(Button, null, "Create Report (NO Tagging)")),
GetCreateReportNoTagButton("Create Report (NO Tagging)"),
React.createElement("p", null),
React.createElement(Link, { to: "/plugin/DupFileManager_CreateReport", title: CreateReportButtonToolTip }, React.createElement(Button, null, "Create Report (Tagging)")),
GetCreateReportButton("Create Report (Tagging)"),
React.createElement("p", null),
DupFileManagerReportMenuButton,
React.createElement("p", null),
GetShowReportButton(GetLocalDuplicateReportPath(), "Show Duplicate-File Report"),
React.createElement("p", null),
React.createElement(Link, { to: "/plugin/DupFileManager_deleteLocalDupReportHtmlFiles", title: "Delete local HTML duplicate file report." }, React.createElement(Button, null, "Delete Duplicate-File Report HTML Files")),
React.createElement("hr", {class:"dotted"}),
React.createElement("h3", {class:"submenu"}, "Tagged Duplicates Options"),
React.createElement("p", null),
GetAdvanceMenuButton(),
React.createElement("p", null),
React.createElement(Link, { to: "/plugin/DupFileManager_deleteTaggedDuplicatesTask", title: "Delete scenes previously given duplicate tag (_DuplicateMarkForDeletion)." }, React.createElement(Button, null, "Delete Tagged Duplicates")),
React.createElement("p", null),
React.createElement(Link, { to: "/plugin/DupFileManager_deleteBlackListTaggedDuplicatesTask", title: "Delete scenes only in blacklist which where previously given duplicate tag (_DuplicateMarkForDeletion)." }, React.createElement(Button, null, "Delete Tagged Duplicates in Blacklist Only")),

View File

@@ -62,17 +62,17 @@ def installModule(moduleName):
# Note: Linux may first need : sudo apt install python3-pip
# if error starts with "Command 'pip' not found"
# or includes "No module named pip"
results = os.popen(f"pip --version").read()
results = os.popen(f"pip --disable-pip-version-check --version").read()
if results.find("Command 'pip' not found") != -1 or results.find("No module named pip") != -1:
results = os.popen(f"sudo apt install python3-pip").read()
results = os.popen(f"pip --version").read()
results = os.popen(f"pip --disable-pip-version-check --version").read()
if results.find("Command 'pip' not found") != -1 or results.find("No module named pip") != -1:
return -1
if isFreeBSD():
print("Warning: installModule may NOT work on freebsd")
pipArg = ""
pipArg = " --disable-pip-version-check"
if isDocker():
pipArg = " --break-system-packages"
pipArg += " --break-system-packages"
results = os.popen(f"{sys.executable} -m pip install {moduleName}{pipArg}").read() # May need to be f"{sys.executable} -m pip install {moduleName}"
results = results.strip("\n")
if results.find("Requirement already satisfied:") > -1:

View File

@@ -62,17 +62,17 @@ def installModule(moduleName):
# Note: Linux may first need : sudo apt install python3-pip
# if error starts with "Command 'pip' not found"
# or includes "No module named pip"
results = os.popen(f"pip --version").read()
results = os.popen(f"pip --disable-pip-version-check --version").read()
if results.find("Command 'pip' not found") != -1 or results.find("No module named pip") != -1:
results = os.popen(f"sudo apt install python3-pip").read()
results = os.popen(f"pip --version").read()
results = os.popen(f"pip --disable-pip-version-check --version").read()
if results.find("Command 'pip' not found") != -1 or results.find("No module named pip") != -1:
return -1
if isFreeBSD():
print("Warning: installModule may NOT work on freebsd")
pipArg = ""
pipArg = " --disable-pip-version-check"
if isDocker():
pipArg = " --break-system-packages"
pipArg += " --break-system-packages"
results = os.popen(f"{sys.executable} -m pip install {moduleName}{pipArg}").read() # May need to be f"{sys.executable} -m pip install {moduleName}"
results = results.strip("\n")
if results.find("Requirement already satisfied:") > -1:

View File

@@ -62,17 +62,17 @@ def installModule(moduleName):
# Note: Linux may first need : sudo apt install python3-pip
# if error starts with "Command 'pip' not found"
# or includes "No module named pip"
results = os.popen(f"pip --version").read()
results = os.popen(f"pip --disable-pip-version-check --version").read()
if results.find("Command 'pip' not found") != -1 or results.find("No module named pip") != -1:
results = os.popen(f"sudo apt install python3-pip").read()
results = os.popen(f"pip --version").read()
results = os.popen(f"pip --disable-pip-version-check --version").read()
if results.find("Command 'pip' not found") != -1 or results.find("No module named pip") != -1:
return -1
if isFreeBSD():
print("Warning: installModule may NOT work on freebsd")
pipArg = ""
pipArg = " --disable-pip-version-check"
if isDocker():
pipArg = " --break-system-packages"
pipArg += " --break-system-packages"
results = os.popen(f"{sys.executable} -m pip install {moduleName}{pipArg}").read() # May need to be f"{sys.executable} -m pip install {moduleName}"
results = results.strip("\n")
if results.find("Requirement already satisfied:") > -1:

View File

@@ -2,13 +2,15 @@
# By David Maisonave (aka Axter) Jul-2024 (https://www.axter.com/)
# Get the latest developers version from following link: https://github.com/David-Maisonave/Axter-Stash/tree/main/plugins/RenameFile
# Based on source code from https://github.com/Serechops/Serechops-Stash/tree/main/plugins/Renamer
try:
import ModulesValidate
ModulesValidate.modulesInstalled(["stashapp-tools", "requests"])
except Exception as e:
import traceback, sys
tb = traceback.format_exc()
print(f"ModulesValidate Exception. Error: {e}\nTraceBack={tb}", file=sys.stderr)
# To automatically install missing modules, uncomment the following lines of code.
# try:
# import ModulesValidate
# ModulesValidate.modulesInstalled(["stashapp-tools", "requests"])
# except Exception as e:
# import traceback, sys
# tb = traceback.format_exc()
# print(f"ModulesValidate Exception. Error: {e}\nTraceBack={tb}", file=sys.stderr)
import os, sys, shutil, json, hashlib, pathlib, logging, time, traceback
from pathlib import Path
@@ -100,7 +102,7 @@ if len(tag_whitelist) > 0:
handleExe = stash.pluginConfig['handleExe']
openedfile = None
if handleExe != None and handleExe != "" and os.path.isfile(handleExe):
ModulesValidate.modulesInstalled(["psutil"], silent=True)
# ModulesValidate.modulesInstalled(["psutil"], silent=True)
from openedFile import openedFile
openedfile = openedFile(handleExe, stash)