Merge remote-tracking branch 'upstream/master' into feature/Megabox_Crawling
Showing
9 changed files
with
431 additions
and
0 deletions
BoxOffice/app.js
0 → 100644
1 | +let express = require('express'); | ||
2 | +let app = express(); | ||
3 | +let request = require('request'); | ||
4 | +let bodyParser = require('body-parser'); | ||
5 | +const { response } = require('express'); | ||
6 | + | ||
7 | +app.use(bodyParser.urlencoded({ extended: false })); | ||
8 | +app.use(bodyParser.json()); | ||
9 | + | ||
10 | + | ||
11 | +let today = new Date(); | ||
12 | +let year = today.getFullYear(); | ||
13 | +let month = ("0" + (1 + today.getMonth())).slice(-2); | ||
14 | +let day = ("0" + today.getDate()).slice(-2); | ||
15 | +let date = year + month + day-1; | ||
16 | +//YYYYMMDD | ||
17 | + | ||
18 | +//console.log(date); | ||
19 | + | ||
20 | +let key = ""; | ||
21 | +let url = "http://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=" + key + "&targetDt=" + date + "&itemPerPage="; | ||
22 | +//let rank = 5 | ||
23 | +//apiurl = url + date + "&itemPerPage=" +rank-> "출력할 박스오피스 순위(5: 5위 까지, 10 : 10위 까지.../기본, 최대 10)" | ||
24 | +//console.log(url); | ||
25 | + | ||
26 | +let options = { | ||
27 | + 'method' : 'GET', | ||
28 | + 'url' : url // + rank | ||
29 | +}; | ||
30 | + | ||
31 | + | ||
32 | + | ||
33 | +app.get('/BoxOffice',(req, res) => { | ||
34 | + options.url = url + req.body.rank; | ||
35 | + //console.log(req.body.rank); | ||
36 | + request(options, function (error, response, body){ | ||
37 | + if (error){ | ||
38 | + throw new Error(error); | ||
39 | + } | ||
40 | + let info = JSON.parse(body); | ||
41 | + res.send(info); | ||
42 | + }); | ||
43 | +}) | ||
44 | + | ||
45 | +// 박스오피스 순위 출력 | ||
46 | + | ||
47 | + | ||
48 | + | ||
49 | + | ||
50 | + | ||
51 | + | ||
52 | +let server = app.listen(80); | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
BoxOffice/package.json
0 → 100644
1 | +{ | ||
2 | + "name": "Testing BoxOffice API", | ||
3 | + "version": "1.0.0", | ||
4 | + "description": "", | ||
5 | + "main": "index.js", | ||
6 | + "scripts": { | ||
7 | + "test": "echo \"Error: no test specified\" && exit 1" | ||
8 | + }, | ||
9 | + "author": "", | ||
10 | + "license": "ISC", | ||
11 | + "dependencies": { | ||
12 | + "body-parser": "^1.17.1", | ||
13 | + "express": "^4.15.2" | ||
14 | + } | ||
15 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
LICENSE
0 → 100644
1 | + Apache License | ||
2 | + Version 2.0, January 2004 | ||
3 | + http://www.apache.org/licenses/ | ||
4 | + | ||
5 | + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | ||
6 | + | ||
7 | + 1. Definitions. | ||
8 | + | ||
9 | + "License" shall mean the terms and conditions for use, reproduction, | ||
10 | + and distribution as defined by Sections 1 through 9 of this document. | ||
11 | + | ||
12 | + "Licensor" shall mean the copyright owner or entity authorized by | ||
13 | + the copyright owner that is granting the License. | ||
14 | + | ||
15 | + "Legal Entity" shall mean the union of the acting entity and all | ||
16 | + other entities that control, are controlled by, or are under common | ||
17 | + control with that entity. For the purposes of this definition, | ||
18 | + "control" means (i) the power, direct or indirect, to cause the | ||
19 | + direction or management of such entity, whether by contract or | ||
20 | + otherwise, or (ii) ownership of fifty percent (50%) or more of the | ||
21 | + outstanding shares, or (iii) beneficial ownership of such entity. | ||
22 | + | ||
23 | + "You" (or "Your") shall mean an individual or Legal Entity | ||
24 | + exercising permissions granted by this License. | ||
25 | + | ||
26 | + "Source" form shall mean the preferred form for making modifications, | ||
27 | + including but not limited to software source code, documentation | ||
28 | + source, and configuration files. | ||
29 | + | ||
30 | + "Object" form shall mean any form resulting from mechanical | ||
31 | + transformation or translation of a Source form, including but | ||
32 | + not limited to compiled object code, generated documentation, | ||
33 | + and conversions to other media types. | ||
34 | + | ||
35 | + "Work" shall mean the work of authorship, whether in Source or | ||
36 | + Object form, made available under the License, as indicated by a | ||
37 | + copyright notice that is included in or attached to the work | ||
38 | + (an example is provided in the Appendix below). | ||
39 | + | ||
40 | + "Derivative Works" shall mean any work, whether in Source or Object | ||
41 | + form, that is based on (or derived from) the Work and for which the | ||
42 | + editorial revisions, annotations, elaborations, or other modifications | ||
43 | + represent, as a whole, an original work of authorship. For the purposes | ||
44 | + of this License, Derivative Works shall not include works that remain | ||
45 | + separable from, or merely link (or bind by name) to the interfaces of, | ||
46 | + the Work and Derivative Works thereof. | ||
47 | + | ||
48 | + "Contribution" shall mean any work of authorship, including | ||
49 | + the original version of the Work and any modifications or additions | ||
50 | + to that Work or Derivative Works thereof, that is intentionally | ||
51 | + submitted to Licensor for inclusion in the Work by the copyright owner | ||
52 | + or by an individual or Legal Entity authorized to submit on behalf of | ||
53 | + the copyright owner. For the purposes of this definition, "submitted" | ||
54 | + means any form of electronic, verbal, or written communication sent | ||
55 | + to the Licensor or its representatives, including but not limited to | ||
56 | + communication on electronic mailing lists, source code control systems, | ||
57 | + and issue tracking systems that are managed by, or on behalf of, the | ||
58 | + Licensor for the purpose of discussing and improving the Work, but | ||
59 | + excluding communication that is conspicuously marked or otherwise | ||
60 | + designated in writing by the copyright owner as "Not a Contribution." | ||
61 | + | ||
62 | + "Contributor" shall mean Licensor and any individual or Legal Entity | ||
63 | + on behalf of whom a Contribution has been received by Licensor and | ||
64 | + subsequently incorporated within the Work. | ||
65 | + | ||
66 | + 2. Grant of Copyright License. Subject to the terms and conditions of | ||
67 | + this License, each Contributor hereby grants to You a perpetual, | ||
68 | + worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||
69 | + copyright license to reproduce, prepare Derivative Works of, | ||
70 | + publicly display, publicly perform, sublicense, and distribute the | ||
71 | + Work and such Derivative Works in Source or Object form. | ||
72 | + | ||
73 | + 3. Grant of Patent License. Subject to the terms and conditions of | ||
74 | + this License, each Contributor hereby grants to You a perpetual, | ||
75 | + worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||
76 | + (except as stated in this section) patent license to make, have made, | ||
77 | + use, offer to sell, sell, import, and otherwise transfer the Work, | ||
78 | + where such license applies only to those patent claims licensable | ||
79 | + by such Contributor that are necessarily infringed by their | ||
80 | + Contribution(s) alone or by combination of their Contribution(s) | ||
81 | + with the Work to which such Contribution(s) was submitted. If You | ||
82 | + institute patent litigation against any entity (including a | ||
83 | + cross-claim or counterclaim in a lawsuit) alleging that the Work | ||
84 | + or a Contribution incorporated within the Work constitutes direct | ||
85 | + or contributory patent infringement, then any patent licenses | ||
86 | + granted to You under this License for that Work shall terminate | ||
87 | + as of the date such litigation is filed. | ||
88 | + | ||
89 | + 4. Redistribution. You may reproduce and distribute copies of the | ||
90 | + Work or Derivative Works thereof in any medium, with or without | ||
91 | + modifications, and in Source or Object form, provided that You | ||
92 | + meet the following conditions: | ||
93 | + | ||
94 | + (a) You must give any other recipients of the Work or | ||
95 | + Derivative Works a copy of this License; and | ||
96 | + | ||
97 | + (b) You must cause any modified files to carry prominent notices | ||
98 | + stating that You changed the files; and | ||
99 | + | ||
100 | + (c) You must retain, in the Source form of any Derivative Works | ||
101 | + that You distribute, all copyright, patent, trademark, and | ||
102 | + attribution notices from the Source form of the Work, | ||
103 | + excluding those notices that do not pertain to any part of | ||
104 | + the Derivative Works; and | ||
105 | + | ||
106 | + (d) If the Work includes a "NOTICE" text file as part of its | ||
107 | + distribution, then any Derivative Works that You distribute must | ||
108 | + include a readable copy of the attribution notices contained | ||
109 | + within such NOTICE file, excluding those notices that do not | ||
110 | + pertain to any part of the Derivative Works, in at least one | ||
111 | + of the following places: within a NOTICE text file distributed | ||
112 | + as part of the Derivative Works; within the Source form or | ||
113 | + documentation, if provided along with the Derivative Works; or, | ||
114 | + within a display generated by the Derivative Works, if and | ||
115 | + wherever such third-party notices normally appear. The contents | ||
116 | + of the NOTICE file are for informational purposes only and | ||
117 | + do not modify the License. You may add Your own attribution | ||
118 | + notices within Derivative Works that You distribute, alongside | ||
119 | + or as an addendum to the NOTICE text from the Work, provided | ||
120 | + that such additional attribution notices cannot be construed | ||
121 | + as modifying the License. | ||
122 | + | ||
123 | + You may add Your own copyright statement to Your modifications and | ||
124 | + may provide additional or different license terms and conditions | ||
125 | + for use, reproduction, or distribution of Your modifications, or | ||
126 | + for any such Derivative Works as a whole, provided Your use, | ||
127 | + reproduction, and distribution of the Work otherwise complies with | ||
128 | + the conditions stated in this License. | ||
129 | + | ||
130 | + 5. Submission of Contributions. Unless You explicitly state otherwise, | ||
131 | + any Contribution intentionally submitted for inclusion in the Work | ||
132 | + by You to the Licensor shall be under the terms and conditions of | ||
133 | + this License, without any additional terms or conditions. | ||
134 | + Notwithstanding the above, nothing herein shall supersede or modify | ||
135 | + the terms of any separate license agreement you may have executed | ||
136 | + with Licensor regarding such Contributions. | ||
137 | + | ||
138 | + 6. Trademarks. This License does not grant permission to use the trade | ||
139 | + names, trademarks, service marks, or product names of the Licensor, | ||
140 | + except as required for reasonable and customary use in describing the | ||
141 | + origin of the Work and reproducing the content of the NOTICE file. | ||
142 | + | ||
143 | + 7. Disclaimer of Warranty. Unless required by applicable law or | ||
144 | + agreed to in writing, Licensor provides the Work (and each | ||
145 | + Contributor provides its Contributions) on an "AS IS" BASIS, | ||
146 | + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||
147 | + implied, including, without limitation, any warranties or conditions | ||
148 | + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | ||
149 | + PARTICULAR PURPOSE. You are solely responsible for determining the | ||
150 | + appropriateness of using or redistributing the Work and assume any | ||
151 | + risks associated with Your exercise of permissions under this License. | ||
152 | + | ||
153 | + 8. Limitation of Liability. In no event and under no legal theory, | ||
154 | + whether in tort (including negligence), contract, or otherwise, | ||
155 | + unless required by applicable law (such as deliberate and grossly | ||
156 | + negligent acts) or agreed to in writing, shall any Contributor be | ||
157 | + liable to You for damages, including any direct, indirect, special, | ||
158 | + incidental, or consequential damages of any character arising as a | ||
159 | + result of this License or out of the use or inability to use the | ||
160 | + Work (including but not limited to damages for loss of goodwill, | ||
161 | + work stoppage, computer failure or malfunction, or any and all | ||
162 | + other commercial damages or losses), even if such Contributor | ||
163 | + has been advised of the possibility of such damages. | ||
164 | + | ||
165 | + 9. Accepting Warranty or Additional Liability. While redistributing | ||
166 | + the Work or Derivative Works thereof, You may choose to offer, | ||
167 | + and charge a fee for, acceptance of support, warranty, indemnity, | ||
168 | + or other liability obligations and/or rights consistent with this | ||
169 | + License. However, in accepting such obligations, You may act only | ||
170 | + on Your own behalf and on Your sole responsibility, not on behalf | ||
171 | + of any other Contributor, and only if You agree to indemnify, | ||
172 | + defend, and hold each Contributor harmless for any liability | ||
173 | + incurred by, or claims asserted against, such Contributor by reason | ||
174 | + of your accepting any such warranty or additional liability. | ||
175 | + | ||
176 | + END OF TERMS AND CONDITIONS | ||
177 | + | ||
178 | + APPENDIX: How to apply the Apache License to your work. | ||
179 | + | ||
180 | + To apply the Apache License to your work, attach the following | ||
181 | + boilerplate notice, with the fields enclosed by brackets "{}" | ||
182 | + replaced with your own identifying information. (Don't include | ||
183 | + the brackets!) The text should be enclosed in the appropriate | ||
184 | + comment syntax for the file format. We also recommend that a | ||
185 | + file or class name and description of purpose be included on the | ||
186 | + same "printed page" as the copyright notice for easier | ||
187 | + identification within third-party archives. | ||
188 | + | ||
189 | + Copyright 2022 신승민, 이혜인, 임승현 | ||
190 | + | ||
191 | + Licensed under the Apache License, Version 2.0 (the "License"); | ||
192 | + you may not use this file except in compliance with the License. | ||
193 | + You may obtain a copy of the License at | ||
194 | + | ||
195 | + http://www.apache.org/licenses/LICENSE-2.0 | ||
196 | + | ||
197 | + Unless required by applicable law or agreed to in writing, software | ||
198 | + distributed under the License is distributed on an "AS IS" BASIS, | ||
199 | + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
200 | + See the License for the specific language governing permissions and | ||
201 | + limitations under the License. |
MapAPI/app.js
0 → 100644
MapAPI/package.json
0 → 100644
1 | +{ | ||
2 | + "name": "test01", | ||
3 | + "version": "1.0.0", | ||
4 | + "description": "", | ||
5 | + "main": "index.js", | ||
6 | + "scripts": { | ||
7 | + "test": "echo \"Error: no test specified\" && exit 1" | ||
8 | + }, | ||
9 | + "author": "", | ||
10 | + "license": "ISC", | ||
11 | + "dependencies": { | ||
12 | + "body-parser": "^1.17.1", | ||
13 | + "express": "^4.15.2", | ||
14 | + "express-session": "^1.15.2" | ||
15 | + } | ||
16 | + } | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
MapAPI/template.js
0 → 100644
1 | +module.exports= { | ||
2 | + html: function(title,style,list,body,control){ | ||
3 | + return ` | ||
4 | + <!doctype html> | ||
5 | + <html> | ||
6 | + <head> | ||
7 | + <title>WEB - ${title}</title> | ||
8 | + <meta charset="utf-8"> | ||
9 | + </head> | ||
10 | + <body> | ||
11 | + <h1><a href="/">WEB</a></h1> | ||
12 | + <div id="map" style=${style}></div> | ||
13 | + ${list} | ||
14 | + ${control} | ||
15 | + ${body} | ||
16 | + <p></p> | ||
17 | + </body> | ||
18 | + </html> | ||
19 | + `; | ||
20 | + } | ||
21 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
MapAPI/test.html
0 → 100644
1 | +<!DOCTYPE html> | ||
2 | +<html> | ||
3 | +<head> | ||
4 | + <meta charset="utf-8"/> | ||
5 | + <title>키워드로 장소 검색하기</title> | ||
6 | +</head> | ||
7 | +<body> | ||
8 | + <div id="map" style="width:100%;height:350px;"></div> | ||
9 | + <script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey="></script> | ||
10 | + <script> | ||
11 | + // 마커를 클릭하면 장소명을 표출할 인포윈도우 입니다 | ||
12 | + let infowindow = new kakao.maps.InfoWindow({zIndex:1}); | ||
13 | + //지도를 표시할 div | ||
14 | + let container = document.getElementById('map'); | ||
15 | + let options = { | ||
16 | + center: new kakao.maps.LatLng(37.566826, 126.9786567), | ||
17 | + level: 3 | ||
18 | + }; | ||
19 | + let map = new kakao.maps.Map(container, options); | ||
20 | + // 장소 검색 객체를 생성합니다 | ||
21 | + let ps = new kakao.maps.services.Places(); | ||
22 | + // 키워드로 장소를 검색합니다 | ||
23 | + ps.keywordSearch('시청역', placesSearchCB); | ||
24 | + | ||
25 | + // 키워드 검색 완료 시 호출되는 콜백함수 입니다 | ||
26 | + function placesSearchCB (data, status, pagination) { | ||
27 | + if (status === kakao.maps.services.Status.OK) { | ||
28 | + // 검색된 장소 위치를 기준으로 지도 범위를 재설정하기위해 | ||
29 | + // LatLngBounds 객체에 좌표를 추가합니다 | ||
30 | + let bounds = new kakao.maps.LatLngBounds(); | ||
31 | + | ||
32 | + for (let i=0; i<data.length; i++) { | ||
33 | + displayMarker(data[i]); | ||
34 | + bounds.extend(new kakao.maps.LatLng(data[i].y, data[i].x)); | ||
35 | + } | ||
36 | + | ||
37 | + // 검색된 장소 위치를 기준으로 지도 범위를 재설정합니다 | ||
38 | + map.setBounds(bounds); | ||
39 | + } | ||
40 | + } | ||
41 | + // 지도에 마커를 표시하는 함수입니다 | ||
42 | + function displayMarker(place) { | ||
43 | + | ||
44 | + // 마커를 생성하고 지도에 표시합니다 | ||
45 | + let marker = new kakao.maps.Marker({ | ||
46 | + map: map, | ||
47 | + position: new kakao.maps.LatLng(place.y, place.x) | ||
48 | + }); | ||
49 | + | ||
50 | + // 마커에 클릭이벤트를 등록합니다 | ||
51 | + kakao.maps.event.addListener(marker, 'click', function() { | ||
52 | + // 마커를 클릭하면 장소명이 인포윈도우에 표출됩니다 | ||
53 | + infowindow.setContent('<div style="padding:5px;font-size:12px;">' + place.place_name + '</div>'); | ||
54 | + infowindow.open(map, marker); | ||
55 | + }); | ||
56 | + } | ||
57 | + | ||
58 | + | ||
59 | + </script> | ||
60 | +</body> | ||
61 | +</html> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
SearchAPI/app.js
0 → 100644
1 | +var express = require('express'); | ||
2 | +var config = require('./config.json') | ||
3 | +var app = express(); | ||
4 | +var client_id = config.SearchClientID; | ||
5 | +var client_secret = config.SearchClientSecret; | ||
6 | + | ||
7 | + | ||
8 | +var SearchWord; | ||
9 | +var MovieSearchParse; | ||
10 | +var movietitlelist; | ||
11 | +var movielist; | ||
12 | +app.post('/search/movie', function (req, res) {SearchWord = req.query.query; res.send(SearchWord)}) | ||
13 | +app.get('/search/movie', function (req, res) { | ||
14 | + var api_url = 'https://openapi.naver.com/v1/search/movie?query=' + encodeURI(SearchWord); | ||
15 | + var request = require('request'); | ||
16 | + var options = { | ||
17 | + url: api_url, | ||
18 | + headers: {'X-Naver-Client-Id':client_id, 'X-Naver-Client-Secret': client_secret} | ||
19 | + }; | ||
20 | + request.get(options, function (error, response, body) { | ||
21 | + if (!error && response.statusCode == 200) { | ||
22 | + res.writeHead(200, {'Content-Type': 'text/json;charset=utf-8'}); | ||
23 | + | ||
24 | + | ||
25 | + MovieSearchParse = JSON.parse(body); | ||
26 | + //movietitlelist =MovieSearchParse.items[0].title.replace(/<[^>]*>?/g, ''); | ||
27 | + movietitlelist = MovieSearchParse.items.map((x)=>{ | ||
28 | + x.title = x.title.replace(/<[^>]*>?/g, ''); | ||
29 | + return x.title; | ||
30 | + }); | ||
31 | + movielist = MovieSearchParse.items.map((x)=>{ | ||
32 | + x.title = x.title.replace(/<[^>]*>?/g, ''); | ||
33 | + return x; | ||
34 | + }); | ||
35 | + console.log(movielist); | ||
36 | + | ||
37 | + res.end(body); | ||
38 | + } else { | ||
39 | + res.status(response.statusCode).end(); | ||
40 | + console.log('error = ' + response.statusCode); | ||
41 | + } | ||
42 | + }); | ||
43 | +}); | ||
44 | + | ||
45 | + | ||
46 | + app.listen(3000, function () { | ||
47 | + console.log('http://127.0.0.1:3000/search/movie?query=검색어 app listening on port 3000!'); | ||
48 | + }); | ||
49 | + |
-
Please register or login to post a comment