dongnelibrary 0.3.6 → 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.
Files changed (44) hide show
  1. package/API.md +8 -8
  2. package/README.md +14 -1
  3. package/dist/cli.js +16 -6
  4. package/dist/cli.js.map +1 -1
  5. package/dist/dongnelibrary.d.ts +3 -10
  6. package/dist/dongnelibrary.d.ts.map +1 -1
  7. package/dist/dongnelibrary.js +41 -63
  8. package/dist/dongnelibrary.js.map +1 -1
  9. package/dist/localLibraryModule/gg.d.ts +6 -0
  10. package/dist/localLibraryModule/gg.d.ts.map +1 -0
  11. package/dist/localLibraryModule/gg.js +96 -0
  12. package/dist/localLibraryModule/gg.js.map +1 -0
  13. package/dist/localLibraryModule/gunpo.d.ts +6 -0
  14. package/dist/localLibraryModule/gunpo.d.ts.map +1 -0
  15. package/dist/localLibraryModule/gunpo.js +81 -0
  16. package/dist/localLibraryModule/gunpo.js.map +1 -0
  17. package/dist/localLibraryModule/hscity.d.ts +6 -0
  18. package/dist/localLibraryModule/hscity.d.ts.map +1 -0
  19. package/dist/localLibraryModule/hscity.js +100 -0
  20. package/dist/localLibraryModule/hscity.js.map +1 -0
  21. package/dist/localLibraryModule/osan.d.ts +6 -0
  22. package/dist/localLibraryModule/osan.d.ts.map +1 -0
  23. package/dist/localLibraryModule/osan.js +102 -0
  24. package/dist/localLibraryModule/osan.js.map +1 -0
  25. package/dist/localLibraryModule/snlib.d.ts +6 -0
  26. package/dist/localLibraryModule/snlib.d.ts.map +1 -0
  27. package/dist/localLibraryModule/snlib.js +102 -0
  28. package/dist/localLibraryModule/snlib.js.map +1 -0
  29. package/dist/localLibraryModule/suwon.d.ts +6 -0
  30. package/dist/localLibraryModule/suwon.d.ts.map +1 -0
  31. package/dist/localLibraryModule/suwon.js +117 -0
  32. package/dist/localLibraryModule/suwon.js.map +1 -0
  33. package/dist/localLibraryModule/yjlib.d.ts +6 -0
  34. package/dist/localLibraryModule/yjlib.d.ts.map +1 -0
  35. package/dist/localLibraryModule/yjlib.js +109 -0
  36. package/dist/localLibraryModule/yjlib.js.map +1 -0
  37. package/dist/localLibraryModule/yongin.d.ts +6 -0
  38. package/dist/localLibraryModule/yongin.d.ts.map +1 -0
  39. package/dist/localLibraryModule/yongin.js +141 -0
  40. package/dist/localLibraryModule/yongin.js.map +1 -0
  41. package/dist/types.d.ts +23 -0
  42. package/dist/types.d.ts.map +1 -1
  43. package/package.json +2 -1
  44. package/Dockerfile +0 -22
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hscity.d.ts","sourceRoot":"","sources":["../../src/localLibraryModule/hscity.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;AAqGjD,eAAO,MAAM,MAAM,oGAA+B,CAAC;AAEnD,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C"}
@@ -0,0 +1,100 @@
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://hscitylib.or.kr";
10
+ const libraryList = [
11
+ { code: "MA", name: "남양도서관" },
12
+ { code: "MB", name: "태안도서관" },
13
+ { code: "MC", name: "삼괴도서관" },
14
+ { code: "MD", name: "병점도서관" },
15
+ { code: "ME", name: "샘내도서관" },
16
+ { code: "MF", name: "두빛나래어린이도서관" },
17
+ { code: "MG", name: "봉담도서관" },
18
+ { code: "MH", name: "둥지나래어린이도서관" },
19
+ { code: "MI", name: "목동이음터도서관" },
20
+ { code: "MJ", name: "기아행복마루도서관" },
21
+ { code: "MK", name: "화성동탄중앙도서관" },
22
+ { code: "ML", name: "송산도서관" },
23
+ { code: "MM", name: "정남도서관" },
24
+ { code: "MN", name: "비봉도서관" },
25
+ { code: "MO", name: "진안도서관" },
26
+ { code: "MP", name: "중앙이음터도서관" },
27
+ { code: "MQ", name: "양감도서관" },
28
+ { code: "MR", name: "다원이음터도서관" },
29
+ { code: "MS", name: "송린이음터도서관" },
30
+ { code: "MT", name: "팔탄도서관" },
31
+ { code: "MU", name: "마도도서관" },
32
+ { code: "MV", name: "봉담커피앤북도서관" },
33
+ { code: "MW", name: "왕배푸른숲도서관" },
34
+ { code: "MX", name: "노을빛도서관" },
35
+ { code: "MY", name: "서연이음터도서관" },
36
+ { code: "MZ", name: "호연이음터도서관" },
37
+ { code: "NA", name: "향남복합문화센터도서관" },
38
+ { code: "NB", name: "봉담와우도서관" },
39
+ { code: "TA", name: "늘봄이음터도서관" },
40
+ { code: "TB", name: "달빛나래어린이도서관" },
41
+ ];
42
+ const getLibraryCode = (0, util_1.createLibraryCodeLookup)(libraryList);
43
+ /**
44
+ * Search for books in Hwaseong City Libraries.
45
+ */
46
+ async function searchImpl(opt) {
47
+ const { title, libraryName, signal } = opt;
48
+ (0, util_1.validateSearchOptions)(opt);
49
+ const lcode = getLibraryCode(libraryName);
50
+ const url = `https://hscitylib.or.kr/intro/menu/10008/program/30001/searchResultList.do`;
51
+ const { statusCode, body } = await (0, http_1.post)(url, {
52
+ form: {
53
+ searchType: "SIMPLE",
54
+ searchKeyword: title,
55
+ searchManageCodeArr: lcode,
56
+ searchDisplay: 1000,
57
+ },
58
+ signal,
59
+ });
60
+ if (statusCode !== 200) {
61
+ throw new Error(`HTTP ${statusCode}`);
62
+ }
63
+ const dom = new jsdom_1.JSDOM(body);
64
+ const document = dom.window.document;
65
+ const countText = document.querySelector("#totalCnt")?.textContent ?? "";
66
+ const count = (0, util_1.extractNumber)(countText);
67
+ const booklist = [];
68
+ const bookItems = document.querySelectorAll(".bookArea");
69
+ bookItems.forEach((item) => {
70
+ const titleElement = item.querySelector("p.book_name.kor.on > a");
71
+ const bookTitle = titleElement?.getAttribute("title") ?? "";
72
+ const onclick = titleElement?.getAttribute("onclick") ?? "";
73
+ const match = onclick.match(/fnDetail\('(\d+)',\s*'(\d+)',\s*'([^']*)',\s*'(\w+)'\)/);
74
+ let bookUrl = "";
75
+ if (match) {
76
+ const [, bookKey, speciesKey, isbn, pubFormCode] = match;
77
+ bookUrl = `https://hscitylib.or.kr/intro/menu/10008/program/30001/searchResultDetail.do?bookKey=${bookKey}&speciesKey=${speciesKey}&isbn=${isbn}&pubFormCode=${pubFormCode}`;
78
+ }
79
+ const availability = item.querySelector("span.emp8")?.textContent?.trim() ?? "";
80
+ const libName = item.querySelector("b.themeFC")?.textContent?.trim() ?? "";
81
+ booklist.push({
82
+ libraryName: libName.replace(/[\[\]]/g, ""),
83
+ title: bookTitle,
84
+ bookUrl,
85
+ maxoffset: count,
86
+ exist: availability.includes("대출가능"),
87
+ });
88
+ });
89
+ return {
90
+ startPage: opt.startPage,
91
+ totalBookCount: count,
92
+ booklist,
93
+ };
94
+ }
95
+ exports.search = (0, util_1.wrapWithCallback)(searchImpl);
96
+ function getLibraryNames() {
97
+ return (0, util_1.getLibraryNames)(libraryList);
98
+ }
99
+ ({ moduleName: exports.moduleName, homeUrl: exports.homeUrl, search: exports.search, getLibraryNames });
100
+ //# sourceMappingURL=hscity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hscity.js","sourceRoot":"","sources":["../../src/localLibraryModule/hscity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { SearchOptions, SearchResult } from "../types";
2
+ export declare const moduleName = "\uC624\uC0B0\uC2DC\uB3C4\uC11C\uAD00";
3
+ export declare const homeUrl = "https://www.osanlibrary.go.kr";
4
+ export declare const search: (opt: SearchOptions, callback?: import("../types").SearchCallback) => Promise<SearchResult | void>;
5
+ export declare function getLibraryNames(): string[];
6
+ //# sourceMappingURL=osan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"osan.d.ts","sourceRoot":"","sources":["../../src/localLibraryModule/osan.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAIV,aAAa,EACb,YAAY,EACb,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,UAAU,yCAAW,CAAC;AACnC,eAAO,MAAM,OAAO,kCAAkC,CAAC;AA6GvD,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.osanlibrary.go.kr";
10
+ const libraryList = [
11
+ { code: "MA", name: "오산중앙도서관" },
12
+ { code: "MG", name: "꿈두레도서관" },
13
+ { code: "ME", name: "초평도서관" },
14
+ { code: "MC", name: "햇살마루도서관" },
15
+ { code: "MB", name: "청학도서관" },
16
+ { code: "MD", name: "양산도서관" },
17
+ { code: "MI", name: "소리울도서관" },
18
+ { code: "MY", name: "무지개도서관" },
19
+ { code: "MH", name: "고현초꿈키움도서관" },
20
+ { code: "MJ", name: "쌍용예가시민개방도서관" },
21
+ ];
22
+ const getLibraryCode = (0, util_1.createLibraryCodeLookup)(libraryList);
23
+ /**
24
+ * Search for books in Osan City Libraries.
25
+ */
26
+ async function searchImpl(opt) {
27
+ const { title, libraryName, signal } = opt;
28
+ (0, util_1.validateSearchOptions)(opt);
29
+ const lcode = getLibraryCode(libraryName);
30
+ const { statusCode, body } = await (0, http_1.get)(`https://www.osanlibrary.go.kr/intro/program/plusSearchResultList.do`, {
31
+ qs: {
32
+ searchType: "SIMPLE",
33
+ searchCategory: "ALL",
34
+ searchLibraryArr: lcode,
35
+ searchKey: "ALL",
36
+ searchKeyword: title,
37
+ searchRecordCount: 1000,
38
+ },
39
+ signal,
40
+ });
41
+ if (statusCode !== 200) {
42
+ throw new Error(`HTTP ${statusCode}`);
43
+ }
44
+ const dom = new jsdom_1.JSDOM(body);
45
+ const document = dom.window.document;
46
+ // Extract total count from "총 <span class="highlight">44</span>건"
47
+ const highlightSpan = document.querySelector("span.highlight");
48
+ const count = (0, util_1.extractNumber)(highlightSpan?.textContent);
49
+ const booklist = [];
50
+ const bookItems = document.querySelectorAll(".bookList .listWrap > li");
51
+ bookItems.forEach((li) => {
52
+ // Get title and book URL from .book_name link
53
+ const titleLink = li.querySelector(".book_name");
54
+ const titleEl = titleLink ? titleLink.querySelector("span") : null;
55
+ const bookTitle = titleEl ? (titleEl.textContent?.trim() ?? "") : "";
56
+ // Extract book URL from onclick handler
57
+ let bookUrl = "";
58
+ const onclick = titleLink ? titleLink.getAttribute("onclick") || "" : "";
59
+ const urlMatch = onclick.match(/fnSearchResultDetail\((\d+),(\d+),'(\w+)'\)/);
60
+ if (urlMatch) {
61
+ const [, recKey, bookKey, publishFormCode] = urlMatch;
62
+ bookUrl = `https://www.osanlibrary.go.kr/intro/menu/10003/program/30004/plusSearchResultDetail.do?recKey=${recKey}&bookKey=${bookKey}&publishFormCode=${publishFormCode}`;
63
+ }
64
+ // Get availability status from .status p
65
+ const statusEl = li.querySelector(".status p");
66
+ const statusText = statusEl ? (statusEl.textContent?.trim() ?? "") : "";
67
+ const exist = statusText.includes("대출가능");
68
+ // Get library name from ".book_info .fb p" containing "소장도서관"
69
+ let libName = "";
70
+ const fbParagraphs = li.querySelectorAll(".book_info .fb p");
71
+ fbParagraphs.forEach((p) => {
72
+ const text = p.textContent;
73
+ if (text?.includes("소장도서관")) {
74
+ // Format: "[공공]오산시중앙도서관" - extract library name after "]"
75
+ const match = text.match(/\](.+)$/);
76
+ if (match) {
77
+ libName = match[1].trim();
78
+ }
79
+ }
80
+ });
81
+ if (bookTitle) {
82
+ booklist.push({
83
+ libraryName: libName,
84
+ title: bookTitle,
85
+ bookUrl,
86
+ maxoffset: count,
87
+ exist: exist,
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=osan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"osan.js","sourceRoot":"","sources":["../../src/localLibraryModule/osan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { SearchOptions, SearchResult } from "../types";
2
+ export declare const moduleName = "\uC131\uB0A8\uC2DC\uB3C4\uC11C\uAD00";
3
+ export declare const homeUrl = "https://www.snlib.go.kr";
4
+ export declare const search: (opt: SearchOptions, callback?: import("../types").SearchCallback) => Promise<SearchResult | void>;
5
+ export declare function getLibraryNames(): string[];
6
+ //# sourceMappingURL=snlib.d.ts.map
@@ -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":";;;AA4JA,0CAEC;AA9JD,kCAKiB;AACjB,kCAAwC;AAS3B,QAAA,UAAU,GAAG,QAAQ,CAAC;AACtB,QAAA,OAAO,GAAG,4BAA4B,CAAC;AAEpD,MAAM,WAAW,GAAkB;IACjC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;IACjC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;IACnC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;IACjC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;IACnC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;IACjC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;IACjC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;IACnC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;IACnC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE;IACpC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;IACnC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE;IACrC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE;IACrC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE;IACpC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;CACnC,CAAC;AAEF,MAAM,cAAc,GAAG,IAAA,8BAAuB,EAAC,WAAW,CAAC,CAAC;AAE5D,SAAS,SAAS,CAAC,GAAuB;IACxC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC;AAkBD,SAAS,WAAW,CAAC,IAAsB;IACzC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QAC3D,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,IAAe;QACjE,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnD,OAAO,GAAG,wCAAwC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrG,CAAC;QACD,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;YACvC,KAAK,EAAE,IAAI,CAAC,SAAS,KAAK,IAAI;YAC9B,WAAW,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;YAChC,OAAO;SACR,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,UAAU,CAAC,GAAkB;IAC1C,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAE3C,IAAA,4BAAqB,EAAC,GAAG,CAAC,CAAC;IAE3B,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAE1C,uCAAuC;IACvC,MAAM,OAAO,GAAG,IAAA,oBAAa,GAAE,CAAC;IAEhC,qDAAqD;IACrD,MAAM,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAEtE,iDAAiD;IACjD,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAC7C,sDAAsD,EACtD;QACE,IAAI,EAAE;YACJ,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,MAAM;YAClB,UAAU,EAAE,KAAK;YACjB,aAAa,EAAE,GAAG;YAClB,cAAc,EAAE,EAAE;YAClB,aAAa,EAAE,KAAK;YACpB,SAAS,EAAE,MAAM;YACjB,WAAW,EAAE,eAAe;YAC5B,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,EAAE;YACZ,YAAY,EAAE,EAAE;YAChB,WAAW,EAAE,EAAE;YACf,cAAc,EAAE,EAAE;YAClB,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;YAChB,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE,EAAE;YACd,cAAc,EAAE,EAAE;SACnB;QACD,OAAO,EAAE;YACP,cAAc,EAAE,kDAAkD;YAClE,OAAO,EAAE,sCAAsC;YAC/C,kBAAkB,EAAE,gBAAgB;YACpC,IAAI,EAAE,MAAM;SACb;QACD,MAAM;KACP,CACF,CAAC;IAEF,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,QAAQ,UAAU,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAqB,CAAC;IAClD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,UAAU,GACd,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY;QACnD,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY;QACjC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;IAEtB,OAAO;QACL,cAAc,EAAE,UAAU;QAC1B,QAAQ;KACT,CAAC;AACJ,CAAC;AAEY,QAAA,MAAM,GAAG,IAAA,uBAAgB,EAAC,UAAU,CAAC,CAAC;AAEnD,SAAgB,eAAe;IAC7B,OAAO,IAAA,sBAAW,EAAC,WAAW,CAAC,CAAC;AAClC,CAAC;AAED,CAAC,EAAE,UAAU,EAAV,kBAAU,EAAE,OAAO,EAAP,eAAO,EAAE,MAAM,EAAN,cAAM,EAAE,eAAe,EAAE,CAAyB,CAAC"}
@@ -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"}