From a3541ec16aee409b3e183865174977ba53b7c1ff Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Tue, 26 Jul 2022 20:37:49 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B0=D0=B4=20BookUpdateChecker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/api/reader.js | 11 +++++++++++ client/components/Reader/share/bookManager.js | 4 ++++ server/core/BookUpdateChecker/BUCClient.js | 2 +- server/core/Reader/ReaderWorker.js | 10 +++++++++- 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/client/api/reader.js b/client/api/reader.js index d0f97622..1cf1339e 100644 --- a/client/api/reader.js +++ b/client/api/reader.js @@ -229,6 +229,17 @@ class Reader { return (await axios.get(url)).data; } + async checkBuc(bookUrls) { + const response = await wsc.message(await wsc.send({action: 'check-buc', bookUrls})); + + if (response.error) + throw new Error(response.error); + + if (!response.data) + throw new Error(`response.data is empty`); + + return response.data; + } } export default new Reader(); \ No newline at end of file diff --git a/client/components/Reader/share/bookManager.js b/client/components/Reader/share/bookManager.js index e3aca138..f8f9fdde 100644 --- a/client/components/Reader/share/bookManager.js +++ b/client/components/Reader/share/bookManager.js @@ -234,6 +234,10 @@ class BookManager { async addBook(newBook, callback) { let meta = {url: newBook.url, path: newBook.path}; + + if (newBook.downloadSize !== undefined && newBook.downloadSize >= 0) + meta.downloadSize = newBook.downloadSize; + meta.key = this.keyFromPath(meta.path); meta.addTime = Date.now();//время добавления в кеш diff --git a/server/core/BookUpdateChecker/BUCClient.js b/server/core/BookUpdateChecker/BUCClient.js index 02c1882b..099cb9fe 100644 --- a/server/core/BookUpdateChecker/BUCClient.js +++ b/server/core/BookUpdateChecker/BUCClient.js @@ -28,7 +28,7 @@ class BUCClient { this.cleanQueryInterval = 300*dayMs;//интервал очистки устаревших this.syncPeriod = 1*hourMs;//период синхронизации с сервером BUC } else { - this.cleanQueryInterval = 300*minuteMs;//300*dayMs;//интервал очистки устаревших + this.cleanQueryInterval = 300*dayMs;//интервал очистки устаревших this.syncPeriod = 1*minuteMs;//период синхронизации с сервером BUC } diff --git a/server/core/Reader/ReaderWorker.js b/server/core/Reader/ReaderWorker.js index 25485b95..340c4f90 100644 --- a/server/core/Reader/ReaderWorker.js +++ b/server/core/Reader/ReaderWorker.js @@ -105,6 +105,7 @@ class ReaderWorker { const tempFilename2 = utils.randomHexString(30); const decompDirname = utils.randomHexString(30); + let downloadSize = -1; //download or use uploaded if (url.indexOf('disk://') != 0) {//download const downdata = await this.down.load(url, (progress) => { @@ -112,6 +113,8 @@ class ReaderWorker { }, q.abort); downloadedFilename = `${this.config.tempDownloadDir}/${tempFilename}`; + + downloadSize = downdata.length; await fs.writeFile(downloadedFilename, downdata); } else {//uploaded file const fileHash = url.substr(7); @@ -166,7 +169,12 @@ class ReaderWorker { //finish const finishFilename = path.basename(compFilename); - wState.finish({path: `/tmp/${finishFilename}`, size: stat.size}); + + const result = {path: `/tmp/${finishFilename}`, size: stat.size}; + if (downloadSize >= 0) + result.downloadSize = downloadSize; + + wState.finish(result); //асинхронно через 30 сек добавим в очередь на отправку //т.к. gzipFileIfNotExists может переупаковать файл