dongnelibrary 0.3.8 → 0.3.9
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/API.md +8 -8
- package/README.md +1 -1
- package/dist/dongnelibrary.d.ts +2 -9
- package/dist/dongnelibrary.d.ts.map +1 -1
- package/dist/dongnelibrary.js +16 -8
- package/dist/dongnelibrary.js.map +1 -1
- package/dist/localLibraryModule/gg.d.ts +6 -0
- package/dist/localLibraryModule/gg.d.ts.map +1 -0
- package/dist/localLibraryModule/gg.js +96 -0
- package/dist/localLibraryModule/gg.js.map +1 -0
- package/dist/localLibraryModule/gunpo.d.ts +6 -0
- package/dist/localLibraryModule/gunpo.d.ts.map +1 -0
- package/dist/localLibraryModule/gunpo.js +81 -0
- package/dist/localLibraryModule/gunpo.js.map +1 -0
- package/dist/localLibraryModule/hscity.d.ts +6 -0
- package/dist/localLibraryModule/hscity.d.ts.map +1 -0
- package/dist/localLibraryModule/hscity.js +100 -0
- package/dist/localLibraryModule/hscity.js.map +1 -0
- package/dist/localLibraryModule/osan.d.ts +6 -0
- package/dist/localLibraryModule/osan.d.ts.map +1 -0
- package/dist/localLibraryModule/osan.js +102 -0
- package/dist/localLibraryModule/osan.js.map +1 -0
- package/dist/localLibraryModule/snlib.d.ts +6 -0
- package/dist/localLibraryModule/snlib.d.ts.map +1 -0
- package/dist/localLibraryModule/snlib.js +102 -0
- package/dist/localLibraryModule/snlib.js.map +1 -0
- package/dist/localLibraryModule/suwon.d.ts +6 -0
- package/dist/localLibraryModule/suwon.d.ts.map +1 -0
- package/dist/localLibraryModule/suwon.js +117 -0
- package/dist/localLibraryModule/suwon.js.map +1 -0
- package/dist/localLibraryModule/yjlib.d.ts +6 -0
- package/dist/localLibraryModule/yjlib.d.ts.map +1 -0
- package/dist/localLibraryModule/yjlib.js +109 -0
- package/dist/localLibraryModule/yjlib.js.map +1 -0
- package/dist/localLibraryModule/yongin.d.ts +6 -0
- package/dist/localLibraryModule/yongin.d.ts.map +1 -0
- package/dist/localLibraryModule/yongin.js +141 -0
- package/dist/localLibraryModule/yongin.js.map +1 -0
- package/dist/types.d.ts +23 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snlib.d.ts","sourceRoot":"","sources":["../../src/localLibraryModule/snlib.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAIV,aAAa,EACb,YAAY,EACb,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,UAAU,yCAAW,CAAC;AACnC,eAAO,MAAM,OAAO,4BAA4B,CAAC;AA4GjD,eAAO,MAAM,MAAM,oGAA+B,CAAC;AAEnD,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C"}
|
|
@@ -0,0 +1,102 @@
|
|
|
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.snlib.go.kr";
|
|
10
|
+
const libraryList = [
|
|
11
|
+
{ code: "BF", name: "논골도서관" },
|
|
12
|
+
{ code: "CK", name: "중원어린이도서관" },
|
|
13
|
+
{ code: "MA", name: "성남중앙도서관" },
|
|
14
|
+
{ code: "MB", name: "분당도서관" },
|
|
15
|
+
{ code: "MD", name: "고등도서관" },
|
|
16
|
+
{ code: "MG", name: "구미도서관" },
|
|
17
|
+
{ code: "MH", name: "해오름도서관" },
|
|
18
|
+
{ code: "MJ", name: "중원도서관" },
|
|
19
|
+
{ code: "MM", name: "무지개도서관" },
|
|
20
|
+
{ code: "MO", name: "수내도서관" },
|
|
21
|
+
{ code: "MP", name: "판교도서관" },
|
|
22
|
+
{ code: "MR", name: "위례도서관" },
|
|
23
|
+
{ code: "MS", name: "수정도서관" },
|
|
24
|
+
{ code: "MT", name: "책테마파크도서관" },
|
|
25
|
+
{ code: "MU", name: "운중도서관" },
|
|
26
|
+
{ code: "MV", name: "서현도서관" },
|
|
27
|
+
{ code: "MW", name: "복정도서관" },
|
|
28
|
+
{ code: "PK", name: "판교어린이도서관" },
|
|
29
|
+
];
|
|
30
|
+
const getLibraryCode = (0, util_1.createLibraryCodeLookup)(libraryList);
|
|
31
|
+
/**
|
|
32
|
+
* Search for books in Seongnam City Libraries.
|
|
33
|
+
*/
|
|
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)("https://www.snlib.go.kr/intro/menu/10041/program/30009/plusSearchResultList.do", {
|
|
39
|
+
qs: {
|
|
40
|
+
currentPageNo: 1,
|
|
41
|
+
searchBookClass: "ALL",
|
|
42
|
+
searchCategory: "BOOK",
|
|
43
|
+
searchKey: "ALL",
|
|
44
|
+
searchKeyword: title,
|
|
45
|
+
searchLibraryArr: lcode,
|
|
46
|
+
searchOrder: "DESC",
|
|
47
|
+
searchRecordCount: 1000,
|
|
48
|
+
searchSort: "SIMILAR",
|
|
49
|
+
searchType: "SIMPLE",
|
|
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 countText = document.querySelector("strong.themeFC")?.textContent ?? "";
|
|
59
|
+
const count = (0, util_1.extractNumber)(countText);
|
|
60
|
+
const booklist = [];
|
|
61
|
+
if (count) {
|
|
62
|
+
const bookItems = document.querySelectorAll(".resultList > li");
|
|
63
|
+
bookItems.forEach((item) => {
|
|
64
|
+
const titleElement = item.querySelector(".tit a");
|
|
65
|
+
const bookTitle = titleElement?.textContent?.trim() ?? "";
|
|
66
|
+
const onclick = titleElement?.getAttribute("onclick") ?? "";
|
|
67
|
+
const match = onclick.match(/fnSearchResultDetail\((\d+),(\d+),'(\w+)'\)/);
|
|
68
|
+
let bookUrl = "";
|
|
69
|
+
if (match) {
|
|
70
|
+
const [, recKey, bookKey, publishFormCode] = match;
|
|
71
|
+
bookUrl = `https://www.snlib.go.kr/intro/menu/10041/program/30009/plusSearchResultDetail.do?recKey=${recKey}&bookKey=${bookKey}&publishFormCode=${publishFormCode}`;
|
|
72
|
+
}
|
|
73
|
+
const availability = item.querySelector(".bookStateBar .txt b")?.textContent ?? "";
|
|
74
|
+
// Format: "소장처:도서관이름" - split by colon to extract library name
|
|
75
|
+
const siteText = item.querySelector(".site > span:first-child")?.textContent ?? "";
|
|
76
|
+
const libraryNameParts = siteText.split(":");
|
|
77
|
+
const libName = libraryNameParts && libraryNameParts[1]
|
|
78
|
+
? libraryNameParts[1].trim()
|
|
79
|
+
: "";
|
|
80
|
+
if (bookTitle) {
|
|
81
|
+
booklist.push({
|
|
82
|
+
libraryName: libName,
|
|
83
|
+
title: bookTitle,
|
|
84
|
+
bookUrl,
|
|
85
|
+
maxoffset: count,
|
|
86
|
+
exist: availability.includes("대출가능"),
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
startPage: opt.startPage,
|
|
93
|
+
totalBookCount: count,
|
|
94
|
+
booklist,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
exports.search = (0, util_1.wrapWithCallback)(searchImpl);
|
|
98
|
+
function getLibraryNames() {
|
|
99
|
+
return (0, util_1.getLibraryNames)(libraryList);
|
|
100
|
+
}
|
|
101
|
+
({ moduleName: exports.moduleName, homeUrl: exports.homeUrl, search: exports.search, getLibraryNames });
|
|
102
|
+
//# sourceMappingURL=snlib.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snlib.js","sourceRoot":"","sources":["../../src/localLibraryModule/snlib.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SearchOptions, SearchResult } from "../types";
|
|
2
|
+
export declare const moduleName = "\uC218\uC6D0\uC2DC\uB3C4\uC11C\uAD00";
|
|
3
|
+
export declare const homeUrl = "https://www.suwonlib.go.kr";
|
|
4
|
+
export declare const search: (opt: SearchOptions, callback?: import("../types").SearchCallback) => Promise<SearchResult | void>;
|
|
5
|
+
export declare function getLibraryNames(): string[];
|
|
6
|
+
//# sourceMappingURL=suwon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suwon.d.ts","sourceRoot":"","sources":["../../src/localLibraryModule/suwon.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAIV,aAAa,EACb,YAAY,EACb,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,UAAU,yCAAW,CAAC;AACnC,eAAO,MAAM,OAAO,+BAA+B,CAAC;AA0IpD,eAAO,MAAM,MAAM,oGAA+B,CAAC;AAEnD,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C"}
|
|
@@ -0,0 +1,117 @@
|
|
|
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
|
+
exports.moduleName = "수원시도서관";
|
|
8
|
+
exports.homeUrl = "https://www.suwonlib.go.kr";
|
|
9
|
+
const libraryList = [
|
|
10
|
+
{ code: "141025", name: "선경도서관" },
|
|
11
|
+
{ code: "141024", name: "수원중앙도서관" },
|
|
12
|
+
{ code: "141549", name: "창룡도서관" },
|
|
13
|
+
{ code: "141572", name: "화서다산도서관" },
|
|
14
|
+
{ code: "141552", name: "호매실도서관" },
|
|
15
|
+
{ code: "141093", name: "서수원도서관" },
|
|
16
|
+
{ code: "141542", name: "한림도서관" },
|
|
17
|
+
{ code: "141550", name: "버드내도서관" },
|
|
18
|
+
{ code: "141092", name: "북수원도서관" },
|
|
19
|
+
{ code: "141537", name: "대추골도서관" },
|
|
20
|
+
{ code: "141557", name: "일월도서관" },
|
|
21
|
+
{ code: "141551", name: "광교홍재도서관" },
|
|
22
|
+
{ code: "141301", name: "태장마루도서관" },
|
|
23
|
+
{ code: "141595", name: "광교푸른숲도서관" },
|
|
24
|
+
{ code: "141596", name: "매여울도서관" },
|
|
25
|
+
{ code: "141612", name: "망포글빛도서관" },
|
|
26
|
+
{ code: "141085", name: "슬기샘도서관" },
|
|
27
|
+
{ code: "141086", name: "지혜샘어린이도서관" },
|
|
28
|
+
{ code: "141087", name: "바른샘어린이도서관" },
|
|
29
|
+
{ code: "141064", name: "한아름도서관" },
|
|
30
|
+
{ code: "141138", name: "반달어린이도서관" },
|
|
31
|
+
{ code: "341147", name: "사랑샘도서관" },
|
|
32
|
+
{ code: "141107", name: "희망샘도서관" },
|
|
33
|
+
];
|
|
34
|
+
const getLibraryCode = (0, util_1.createLibraryCodeLookup)(libraryList);
|
|
35
|
+
function stripHtml(str) {
|
|
36
|
+
return str ? str.replace(/<[^>]*>/g, "") : "";
|
|
37
|
+
}
|
|
38
|
+
function getBookList(data) {
|
|
39
|
+
if (!data.SEARCH_RESULT || !data.SEARCH_RESULT.SEARCH_LIST) {
|
|
40
|
+
return [];
|
|
41
|
+
}
|
|
42
|
+
return data.SEARCH_RESULT.SEARCH_LIST.map(function (book) {
|
|
43
|
+
let bookUrl = "";
|
|
44
|
+
if (book.MANAGE_CODE && book.ISBN && book.BOOK_KEY) {
|
|
45
|
+
bookUrl = `https://search.suwonlib.go.kr/detail/${book.MANAGE_CODE}/${book.ISBN}/${book.BOOK_KEY}`;
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
title: stripHtml(book.TITLE_INFO || ""),
|
|
49
|
+
exist: book.LOAN_CODE === "OK",
|
|
50
|
+
libraryName: book.LIB_NAME || "",
|
|
51
|
+
bookUrl,
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Search for books in Suwon City Libraries.
|
|
57
|
+
*/
|
|
58
|
+
async function searchImpl(opt) {
|
|
59
|
+
const { title, libraryName, signal } = opt;
|
|
60
|
+
(0, util_1.validateSearchOptions)(opt);
|
|
61
|
+
const lcode = getLibraryCode(libraryName);
|
|
62
|
+
// Create a session to maintain cookies
|
|
63
|
+
const session = (0, http_1.createSession)();
|
|
64
|
+
// First, visit the search page to initialize session
|
|
65
|
+
await session.get("https://search.suwonlib.go.kr/search", { signal });
|
|
66
|
+
// Now make the API call with the session cookies
|
|
67
|
+
const { statusCode, body } = await session.post("https://search.suwonlib.go.kr/getSearchResult/normal", {
|
|
68
|
+
form: {
|
|
69
|
+
searchTxt: title,
|
|
70
|
+
kCid: "",
|
|
71
|
+
kdcValue: "",
|
|
72
|
+
searchKind: "book",
|
|
73
|
+
manageCode: lcode,
|
|
74
|
+
isInnerSearch: "F",
|
|
75
|
+
innerSearchTxt: "",
|
|
76
|
+
keywordSearch: false,
|
|
77
|
+
displayNo: "1000",
|
|
78
|
+
orderbyItem: "ACCURACY_SORT",
|
|
79
|
+
orderby: "DESC",
|
|
80
|
+
pageNo: "1",
|
|
81
|
+
facetLib: "",
|
|
82
|
+
facetLibName: "",
|
|
83
|
+
facetAuthor: "",
|
|
84
|
+
facetPublisher: "",
|
|
85
|
+
facetPubYear: "",
|
|
86
|
+
facetSubject: "",
|
|
87
|
+
facetSubjectName: "",
|
|
88
|
+
facetMedia: "",
|
|
89
|
+
facetMediaName: "",
|
|
90
|
+
},
|
|
91
|
+
headers: {
|
|
92
|
+
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
|
|
93
|
+
Referer: "https://search.suwonlib.go.kr/search",
|
|
94
|
+
"X-Requested-With": "XMLHttpRequest",
|
|
95
|
+
ajax: "true",
|
|
96
|
+
},
|
|
97
|
+
signal,
|
|
98
|
+
});
|
|
99
|
+
if (statusCode !== 200) {
|
|
100
|
+
throw new Error(`HTTP ${statusCode}`);
|
|
101
|
+
}
|
|
102
|
+
const data = JSON.parse(body);
|
|
103
|
+
const booklist = getBookList(data);
|
|
104
|
+
const totalCount = data.SEARCH_RESULT && data.SEARCH_RESULT.SEARCH_COUNT
|
|
105
|
+
? data.SEARCH_RESULT.SEARCH_COUNT
|
|
106
|
+
: booklist.length;
|
|
107
|
+
return {
|
|
108
|
+
totalBookCount: totalCount,
|
|
109
|
+
booklist,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
exports.search = (0, util_1.wrapWithCallback)(searchImpl);
|
|
113
|
+
function getLibraryNames() {
|
|
114
|
+
return (0, util_1.getLibraryNames)(libraryList);
|
|
115
|
+
}
|
|
116
|
+
({ moduleName: exports.moduleName, homeUrl: exports.homeUrl, search: exports.search, getLibraryNames });
|
|
117
|
+
//# sourceMappingURL=suwon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suwon.js","sourceRoot":"","sources":["../../src/localLibraryModule/suwon.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SearchOptions, SearchResult } from "../types";
|
|
2
|
+
export declare const moduleName = "\uC5EC\uC8FC\uC2DC\uB9BD\uB3C4\uC11C\uAD00";
|
|
3
|
+
export declare const homeUrl = "https://www.yjlib.go.kr";
|
|
4
|
+
export declare const search: (opt: SearchOptions, callback?: import("../types").SearchCallback) => Promise<SearchResult | void>;
|
|
5
|
+
export declare function getLibraryNames(): string[];
|
|
6
|
+
//# sourceMappingURL=yjlib.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yjlib.d.ts","sourceRoot":"","sources":["../../src/localLibraryModule/yjlib.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAIV,aAAa,EACb,YAAY,EACb,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,UAAU,+CAAY,CAAC;AACpC,eAAO,MAAM,OAAO,4BAA4B,CAAC;AAsHjD,eAAO,MAAM,MAAM,oGAA+B,CAAC;AAEnD,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C"}
|
|
@@ -0,0 +1,109 @@
|
|
|
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.yjlib.go.kr";
|
|
10
|
+
const libraryList = [
|
|
11
|
+
// Public libraries (시립도서관)
|
|
12
|
+
{ code: "MA", name: "여주도서관" },
|
|
13
|
+
{ code: "MB", name: "세종도서관" },
|
|
14
|
+
{ code: "ME", name: "점동도서관" },
|
|
15
|
+
{ code: "MH", name: "여주기적의도서관" },
|
|
16
|
+
{ code: "MI", name: "흥천도서관" },
|
|
17
|
+
{ code: "MG", name: "금사도서관" },
|
|
18
|
+
{ code: "MF", name: "대신도서관" },
|
|
19
|
+
// Small libraries (작은도서관)
|
|
20
|
+
{ code: "MC", name: "산북작은도서관" },
|
|
21
|
+
{ code: "MD", name: "북내작은도서관" },
|
|
22
|
+
// Smart libraries (스마트도서관)
|
|
23
|
+
{ code: "SA", name: "여주역스마트도서관" },
|
|
24
|
+
{ code: "SB", name: "이마트스마트도서관" },
|
|
25
|
+
];
|
|
26
|
+
const getLibraryCode = (0, util_1.createLibraryCodeLookup)(libraryList);
|
|
27
|
+
/**
|
|
28
|
+
* Search for books in Yeoju City Libraries.
|
|
29
|
+
*/
|
|
30
|
+
async function searchImpl(opt) {
|
|
31
|
+
const { title, libraryName, signal } = opt;
|
|
32
|
+
(0, util_1.validateSearchOptions)(opt);
|
|
33
|
+
const lcode = getLibraryCode(libraryName);
|
|
34
|
+
const { statusCode, body } = await (0, http_1.get)("https://www.yjlib.go.kr/web/menu/10036/program/30001/searchResultList.do", {
|
|
35
|
+
qs: {
|
|
36
|
+
searchType: "SIMPLE",
|
|
37
|
+
searchCategory: "ALL",
|
|
38
|
+
searchLibraryArr: lcode,
|
|
39
|
+
searchField: "ALL",
|
|
40
|
+
searchWord: title,
|
|
41
|
+
searchRecordCount: 1000,
|
|
42
|
+
},
|
|
43
|
+
signal,
|
|
44
|
+
});
|
|
45
|
+
if (statusCode !== 200) {
|
|
46
|
+
throw new Error(`HTTP ${statusCode}`);
|
|
47
|
+
}
|
|
48
|
+
const dom = new jsdom_1.JSDOM(body);
|
|
49
|
+
const document = dom.window.document;
|
|
50
|
+
// Extract total count from "총 <strong class="highlight">15</strong> 건"
|
|
51
|
+
const resultText = document.querySelector(".result_box .result_screen")?.textContent ?? "";
|
|
52
|
+
const countMatch = resultText.match(/총\s*(\d+)\s*건/);
|
|
53
|
+
const count = countMatch ? countMatch[1] : "0";
|
|
54
|
+
const booklist = [];
|
|
55
|
+
const bookItems = document.querySelectorAll(".bookList .bookArea");
|
|
56
|
+
bookItems.forEach((item) => {
|
|
57
|
+
// Get title from .book_name span (remove highlight spans)
|
|
58
|
+
const titleElement = item.querySelector(".book_name a span");
|
|
59
|
+
let bookTitle = "";
|
|
60
|
+
if (titleElement) {
|
|
61
|
+
// Clone and get text content (this preserves the text without highlight spans)
|
|
62
|
+
bookTitle = titleElement.textContent?.trim() ?? "";
|
|
63
|
+
}
|
|
64
|
+
// Extract book URL from onclick handler
|
|
65
|
+
// fnSearchResultDetail(speciesKey, bookKey, publishFormCode) submits a form via POST,
|
|
66
|
+
// but the same endpoint accepts GET requests with speciesKey parameter
|
|
67
|
+
let bookUrl = "";
|
|
68
|
+
const titleLink = item.querySelector(".book_name a");
|
|
69
|
+
const onclick = titleLink?.getAttribute("onclick") ?? "";
|
|
70
|
+
const urlMatch = onclick.match(/fnSearchResultDetail\(['"]?(\d+)['"]?,\s*['"]?(\d+)['"]?,\s*['"]?(\w+)['"]?\)/);
|
|
71
|
+
if (urlMatch) {
|
|
72
|
+
const [, speciesKey, bookKey, publishFormCode] = urlMatch;
|
|
73
|
+
bookUrl = `https://www.yjlib.go.kr/web/menu/10036/program/30001/searchResultDetail.do?speciesKey=${speciesKey}&bookKey=${bookKey}&publishFormCode=${publishFormCode}`;
|
|
74
|
+
}
|
|
75
|
+
// Get library name from .book_info.info03 first strong element
|
|
76
|
+
let libName = "";
|
|
77
|
+
const info03 = item.querySelector(".book_info.info03");
|
|
78
|
+
if (info03) {
|
|
79
|
+
const firstStrong = info03.querySelector("p strong");
|
|
80
|
+
if (firstStrong) {
|
|
81
|
+
libName = firstStrong.textContent?.trim() ?? "";
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Get availability status from .bookBtnWrap
|
|
85
|
+
const statusEl = item.querySelector(".bookBtnWrap");
|
|
86
|
+
const statusText = statusEl?.textContent ?? "";
|
|
87
|
+
const exist = statusText.includes("대출가능");
|
|
88
|
+
if (bookTitle) {
|
|
89
|
+
booklist.push({
|
|
90
|
+
libraryName: libName,
|
|
91
|
+
title: bookTitle,
|
|
92
|
+
bookUrl,
|
|
93
|
+
maxoffset: count,
|
|
94
|
+
exist,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
return {
|
|
99
|
+
startPage: opt.startPage,
|
|
100
|
+
totalBookCount: (0, util_1.extractNumber)(count),
|
|
101
|
+
booklist,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
exports.search = (0, util_1.wrapWithCallback)(searchImpl);
|
|
105
|
+
function getLibraryNames() {
|
|
106
|
+
return (0, util_1.getLibraryNames)(libraryList);
|
|
107
|
+
}
|
|
108
|
+
({ moduleName: exports.moduleName, homeUrl: exports.homeUrl, search: exports.search, getLibraryNames });
|
|
109
|
+
//# sourceMappingURL=yjlib.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yjlib.js","sourceRoot":"","sources":["../../src/localLibraryModule/yjlib.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SearchOptions, SearchResult } from "../types";
|
|
2
|
+
export declare const moduleName = "\uC6A9\uC778\uC2DC\uB3C4\uC11C\uAD00";
|
|
3
|
+
export declare const homeUrl = "https://lib.yongin.go.kr";
|
|
4
|
+
export declare const search: (opt: SearchOptions, callback?: import("../types").SearchCallback) => Promise<SearchResult | void>;
|
|
5
|
+
export declare function getLibraryNames(): string[];
|
|
6
|
+
//# sourceMappingURL=yongin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yongin.d.ts","sourceRoot":"","sources":["../../src/localLibraryModule/yongin.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAIV,aAAa,EACb,YAAY,EACb,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,UAAU,yCAAW,CAAC;AACnC,eAAO,MAAM,OAAO,6BAA6B,CAAC;AAmJlD,eAAO,MAAM,MAAM,oGAA+B,CAAC;AAEnD,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C"}
|
|
@@ -0,0 +1,141 @@
|
|
|
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.yongin.go.kr";
|
|
10
|
+
const libraryList = [
|
|
11
|
+
// Public libraries (시립도서관)
|
|
12
|
+
{ code: "MB", name: "수지도서관" },
|
|
13
|
+
{ code: "MI", name: "구갈희망누리도서관" },
|
|
14
|
+
{ code: "MD", name: "구성도서관" },
|
|
15
|
+
{ code: "MK", name: "기흥도서관" },
|
|
16
|
+
{ code: "MY", name: "남사도서관" },
|
|
17
|
+
{ code: "MF", name: "동백도서관" },
|
|
18
|
+
{ code: "NA", name: "동천도서관" },
|
|
19
|
+
{ code: "ML", name: "모현도서관" },
|
|
20
|
+
{ code: "MM", name: "보라도서관" },
|
|
21
|
+
{ code: "MO", name: "상현도서관" },
|
|
22
|
+
{ code: "MZ", name: "서농도서관" },
|
|
23
|
+
{ code: "NB", name: "성복도서관" },
|
|
24
|
+
{ code: "MA", name: "용인중앙도서관" },
|
|
25
|
+
{ code: "MJ", name: "양지해밀도서관" },
|
|
26
|
+
{ code: "NN", name: "영덕도서관" },
|
|
27
|
+
{ code: "MX", name: "이동꿈틀도서관" },
|
|
28
|
+
{ code: "ME", name: "죽전도서관" },
|
|
29
|
+
{ code: "MP", name: "청덕도서관" },
|
|
30
|
+
{ code: "MC", name: "포곡도서관" },
|
|
31
|
+
{ code: "MN", name: "흥덕도서관" },
|
|
32
|
+
// Smart libraries (스마트도서관)
|
|
33
|
+
{ code: "NO", name: "기흥동행정복지센터스마트도서관" },
|
|
34
|
+
{ code: "NJ", name: "기흥역스마트도서관" },
|
|
35
|
+
{ code: "NF", name: "동천동행정복지센터스마트도서관" },
|
|
36
|
+
{ code: "NS", name: "마북동행정복지센터스마트도서관" },
|
|
37
|
+
{ code: "NG", name: "보정동행정복지센터스마트도서관" },
|
|
38
|
+
{ code: "NP", name: "상갈동행정복지센터스마트도서관" },
|
|
39
|
+
{ code: "NT", name: "상하동행정복지센터스마트도서관" },
|
|
40
|
+
{ code: "NH", name: "성복역스마트도서관" },
|
|
41
|
+
{ code: "NL", name: "시청스마트도서관" },
|
|
42
|
+
{ code: "NI", name: "신봉동행정복지센터스마트도서관" },
|
|
43
|
+
{ code: "NR", name: "역북동행정복지센터스마트도서관" },
|
|
44
|
+
{ code: "NM", name: "용인중앙시장역스마트도서관" },
|
|
45
|
+
{ code: "ND", name: "원삼면스마트도서관" },
|
|
46
|
+
{ code: "NQ", name: "유방어린이공원스마트도서관" },
|
|
47
|
+
{ code: "NK", name: "죽전역스마트도서관" },
|
|
48
|
+
// Small libraries (작은도서관)
|
|
49
|
+
{ code: "NC", name: "고림다온작은도서관" },
|
|
50
|
+
{ code: "MS", name: "남사맑은누리작은도서관" },
|
|
51
|
+
{ code: "MT", name: "백암면작은도서관" },
|
|
52
|
+
{ code: "MW", name: "상현1동작은도서관" },
|
|
53
|
+
{ code: "MQ", name: "상현2동작은도서관" },
|
|
54
|
+
{ code: "MV", name: "이동천리작은도서관" },
|
|
55
|
+
];
|
|
56
|
+
const getLibraryCode = (0, util_1.createLibraryCodeLookup)(libraryList);
|
|
57
|
+
/**
|
|
58
|
+
* Search for books in Yongin City Libraries.
|
|
59
|
+
*/
|
|
60
|
+
async function searchImpl(opt) {
|
|
61
|
+
const { title, libraryName, signal } = opt;
|
|
62
|
+
(0, util_1.validateSearchOptions)(opt);
|
|
63
|
+
const lcode = getLibraryCode(libraryName);
|
|
64
|
+
const { statusCode, body } = await (0, http_1.get)(`https://lib.yongin.go.kr/intro/menu/10003/program/30012/plusSearchResultList.do`, {
|
|
65
|
+
qs: {
|
|
66
|
+
searchType: "SIMPLE",
|
|
67
|
+
searchCategory: "ALL",
|
|
68
|
+
searchLibraryArr: lcode,
|
|
69
|
+
searchKey: "ALL",
|
|
70
|
+
searchKeyword: title,
|
|
71
|
+
searchRecordCount: 1000,
|
|
72
|
+
},
|
|
73
|
+
signal,
|
|
74
|
+
});
|
|
75
|
+
if (statusCode !== 200) {
|
|
76
|
+
throw new Error(`HTTP ${statusCode}`);
|
|
77
|
+
}
|
|
78
|
+
const dom = new jsdom_1.JSDOM(body);
|
|
79
|
+
const document = dom.window.document;
|
|
80
|
+
// Extract total count from "총<strong class="highlight">44</strong> 건"
|
|
81
|
+
// Note: First .highlight element contains search term, second contains the count
|
|
82
|
+
const highlightElems = document.querySelectorAll(".highlight");
|
|
83
|
+
const count = (0, util_1.extractNumber)(highlightElems[1]?.textContent);
|
|
84
|
+
const booklist = [];
|
|
85
|
+
const bookItems = document.querySelectorAll(".bookList .listWrap > li");
|
|
86
|
+
bookItems.forEach((li) => {
|
|
87
|
+
// Get title and book URL from .book_name link
|
|
88
|
+
const titleLink = li.querySelector(".book_name a");
|
|
89
|
+
// Title is the text content of the link, excluding the book_kind badge
|
|
90
|
+
let bookTitle = "";
|
|
91
|
+
if (titleLink) {
|
|
92
|
+
// Clone the node and remove the book_kind element to get clean title
|
|
93
|
+
const clone = titleLink.cloneNode(true);
|
|
94
|
+
const bookKind = clone.querySelector(".book_kind");
|
|
95
|
+
if (bookKind)
|
|
96
|
+
bookKind.remove();
|
|
97
|
+
bookTitle = clone.textContent?.trim() ?? "";
|
|
98
|
+
}
|
|
99
|
+
// Extract book URL from onclick handler
|
|
100
|
+
let bookUrl = "";
|
|
101
|
+
const onclick = titleLink ? titleLink.getAttribute("onclick") || "" : "";
|
|
102
|
+
const urlMatch = onclick.match(/fnSearchResultDetail\((\d+),(\d+),'(\w+)'\)/);
|
|
103
|
+
if (urlMatch) {
|
|
104
|
+
const [, recKey, bookKey, publishFormCode] = urlMatch;
|
|
105
|
+
bookUrl = `https://lib.yongin.go.kr/intro/menu/10003/program/30012/plusSearchResultDetail.do?recKey=${recKey}&bookKey=${bookKey}&publishFormCode=${publishFormCode}`;
|
|
106
|
+
}
|
|
107
|
+
// Get availability status from .status p
|
|
108
|
+
const statusEl = li.querySelector(".status p");
|
|
109
|
+
const statusText = statusEl ? (statusEl.textContent?.trim() ?? "") : "";
|
|
110
|
+
const exist = statusText.includes("대출가능");
|
|
111
|
+
// Get library name from ".book_info.info03 p" (first p contains library name)
|
|
112
|
+
let libName = "";
|
|
113
|
+
const info03 = li.querySelector(".book_info.info03");
|
|
114
|
+
if (info03) {
|
|
115
|
+
const firstP = info03.querySelector("p");
|
|
116
|
+
if (firstP) {
|
|
117
|
+
libName = firstP.textContent?.trim() ?? "";
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
if (bookTitle) {
|
|
121
|
+
booklist.push({
|
|
122
|
+
libraryName: libName,
|
|
123
|
+
title: bookTitle,
|
|
124
|
+
bookUrl,
|
|
125
|
+
maxoffset: count,
|
|
126
|
+
exist: exist,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
return {
|
|
131
|
+
startPage: opt.startPage,
|
|
132
|
+
totalBookCount: count,
|
|
133
|
+
booklist,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
exports.search = (0, util_1.wrapWithCallback)(searchImpl);
|
|
137
|
+
function getLibraryNames() {
|
|
138
|
+
return (0, util_1.getLibraryNames)(libraryList);
|
|
139
|
+
}
|
|
140
|
+
({ moduleName: exports.moduleName, homeUrl: exports.homeUrl, search: exports.search, getLibraryNames });
|
|
141
|
+
//# sourceMappingURL=yongin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yongin.js","sourceRoot":"","sources":["../../src/localLibraryModule/yongin.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -89,4 +89,27 @@ export interface LibraryRegistryEntry {
|
|
|
89
89
|
search: LibraryModule["search"];
|
|
90
90
|
homeUrl: string;
|
|
91
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Callback function signature for search completion
|
|
94
|
+
*/
|
|
95
|
+
export type SearchCompleteCallback = (err: SearchError | null, results?: SearchResult[]) => void;
|
|
96
|
+
/**
|
|
97
|
+
* Options for the main search API
|
|
98
|
+
*/
|
|
99
|
+
export interface SearchOptionsMain {
|
|
100
|
+
title: string;
|
|
101
|
+
libraryName: string | string[];
|
|
102
|
+
signal?: AbortSignal;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Public API interface for DongneLibrary
|
|
106
|
+
*/
|
|
107
|
+
export interface DongneLibraryAPI {
|
|
108
|
+
getAllLibraryNames: () => string[];
|
|
109
|
+
getAllModuleNames: () => string[];
|
|
110
|
+
getModuleHomeUrls: () => Record<string, string>;
|
|
111
|
+
isModuleName: (name: string) => boolean;
|
|
112
|
+
searchAsync: (opt: SearchOptionsMain, onResult?: SearchCallback) => Promise<SearchResult[]>;
|
|
113
|
+
search: (opt: SearchOptionsMain | undefined | null, onResult?: SearchCallback, onComplete?: SearchCompleteCallback) => void;
|
|
114
|
+
}
|
|
92
115
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,IAAI,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,GAAG,EAAE,WAAW,GAAG,IAAI,EACvB,MAAM,CAAC,EAAE,YAAY,KAClB,IAAI,CAAC;AAEV;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/D,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACjE;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,CACN,GAAG,EAAE,aAAa,EAClB,QAAQ,CAAC,EAAE,cAAc,KACtB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAClC,eAAe,EAAE,MAAM,MAAM,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|