dongnelibrary 0.3.17 → 0.3.21
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/.claude/settings.json +30 -1
- package/.claude/settings.local.json +26 -1
- package/.playwright-cli/console-2026-05-15T13-42-50-460Z.log +1 -0
- package/.playwright-cli/console-2026-05-15T13-43-40-832Z.log +10 -0
- package/.playwright-cli/console-2026-05-18T12-47-04-141Z.log +14 -0
- package/.playwright-cli/page-2026-05-07T11-53-37-538Z.yml +836 -0
- package/.playwright-cli/page-2026-05-07T11-54-02-314Z.yml +658 -0
- package/.playwright-cli/page-2026-05-07T12-03-12-317Z.yml +310 -0
- package/.playwright-cli/page-2026-05-08T13-54-43-061Z.yml +276 -0
- package/.playwright-cli/page-2026-05-08T13-54-45-094Z.yml +276 -0
- package/.playwright-cli/page-2026-05-08T13-54-53-014Z.yml +201 -0
- package/.playwright-cli/page-2026-05-08T13-56-02-097Z.yml +726 -0
- package/.playwright-cli/page-2026-05-08T13-56-33-697Z.yml +226 -0
- package/.playwright-cli/page-2026-05-15T13-42-51-601Z.yml +47 -0
- package/.playwright-cli/page-2026-05-15T13-43-40-955Z.yml +47 -0
- package/.playwright-cli/page-2026-05-15T13-43-43-563Z.yml +47 -0
- package/.playwright-cli/page-2026-05-18T12-47-05-318Z.yml +135 -0
- package/README.md +59 -2
- package/dist/dongnelibrary.d.ts.map +1 -1
- package/dist/dongnelibrary.js +36 -0
- package/dist/dongnelibrary.js.map +1 -1
- package/dist/localLibraryModule/ansan.d.ts +6 -0
- package/dist/localLibraryModule/ansan.d.ts.map +1 -0
- package/dist/localLibraryModule/ansan.js +76 -0
- package/dist/localLibraryModule/ansan.js.map +1 -0
- package/dist/localLibraryModule/bcl.d.ts +6 -0
- package/dist/localLibraryModule/bcl.d.ts.map +1 -0
- package/dist/localLibraryModule/bcl.js +75 -0
- package/dist/localLibraryModule/bcl.js.map +1 -0
- package/dist/localLibraryModule/gangnam.d.ts +6 -0
- package/dist/localLibraryModule/gangnam.d.ts.map +1 -0
- package/dist/localLibraryModule/gangnam.js +100 -0
- package/dist/localLibraryModule/gangnam.js.map +1 -0
- package/dist/localLibraryModule/gangseo.d.ts +6 -0
- package/dist/localLibraryModule/gangseo.d.ts.map +1 -0
- package/dist/localLibraryModule/gangseo.js +90 -0
- package/dist/localLibraryModule/gangseo.js.map +1 -0
- package/dist/localLibraryModule/gbelib.d.ts +6 -0
- package/dist/localLibraryModule/gbelib.d.ts.map +1 -0
- package/dist/localLibraryModule/gbelib.js +122 -0
- package/dist/localLibraryModule/gbelib.js.map +1 -0
- package/dist/localLibraryModule/geoje.d.ts +6 -0
- package/dist/localLibraryModule/geoje.d.ts.map +1 -0
- package/dist/localLibraryModule/geoje.js +75 -0
- package/dist/localLibraryModule/geoje.js.map +1 -0
- package/dist/localLibraryModule/gimhae.d.ts +6 -0
- package/dist/localLibraryModule/gimhae.d.ts.map +1 -0
- package/dist/localLibraryModule/gimhae.js +81 -0
- package/dist/localLibraryModule/gimhae.js.map +1 -0
- package/dist/localLibraryModule/gunsan.d.ts +6 -0
- package/dist/localLibraryModule/gunsan.d.ts.map +1 -0
- package/dist/localLibraryModule/gunsan.js +89 -0
- package/dist/localLibraryModule/gunsan.js.map +1 -0
- package/dist/localLibraryModule/gwanak.d.ts +6 -0
- package/dist/localLibraryModule/gwanak.d.ts.map +1 -0
- package/dist/localLibraryModule/gwanak.js +103 -0
- package/dist/localLibraryModule/gwanak.js.map +1 -0
- package/dist/localLibraryModule/gwe.d.ts +6 -0
- package/dist/localLibraryModule/gwe.d.ts.map +1 -0
- package/dist/localLibraryModule/gwe.js +84 -0
- package/dist/localLibraryModule/gwe.js.map +1 -0
- package/dist/localLibraryModule/junggulib.d.ts +6 -0
- package/dist/localLibraryModule/junggulib.d.ts.map +1 -0
- package/dist/localLibraryModule/junggulib.js +96 -0
- package/dist/localLibraryModule/junggulib.js.map +1 -0
- package/dist/localLibraryModule/mokpolib.d.ts +6 -0
- package/dist/localLibraryModule/mokpolib.d.ts.map +1 -0
- package/dist/localLibraryModule/mokpolib.js +104 -0
- package/dist/localLibraryModule/mokpolib.js.map +1 -0
- package/dist/localLibraryModule/nowon.d.ts +6 -0
- package/dist/localLibraryModule/nowon.d.ts.map +1 -0
- package/dist/localLibraryModule/nowon.js +95 -0
- package/dist/localLibraryModule/nowon.js.map +1 -0
- package/dist/localLibraryModule/paju.d.ts +6 -0
- package/dist/localLibraryModule/paju.d.ts.map +1 -0
- package/dist/localLibraryModule/paju.js +94 -0
- package/dist/localLibraryModule/paju.js.map +1 -0
- package/dist/localLibraryModule/pohang.d.ts +6 -0
- package/dist/localLibraryModule/pohang.d.ts.map +1 -0
- package/dist/localLibraryModule/pohang.js +83 -0
- package/dist/localLibraryModule/pohang.js.map +1 -0
- package/dist/localLibraryModule/siheung.d.ts +6 -0
- package/dist/localLibraryModule/siheung.d.ts.map +1 -0
- package/dist/localLibraryModule/siheung.js +65 -0
- package/dist/localLibraryModule/siheung.js.map +1 -0
- package/dist/localLibraryModule/yangcheon.d.ts +6 -0
- package/dist/localLibraryModule/yangcheon.d.ts.map +1 -0
- package/dist/localLibraryModule/yangcheon.js +90 -0
- package/dist/localLibraryModule/yangcheon.js.map +1 -0
- package/dist/localLibraryModule/ydplib.d.ts +6 -0
- package/dist/localLibraryModule/ydplib.d.ts.map +1 -0
- package/dist/localLibraryModule/ydplib.js +101 -0
- package/dist/localLibraryModule/ydplib.js.map +1 -0
- package/docs/library-module-python-scripts.md +381 -0
- package/docs//355/206/265/355/225/251/353/217/204/354/204/234/302/240/353/204/244/355/212/270/354/233/214/355/201/254-/353/252/251/353/241/235.md +184 -0
- package/docs//355/206/265/355/225/251/353/217/204/354/204/234/352/264/200-/353/204/244/355/212/270/354/233/214/355/201/254-/353/252/251/353/241/235.md +19 -19
- package/package.json +44 -6
- package/scripts/analyze-html-library.sh +300 -0
- package/scripts/analyze-library.sh +261 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.search = exports.homeUrl = exports.moduleName = void 0;
|
|
4
|
+
exports.getLibraryNames = getLibraryNames;
|
|
5
|
+
const util_1 = require("../util");
|
|
6
|
+
const http_1 = require("../http");
|
|
7
|
+
const jsdom_1 = require("jsdom");
|
|
8
|
+
exports.moduleName = "강원특별자치도교육청도서관";
|
|
9
|
+
exports.homeUrl = "https://lib.gwe.go.kr";
|
|
10
|
+
const SEARCH_URL = `${exports.homeUrl}/portal/menu/568/book/search`;
|
|
11
|
+
const DETAIL_BASE = `${exports.homeUrl}/portal/menu/568/book/view`;
|
|
12
|
+
// 서버 하드 리밋 약 360 → 안전값 300 (3.2초 이내)
|
|
13
|
+
const MAX_SIZE = 300;
|
|
14
|
+
const libraryList = [
|
|
15
|
+
{ code: "MA", name: "춘천교육문화관" },
|
|
16
|
+
{ code: "MC", name: "강릉교육문화관" },
|
|
17
|
+
{ code: "ME", name: "삼척교육문화관" },
|
|
18
|
+
{ code: "MD", name: "속초교육문화관" },
|
|
19
|
+
{ code: "MB", name: "원주교육문화관" },
|
|
20
|
+
{ code: "MX", name: "고성교육도서관" },
|
|
21
|
+
{ code: "MY", name: "동해교육도서관" },
|
|
22
|
+
{ code: "MH", name: "명주교육도서관" },
|
|
23
|
+
{ code: "MG", name: "문막교육도서관" },
|
|
24
|
+
{ code: "MJ", name: "속초교육도서관" },
|
|
25
|
+
{ code: "MV", name: "양구교육도서관" },
|
|
26
|
+
{ code: "MK", name: "양양교육도서관" },
|
|
27
|
+
{ code: "MQ", name: "영월교육도서관" },
|
|
28
|
+
{ code: "MW", name: "인제교육도서관" },
|
|
29
|
+
{ code: "MS", name: "정선교육도서관" },
|
|
30
|
+
{ code: "MT", name: "철원교육도서관" },
|
|
31
|
+
{ code: "MF", name: "춘성교육도서관" },
|
|
32
|
+
{ code: "MM", name: "태백교육도서관" },
|
|
33
|
+
{ code: "MR", name: "평창교육도서관" },
|
|
34
|
+
{ code: "MN", name: "홍천교육도서관" },
|
|
35
|
+
{ code: "MU", name: "화천교육도서관" },
|
|
36
|
+
{ code: "MP", name: "횡성교육도서관" },
|
|
37
|
+
];
|
|
38
|
+
const getLibraryCode = (0, util_1.createLibraryCodeLookup)(libraryList);
|
|
39
|
+
async function searchImpl(opt) {
|
|
40
|
+
const { title, libraryName, signal } = opt;
|
|
41
|
+
(0, util_1.validateSearchOptions)(opt);
|
|
42
|
+
const lcode = getLibraryCode(libraryName);
|
|
43
|
+
const { body } = await (0, http_1.get)(SEARCH_URL, {
|
|
44
|
+
qs: {
|
|
45
|
+
search: "true",
|
|
46
|
+
searchInput: title,
|
|
47
|
+
searchCondition: "searchTxt",
|
|
48
|
+
manageCodes: lcode,
|
|
49
|
+
size: String(MAX_SIZE),
|
|
50
|
+
page: "1",
|
|
51
|
+
},
|
|
52
|
+
signal,
|
|
53
|
+
});
|
|
54
|
+
const totalMatch = body.match(/검색결과\s*총\s*<strong>([\d,]+)<\/strong>건/);
|
|
55
|
+
const totalBookCount = totalMatch ? (0, util_1.extractNumber)(totalMatch[1]) : 0;
|
|
56
|
+
const { window: { document }, } = new jsdom_1.JSDOM(body);
|
|
57
|
+
const bookDivs = document.querySelectorAll("div.bookData");
|
|
58
|
+
const booklist = [];
|
|
59
|
+
for (const div of bookDivs) {
|
|
60
|
+
const bookTitle = div.dataset.title?.trim() ?? "";
|
|
61
|
+
const regNo = div.dataset.regNo?.trim() ?? "";
|
|
62
|
+
const libName = div.dataset.libName?.trim() ?? "";
|
|
63
|
+
if (!bookTitle || !regNo)
|
|
64
|
+
continue;
|
|
65
|
+
const bookUrl = `${DETAIL_BASE}/${regNo}?booktype=`;
|
|
66
|
+
booklist.push({
|
|
67
|
+
libraryName: libName,
|
|
68
|
+
title: bookTitle,
|
|
69
|
+
bookUrl,
|
|
70
|
+
exist: false,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
startPage: opt.startPage,
|
|
75
|
+
totalBookCount,
|
|
76
|
+
booklist,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
exports.search = (0, util_1.wrapWithCallback)(searchImpl);
|
|
80
|
+
function getLibraryNames() {
|
|
81
|
+
return (0, util_1.getLibraryNames)(libraryList);
|
|
82
|
+
}
|
|
83
|
+
({ moduleName: exports.moduleName, homeUrl: exports.homeUrl, search: exports.search, getLibraryNames });
|
|
84
|
+
//# sourceMappingURL=gwe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gwe.js","sourceRoot":"","sources":["../../src/localLibraryModule/gwe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SearchOptions, SearchResult } from "../types";
|
|
2
|
+
export declare const moduleName = "\uC911\uAD6C\uAD6C\uB9BD\uB3C4\uC11C\uAD00";
|
|
3
|
+
export declare const homeUrl = "https://www.junggulib.or.kr";
|
|
4
|
+
export declare const search: (opt: SearchOptions, callback?: import("../types").SearchCallback) => Promise<SearchResult | void>;
|
|
5
|
+
export declare function getLibraryNames(): string[];
|
|
6
|
+
//# sourceMappingURL=junggulib.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"junggulib.d.ts","sourceRoot":"","sources":["../../src/localLibraryModule/junggulib.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAIV,aAAa,EACb,YAAY,EACb,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,UAAU,+CAAY,CAAC;AACpC,eAAO,MAAM,OAAO,gCAAgC,CAAC;AA2GrD,eAAO,MAAM,MAAM,oGAA+B,CAAC;AAEnD,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.search = exports.homeUrl = exports.moduleName = void 0;
|
|
4
|
+
exports.getLibraryNames = getLibraryNames;
|
|
5
|
+
const util_1 = require("../util");
|
|
6
|
+
const http_1 = require("../http");
|
|
7
|
+
const jsdom_1 = require("jsdom");
|
|
8
|
+
exports.moduleName = "중구구립도서관";
|
|
9
|
+
exports.homeUrl = "https://www.junggulib.or.kr";
|
|
10
|
+
const SEARCH_URL = `${exports.homeUrl}/SJGL/menu/10003/program/30001/searchResultList.do`;
|
|
11
|
+
const DETAIL_URL = `${exports.homeUrl}/SJGL/menu/10003/program/30001/searchResultDetail.do`;
|
|
12
|
+
const libraryList = [
|
|
13
|
+
{ code: "MF", name: "가온도서관" },
|
|
14
|
+
{ code: "MH", name: "어울림도서관" },
|
|
15
|
+
{ code: "MD", name: "남산타운 어린이도서관" },
|
|
16
|
+
{ code: "ME", name: "손기정 어린이도서관" },
|
|
17
|
+
{ code: "MC", name: "신당누리도서관" },
|
|
18
|
+
{ code: "MA", name: "다산성곽도서관" },
|
|
19
|
+
{ code: "MB", name: "손기정문화도서관" },
|
|
20
|
+
{ code: "CA", name: "장충동 작은도서관" },
|
|
21
|
+
{ code: "CK", name: "광희동 작은도서관" },
|
|
22
|
+
{ code: "CE", name: "다산동 작은도서관" },
|
|
23
|
+
{ code: "CI", name: "동화동 작은도서관" },
|
|
24
|
+
{ code: "CH", name: "신당5동 작은도서관" },
|
|
25
|
+
{ code: "CD", name: "신당동 작은도서관" },
|
|
26
|
+
{ code: "CF", name: "약수동 작은도서관" },
|
|
27
|
+
{ code: "CL", name: "중구청 작은도서관" },
|
|
28
|
+
{ code: "CG", name: "청구동 작은도서관" },
|
|
29
|
+
{ code: "CM", name: "필동 작은도서관" },
|
|
30
|
+
{ code: "CB", name: "황학동 작은도서관" },
|
|
31
|
+
{ code: "CJ", name: "회현동 작은도서관" },
|
|
32
|
+
];
|
|
33
|
+
const getLibraryCode = (0, util_1.createLibraryCodeLookup)(libraryList);
|
|
34
|
+
async function searchImpl(opt) {
|
|
35
|
+
const { title, libraryName, signal } = opt;
|
|
36
|
+
(0, util_1.validateSearchOptions)(opt);
|
|
37
|
+
const lcode = getLibraryCode(libraryName);
|
|
38
|
+
const { statusCode, body } = await (0, http_1.get)(SEARCH_URL, {
|
|
39
|
+
qs: {
|
|
40
|
+
searchType: "SIMPLE",
|
|
41
|
+
searchKeyword: title,
|
|
42
|
+
searchManageCodeArr: lcode,
|
|
43
|
+
searchDisplay: 200,
|
|
44
|
+
searchArticle: "SCORE",
|
|
45
|
+
searchOrder: "ASC",
|
|
46
|
+
currentPageNo: 1,
|
|
47
|
+
},
|
|
48
|
+
signal,
|
|
49
|
+
});
|
|
50
|
+
if (statusCode !== 200) {
|
|
51
|
+
throw new Error(`HTTP ${statusCode}`);
|
|
52
|
+
}
|
|
53
|
+
const dom = new jsdom_1.JSDOM(body);
|
|
54
|
+
const document = dom.window.document;
|
|
55
|
+
const count = (0, util_1.extractNumber)(document.querySelector("#totalCnt")?.textContent ?? "");
|
|
56
|
+
const booklist = [];
|
|
57
|
+
const bookItems = document.querySelectorAll("div.bookArea");
|
|
58
|
+
bookItems.forEach((item) => {
|
|
59
|
+
const titleLink = item.querySelector("div.book_name a");
|
|
60
|
+
const bookTitle = titleLink?.querySelector("span.kor.on")?.textContent?.trim() ?? "";
|
|
61
|
+
let bookUrl = "";
|
|
62
|
+
const onclick = titleLink?.getAttribute("onclick") ?? "";
|
|
63
|
+
const match = onclick.match(/fnDetail\('(\d+)',\s*'(\d+)',\s*'([^']*)',\s*'(\w+)'\)/);
|
|
64
|
+
if (match) {
|
|
65
|
+
const [, bookKey, speciesKey, isbn, pubFormCode] = match;
|
|
66
|
+
bookUrl =
|
|
67
|
+
`${DETAIL_URL}?bookKey=${bookKey}&speciesKey=${speciesKey}` +
|
|
68
|
+
`&isbn=${isbn}&pubFormCode=${pubFormCode}`;
|
|
69
|
+
}
|
|
70
|
+
const statusText = item.querySelector("div.book_info.info04 p.emp1")?.textContent ?? "";
|
|
71
|
+
const libName = item
|
|
72
|
+
.querySelector("div.book_info.info03 b.themeFC")
|
|
73
|
+
?.textContent?.replace(/[\[\]]/g, "")
|
|
74
|
+
.trim() ?? libraryName;
|
|
75
|
+
if (bookTitle) {
|
|
76
|
+
booklist.push({
|
|
77
|
+
libraryName: libName,
|
|
78
|
+
title: bookTitle,
|
|
79
|
+
bookUrl,
|
|
80
|
+
maxoffset: count,
|
|
81
|
+
exist: statusText.includes("대출가능"),
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
return {
|
|
86
|
+
startPage: opt.startPage,
|
|
87
|
+
totalBookCount: count,
|
|
88
|
+
booklist,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
exports.search = (0, util_1.wrapWithCallback)(searchImpl);
|
|
92
|
+
function getLibraryNames() {
|
|
93
|
+
return (0, util_1.getLibraryNames)(libraryList);
|
|
94
|
+
}
|
|
95
|
+
({ moduleName: exports.moduleName, homeUrl: exports.homeUrl, search: exports.search, getLibraryNames });
|
|
96
|
+
//# sourceMappingURL=junggulib.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"junggulib.js","sourceRoot":"","sources":["../../src/localLibraryModule/junggulib.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SearchOptions, SearchResult } from "../types";
|
|
2
|
+
export declare const moduleName = "\uBAA9\uD3EC\uC2DC\uD1B5\uD569\uB3C4\uC11C\uAD00";
|
|
3
|
+
export declare const homeUrl = "https://www.mokpolib.or.kr";
|
|
4
|
+
export declare const search: (opt: SearchOptions, callback?: import("../types").SearchCallback) => Promise<SearchResult | void>;
|
|
5
|
+
export declare function getLibraryNames(): string[];
|
|
6
|
+
//# sourceMappingURL=mokpolib.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mokpolib.d.ts","sourceRoot":"","sources":["../../src/localLibraryModule/mokpolib.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAIV,aAAa,EACb,YAAY,EACb,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,UAAU,qDAAa,CAAC;AACrC,eAAO,MAAM,OAAO,+BAA+B,CAAC;AA2GpD,eAAO,MAAM,MAAM,oGAA+B,CAAC;AAEnD,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.search = exports.homeUrl = exports.moduleName = void 0;
|
|
4
|
+
exports.getLibraryNames = getLibraryNames;
|
|
5
|
+
const util_1 = require("../util");
|
|
6
|
+
const http_1 = require("../http");
|
|
7
|
+
const jsdom_1 = require("jsdom");
|
|
8
|
+
exports.moduleName = "목포시통합도서관";
|
|
9
|
+
exports.homeUrl = "https://www.mokpolib.or.kr";
|
|
10
|
+
const libraryList = [
|
|
11
|
+
{ code: "MA", name: "목포시립도서관" },
|
|
12
|
+
{ code: "MX", name: "목포어울림도서관" },
|
|
13
|
+
{ code: "MJ", name: "목포어린이도서관" },
|
|
14
|
+
{ code: "MQ", name: "목포영어도서관" },
|
|
15
|
+
{ code: "ME", name: "꿈나무작은도서관" },
|
|
16
|
+
{ code: "MB", name: "꿈돌이작은도서관" },
|
|
17
|
+
{ code: "MS", name: "노을작은도서관" },
|
|
18
|
+
{ code: "MW", name: "늘푸른작은도서관" },
|
|
19
|
+
{ code: "MH", name: "무지개작은도서관" },
|
|
20
|
+
{ code: "MF", name: "반딧불작은도서관" },
|
|
21
|
+
{ code: "MP", name: "삼학작은도서관" },
|
|
22
|
+
{ code: "MV", name: "샛별작은도서관" },
|
|
23
|
+
{ code: "MO", name: "소나무작은도서관" },
|
|
24
|
+
{ code: "MN", name: "숲속작은도서관" },
|
|
25
|
+
{ code: "MK", name: "연꽃작은도서관" },
|
|
26
|
+
{ code: "MD", name: "옹달샘작은도서관" },
|
|
27
|
+
{ code: "MC", name: "은하수작은도서관" },
|
|
28
|
+
{ code: "MM", name: "청개구리작은도서관" },
|
|
29
|
+
{ code: "MI", name: "초롱초롱작은도서관" },
|
|
30
|
+
{ code: "ML", name: "푸른솔작은도서관" },
|
|
31
|
+
{ code: "MU", name: "푸른숲작은도서관" },
|
|
32
|
+
{ code: "MR", name: "행복마을작은도서관" },
|
|
33
|
+
{ code: "MT", name: "호돌이작은도서관" },
|
|
34
|
+
];
|
|
35
|
+
const getLibraryCode = (0, util_1.createLibraryCodeLookup)(libraryList);
|
|
36
|
+
const BASE_URL = "https://www.mokpolib.or.kr/dls_lt/index.php";
|
|
37
|
+
async function searchImpl(opt) {
|
|
38
|
+
const { title, libraryName, signal } = opt;
|
|
39
|
+
(0, util_1.validateSearchOptions)(opt);
|
|
40
|
+
const lcode = getLibraryCode(libraryName);
|
|
41
|
+
const { statusCode, body } = await (0, http_1.get)(BASE_URL, {
|
|
42
|
+
qs: {
|
|
43
|
+
mod: "wdDataSearch",
|
|
44
|
+
act: "searchResultList",
|
|
45
|
+
"searchItem[]": "title",
|
|
46
|
+
"searchWord[]": title,
|
|
47
|
+
manageCode: lcode,
|
|
48
|
+
listNum: "50",
|
|
49
|
+
keyword: "",
|
|
50
|
+
},
|
|
51
|
+
signal,
|
|
52
|
+
});
|
|
53
|
+
if (statusCode !== 200) {
|
|
54
|
+
throw new Error(`HTTP ${statusCode}`);
|
|
55
|
+
}
|
|
56
|
+
const dom = new jsdom_1.JSDOM(body);
|
|
57
|
+
const document = dom.window.document;
|
|
58
|
+
const countStrong = document.querySelector("h3 > strong.cyan");
|
|
59
|
+
const count = (0, util_1.extractNumber)(countStrong?.textContent);
|
|
60
|
+
const booklist = [];
|
|
61
|
+
const bookItems = document.querySelectorAll("dl");
|
|
62
|
+
bookItems.forEach((dl) => {
|
|
63
|
+
if (dl.querySelector("#aTitle"))
|
|
64
|
+
return;
|
|
65
|
+
const titleLink = dl.querySelector("dd > div.ico > a");
|
|
66
|
+
const bookTitle = titleLink?.textContent?.trim() ?? "";
|
|
67
|
+
let bookUrl = "";
|
|
68
|
+
const detailHref = dl.querySelector("dt > a")?.getAttribute("href") ?? "";
|
|
69
|
+
const jongKeyMatch = detailHref.match(/jongKey=(\d+)/);
|
|
70
|
+
const dbTypeMatch = detailHref.match(/dbType=([^&]+)/);
|
|
71
|
+
if (jongKeyMatch) {
|
|
72
|
+
const params = new URLSearchParams({
|
|
73
|
+
mod: "wdDataSearch",
|
|
74
|
+
act: "searchResultDetail",
|
|
75
|
+
dbType: dbTypeMatch?.[1] ?? "dan",
|
|
76
|
+
jongKey: jongKeyMatch[1],
|
|
77
|
+
});
|
|
78
|
+
bookUrl = `${BASE_URL}?${params}`;
|
|
79
|
+
}
|
|
80
|
+
const statusText = dl.querySelector("ol > li > strong")?.textContent?.trim() ?? "";
|
|
81
|
+
const exist = statusText.includes("대출가능");
|
|
82
|
+
const libName = dl.querySelector("li.so > span.blue")?.textContent?.trim() ?? "";
|
|
83
|
+
if (bookTitle) {
|
|
84
|
+
booklist.push({
|
|
85
|
+
libraryName: libName || libraryName,
|
|
86
|
+
title: bookTitle,
|
|
87
|
+
bookUrl,
|
|
88
|
+
maxoffset: count,
|
|
89
|
+
exist,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
return {
|
|
94
|
+
startPage: opt.startPage,
|
|
95
|
+
totalBookCount: count,
|
|
96
|
+
booklist,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
exports.search = (0, util_1.wrapWithCallback)(searchImpl);
|
|
100
|
+
function getLibraryNames() {
|
|
101
|
+
return (0, util_1.getLibraryNames)(libraryList);
|
|
102
|
+
}
|
|
103
|
+
({ moduleName: exports.moduleName, homeUrl: exports.homeUrl, search: exports.search, getLibraryNames });
|
|
104
|
+
//# sourceMappingURL=mokpolib.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mokpolib.js","sourceRoot":"","sources":["../../src/localLibraryModule/mokpolib.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SearchOptions, SearchResult } from "../types";
|
|
2
|
+
export declare const moduleName = "\uB178\uC6D0\uAD6C\uB9BD\uB3C4\uC11C\uAD00";
|
|
3
|
+
export declare const homeUrl = "https://www.nowonlib.kr";
|
|
4
|
+
export declare const search: (opt: SearchOptions, callback?: import("../types").SearchCallback) => Promise<SearchResult | void>;
|
|
5
|
+
export declare function getLibraryNames(): string[];
|
|
6
|
+
//# sourceMappingURL=nowon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nowon.d.ts","sourceRoot":"","sources":["../../src/localLibraryModule/nowon.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAIV,aAAa,EACb,YAAY,EACb,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,UAAU,+CAAY,CAAC;AACpC,eAAO,MAAM,OAAO,4BAA4B,CAAC;AA+GjD,eAAO,MAAM,MAAM,oGAA+B,CAAC;AAEnD,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.search = exports.homeUrl = exports.moduleName = void 0;
|
|
4
|
+
exports.getLibraryNames = getLibraryNames;
|
|
5
|
+
const undici_1 = require("undici");
|
|
6
|
+
const util_1 = require("../util");
|
|
7
|
+
exports.moduleName = "노원구립도서관";
|
|
8
|
+
exports.homeUrl = "https://www.nowonlib.kr";
|
|
9
|
+
const libraryList = [
|
|
10
|
+
{ code: "MA", name: "노원중앙도서관" },
|
|
11
|
+
{ code: "MB", name: "노원어린이도서관" },
|
|
12
|
+
{ code: "MC", name: "월계도서관" },
|
|
13
|
+
{ code: "MD", name: "상계도서관" },
|
|
14
|
+
{ code: "ME", name: "불암도서관" },
|
|
15
|
+
{ code: "MF", name: "화랑도서관" },
|
|
16
|
+
{ code: "MG", name: "노원휴먼라이브러리" },
|
|
17
|
+
{ code: "MH", name: "하계어린이도서관" },
|
|
18
|
+
{ code: "MI", name: "월계어린이도서관" },
|
|
19
|
+
{ code: "SA", name: "공릉행복도서관" },
|
|
20
|
+
{ code: "SB", name: "노원문화원 작은도서관" },
|
|
21
|
+
{ code: "SC", name: "도란도란 작은도서관" },
|
|
22
|
+
{ code: "SD", name: "책이랑 친구랑 작은도서관" },
|
|
23
|
+
{ code: "SE", name: "푸른숲 작은도서관" },
|
|
24
|
+
{ code: "SF", name: "파랑새 작은도서관" },
|
|
25
|
+
{ code: "SG", name: "수락 작은도서관" },
|
|
26
|
+
{ code: "SH", name: "해솔 작은도서관" },
|
|
27
|
+
{ code: "SI", name: "나무작은도서관" },
|
|
28
|
+
{ code: "SJ", name: "노원구청 자료실" },
|
|
29
|
+
{ code: "SK", name: "메아리 작은도서관" },
|
|
30
|
+
{ code: "SL", name: "반디 작은도서관" },
|
|
31
|
+
{ code: "SM", name: "상계숲속 작은도서관" },
|
|
32
|
+
{ code: "SN", name: "한울 작은도서관" },
|
|
33
|
+
{ code: "SO", name: "가온 작은도서관" },
|
|
34
|
+
{ code: "SP", name: "꿈꾸는 작은도서관" },
|
|
35
|
+
{ code: "SQ", name: "달내 작은도서관" },
|
|
36
|
+
{ code: "SR", name: "초안산숲속 작은도서관" },
|
|
37
|
+
{ code: "SS", name: "한내지혜의숲도서관" },
|
|
38
|
+
{ code: "ST", name: "한내행복발전소" },
|
|
39
|
+
{ code: "SU", name: "책누리 작은도서관" },
|
|
40
|
+
{ code: "SV", name: "책사랑북카페 작은도서관" },
|
|
41
|
+
{ code: "SW", name: "하늘 작은도서관" },
|
|
42
|
+
{ code: "SX", name: "향기나무도서관" },
|
|
43
|
+
{ code: "SY", name: "중계사랑 작은도서관" },
|
|
44
|
+
{ code: "SZ", name: "가재울 지혜마루 작은도서관" },
|
|
45
|
+
{ code: "TA", name: "열린작은도서관" },
|
|
46
|
+
];
|
|
47
|
+
const getLibraryCode = (0, util_1.createLibraryCodeLookup)(libraryList);
|
|
48
|
+
async function searchImpl(opt) {
|
|
49
|
+
const { title, libraryName, signal } = opt;
|
|
50
|
+
(0, util_1.validateSearchOptions)(opt);
|
|
51
|
+
const lcode = getLibraryCode(libraryName);
|
|
52
|
+
const res = await (0, undici_1.request)(`${exports.homeUrl}/api/search`, {
|
|
53
|
+
method: "POST",
|
|
54
|
+
headers: {
|
|
55
|
+
"Content-Type": "application/json",
|
|
56
|
+
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
|
|
57
|
+
},
|
|
58
|
+
body: JSON.stringify({
|
|
59
|
+
searchKeyword: title,
|
|
60
|
+
pubFormCode: "ALL",
|
|
61
|
+
display: "1000",
|
|
62
|
+
article: "SCORE",
|
|
63
|
+
order: "DESC",
|
|
64
|
+
manageCode: lcode,
|
|
65
|
+
}),
|
|
66
|
+
signal,
|
|
67
|
+
});
|
|
68
|
+
if (res.statusCode !== 200) {
|
|
69
|
+
throw new Error(`HTTP ${res.statusCode}`);
|
|
70
|
+
}
|
|
71
|
+
const json = (await res.body.json());
|
|
72
|
+
const totalBookCount = json.contents.totalCount;
|
|
73
|
+
const booklist = json.contents.bookList.map((book) => {
|
|
74
|
+
// bookKey and speciesKey may be comma-separated when a book exists in multiple libraries
|
|
75
|
+
const bookKey = book.bookKey.split(",")[0];
|
|
76
|
+
const speciesKey = book.speciesKey.split(",")[0];
|
|
77
|
+
return {
|
|
78
|
+
title: (0, util_1.stripHtml)(book.originalTitle),
|
|
79
|
+
exist: book.loanStatus === "대출가능",
|
|
80
|
+
libraryName: book.libName.split(",")[0],
|
|
81
|
+
bookUrl: `${exports.homeUrl}/bookDetail/${book.pubFormCode}/${bookKey}/${speciesKey}/${book.isbn}`,
|
|
82
|
+
};
|
|
83
|
+
});
|
|
84
|
+
return {
|
|
85
|
+
startPage: opt.startPage,
|
|
86
|
+
totalBookCount,
|
|
87
|
+
booklist,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
exports.search = (0, util_1.wrapWithCallback)(searchImpl);
|
|
91
|
+
function getLibraryNames() {
|
|
92
|
+
return (0, util_1.getLibraryNames)(libraryList);
|
|
93
|
+
}
|
|
94
|
+
({ moduleName: exports.moduleName, homeUrl: exports.homeUrl, search: exports.search, getLibraryNames });
|
|
95
|
+
//# sourceMappingURL=nowon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nowon.js","sourceRoot":"","sources":["../../src/localLibraryModule/nowon.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SearchOptions, SearchResult } from "../types";
|
|
2
|
+
export declare const moduleName = "\uD30C\uC8FC\uC2DC\uB3C4\uC11C\uAD00";
|
|
3
|
+
export declare const homeUrl = "https://lib.paju.go.kr";
|
|
4
|
+
export declare const search: (opt: SearchOptions, callback?: import("../types").SearchCallback) => Promise<SearchResult | void>;
|
|
5
|
+
export declare function getLibraryNames(): string[];
|
|
6
|
+
//# sourceMappingURL=paju.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paju.d.ts","sourceRoot":"","sources":["../../src/localLibraryModule/paju.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAIV,aAAa,EACb,YAAY,EACb,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,UAAU,yCAAW,CAAC;AACnC,eAAO,MAAM,OAAO,2BAA2B,CAAC;AAwGhD,eAAO,MAAM,MAAM,oGAA+B,CAAC;AAEnD,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.search = exports.homeUrl = exports.moduleName = void 0;
|
|
4
|
+
exports.getLibraryNames = getLibraryNames;
|
|
5
|
+
const util_1 = require("../util");
|
|
6
|
+
const http_1 = require("../http");
|
|
7
|
+
const jsdom_1 = require("jsdom");
|
|
8
|
+
exports.moduleName = "파주시도서관";
|
|
9
|
+
exports.homeUrl = "https://lib.paju.go.kr";
|
|
10
|
+
const SEARCH_URL = "https://lib.paju.go.kr/jalib/plusSearchResultList.do";
|
|
11
|
+
const DETAIL_URL = "https://lib.paju.go.kr/jalib/menu/10056/program/30004/plusSearchResultDetail.do";
|
|
12
|
+
const libraryList = [
|
|
13
|
+
{ code: "MA", name: "중앙도서관" },
|
|
14
|
+
{ code: "MB", name: "금촌도서관" },
|
|
15
|
+
{ code: "MC", name: "문산도서관" },
|
|
16
|
+
{ code: "MD", name: "법원도서관" },
|
|
17
|
+
{ code: "ME", name: "적성도서관" },
|
|
18
|
+
{ code: "MQ", name: "교하도서관" },
|
|
19
|
+
{ code: "MI", name: "한빛도서관" },
|
|
20
|
+
{ code: "MH", name: "해솔도서관" },
|
|
21
|
+
{ code: "MN", name: "탄현도서관" },
|
|
22
|
+
{ code: "MM", name: "가람도서관" },
|
|
23
|
+
{ code: "MF", name: "조리도서관" },
|
|
24
|
+
{ code: "MK", name: "금촌3동솔빛도서관" },
|
|
25
|
+
{ code: "ML", name: "물푸레도서관" },
|
|
26
|
+
{ code: "MP", name: "파평도서관" },
|
|
27
|
+
{ code: "MR", name: "한울도서관" },
|
|
28
|
+
{ code: "MO", name: "월롱도서관" },
|
|
29
|
+
{ code: "MS", name: "광탄도서관" },
|
|
30
|
+
{ code: "MJ", name: "술이홀도서관" },
|
|
31
|
+
{ code: "SF", name: "금촌무지개작은도서관" },
|
|
32
|
+
{ code: "SD", name: "금곡작은도서관" },
|
|
33
|
+
{ code: "SA", name: "탄현작은도서관" },
|
|
34
|
+
{ code: "SB", name: "부엉이책장" },
|
|
35
|
+
];
|
|
36
|
+
const getLibraryCode = (0, util_1.createLibraryCodeLookup)(libraryList);
|
|
37
|
+
async function searchImpl(opt) {
|
|
38
|
+
const { title, libraryName, signal } = opt;
|
|
39
|
+
(0, util_1.validateSearchOptions)(opt);
|
|
40
|
+
const lcode = getLibraryCode(libraryName);
|
|
41
|
+
const { statusCode, body } = await (0, http_1.get)(SEARCH_URL, {
|
|
42
|
+
qs: {
|
|
43
|
+
searchType: "SIMPLE",
|
|
44
|
+
searchCategory: "BOOK",
|
|
45
|
+
searchKey: "TITLE",
|
|
46
|
+
searchKeyword: title,
|
|
47
|
+
searchLibraryArr: lcode,
|
|
48
|
+
searchRecordCount: 200,
|
|
49
|
+
},
|
|
50
|
+
signal,
|
|
51
|
+
});
|
|
52
|
+
if (statusCode !== 200) {
|
|
53
|
+
throw new Error(`HTTP ${statusCode}`);
|
|
54
|
+
}
|
|
55
|
+
const dom = new jsdom_1.JSDOM(body);
|
|
56
|
+
const document = dom.window.document;
|
|
57
|
+
const countEl = document.querySelector("p.rtitle b.themeFC");
|
|
58
|
+
const count = (0, util_1.extractNumber)(countEl?.textContent);
|
|
59
|
+
const booklist = [];
|
|
60
|
+
const bookItems = document.querySelectorAll("ul.resultList > li");
|
|
61
|
+
bookItems.forEach((li) => {
|
|
62
|
+
const titleLink = li.querySelector("dl.bookDataWrap dt.tit a");
|
|
63
|
+
const bookTitle = (titleLink?.textContent?.trim() ?? "").replace(/^\d+\.\s*/, "");
|
|
64
|
+
let bookUrl = "";
|
|
65
|
+
const onclick = titleLink?.getAttribute("onclick") ?? "";
|
|
66
|
+
const urlMatch = onclick.match(/fnSearchResultDetail\((\d+),(\d+),'(\w+)'\)/);
|
|
67
|
+
if (urlMatch) {
|
|
68
|
+
const [, recKey, bookKey, publishFormCode] = urlMatch;
|
|
69
|
+
bookUrl = `${DETAIL_URL}?recKey=${recKey}&bookKey=${bookKey}&publishFormCode=${publishFormCode}`;
|
|
70
|
+
}
|
|
71
|
+
const stateEl = li.querySelector("div.bookStateBar p.txt b");
|
|
72
|
+
const exist = stateEl?.textContent?.includes("대출가능") ?? false;
|
|
73
|
+
let libName = "";
|
|
74
|
+
const siteSpan = li.querySelector("dd.site span");
|
|
75
|
+
const siteText = siteSpan?.textContent?.trim() ?? "";
|
|
76
|
+
if (siteText.startsWith("도서관:")) {
|
|
77
|
+
libName = siteText.replace("도서관:", "").trim();
|
|
78
|
+
}
|
|
79
|
+
if (bookTitle) {
|
|
80
|
+
booklist.push({ libraryName: libName, title: bookTitle, bookUrl, exist });
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
return {
|
|
84
|
+
startPage: opt.startPage,
|
|
85
|
+
totalBookCount: count,
|
|
86
|
+
booklist,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
exports.search = (0, util_1.wrapWithCallback)(searchImpl);
|
|
90
|
+
function getLibraryNames() {
|
|
91
|
+
return (0, util_1.getLibraryNames)(libraryList);
|
|
92
|
+
}
|
|
93
|
+
({ moduleName: exports.moduleName, homeUrl: exports.homeUrl, search: exports.search, getLibraryNames });
|
|
94
|
+
//# sourceMappingURL=paju.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paju.js","sourceRoot":"","sources":["../../src/localLibraryModule/paju.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SearchOptions, SearchResult } from "../types";
|
|
2
|
+
export declare const moduleName = "\uD3EC\uD56D\uC2DC\uB9BD\uB3C4\uC11C\uAD00";
|
|
3
|
+
export declare const homeUrl = "https://phlib.pohang.go.kr";
|
|
4
|
+
export declare const search: (opt: SearchOptions, callback?: import("../types").SearchCallback) => Promise<SearchResult | void>;
|
|
5
|
+
export declare function getLibraryNames(): string[];
|
|
6
|
+
//# sourceMappingURL=pohang.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pohang.d.ts","sourceRoot":"","sources":["../../src/localLibraryModule/pohang.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAIV,aAAa,EACb,YAAY,EACb,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,UAAU,+CAAY,CAAC;AACpC,eAAO,MAAM,OAAO,+BAA+B,CAAC;AA2FpD,eAAO,MAAM,MAAM,oGAA+B,CAAC;AAEnD,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C"}
|