Files
mokuro-reader/src/lib/util/zip.ts
2024-02-04 16:15:27 +02:00

33 lines
871 B
TypeScript

import type { Volume } from "$lib/types";
import {
BlobReader,
BlobWriter,
TextReader,
ZipWriter,
} from "@zip.js/zip.js";
export async function zipManga(manga: Volume[]) {
const zipWriter = new ZipWriter(new BlobWriter("application/zip"));
const promises = manga.map((volume) => {
const imagePromises = Object.values(volume.files).map((file) => {
return zipWriter.add(`${volume.volumeName}/${file.name}`, new BlobReader(file))
})
return [
zipWriter.add(`${volume.volumeName}.mokuro`, new TextReader(JSON.stringify(volume.mokuroData))),
...imagePromises,
]
})
await Promise.all(promises);
const zipFileBlob = await zipWriter.close();
const link = document.createElement('a');
link.href = URL.createObjectURL(zipFileBlob);
link.download = `${manga[0].mokuroData.title}.zip`;
link.click();
return false
}