From 111e701deb4342b077f552fd18b5f8f8f64aa4ee Mon Sep 17 00:00:00 2001 From: Jealous Date: Thu, 26 Dec 2024 11:56:33 +0800 Subject: [PATCH 1/3] Feat(offline-download): allow using thunder offline download tool in any storage --- src/lang/en/settings.json | 1 + src/lang/en/settings_other.json | 4 ++- src/pages/manage/settings/Other.tsx | 45 +++++++++++++++++++++++++++-- src/pages/manage/sidemenu_items.tsx | 2 +- src/pages/manage/tasks/helper.tsx | 19 +++++++----- 5 files changed, 59 insertions(+), 12 deletions(-) diff --git a/src/lang/en/settings.json b/src/lang/en/settings.json index bc0efca9b3..ee2dc61198 100755 --- a/src/lang/en/settings.json +++ b/src/lang/en/settings.json @@ -106,6 +106,7 @@ "sso_organization_name": "Sso organization name", "text_types": "Text types", "token": "Token", + "thunder_temp_dir": "Thunder temp dir", "transmission_seedtime": "Transmission seedtime", "transmission_uri": "Transmission uri", "version": "Version", diff --git a/src/lang/en/settings_other.json b/src/lang/en/settings_other.json index c1fd77447e..b515dedac6 100644 --- a/src/lang/en/settings_other.json +++ b/src/lang/en/settings_other.json @@ -9,5 +9,7 @@ "set_qbit": "Set qBittorrent", "qbittorrent": "qBittorrent", "transmission": "Transmission", - "set_transmission": "Set Transmission" + "set_transmission": "Set Transmission", + "thunder": "Thunder", + "set_thunder": "Set Thunder" } diff --git a/src/pages/manage/settings/Other.tsx b/src/pages/manage/settings/Other.tsx index 5ddae0bf77..ca86e992a3 100644 --- a/src/pages/manage/settings/Other.tsx +++ b/src/pages/manage/settings/Other.tsx @@ -1,6 +1,14 @@ -import { Button, Heading, HStack, Input, SimpleGrid } from "@hope-ui/solid" +import { + Button, + FormControl, + FormLabel, + Heading, + HStack, + Input, + SimpleGrid, +} from "@hope-ui/solid" import { createSignal } from "solid-js" -import { MaybeLoading } from "~/components" +import { FolderChooseInput, MaybeLoading } from "~/components" import { useFetch, useManageTitle, useT, useUtil } from "~/hooks" import { Group, SettingItem, PResp } from "~/types" import { handleResp, notify, r } from "~/utils" @@ -15,6 +23,7 @@ const OtherSettings = () => { const [qbitSeedTime, setQbitSeedTime] = createSignal("") const [transmissionUrl, setTransmissionUrl] = createSignal("") const [transmissionSeedTime, setTransmissionSeedTime] = createSignal("") + const [thunderTempDir, setThunderTempDir] = createSignal("") const [token, setToken] = createSignal("") const [settings, setSettings] = createSignal([]) const [settingsLoading, settingsData] = useFetch( @@ -39,6 +48,12 @@ const OtherSettings = () => { seedtime: transmissionSeedTime(), }), ) + const [setThunderLoading, setThunder] = useFetch( + (): PResp => + r.post("/admin/setting/set_thunder", { + temp_dir: thunderTempDir(), + }), + ) const refresh = async () => { const resp = await settingsData() handleResp(resp, (data) => { @@ -55,6 +70,9 @@ const OtherSettings = () => { setTransmissionSeedTime( data.find((i) => i.key === "transmission_seedtime")?.value || "", ) + setThunderTempDir( + data.find((i) => i.key === "thunder_temp_dir")?.value || "", + ) setSettings(data) }) } @@ -141,6 +159,29 @@ const OtherSettings = () => { > {t("settings_other.set_transmission")} + {t("settings_other.thunder")} + + + {t(`settings.thunder_temp_dir`)} + + setThunderTempDir(path)} + /> + + {t("settings.token")} diff --git a/src/pages/manage/sidemenu_items.tsx b/src/pages/manage/sidemenu_items.tsx index 5999292cb9..a6950e5875 100644 --- a/src/pages/manage/sidemenu_items.tsx +++ b/src/pages/manage/sidemenu_items.tsx @@ -108,7 +108,7 @@ export const side_menu_items: SideMenuItem[] = [ { title: "manage.sidemenu.offline_download", icon: IoMagnetOutline, - to: "/@manage/tasks/aria2", + to: "/@manage/tasks/offline_download", role: UserRole.GENERAL, component: lazy(() => import("./tasks/offline_download")), }, diff --git a/src/pages/manage/tasks/helper.tsx b/src/pages/manage/tasks/helper.tsx index 066fb26f1a..7428f15974 100644 --- a/src/pages/manage/tasks/helper.tsx +++ b/src/pages/manage/tasks/helper.tsx @@ -3,12 +3,16 @@ import { me } from "~/store" import { TaskNameAnalyzer } from "./Tasks" import { useT } from "~/hooks" -export const getPath = (device: string, path: string): JSX.Element => { +export const getPath = ( + device: string, + path: string, + asLink: boolean = true, +): JSX.Element => { const fullPath = (device === "/" ? "" : device) + path const prefix = me().base_path === "/" ? "" : me().base_path const accessible = fullPath.startsWith(prefix) const [underline, setUnderline] = createSignal(false) - return accessible ? ( + return accessible && asLink ? ( setUnderline(true)} @@ -49,14 +53,13 @@ export const getOfflineDownloadNameAnalyzer = (): TaskNameAnalyzer => { export const getOfflineDownloadTransferNameAnalyzer = (): TaskNameAnalyzer => { const t = useT() return { - regex: /^transfer ((?:.*\/)?(.+)) to \[(.+)]$/, - title: (matches) => matches[2], + regex: /^transfer \[(.*)]\((.*\/([^\/]+))\) to \[(.+)]\((.+)\)$/, + title: (matches) => matches[3], attrs: { - [t(`tasks.attr.offline_download.transfer_src`)]: (matches) => ( -

{matches[1]}

- ), + [t(`tasks.attr.offline_download.transfer_src`)]: (matches) => + getPath(matches[1], matches[2], false), [t(`tasks.attr.offline_download.transfer_dst`)]: (matches) => - getPath("", matches[3]), + getPath(matches[4], matches[5]), }, } } From 88ac64fa55ddaa04dbe1f43b0f8399b1929bb95c Mon Sep 17 00:00:00 2001 From: Jealous Date: Thu, 26 Dec 2024 22:30:14 +0800 Subject: [PATCH 2/3] Feat(offline-download): allow using 115 offline download tool in any storage --- src/lang/en/settings.json | 1 + src/lang/en/settings_other.json | 2 ++ src/pages/manage/settings/Other.tsx | 33 +++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/src/lang/en/settings.json b/src/lang/en/settings.json index ee2dc61198..0c76453fd1 100755 --- a/src/lang/en/settings.json +++ b/src/lang/en/settings.json @@ -106,6 +106,7 @@ "sso_organization_name": "Sso organization name", "text_types": "Text types", "token": "Token", + "115_temp_dir": "115 temp dir", "thunder_temp_dir": "Thunder temp dir", "transmission_seedtime": "Transmission seedtime", "transmission_uri": "Transmission uri", diff --git a/src/lang/en/settings_other.json b/src/lang/en/settings_other.json index b515dedac6..c3e5a4060d 100644 --- a/src/lang/en/settings_other.json +++ b/src/lang/en/settings_other.json @@ -10,6 +10,8 @@ "qbittorrent": "qBittorrent", "transmission": "Transmission", "set_transmission": "Set Transmission", + "115": "115", + "set_115": "Set 115", "thunder": "Thunder", "set_thunder": "Set Thunder" } diff --git a/src/pages/manage/settings/Other.tsx b/src/pages/manage/settings/Other.tsx index ca86e992a3..51e2bb4406 100644 --- a/src/pages/manage/settings/Other.tsx +++ b/src/pages/manage/settings/Other.tsx @@ -23,6 +23,7 @@ const OtherSettings = () => { const [qbitSeedTime, setQbitSeedTime] = createSignal("") const [transmissionUrl, setTransmissionUrl] = createSignal("") const [transmissionSeedTime, setTransmissionSeedTime] = createSignal("") + const [pan115TempDir, set115TempDir] = createSignal("") const [thunderTempDir, setThunderTempDir] = createSignal("") const [token, setToken] = createSignal("") const [settings, setSettings] = createSignal([]) @@ -48,6 +49,12 @@ const OtherSettings = () => { seedtime: transmissionSeedTime(), }), ) + const [set115Loading, set115] = useFetch( + (): PResp => + r.post("/admin/setting/set_115", { + temp_dir: pan115TempDir(), + }), + ) const [setThunderLoading, setThunder] = useFetch( (): PResp => r.post("/admin/setting/set_thunder", { @@ -70,6 +77,9 @@ const OtherSettings = () => { setTransmissionSeedTime( data.find((i) => i.key === "transmission_seedtime")?.value || "", ) + set115TempDir( + data.find((i) => i.key === "115_temp_dir")?.value || "", + ) setThunderTempDir( data.find((i) => i.key === "thunder_temp_dir")?.value || "", ) @@ -159,6 +169,29 @@ const OtherSettings = () => { > {t("settings_other.set_transmission")} + {t("settings_other.115")} + + + {t(`settings.115_temp_dir`)} + + set115TempDir(path)} + /> + + {t("settings_other.thunder")} From cf32a5503068abb2fe4b802139aea55bf68ebad5 Mon Sep 17 00:00:00 2001 From: Jealous Date: Thu, 26 Dec 2024 22:43:44 +0800 Subject: [PATCH 3/3] Feat(offline-download): allow using pikpak offline download tool in any storage --- src/lang/en/settings.json | 1 + src/lang/en/settings_other.json | 2 ++ src/pages/manage/settings/Other.tsx | 35 +++++++++++++++++++++++++++-- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/lang/en/settings.json b/src/lang/en/settings.json index 0c76453fd1..284f5518f6 100755 --- a/src/lang/en/settings.json +++ b/src/lang/en/settings.json @@ -107,6 +107,7 @@ "text_types": "Text types", "token": "Token", "115_temp_dir": "115 temp dir", + "pikpak_temp_dir": "PikPak temp dir", "thunder_temp_dir": "Thunder temp dir", "transmission_seedtime": "Transmission seedtime", "transmission_uri": "Transmission uri", diff --git a/src/lang/en/settings_other.json b/src/lang/en/settings_other.json index c3e5a4060d..d635230d8f 100644 --- a/src/lang/en/settings_other.json +++ b/src/lang/en/settings_other.json @@ -12,6 +12,8 @@ "set_transmission": "Set Transmission", "115": "115", "set_115": "Set 115", + "pikpak": "PikPak", + "set_pikpak": "Set PikPak", "thunder": "Thunder", "set_thunder": "Set Thunder" } diff --git a/src/pages/manage/settings/Other.tsx b/src/pages/manage/settings/Other.tsx index 51e2bb4406..5b0c95125d 100644 --- a/src/pages/manage/settings/Other.tsx +++ b/src/pages/manage/settings/Other.tsx @@ -24,6 +24,7 @@ const OtherSettings = () => { const [transmissionUrl, setTransmissionUrl] = createSignal("") const [transmissionSeedTime, setTransmissionSeedTime] = createSignal("") const [pan115TempDir, set115TempDir] = createSignal("") + const [pikpakTempDir, setPikPakTempDir] = createSignal("") const [thunderTempDir, setThunderTempDir] = createSignal("") const [token, setToken] = createSignal("") const [settings, setSettings] = createSignal([]) @@ -55,6 +56,12 @@ const OtherSettings = () => { temp_dir: pan115TempDir(), }), ) + const [setPikPakLoading, setPikPak] = useFetch( + (): PResp => + r.post("/admin/setting/set_pikpak", { + temp_dir: pikpakTempDir(), + }), + ) const [setThunderLoading, setThunder] = useFetch( (): PResp => r.post("/admin/setting/set_thunder", { @@ -77,8 +84,9 @@ const OtherSettings = () => { setTransmissionSeedTime( data.find((i) => i.key === "transmission_seedtime")?.value || "", ) - set115TempDir( - data.find((i) => i.key === "115_temp_dir")?.value || "", + set115TempDir(data.find((i) => i.key === "115_temp_dir")?.value || "") + setPikPakTempDir( + data.find((i) => i.key === "pikpak_temp_dir")?.value || "", ) setThunderTempDir( data.find((i) => i.key === "thunder_temp_dir")?.value || "", @@ -192,6 +200,29 @@ const OtherSettings = () => { > {t("settings_other.set_115")} + {t("settings_other.pikpak")} + + + {t(`settings.pikpak_temp_dir`)} + + setPikPakTempDir(path)} + /> + + {t("settings_other.thunder")}