forked from Github/Axter-Stash
Added advance menu option to UI
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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")),
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user