@s-hirano-ist/s-scripts 0.2.0

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.
Files changed (62) hide show
  1. package/LICENSE +661 -0
  2. package/dist/fetch-articles.d.ts +3 -0
  3. package/dist/fetch-articles.d.ts.map +1 -0
  4. package/dist/fetch-articles.js +101 -0
  5. package/dist/fetch-articles.js.map +1 -0
  6. package/dist/fetch-books.d.ts +3 -0
  7. package/dist/fetch-books.d.ts.map +1 -0
  8. package/dist/fetch-books.js +67 -0
  9. package/dist/fetch-books.js.map +1 -0
  10. package/dist/fetch-images.d.ts +3 -0
  11. package/dist/fetch-images.d.ts.map +1 -0
  12. package/dist/fetch-images.js +83 -0
  13. package/dist/fetch-images.js.map +1 -0
  14. package/dist/fetch-notes.d.ts +3 -0
  15. package/dist/fetch-notes.d.ts.map +1 -0
  16. package/dist/fetch-notes.js +68 -0
  17. package/dist/fetch-notes.js.map +1 -0
  18. package/dist/find-duplicate-json-articles.d.ts +3 -0
  19. package/dist/find-duplicate-json-articles.d.ts.map +1 -0
  20. package/dist/find-duplicate-json-articles.js +137 -0
  21. package/dist/find-duplicate-json-articles.js.map +1 -0
  22. package/dist/reset-articles.d.ts +3 -0
  23. package/dist/reset-articles.d.ts.map +1 -0
  24. package/dist/reset-articles.js +67 -0
  25. package/dist/reset-articles.js.map +1 -0
  26. package/dist/reset-books.d.ts +3 -0
  27. package/dist/reset-books.d.ts.map +1 -0
  28. package/dist/reset-books.js +67 -0
  29. package/dist/reset-books.js.map +1 -0
  30. package/dist/reset-images.d.ts +3 -0
  31. package/dist/reset-images.d.ts.map +1 -0
  32. package/dist/reset-images.js +67 -0
  33. package/dist/reset-images.js.map +1 -0
  34. package/dist/reset-notes.d.ts +3 -0
  35. package/dist/reset-notes.d.ts.map +1 -0
  36. package/dist/reset-notes.js +67 -0
  37. package/dist/reset-notes.js.map +1 -0
  38. package/dist/revert-articles.d.ts +3 -0
  39. package/dist/revert-articles.d.ts.map +1 -0
  40. package/dist/revert-articles.js +54 -0
  41. package/dist/revert-articles.js.map +1 -0
  42. package/dist/revert-books.d.ts +3 -0
  43. package/dist/revert-books.d.ts.map +1 -0
  44. package/dist/revert-books.js +54 -0
  45. package/dist/revert-books.js.map +1 -0
  46. package/dist/revert-images.d.ts +3 -0
  47. package/dist/revert-images.d.ts.map +1 -0
  48. package/dist/revert-images.js +54 -0
  49. package/dist/revert-images.js.map +1 -0
  50. package/dist/revert-notes.d.ts +3 -0
  51. package/dist/revert-notes.d.ts.map +1 -0
  52. package/dist/revert-notes.js +54 -0
  53. package/dist/revert-notes.js.map +1 -0
  54. package/dist/update-json-articles.d.ts +3 -0
  55. package/dist/update-json-articles.d.ts.map +1 -0
  56. package/dist/update-json-articles.js +116 -0
  57. package/dist/update-json-articles.js.map +1 -0
  58. package/dist/update-raw-articles.d.ts +3 -0
  59. package/dist/update-raw-articles.d.ts.map +1 -0
  60. package/dist/update-raw-articles.js +175 -0
  61. package/dist/update-raw-articles.js.map +1 -0
  62. package/package.json +73 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-json-articles.js","sourceRoot":"","sources":["../src/update-json-articles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=update-raw-articles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-raw-articles.d.ts","sourceRoot":"","sources":["../src/update-raw-articles.ts"],"names":[],"mappings":""}
