@s-hirano-ist/s-scripts 1.8.0 → 1.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/fetch-books.js +20 -7
- package/dist/fetch-books.js.map +1 -1
- package/package.json +4 -4
package/dist/fetch-books.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { mkdir, writeFile } from "node:fs/promises";
|
|
2
|
+
import { access, mkdir, writeFile } from "node:fs/promises";
|
|
3
3
|
import path, { dirname } from "node:path";
|
|
4
4
|
import { makeUnexportedStatus, makeUserId, } from "@s-hirano-ist/s-core/common";
|
|
5
5
|
import { createPushoverService } from "@s-hirano-ist/s-notification";
|
|
6
6
|
import * as Minio from "minio";
|
|
7
|
-
const OUTPUT_DIR = "markdown/
|
|
7
|
+
const OUTPUT_DIR = "markdown/book/";
|
|
8
8
|
async function main() {
|
|
9
9
|
const env = {
|
|
10
10
|
DATABASE_URL: process.env.DATABASE_URL,
|
|
@@ -48,20 +48,33 @@ async function main() {
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
async function downloadBookImages(books) {
|
|
51
|
-
const outputDir = path.join(process.cwd(), "image/
|
|
51
|
+
const outputDir = path.join(process.cwd(), "image/book");
|
|
52
52
|
await mkdir(outputDir, { recursive: true });
|
|
53
53
|
const booksWithImages = books.filter((book) => book.imagePath !== null);
|
|
54
54
|
console.log(`📷 ${booksWithImages.length} 件の書籍画像をダウンロードします。`);
|
|
55
|
+
let skippedCount = 0;
|
|
56
|
+
let downloadedCount = 0;
|
|
55
57
|
const downloadPromises = booksWithImages.map(async (book) => {
|
|
56
|
-
const { imagePath } = book;
|
|
58
|
+
const { ISBN, imagePath } = book;
|
|
57
59
|
if (!imagePath)
|
|
58
60
|
return;
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
+
const ext = path.extname(imagePath);
|
|
62
|
+
const fileName = `${ISBN}${ext}`;
|
|
63
|
+
const filePath = path.join(outputDir, fileName);
|
|
64
|
+
// ファイルが既に存在する場合はスキップ
|
|
65
|
+
try {
|
|
66
|
+
await access(filePath);
|
|
67
|
+
skippedCount++;
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// ファイルが存在しない場合はダウンロード
|
|
72
|
+
}
|
|
61
73
|
await minioClient.fGetObject(env.MINIO_BUCKET_NAME ?? "", `books/original/${imagePath}`, filePath);
|
|
74
|
+
downloadedCount++;
|
|
62
75
|
});
|
|
63
76
|
await Promise.all(downloadPromises);
|
|
64
|
-
console.log(
|
|
77
|
+
console.log(`💾 書籍画像: ${downloadedCount} 件ダウンロード, ${skippedCount} 件スキップ`);
|
|
65
78
|
}
|
|
66
79
|
async function fetchBooks() {
|
|
67
80
|
const books = await prisma.book.findMany({
|
package/dist/fetch-books.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-books.js","sourceRoot":"","sources":["../src/fetch-books.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch-books.js","sourceRoot":"","sources":["../src/fetch-books.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@s-hirano-ist/s-scripts",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.2",
|
|
4
4
|
"description": "CLI scripts for s-private data operations",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -43,9 +43,9 @@
|
|
|
43
43
|
"jsdom": "27.4.0",
|
|
44
44
|
"minio": "8.0.5",
|
|
45
45
|
"turndown": "7.2.0",
|
|
46
|
-
"@s-hirano-ist/s-core": "1.8.
|
|
47
|
-
"@s-hirano-ist/s-database": "1.8.
|
|
48
|
-
"@s-hirano-ist/s-notification": "1.8.
|
|
46
|
+
"@s-hirano-ist/s-core": "1.8.2",
|
|
47
|
+
"@s-hirano-ist/s-database": "1.8.2",
|
|
48
|
+
"@s-hirano-ist/s-notification": "1.8.2"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@types/jsdom": "27.0.0",
|