mirror of
https://github.com/lifegpc/eh-downloader.git
synced 2026-07-08 01:31:00 +08:00
Update tasks progress
This commit is contained in:
3
db.ts
3
db.ts
@@ -612,6 +612,9 @@ export class EhDb {
|
|||||||
[token],
|
[token],
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
get_gallery_count() {
|
||||||
|
return this.db.query<[number]>("SELECT COUNT(*) FROM gmeta;")[0][0];
|
||||||
|
}
|
||||||
get_gids(offset = 0, limit = 20) {
|
get_gids(offset = 0, limit = 20) {
|
||||||
return this.db.query<[number]>(
|
return this.db.query<[number]>(
|
||||||
"SELECT gid FROM gmeta LIMIT ? OFFSET ?;",
|
"SELECT gid FROM gmeta LIMIT ? OFFSET ?;",
|
||||||
|
|||||||
@@ -1,8 +1,16 @@
|
|||||||
import { Task } from "../task.ts";
|
import { Task, TaskFixGalleryPageProgress, TaskType } from "../task.ts";
|
||||||
import { TaskManager } from "../task_manager.ts";
|
import { TaskManager } from "../task_manager.ts";
|
||||||
import { asyncForEach } from "../utils.ts";
|
import { asyncForEach } from "../utils.ts";
|
||||||
|
|
||||||
export async function fix_gallery_page(t: Task, m: TaskManager) {
|
export async function fix_gallery_page(t: Task, m: TaskManager) {
|
||||||
|
const p: TaskFixGalleryPageProgress = {
|
||||||
|
total_gallery: m.db.get_gallery_count(),
|
||||||
|
checked_gallery: 0,
|
||||||
|
};
|
||||||
|
const sendEvent = () => {
|
||||||
|
m.dispatchTaskProgressEvent(TaskType.FixGalleryPage, t.id, p);
|
||||||
|
};
|
||||||
|
sendEvent();
|
||||||
let offset = 0;
|
let offset = 0;
|
||||||
let gids = m.db.get_gids(offset);
|
let gids = m.db.get_gids(offset);
|
||||||
while (gids.length) {
|
while (gids.length) {
|
||||||
@@ -13,6 +21,8 @@ export async function fix_gallery_page(t: Task, m: TaskManager) {
|
|||||||
if (gmeta.filecount != count) {
|
if (gmeta.filecount != count) {
|
||||||
await m.add_download_task(gid, gmeta.token);
|
await m.add_download_task(gid, gmeta.token);
|
||||||
}
|
}
|
||||||
|
p.checked_gallery += 1;
|
||||||
|
sendEvent();
|
||||||
});
|
});
|
||||||
offset += gids.length;
|
offset += gids.length;
|
||||||
gids = m.db.get_gids(offset);
|
gids = m.db.get_gids(offset);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Task } from "../task.ts";
|
import { Task, TaskType, TaskUpdateMeiliSearchDataProgress } from "../task.ts";
|
||||||
import { TaskManager } from "../task_manager.ts";
|
import { TaskManager } from "../task_manager.ts";
|
||||||
|
|
||||||
export async function update_meili_search_data(
|
export async function update_meili_search_data(
|
||||||
@@ -6,14 +6,33 @@ export async function update_meili_search_data(
|
|||||||
manager: TaskManager,
|
manager: TaskManager,
|
||||||
) {
|
) {
|
||||||
if (!manager.meilisearch) throw Error("MeiliServer not found.");
|
if (!manager.meilisearch) throw Error("MeiliServer not found.");
|
||||||
|
const progress: TaskUpdateMeiliSearchDataProgress = {
|
||||||
|
total_gallery: 0,
|
||||||
|
updated_gallery: 0,
|
||||||
|
};
|
||||||
|
const sendEvent = () => {
|
||||||
|
manager.dispatchTaskProgressEvent(
|
||||||
|
TaskType.UpdateMeiliSearchData,
|
||||||
|
task.id,
|
||||||
|
progress,
|
||||||
|
);
|
||||||
|
};
|
||||||
if (task.gid !== 0) {
|
if (task.gid !== 0) {
|
||||||
|
progress.total_gallery = 1;
|
||||||
|
sendEvent();
|
||||||
await manager.meilisearch.updateGallery(task.gid);
|
await manager.meilisearch.updateGallery(task.gid);
|
||||||
|
progress.updated_gallery = 1;
|
||||||
|
sendEvent();
|
||||||
} else {
|
} else {
|
||||||
|
progress.total_gallery = manager.db.get_gallery_count();
|
||||||
|
sendEvent();
|
||||||
let i = manager.db.get_gids();
|
let i = manager.db.get_gids();
|
||||||
let offset = 0;
|
let offset = 0;
|
||||||
while (i.length) {
|
while (i.length) {
|
||||||
await manager.meilisearch.updateGallery(...i);
|
await manager.meilisearch.updateGallery(...i);
|
||||||
offset += i.length;
|
offset += i.length;
|
||||||
|
progress.updated_gallery = offset;
|
||||||
|
sendEvent();
|
||||||
i = manager.db.get_gids(offset);
|
i = manager.db.get_gids(offset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user