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.
Files changed (41) hide show
  1. package/API.md +8 -8
  2. package/README.md +1 -1
  3. package/dist/dongnelibrary.d.ts +2 -9
  4. package/dist/dongnelibrary.d.ts.map +1 -1
  5. package/dist/dongnelibrary.js +16 -8
  6. package/dist/dongnelibrary.js.map +1 -1
  7. package/dist/localLibraryModule/gg.d.ts +6 -0
  8. package/dist/localLibraryModule/gg.d.ts.map +1 -0
  9. package/dist/localLibraryModule/gg.js +96 -0
  10. package/dist/localLibraryModule/gg.js.map +1 -0
  11. package/dist/localLibraryModule/gunpo.d.ts +6 -0
  12. package/dist/localLibraryModule/gunpo.d.ts.map +1 -0
  13. package/dist/localLibraryModule/gunpo.js +81 -0
  14. package/dist/localLibraryModule/gunpo.js.map +1 -0
  15. package/dist/localLibraryModule/hscity.d.ts +6 -0
  16. package/dist/localLibraryModule/hscity.d.ts.map +1 -0
  17. package/dist/localLibraryModule/hscity.js +100 -0
  18. package/dist/localLibraryModule/hscity.js.map +1 -0
  19. package/dist/localLibraryModule/osan.d.ts +6 -0
  20. package/dist/localLibraryModule/osan.d.ts.map +1 -0
  21. package/dist/localLibraryModule/osan.js +102 -0
  22. package/dist/localLibraryModule/osan.js.map +1 -0
  23. package/dist/localLibraryModule/snlib.d.ts +6 -0
  24. package/dist/localLibraryModule/snlib.d.ts.map +1 -0
  25. package/dist/localLibraryModule/snlib.js +102 -0
  26. package/dist/localLibraryModule/snlib.js.map +1 -0
  27. package/dist/localLibraryModule/suwon.d.ts +6 -0
  28. package/dist/localLibraryModule/suwon.d.ts.map +1 -0
  29. package/dist/localLibraryModule/suwon.js +117 -0
  30. package/dist/localLibraryModule/suwon.js.map +1 -0
  31. package/dist/localLibraryModule/yjlib.d.ts +6 -0
  32. package/dist/localLibraryModule/yjlib.d.ts.map +1 -0
  33. package/dist/localLibraryModule/yjlib.js +109 -0
  34. package/dist/localLibraryModule/yjlib.js.map +1 -0
  35. package/dist/localLibraryModule/yongin.d.ts +6 -0
  36. package/dist/localLibraryModule/yongin.d.ts.map +1 -0
  37. package/dist/localLibraryModule/yongin.js +141 -0
  38. package/dist/localLibraryModule/yongin.js.map +1 -0
  39. package/dist/types.d.ts +23 -0
  40. package/dist/types.d.ts.map +1 -1
  41. 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":";;;AAgIA,0CAEC;AAlID,kCAMiB;AACjB,kCAA8B;AAC9B,iCAA8B;AASjB,QAAA,UAAU,GAAG,QAAQ,CAAC;AACtB,QAAA,OAAO,GAAG,yBAAyB,CAAC;AAEjD,MAAM,WAAW,GAAkB;IACjC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;IAC7B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE;IAChC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;IAC/B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;IAC7B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;IAC7B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;IAC7B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;IAC7B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;IAC7B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;IAC7B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;IAC7B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;IAC7B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE;IAChC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;IAC7B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;IAC7B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;IAC7B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE;CACjC,CAAC;AAEF,MAAM,cAAc,GAAG,IAAA,8BAAuB,EAAC,WAAW,CAAC,CAAC;AAE5D;;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,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,UAAG,EACpC,gFAAgF,EAChF;QACE,EAAE,EAAE;YACF,aAAa,EAAE,CAAC;YAChB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,MAAM;YACtB,SAAS,EAAE,KAAK;YAChB,aAAa,EAAE,KAAK;YACpB,gBAAgB,EAAE,KAAK;YACvB,WAAW,EAAE,MAAM;YACnB,iBAAiB,EAAE,IAAI;YACvB,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,QAAQ;SACrB;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,GAAG,GAAG,IAAI,aAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;IAErC,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC;IAC9E,MAAM,KAAK,GAAG,IAAA,oBAAa,EAAC,SAAS,CAAC,CAAC;IAEvC,MAAM,QAAQ,GAAW,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,SAAS,GAAG,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QAChE,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACzB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC1D,MAAM,OAAO,GAAG,YAAY,EAAE,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CACzB,6CAA6C,CAC9C,CAAC;YACF,IAAI,OAAO,GAAG,EAAE,CAAC;YACjB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC;gBACnD,OAAO,GAAG,2FAA2F,MAAM,YAAY,OAAO,oBAAoB,eAAe,EAAE,CAAC;YACtK,CAAC;YACD,MAAM,YAAY,GAChB,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC;YAChE,+DAA+D;YAC/D,MAAM,QAAQ,GACZ,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC;YACpE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7C,MAAM,OAAO,GACX,gBAAgB,IAAI,gBAAgB,CAAC,CAAC,CAAC;gBACrC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;gBAC5B,CAAC,CAAC,EAAE,CAAC;YACT,IAAI,SAAS,EAAE,CAAC;gBACd,QAAQ,CAAC,IAAI,CAAC;oBACZ,WAAW,EAAE,OAAO;oBACpB,KAAK,EAAE,SAAS;oBAChB,OAAO;oBACP,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;iBACrC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,cAAc,EAAE,KAAK;QACrB,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 = "\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
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dongnelibrary",
3
- "version": "0.3.8",
3
+ "version": "0.3.9",
4
4
  "description": "책을 빌릴 수 있는지 확인한다.",
5
5
  "engines": {
6
6
  "node": ">=22.22.0"