mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-11 18:42:54 +00:00
perf: 优化下载工具
This commit is contained in:
parent
a8a54593e2
commit
d4e754d601
412
electron/electron-down.js
vendored
412
electron/electron-down.js
vendored
@ -11,17 +11,18 @@ const store = new Store();
|
||||
const downloadManager = new DownloadManager();
|
||||
let downloadWindow = null;
|
||||
|
||||
function initialize(options = {}) {
|
||||
function initialize(onStarted= null) {
|
||||
// 下载配置
|
||||
electronDl({
|
||||
showBadge: false,
|
||||
showProgressBar: false,
|
||||
|
||||
...options,
|
||||
|
||||
onStarted: (item) => {
|
||||
downloadManager.add(item);
|
||||
syncDownloadItems();
|
||||
if (typeof onStarted === 'function') {
|
||||
onStarted(item)
|
||||
}
|
||||
},
|
||||
onCancel: (item) => {
|
||||
downloadManager.refresh(item.getSavePath())
|
||||
@ -110,11 +111,406 @@ function getLanguagePack(codeOrPack) {
|
||||
return codeOrPack;
|
||||
}
|
||||
const code = (codeOrPack || 'zh').toString();
|
||||
return {
|
||||
code,
|
||||
title: '下载管理器',
|
||||
// todo
|
||||
}
|
||||
const packs = {
|
||||
zh: {
|
||||
// 语言设置
|
||||
locale: 'zh-CN',
|
||||
title: '下载管理器',
|
||||
|
||||
// 界面文本
|
||||
searchPlaceholder: '搜索文件名或链接...',
|
||||
noItems: '暂无任务',
|
||||
noSearchResult: '未找到匹配的结果',
|
||||
|
||||
// 操作按钮
|
||||
refresh: '刷新',
|
||||
removeAll: "清空历史",
|
||||
copyLink: '复制链接',
|
||||
resume: '继续',
|
||||
pause: '暂停',
|
||||
cancel: '取消',
|
||||
remove: '删除',
|
||||
showInFolder: '显示在文件夹',
|
||||
|
||||
// 状态文本
|
||||
progressing: '下载中',
|
||||
completed: '已完成',
|
||||
cancelled: '已取消',
|
||||
interrupted: '失败',
|
||||
paused: '已暂停',
|
||||
|
||||
// 成功消息
|
||||
copied: "已复制",
|
||||
refreshSuccess: '刷新成功',
|
||||
|
||||
// 确认对话框
|
||||
confirmCancel: '确定要取消此下载任务并删除记录吗?',
|
||||
confirmRemove: '确定要从历史记录中删除此项吗?',
|
||||
confirmRemoveAll: '确定要清空下载历史吗?',
|
||||
|
||||
// 错误消息
|
||||
copyFailed: '复制失败: ',
|
||||
pauseFailed: '暂停失败: ',
|
||||
resumeFailed: '继续失败: ',
|
||||
removeFailed: '删除失败: ',
|
||||
removeAllFailed: '清空失败: ',
|
||||
openFailed: '打开文件失败: ',
|
||||
showFailed: '显示文件失败: ',
|
||||
},
|
||||
'zh-CHT': {
|
||||
locale: 'zh-TW',
|
||||
title: '下載管理器',
|
||||
|
||||
// 界面文本
|
||||
searchPlaceholder: '搜尋檔案名稱或連結...',
|
||||
noItems: '暫無任務',
|
||||
noSearchResult: '未找到匹配的結果',
|
||||
|
||||
// 操作按钮
|
||||
refresh: '重新整理',
|
||||
removeAll: "清空歷史",
|
||||
copyLink: '複製連結',
|
||||
resume: '繼續',
|
||||
pause: '暫停',
|
||||
cancel: '取消',
|
||||
remove: '刪除',
|
||||
showInFolder: '顯示在資料夾',
|
||||
|
||||
// 状态文本
|
||||
progressing: '下載中',
|
||||
completed: '已完成',
|
||||
cancelled: '已取消',
|
||||
interrupted: '失敗',
|
||||
paused: '已暫停',
|
||||
|
||||
// 成功消息
|
||||
copied: "已複製",
|
||||
refreshSuccess: '重新整理成功',
|
||||
|
||||
// 确认对话框
|
||||
confirmCancel: '確定要取消此下載任務並刪除記錄嗎?',
|
||||
confirmRemove: '確定要從歷史記錄中刪除此項嗎?',
|
||||
confirmRemoveAll: '確定要清空下載歷史嗎?',
|
||||
|
||||
// 错误消息
|
||||
copyFailed: '複製失敗: ',
|
||||
pauseFailed: '暫停失敗: ',
|
||||
resumeFailed: '繼續失敗: ',
|
||||
removeFailed: '刪除失敗: ',
|
||||
removeAllFailed: '清空失敗: ',
|
||||
openFailed: '開啟檔案失敗: ',
|
||||
showFailed: '顯示檔案失敗: ',
|
||||
},
|
||||
en: {
|
||||
locale: 'en-US',
|
||||
title: 'Download Manager',
|
||||
|
||||
// 界面文本
|
||||
searchPlaceholder: 'Search filename or link...',
|
||||
noItems: 'No tasks',
|
||||
noSearchResult: 'No matching results found',
|
||||
|
||||
// 操作按钮
|
||||
refresh: 'Refresh',
|
||||
removeAll: "Clear History",
|
||||
copyLink: 'Copy Link',
|
||||
resume: 'Resume',
|
||||
pause: 'Pause',
|
||||
cancel: 'Cancel',
|
||||
remove: 'Remove',
|
||||
showInFolder: 'Show in Folder',
|
||||
|
||||
// 状态文本
|
||||
progressing: 'Downloading',
|
||||
completed: 'Completed',
|
||||
cancelled: 'Cancelled',
|
||||
interrupted: 'Failed',
|
||||
paused: 'Paused',
|
||||
|
||||
// 成功消息
|
||||
copied: "Copied",
|
||||
refreshSuccess: 'Refresh successful',
|
||||
|
||||
// 确认对话框
|
||||
confirmCancel: 'Are you sure you want to cancel this download task and delete the record?',
|
||||
confirmRemove: 'Are you sure you want to remove this item from history?',
|
||||
confirmRemoveAll: 'Are you sure you want to clear download history?',
|
||||
|
||||
// 错误消息
|
||||
copyFailed: 'Copy failed: ',
|
||||
pauseFailed: 'Pause failed: ',
|
||||
resumeFailed: 'Resume failed: ',
|
||||
removeFailed: 'Remove failed: ',
|
||||
removeAllFailed: 'Clear failed: ',
|
||||
openFailed: 'Open file failed: ',
|
||||
showFailed: 'Show file failed: ',
|
||||
},
|
||||
ko: {
|
||||
locale: 'ko-KR',
|
||||
title: '다운로드 관리자',
|
||||
|
||||
// 界面文本
|
||||
searchPlaceholder: '파일명 또는 링크 검색...',
|
||||
noItems: '작업 없음',
|
||||
noSearchResult: '일치하는 결과를 찾을 수 없습니다',
|
||||
|
||||
// 操作按钮
|
||||
refresh: '새로고침',
|
||||
removeAll: "기록 지우기",
|
||||
copyLink: '링크 복사',
|
||||
resume: '계속',
|
||||
pause: '일시정지',
|
||||
cancel: '취소',
|
||||
remove: '삭제',
|
||||
showInFolder: '폴더에서 보기',
|
||||
|
||||
// 状态文本
|
||||
progressing: '다운로드 중',
|
||||
completed: '완료됨',
|
||||
cancelled: '취소됨',
|
||||
interrupted: '실패',
|
||||
paused: '일시정지됨',
|
||||
|
||||
// 成功消息
|
||||
copied: "복사됨",
|
||||
refreshSuccess: '새로고침 성공',
|
||||
|
||||
// 确认对话框
|
||||
confirmCancel: '이 다운로드 작업을 취소하고 기록을 삭제하시겠습니까?',
|
||||
confirmRemove: '기록에서 이 항목을 삭제하시겠습니까?',
|
||||
confirmRemoveAll: '다운로드 기록을 지우시겠습니까?',
|
||||
|
||||
// 错误消息
|
||||
copyFailed: '복사 실패: ',
|
||||
pauseFailed: '일시정지 실패: ',
|
||||
resumeFailed: '계속 실패: ',
|
||||
removeFailed: '삭제 실패: ',
|
||||
removeAllFailed: '지우기 실패: ',
|
||||
openFailed: '파일 열기 실패: ',
|
||||
showFailed: '파일 표시 실패: ',
|
||||
},
|
||||
ja: {
|
||||
locale: 'ja-JP',
|
||||
title: 'ダウンロードマネージャー',
|
||||
|
||||
// 界面文本
|
||||
searchPlaceholder: 'ファイル名またはリンクを検索...',
|
||||
noItems: 'タスクがありません',
|
||||
noSearchResult: '一致する結果が見つかりません',
|
||||
|
||||
// 操作按钮
|
||||
refresh: '更新',
|
||||
removeAll: "履歴をクリア",
|
||||
copyLink: 'リンクをコピー',
|
||||
resume: '再開',
|
||||
pause: '一時停止',
|
||||
cancel: 'キャンセル',
|
||||
remove: '削除',
|
||||
showInFolder: 'フォルダで表示',
|
||||
|
||||
// 状态文本
|
||||
progressing: 'ダウンロード中',
|
||||
completed: '完了',
|
||||
cancelled: 'キャンセル済み',
|
||||
interrupted: '失敗',
|
||||
paused: '一時停止中',
|
||||
|
||||
// 成功消息
|
||||
copied: "コピーしました",
|
||||
refreshSuccess: '更新が完了しました',
|
||||
|
||||
// 确认对话框
|
||||
confirmCancel: 'このダウンロードタスクをキャンセルして記録を削除しますか?',
|
||||
confirmRemove: '履歴からこの項目を削除しますか?',
|
||||
confirmRemoveAll: 'ダウンロード履歴をクリアしますか?',
|
||||
|
||||
// 错误消息
|
||||
copyFailed: 'コピーに失敗しました: ',
|
||||
pauseFailed: '一時停止に失敗しました: ',
|
||||
resumeFailed: '再開に失敗しました: ',
|
||||
removeFailed: '削除に失敗しました: ',
|
||||
removeAllFailed: 'クリアに失敗しました: ',
|
||||
openFailed: 'ファイルを開けませんでした: ',
|
||||
showFailed: 'ファイルの表示に失敗しました: ',
|
||||
},
|
||||
de: {
|
||||
locale: 'de-DE',
|
||||
title: 'Download-Manager',
|
||||
|
||||
// 界面文本
|
||||
searchPlaceholder: 'Dateiname oder Link suchen...',
|
||||
noItems: 'Keine Aufgaben',
|
||||
noSearchResult: 'Keine übereinstimmenden Ergebnisse gefunden',
|
||||
|
||||
// 操作按钮
|
||||
refresh: 'Aktualisieren',
|
||||
removeAll: "Verlauf löschen",
|
||||
copyLink: 'Link kopieren',
|
||||
resume: 'Fortsetzen',
|
||||
pause: 'Pause',
|
||||
cancel: 'Abbrechen',
|
||||
remove: 'Entfernen',
|
||||
showInFolder: 'Im Ordner anzeigen',
|
||||
|
||||
// 状态文本
|
||||
progressing: 'Wird heruntergeladen',
|
||||
completed: 'Abgeschlossen',
|
||||
cancelled: 'Abgebrochen',
|
||||
interrupted: 'Fehlgeschlagen',
|
||||
paused: 'Pausiert',
|
||||
|
||||
// 成功消息
|
||||
copied: "Kopiert",
|
||||
refreshSuccess: 'Erfolgreich aktualisiert',
|
||||
|
||||
// 确认对话框
|
||||
confirmCancel: 'Sind Sie sicher, dass Sie diese Download-Aufgabe abbrechen und den Eintrag löschen möchten?',
|
||||
confirmRemove: 'Sind Sie sicher, dass Sie diesen Eintrag aus dem Verlauf entfernen möchten?',
|
||||
confirmRemoveAll: 'Sind Sie sicher, dass Sie den Download-Verlauf löschen möchten?',
|
||||
|
||||
// 错误消息
|
||||
copyFailed: 'Kopieren fehlgeschlagen: ',
|
||||
pauseFailed: 'Pause fehlgeschlagen: ',
|
||||
resumeFailed: 'Fortsetzen fehlgeschlagen: ',
|
||||
removeFailed: 'Entfernen fehlgeschlagen: ',
|
||||
removeAllFailed: 'Löschen fehlgeschlagen: ',
|
||||
openFailed: 'Datei öffnen fehlgeschlagen: ',
|
||||
showFailed: 'Datei anzeigen fehlgeschlagen: ',
|
||||
},
|
||||
fr: {
|
||||
locale: 'fr-FR',
|
||||
title: 'Gestionnaire de téléchargements',
|
||||
|
||||
// 界面文本
|
||||
searchPlaceholder: 'Rechercher nom de fichier ou lien...',
|
||||
noItems: 'Aucune tâche',
|
||||
noSearchResult: 'Aucun résultat correspondant trouvé',
|
||||
|
||||
// 操作按钮
|
||||
refresh: 'Actualiser',
|
||||
removeAll: "Effacer l'historique",
|
||||
copyLink: 'Copier le lien',
|
||||
resume: 'Reprendre',
|
||||
pause: 'Pause',
|
||||
cancel: 'Annuler',
|
||||
remove: 'Supprimer',
|
||||
showInFolder: 'Afficher dans le dossier',
|
||||
|
||||
// 状态文本
|
||||
progressing: 'Téléchargement en cours',
|
||||
completed: 'Terminé',
|
||||
cancelled: 'Annulé',
|
||||
interrupted: 'Échoué',
|
||||
paused: 'En pause',
|
||||
|
||||
// 成功消息
|
||||
copied: "Copié",
|
||||
refreshSuccess: 'Actualisation réussie',
|
||||
|
||||
// 确认对话框
|
||||
confirmCancel: 'Êtes-vous sûr de vouloir annuler cette tâche de téléchargement et supprimer l\'enregistrement ?',
|
||||
confirmRemove: 'Êtes-vous sûr de vouloir supprimer cet élément de l\'historique ?',
|
||||
confirmRemoveAll: 'Êtes-vous sûr de vouloir effacer l\'historique des téléchargements ?',
|
||||
|
||||
// 错误消息
|
||||
copyFailed: 'Échec de la copie : ',
|
||||
pauseFailed: 'Échec de la pause : ',
|
||||
resumeFailed: 'Échec de la reprise : ',
|
||||
removeFailed: 'Échec de la suppression : ',
|
||||
removeAllFailed: 'Échec de l\'effacement : ',
|
||||
openFailed: 'Échec de l\'ouverture du fichier : ',
|
||||
showFailed: 'Échec de l\'affichage du fichier : ',
|
||||
},
|
||||
id: {
|
||||
locale: 'id-ID',
|
||||
title: 'Manajer Unduhan',
|
||||
|
||||
// 界面文本
|
||||
searchPlaceholder: 'Cari nama file atau tautan...',
|
||||
noItems: 'Tidak ada tugas',
|
||||
noSearchResult: 'Tidak ada hasil yang cocok ditemukan',
|
||||
|
||||
// 操作按钮
|
||||
refresh: 'Segarkan',
|
||||
removeAll: "Hapus Riwayat",
|
||||
copyLink: 'Salin Tautan',
|
||||
resume: 'Lanjutkan',
|
||||
pause: 'Jeda',
|
||||
cancel: 'Batal',
|
||||
remove: 'Hapus',
|
||||
showInFolder: 'Tampilkan di Folder',
|
||||
|
||||
// 状态文本
|
||||
progressing: 'Mengunduh',
|
||||
completed: 'Selesai',
|
||||
cancelled: 'Dibatalkan',
|
||||
interrupted: 'Gagal',
|
||||
paused: 'Dijeda',
|
||||
|
||||
// 成功消息
|
||||
copied: "Disalin",
|
||||
refreshSuccess: 'Berhasil disegarkan',
|
||||
|
||||
// 确认对话框
|
||||
confirmCancel: 'Apakah Anda yakin ingin membatalkan tugas unduhan ini dan menghapus catatan?',
|
||||
confirmRemove: 'Apakah Anda yakin ingin menghapus item ini dari riwayat?',
|
||||
confirmRemoveAll: 'Apakah Anda yakin ingin menghapus riwayat unduhan?',
|
||||
|
||||
// 错误消息
|
||||
copyFailed: 'Gagal menyalin: ',
|
||||
pauseFailed: 'Gagal menjeda: ',
|
||||
resumeFailed: 'Gagal melanjutkan: ',
|
||||
removeFailed: 'Gagal menghapus: ',
|
||||
removeAllFailed: 'Gagal menghapus: ',
|
||||
openFailed: 'Gagal membuka file: ',
|
||||
showFailed: 'Gagal menampilkan file: ',
|
||||
},
|
||||
ru: {
|
||||
locale: 'ru-RU',
|
||||
title: 'Менеджер загрузок',
|
||||
|
||||
// 界面文本
|
||||
searchPlaceholder: 'Поиск имени файла или ссылки...',
|
||||
noItems: 'Нет задач',
|
||||
noSearchResult: 'Совпадающих результатов не найдено',
|
||||
|
||||
// 操作按钮
|
||||
refresh: 'Обновить',
|
||||
removeAll: "Очистить историю",
|
||||
copyLink: 'Копировать ссылку',
|
||||
resume: 'Возобновить',
|
||||
pause: 'Пауза',
|
||||
cancel: 'Отмена',
|
||||
remove: 'Удалить',
|
||||
showInFolder: 'Показать в папке',
|
||||
|
||||
// 状态文本
|
||||
progressing: 'Загружается',
|
||||
completed: 'Завершено',
|
||||
cancelled: 'Отменено',
|
||||
interrupted: 'Ошибка',
|
||||
paused: 'На паузе',
|
||||
|
||||
// 成功消息
|
||||
copied: "Скопировано",
|
||||
refreshSuccess: 'Успешно обновлено',
|
||||
|
||||
// 确认对话框
|
||||
confirmCancel: 'Вы уверены, что хотите отменить эту задачу загрузки и удалить запись?',
|
||||
confirmRemove: 'Вы уверены, что хотите удалить этот элемент из истории?',
|
||||
confirmRemoveAll: 'Вы уверены, что хотите очистить историю загрузок?',
|
||||
|
||||
// 错误消息
|
||||
copyFailed: 'Ошибка копирования: ',
|
||||
pauseFailed: 'Ошибка паузы: ',
|
||||
resumeFailed: 'Ошибка возобновления: ',
|
||||
removeFailed: 'Ошибка удаления: ',
|
||||
removeAllFailed: 'Ошибка очистки: ',
|
||||
openFailed: 'Ошибка открытия файла: ',
|
||||
showFailed: 'Ошибка отображения файла: ',
|
||||
}
|
||||
};
|
||||
return packs[code] || packs.zh;
|
||||
}
|
||||
|
||||
async function open(language = 'zh', theme = 'light') {
|
||||
|
||||
6
electron/electron.js
vendored
6
electron/electron.js
vendored
@ -124,7 +124,11 @@ if (!fs.existsSync(cacheDir)) {
|
||||
}
|
||||
|
||||
// 初始化下载
|
||||
electronDown.initialize()
|
||||
electronDown.initialize(() => {
|
||||
if (mainWindow) {
|
||||
mainWindow.webContents.send("openDownloadWindow", {})
|
||||
}
|
||||
})
|
||||
|
||||
/**
|
||||
* 启动web服务
|
||||
|
||||
@ -26,7 +26,6 @@
|
||||
"url": "https://github.com/kuaifan/dootask.git"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@dootask/electron-dl": "^4.0.0-rc.2",
|
||||
"@electron-forge/cli": "^7.8.3",
|
||||
"@electron-forge/maker-deb": "^7.8.3",
|
||||
"@electron-forge/maker-rpm": "^7.8.3",
|
||||
@ -43,6 +42,7 @@
|
||||
"ora": "^4.1.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@dootask/electron-dl": "^4.0.0-rc.2",
|
||||
"axios": "^1.11.0",
|
||||
"crc": "^3.8.0",
|
||||
"dayjs": "^1.11.13",
|
||||
@ -80,6 +80,7 @@
|
||||
"render/**/*",
|
||||
"public/**/*",
|
||||
"utils/**/*",
|
||||
"electron-down.js",
|
||||
"electron-menu.js",
|
||||
"electron-preload.js",
|
||||
"electron.js"
|
||||
|
||||
@ -138,7 +138,7 @@
|
||||
items: [],
|
||||
lang: {
|
||||
// 语言设置
|
||||
locale: 'zh',
|
||||
locale: 'zh-CN',
|
||||
title: '下载管理器',
|
||||
|
||||
// 界面文本
|
||||
@ -437,19 +437,7 @@
|
||||
formatTime(timestamp) {
|
||||
if (!timestamp) return '';
|
||||
const date = new Date(timestamp * 1000);
|
||||
const locales = {
|
||||
"zh": "zh-CN",
|
||||
"zh-CHT": "zh-TW",
|
||||
"en": "en-US",
|
||||
"ko": "ko-KR",
|
||||
"ja": "ja-JP",
|
||||
"de": "de-DE",
|
||||
"fr": "fr-FR",
|
||||
"id": "id-ID",
|
||||
"ru": "ru-RU"
|
||||
};
|
||||
const locale = locales[this.lang?.locale] || this.lang?.locale || locales['en'];
|
||||
return date.toLocaleString(locale, {
|
||||
return date.toLocaleString(this.lang?.locale || "zh-CN", {
|
||||
year: 'numeric',
|
||||
month: '2-digit',
|
||||
day: '2-digit',
|
||||
|
||||
3
electron/utils/download.js
vendored
3
electron/utils/download.js
vendored
@ -1,3 +1,4 @@
|
||||
const path = require("path");
|
||||
const loger = require("electron-log");
|
||||
const Store = require('electron-store');
|
||||
const utils = require("./index");
|
||||
@ -32,7 +33,7 @@ class DownloadManager {
|
||||
*/
|
||||
convert(downloadItem) {
|
||||
return {
|
||||
filename: downloadItem.getFilename(),
|
||||
filename: path.basename(downloadItem.getSavePath()) || downloadItem.getFilename(),
|
||||
path: downloadItem.getSavePath(),
|
||||
url: downloadItem.getURL(),
|
||||
urls: downloadItem.getURLChain(),
|
||||
|
||||
@ -149,7 +149,7 @@ export default {
|
||||
},
|
||||
|
||||
computed: {
|
||||
...mapState(['ws', 'themeConf', 'windowOrientation', 'safeAreaSize', 'isFirstPage', 'mobileTabbar']),
|
||||
...mapState(['ws', 'themeConf', 'windowOrientation', 'safeAreaSize', 'isFirstPage', 'mobileTabbar', 'themeName']),
|
||||
|
||||
statusColor({routeName, windowLandscape}) {
|
||||
if (!routeName) {
|
||||
@ -615,6 +615,13 @@ export default {
|
||||
this.$Electron.listener('systemThemeChanged', _ => {
|
||||
this.autoTheme()
|
||||
})
|
||||
this.$Electron.listener('openDownloadWindow', _ => {
|
||||
$A.Electron.request({
|
||||
action: 'openDownloadWindow',
|
||||
language: languageName,
|
||||
theme: this.themeName,
|
||||
});
|
||||
})
|
||||
$A.bindScreenshotKey(this.$store.state.cacheKeyboard);
|
||||
//
|
||||
this.$Electron.sendMessage('setMenuLanguage', {
|
||||
|
||||
5
resources/assets/js/store/actions.js
vendored
5
resources/assets/js/store/actions.js
vendored
@ -469,11 +469,6 @@ export default {
|
||||
action: 'createDownload',
|
||||
url
|
||||
});
|
||||
$A.Electron.request({
|
||||
action: 'openDownloadWindow',
|
||||
language: languageName,
|
||||
theme: state.themeName,
|
||||
});
|
||||
} else if ($A.isEEUIApp) {
|
||||
$A.eeuiAppOpenWeb(url);
|
||||
} else {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user