@@ -0,0 +1,175 @@
1
+ #!/usr/bin/env node
2
+ import { existsSync } from "node:fs";
3
+ import { mkdir, readdir, readFile, writeFile } from "node:fs/promises";
4
+ import path from "node:path";
5
+ import { createPushoverService } from "@s-hirano-ist/s-notification";
6
+ import TurndownService from "turndown";
7
+ const FETCHED_URLS_FILE = "script/fetched_urls.txt";
8
+ const JSON_DIR = "json/article";
9
+ const OUTPUT_DIR = "raw/article";
10
+ async function loadFetchedUrls() {
11
+ try {
12
+ if (existsSync(FETCHED_URLS_FILE)) {
13
+ const content = await readFile(FETCHED_URLS_FILE, "utf-8");
14
+ return new Set(content.split("\n").filter((url) => url.trim()));
15
+ }
16
+ }
17
+ catch (error) {
18
+ console.error("Error loading fetched URLs:", error);
19
+ }
20
+ return new Set();
21
+ }
22
+ async function saveFetchedUrls(urls) {
23
+ const sortedUrls = Array.from(urls).sort();
24
+ await writeFile(FETCHED_URLS_FILE, sortedUrls.join("\n"), "utf-8");
25
+ }
26
+ async function fetchWebsiteMarkdown(url) {
27
+ try {
28
+ const response = await fetch(url, {
29
+ headers: {
30
+ "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
31
+ },
32
+ });
33
+ if (!response.ok) {
34
+ throw new Error(`HTTP error! status: ${response.status}`);
35
+ }
36
+ const html = await response.text();
37
+ const turndownService = new TurndownService({
38
+ headingStyle: "atx",
39
+ codeBlockStyle: "fenced",
40
+ bulletListMarker: "-",
41
+ strongDelimiter: "**",
42
+ emDelimiter: "_",
43
+ });
44
+ turndownService.remove(["script", "style", "nav", "footer", "aside"]);
45
+ turndownService.addRule("preserveLinks", {
46
+ filter: ["a"],
47
+ replacement: (content, node) => {
48
+ const element = node;
49
+ const href = element.getAttribute("href");
50
+ if (!href)
51
+ return content;
52
+ if (href.startsWith("http") || href.startsWith("https")) {
53
+ return `[${content}](${href})`;
54
+ }
55
+ try {
56
+ const absoluteUrl = new URL(href, url).href;
57
+ return `[${content}](${absoluteUrl})`;
58
+ }
59
+ catch {
60
+ return content;
61
+ }
62
+ },
63
+ });
64
+ turndownService.addRule("preserveImages", {
65
+ filter: ["img"],
66
+ replacement: (_content, node) => {
67
+ const element = node;
68
+ const src = element.getAttribute("src");
69
+ const alt = element.getAttribute("alt") || "";
70
+ if (!src)
71
+ return "";
72
+ if (src.startsWith("http") || src.startsWith("https")) {
73
+ return `![${alt}](${src})`;
74
+ }
75
+ try {
76
+ const absoluteUrl = new URL(src, url).href;
77
+ return `![${alt}](${absoluteUrl})`;
78
+ }
79
+ catch {
80
+ return "";
81
+ }
82
+ },
83
+ });
84
+ const markdown = turndownService.turndown(html);
85
+ return markdown.trim();
86
+ }
87
+ catch (error) {
88
+ console.error(`Failed to fetch ${url}:`, error);
89
+ return "";
90
+ }
91
+ }
92
+ async function jsonToMarkdown(jsonFile, fetchedUrls) {
93
+ const rawData = await readFile(jsonFile, "utf-8");
94
+ const data = JSON.parse(rawData);
95
+ const bodyList = data.body || [];
96
+ if (!existsSync(OUTPUT_DIR)) {
97
+ await mkdir(OUTPUT_DIR, { recursive: true });
98
+ }
99
+ for (const item of bodyList) {
100
+ const { title, quote, url, skip } = item;
101
+ try {
102
+ if (fetchedUrls.has(url) || skip) {
103
+ continue;
104
+ }
105
+ const websiteText = await fetchWebsiteMarkdown(url);
106
+ if (!websiteText) {
107
+ continue;
108
+ }
109
+ const strippedUrl = url.replace(/^https?:\/\//, "");
110
+ const safeUrl = encodeURIComponent(strippedUrl);
111
+ const outputFilename = `${safeUrl}.md`;
112
+ const outputPath = path.join(OUTPUT_DIR, outputFilename);
113
+ const markdownContent = `# [${title}](${url})
114
+
115
+ ---
116
+
117
+ ## Quote
118
+
119
+ ${quote}
120
+
121
+ ## Content
122
+
123
+ ${websiteText}
124
+ `;
125
+ await writeFile(outputPath, markdownContent, "utf-8");
126
+ console.log(`Exported: ${outputPath}`);
127
+ fetchedUrls.add(url);
128
+ }
129
+ catch (_error) {
130
+ console.error("Error on file:", url);
131
+ }
132
+ }
133
+ }
134
+ async function main() {
135
+ const env = {
136
+ PUSHOVER_URL: process.env.PUSHOVER_URL,
137
+ PUSHOVER_USER_KEY: process.env.PUSHOVER_USER_KEY,
138
+ PUSHOVER_APP_TOKEN: process.env.PUSHOVER_APP_TOKEN,
139
+ };
140
+ if (Object.values(env).some((v) => !v)) {
141
+ throw new Error("Required environment variables are not set.");
142
+ }
143
+ const notificationService = createPushoverService({
144
+ url: env.PUSHOVER_URL ?? "",
145
+ userKey: env.PUSHOVER_USER_KEY ?? "",
146
+ appToken: env.PUSHOVER_APP_TOKEN ?? "",
147
+ });
148
+ try {
149
+ const fetchedUrls = await loadFetchedUrls();
150
+ const jsonFiles = await readdir(JSON_DIR);
151
+ const jsonFilePaths = jsonFiles
152
+ .filter((file) => file.endsWith(".json"))
153
+ .map((file) => path.join(JSON_DIR, file));
154
+ for (const jsonFile of jsonFilePaths) {
155
+ console.log(`Processing: ${jsonFile}`);
156
+ await jsonToMarkdown(jsonFile, fetchedUrls);
157
+ }
158
+ await saveFetchedUrls(fetchedUrls);
159
+ await notificationService.notifyInfo("update-raw-articles completed", {
160
+ caller: "update-raw-articles",
161
+ });
162
+ }
163
+ catch (error) {
164
+ console.error("Error in main process:", error);
165
+ await notificationService.notifyError(`update-raw-articles failed: ${error}`, {
166
+ caller: "update-raw-articles",
167
+ });
168
+ process.exit(1);
169
+ }
170
+ }
171
+ main().catch((error) => {
172
+ console.error(error);
173
+ process.exit(1);
174
+ });
175
+ //# sourceMappingURL=update-raw-articles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-raw-articles.js","sourceRoot":"","sources":["../src/update-raw-articles.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "@s-hirano-ist/s-scripts",
3
+ "version": "0.2.0",
4
+ "description": "CLI scripts for s-private data operations",
5
+ "type": "module",
6
+ "bin": {
7
+ "fetch-articles": "./dist/fetch-articles.js",
8
+ "fetch-books": "./dist/fetch-books.js",
9
+ "fetch-images": "./dist/fetch-images.js",
10
+ "fetch-notes": "./dist/fetch-notes.js",
11
+ "find-duplicate-json-articles": "./dist/find-duplicate-json-articles.js",
12
+ "reset-articles": "./dist/reset-articles.js",
13
+ "reset-books": "./dist/reset-books.js",
14
+ "reset-images": "./dist/reset-images.js",
15
+ "reset-notes": "./dist/reset-notes.js",
16
+ "revert-articles": "./dist/revert-articles.js",
17
+ "revert-books": "./dist/revert-books.js",
18
+ "revert-images": "./dist/revert-images.js",
19
+ "revert-notes": "./dist/revert-notes.js",
20
+ "update-json-articles": "./dist/update-json-articles.js",
21
+ "update-raw-articles": "./dist/update-raw-articles.js"
22
+ },
23
+ "files": [
24
+ "dist",
25
+ "README.md",
26
+ "LICENSE"
27
+ ],
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "https://github.com/s-hirano-ist/s-private.git",
31
+ "directory": "packages/scripts"
32
+ },
33
+ "license": "AGPL-3.0",
34
+ "publishConfig": {
35
+ "access": "public"
36
+ },
37
+ "dependencies": {
38
+ "@prisma/client": "7.2.0",
39
+ "jsdom": "26.0.0",
40
+ "minio": "8.0.5",
41
+ "turndown": "7.2.0",
42
+ "@s-hirano-ist/s-core": "1.3.1",
43
+ "@s-hirano-ist/s-database": "1.3.1",
44
+ "@s-hirano-ist/s-notification": "1.3.1"
45
+ },
46
+ "devDependencies": {
47
+ "@types/jsdom": "21.1.7",
48
+ "@types/node": "22.15.31",
49
+ "@types/turndown": "5.0.5",
50
+ "tsx": "4.19.4",
51
+ "typescript": "5.9.3"
52
+ },
53
+ "scripts": {
54
+ "build": "tsc",
55
+ "clean": "rm -rf dist",
56
+ "typecheck": "tsc --noEmit",
57
+ "fetch-articles": "tsx src/fetch-articles.ts",
58
+ "fetch-books": "tsx src/fetch-books.ts",
59
+ "fetch-images": "tsx src/fetch-images.ts",
60
+ "fetch-notes": "tsx src/fetch-notes.ts",
61
+ "find-duplicate-json-articles": "tsx src/find-duplicate-json-articles.ts",
62
+ "reset-articles": "tsx src/reset-articles.ts",
63
+ "reset-books": "tsx src/reset-books.ts",
64
+ "reset-images": "tsx src/reset-images.ts",
65
+ "reset-notes": "tsx src/reset-notes.ts",
66
+ "revert-articles": "tsx src/revert-articles.ts",
67
+ "revert-books": "tsx src/revert-books.ts",
68
+ "revert-images": "tsx src/revert-images.ts",
69
+ "revert-notes": "tsx src/revert-notes.ts",
70
+ "update-json-articles": "tsx src/update-json-articles.ts",
71
+ "update-raw-articles": "tsx src/update-raw-articles.ts"
72
+ }
73
+ }