Showing
4 changed files
with
126 additions
and
80 deletions
public/images/lezhinicon.png
0 → 100644

2.94 KB
... | @@ -9,27 +9,27 @@ var NaverStrategy = require('passport-naver').Strategy; | ... | @@ -9,27 +9,27 @@ var NaverStrategy = require('passport-naver').Strategy; |
9 | var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy; | 9 | var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy; |
10 | var router = express.Router(); | 10 | var router = express.Router(); |
11 | 11 | ||
12 | -// 설명 | 12 | +// kakao login API |
13 | var kakaoKey = { | 13 | var kakaoKey = { |
14 | clientID : '5634a5f8ca5c9a5eb378d6b6e6e869a0', | 14 | clientID : '5634a5f8ca5c9a5eb378d6b6e6e869a0', |
15 | callbackURL : '/auth/login/kakao/callback' | 15 | callbackURL : '/auth/login/kakao/callback' |
16 | }; | 16 | }; |
17 | 17 | ||
18 | -// | 18 | +// naver login API |
19 | var naverKey = { | 19 | var naverKey = { |
20 | clientID : 'OHmCrpQuVFnIEB4GkmF_', | 20 | clientID : 'OHmCrpQuVFnIEB4GkmF_', |
21 | callbackURL : '/auth/login/naver/callback', | 21 | callbackURL : '/auth/login/naver/callback', |
22 | clientSecret : 'BBgcRdnj0M' | 22 | clientSecret : 'BBgcRdnj0M' |
23 | }; | 23 | }; |
24 | 24 | ||
25 | -// | 25 | +// google login API |
26 | var googleKey = { | 26 | var googleKey = { |
27 | clientID : '924802195853-ir977i2ohnddaaninlqlbeg6sov629hq.apps.googleusercontent.com', | 27 | clientID : '924802195853-ir977i2ohnddaaninlqlbeg6sov629hq.apps.googleusercontent.com', |
28 | callbackURL : '/auth/login/google/callback', | 28 | callbackURL : '/auth/login/google/callback', |
29 | clientSecret : 'NaWeoJouUzYq4VfBesTkdUfA' | 29 | clientSecret : 'NaWeoJouUzYq4VfBesTkdUfA' |
30 | }; | 30 | }; |
31 | 31 | ||
32 | -// | 32 | +// kakao passport |
33 | passport.use(new KakaoStrategy(kakaoKey, | 33 | passport.use(new KakaoStrategy(kakaoKey, |
34 | function(accessToken, refreshToken,params, profile, done) { | 34 | function(accessToken, refreshToken,params, profile, done) { |
35 | console.log(profile); | 35 | console.log(profile); |
... | @@ -41,7 +41,7 @@ passport.use(new KakaoStrategy(kakaoKey, | ... | @@ -41,7 +41,7 @@ passport.use(new KakaoStrategy(kakaoKey, |
41 | } | 41 | } |
42 | )); | 42 | )); |
43 | 43 | ||
44 | -// | 44 | +// naver passport |
45 | passport.use(new NaverStrategy(naverKey, | 45 | passport.use(new NaverStrategy(naverKey, |
46 | function (accessToken, refreshToken, profile, done) { | 46 | function (accessToken, refreshToken, profile, done) { |
47 | console.log(profile); | 47 | console.log(profile); |
... | @@ -53,7 +53,7 @@ passport.use(new NaverStrategy(naverKey, | ... | @@ -53,7 +53,7 @@ passport.use(new NaverStrategy(naverKey, |
53 | } | 53 | } |
54 | )); | 54 | )); |
55 | 55 | ||
56 | -// | 56 | +// google passport |
57 | passport.use(new GoogleStrategy(googleKey, | 57 | passport.use(new GoogleStrategy(googleKey, |
58 | function (accessToken, refreshToken, profile, done) { | 58 | function (accessToken, refreshToken, profile, done) { |
59 | console.log(profile); | 59 | console.log(profile); |
... | @@ -68,29 +68,28 @@ passport.use(new GoogleStrategy(googleKey, | ... | @@ -68,29 +68,28 @@ passport.use(new GoogleStrategy(googleKey, |
68 | // kakao 로그인, 로그인 콜백 | 68 | // kakao 로그인, 로그인 콜백 |
69 | router.get('/auth/login/kakao', passport.authenticate('kakao')); | 69 | router.get('/auth/login/kakao', passport.authenticate('kakao')); |
70 | router.get('/auth/login/kakao/callback', passport.authenticate('kakao', { | 70 | router.get('/auth/login/kakao/callback', passport.authenticate('kakao', { |
71 | - successRedirect: '/mytoons', | 71 | + successRedirect: '/mytoons', |
72 | - failureRedirect: '/' | 72 | + failureRedirect: '/' |
73 | - }) | 73 | + }) |
74 | ); | 74 | ); |
75 | 75 | ||
76 | -// naver 로그인 | 76 | +// naver 로그인, 로그인 콜백 |
77 | router.get('/auth/login/naver', passport.authenticate('naver')); | 77 | router.get('/auth/login/naver', passport.authenticate('naver')); |
78 | -router.get('/auth/login/naver/callback', | 78 | +router.get('/auth/login/naver/callback', passport.authenticate('naver', { |
79 | - passport.authenticate('naver', { | 79 | + successRedirect: '/mytoons', |
80 | - successRedirect: '/mytoons', | 80 | + failureRedirect: '/' |
81 | - failureRedirect: '/' | ||
82 | }) | 81 | }) |
83 | ); | 82 | ); |
84 | 83 | ||
85 | // facebook 로그인, 로그인 콜백 | 84 | // facebook 로그인, 로그인 콜백 |
86 | router.get('/auth/login/google', passport.authenticate('google', { scope: ['email profile'] })); | 85 | router.get('/auth/login/google', passport.authenticate('google', { scope: ['email profile'] })); |
87 | router.get('/auth/login/google/callback', passport.authenticate('google', { | 86 | router.get('/auth/login/google/callback', passport.authenticate('google', { |
88 | - successRedirect: '/mytoons', | 87 | + successRedirect: '/mytoons', |
89 | - failureRedirect: '/' | 88 | + failureRedirect: '/' |
90 | }) | 89 | }) |
91 | ); | 90 | ); |
92 | 91 | ||
93 | -// 설명 | 92 | +// 로그인 처리 |
94 | function loginByThirdparty(info, done) { | 93 | function loginByThirdparty(info, done) { |
95 | var stmt_duplicated = "select *from `user` where id = id"; | 94 | var stmt_duplicated = "select *from `user` where id = id"; |
96 | //'select *from `user` where `id` = ? | 95 | //'select *from `user` where `id` = ? |
... | @@ -125,27 +124,27 @@ function loginByThirdparty(info, done) { | ... | @@ -125,27 +124,27 @@ function loginByThirdparty(info, done) { |
125 | }); | 124 | }); |
126 | } | 125 | } |
127 | 126 | ||
128 | -router.get('/login', function(req,res){ | 127 | +router.get('/login', function(req,res) { |
129 | res.render('login_page') | 128 | res.render('login_page') |
130 | }) | 129 | }) |
131 | 130 | ||
132 | 131 | ||
133 | // 라우터 설정, 카카오 | 132 | // 라우터 설정, 카카오 |
134 | router.get('/auth/logout/kakao',function (req,res) { | 133 | router.get('/auth/logout/kakao',function (req,res) { |
135 | - req.logout(); | 134 | + req.logout(); |
136 | - res.redirect('/'); | 135 | + res.redirect('/'); |
137 | }) | 136 | }) |
138 | 137 | ||
139 | // 라우터 설정, 페이스북 | 138 | // 라우터 설정, 페이스북 |
140 | router.get('/auth/logout/naver',function (req,res) { | 139 | router.get('/auth/logout/naver',function (req,res) { |
141 | - req.logout(); | 140 | + req.logout(); |
142 | - res.redirect('/'); | 141 | + res.redirect('/'); |
143 | }) | 142 | }) |
144 | 143 | ||
145 | // 라우터 설정, 구글 | 144 | // 라우터 설정, 구글 |
146 | router.get('/auth/logout/google',function (req,res) { | 145 | router.get('/auth/logout/google',function (req,res) { |
147 | - req.logout(); | 146 | + req.logout(); |
148 | - res.redirect('/'); | 147 | + res.redirect('/'); |
149 | }) | 148 | }) |
150 | 149 | ||
151 | // | 150 | // |
... | @@ -153,87 +152,134 @@ function getLatestToon(titleid, day ,cb) { | ... | @@ -153,87 +152,134 @@ function getLatestToon(titleid, day ,cb) { |
153 | 152 | ||
154 | } | 153 | } |
155 | 154 | ||
156 | -function getDaumToons(_day){ | 155 | +//_day요일의 다음웹툰 불러오기 |
157 | - // X요일 다음 웹툰 | 156 | +function getDaumToons(_day) { |
157 | + | ||
158 | var day = _day; | 158 | var day = _day; |
159 | var day_name = day; | 159 | var day_name = day; |
160 | var daum = `http://webtoon.daum.net/data/pc/webtoon/list_serialized/${day}?timeStamp=1515819276574`; | 160 | var daum = `http://webtoon.daum.net/data/pc/webtoon/list_serialized/${day}?timeStamp=1515819276574`; |
161 | var site = 'daum'; | 161 | var site = 'daum'; |
162 | 162 | ||
163 | - client.fetch(daum, {}, function (err, $, res, body) { | 163 | + client.fetch(daum, {}, function (err, $, res, body){ |
164 | 164 | ||
165 | - var data = JSON.parse(body); | 165 | + var data = JSON.parse(body); |
166 | - var list = data["data"]; | 166 | + var list = data["data"]; |
167 | 167 | ||
168 | - list.forEach(function (item, idx) { | 168 | + list.forEach(function (item, idx) { |
169 | 169 | ||
170 | - var webtoon_link = 'http://webtoon.daum.net/webtoon/view/' + item.nickname.toString(); | 170 | + var webtoon_link = 'http://webtoon.daum.net/webtoon/view/' + item.nickname.toString(); |
171 | - var webtoon = { | 171 | + var webtoon = { |
172 | - toon_index : item.id, | 172 | + toon_index : item.id, |
173 | - name : item.title, | 173 | + name : item.title, |
174 | - thum_link : item.pcThumbnailImage.url, | 174 | + thum_link : item.pcThumbnailImage.url, |
175 | - webtoon_link : webtoon_link, | 175 | + webtoon_link : webtoon_link, |
176 | - week : day_name, | 176 | + week : day_name, |
177 | - site : site, | 177 | + site : site, |
178 | - latest : 0 | 178 | + latest : 0 |
179 | - }; | 179 | + }; |
180 | 180 | ||
181 | allWebtoonList.push(webtoon); | 181 | allWebtoonList.push(webtoon); |
182 | - }); | 182 | + }); |
183 | }); | 183 | }); |
184 | } | 184 | } |
185 | 185 | ||
186 | -// | 186 | +// 네이버 전체 웹툰 불러오기 |
187 | -function getNaverToons(){ | 187 | +function getNaverToons() { |
188 | + | ||
188 | var allWeeklyToonsUrl = "http://comic.naver.com/webtoon/weekday.nhn"; | 189 | var allWeeklyToonsUrl = "http://comic.naver.com/webtoon/weekday.nhn"; |
190 | + | ||
189 | request(allWeeklyToonsUrl,function (err, res, html) { | 191 | request(allWeeklyToonsUrl,function (err, res, html) { |
190 | - if(!err){ | 192 | + if(!err){ |
191 | - var $ = cheerio.load(html); | 193 | + var $ = cheerio.load(html); |
192 | - var p = Promise.resolve(); | 194 | + var p = Promise.resolve(); |
193 | - var eachs = $(".thumb").each(function (i) { | 195 | + var eachs = $(".thumb").each(function (i) { |
194 | - var week = $(this).parent().parent().prev().attr('class'); | 196 | + |
195 | - var webtoon_link = "http://comic.naver.com" + $(this).children().first().attr('href'); | 197 | + var week = $(this).parent().parent().prev().attr('class'); |
196 | - var thumb_link = $(this).children().first().children().first().attr('src'); | 198 | + var webtoon_link = "http://comic.naver.com" + $(this).children().first().attr('href'); |
197 | - var name = $(this).next().text(); | 199 | + var thumb_link = $(this).children().first().children().first().attr('src'); |
198 | - var titleid = webtoon_link.split('?')[1].split('&')[0].split('=')[1]; | 200 | + var name = $(this).next().text(); |
199 | - var site = 'naver'; | 201 | + var titleid = webtoon_link.split('?')[1].split('&')[0].split('=')[1]; |
200 | - var webtoon= { | 202 | + var site = 'naver'; |
201 | - toon_index: titleid, | 203 | + var webtoon= { |
202 | - name : name, | 204 | + toon_index: titleid, |
203 | - thum_link : thumb_link, | 205 | + name : name, |
204 | - webtoon_link : webtoon_link, | 206 | + thum_link : thumb_link, |
205 | - week : week, | 207 | + webtoon_link : webtoon_link, |
206 | - site : site, | 208 | + week : week, |
207 | - latest : 0 | 209 | + site : site, |
208 | - }; | 210 | + latest : 0 |
209 | - allWebtoonList.push(webtoon); | 211 | + }; |
210 | - }); | 212 | + |
213 | + allWebtoonList.push(webtoon); | ||
214 | + }); | ||
211 | 215 | ||
212 | - p.then(function() { | 216 | + p.then(function() { |
213 | - i = 0; | 217 | + i = 0; |
214 | - allWebtoonList.forEach(function (webtoon) { | 218 | + allWebtoonList.forEach(function (webtoon) { |
215 | - var sql= "INSERT INTO `toon` (toon_index, name, thum_link, webtoon_link, week, site, latest) VALUES(?) ON DUPLICATE KEY UPDATE latest=latest"; | 219 | + var sql= "INSERT INTO `toon` (toon_index, name, thum_link, webtoon_link, week, site, latest) VALUES(?) ON DUPLICATE KEY UPDATE latest=latest"; |
216 | - var values=[webtoon.toon_index, webtoon.name, webtoon.thum_link, webtoon.webtoon_link,webtoon.week, webtoon.site, webtoon.latest]; | 220 | + var values=[webtoon.toon_index, webtoon.name, webtoon.thum_link, webtoon.webtoon_link,webtoon.week, webtoon.site, webtoon.latest]; |
217 | - | 221 | + |
218 | - connection.query(sql,[values],function(err,result){ | 222 | + connection.query(sql,[values],function(err,result){ |
219 | - if (err) { | 223 | + if (err) { |
220 | - console.log("웹툰 DB 에러 : " + err); | 224 | + console.log("웹툰 DB 에러 : " + err); |
221 | - } else { | 225 | + } else { |
222 | - console.log("웹툰 DB처리 완료!"); | 226 | + console.log("웹툰 DB처리 완료!"); |
223 | - } | 227 | + } |
224 | - }); | ||
225 | - }) | ||
226 | }); | 228 | }); |
227 | - } | 229 | + }) |
230 | + }); | ||
231 | + } | ||
228 | }); | 232 | }); |
229 | } | 233 | } |
230 | 234 | ||
231 | // 구현중 | 235 | // 구현중 |
232 | function getTomicsToons(){ | 236 | function getTomicsToons(){ |
237 | + var allWeeklyToonsUrl = "https://www.lezhin.com/ko/scheduled"; | ||
233 | 238 | ||
239 | + request(allWeeklyToonsUrl,function (err, res, html) { | ||
240 | + if(!err){ | ||
241 | + var $ = cheerio.load(html); | ||
242 | + var p = Promise.resolve(); | ||
243 | + var eachs = $(".thumb").each(function (i) { | ||
244 | + var week = $(this).parent().parent().prev().attr('class'); | ||
245 | + var webtoon_link = "https://www.lezhin.com/ko" + $(this).children().first().attr('href'); | ||
246 | + var thumb_link = $(this).children().first().children().first().attr('src'); | ||
247 | + var name = $(this).next().text(); | ||
248 | + var titleid = webtoon_link.split('?')[1].split('&')[0].split('=')[1]; | ||
249 | + var site = 'naver'; | ||
250 | + var webtoon= { | ||
251 | + toon_index: titleid, | ||
252 | + name : name, | ||
253 | + thum_link : thumb_link, | ||
254 | + webtoon_link : webtoon_link, | ||
255 | + week : week, | ||
256 | + site : site, | ||
257 | + latest : 0 | ||
258 | + }; | ||
259 | + | ||
260 | + allWebtoonList.push(webtoon); | ||
261 | + }); | ||
262 | + | ||
263 | + p.then(function() { | ||
264 | + i = 0; | ||
265 | + allWebtoonList.forEach(function (webtoon) { | ||
266 | + var sql= "INSERT INTO `toon` (toon_index, name, thum_link, webtoon_link, week, site, latest) VALUES(?) ON DUPLICATE KEY UPDATE latest=latest"; | ||
267 | + var values=[webtoon.toon_index, webtoon.name, webtoon.thum_link, webtoon.webtoon_link,webtoon.week, webtoon.site, webtoon.latest]; | ||
268 | + | ||
269 | + connection.query(sql,[values],function(err,result){ | ||
270 | + if (err) { | ||
271 | + console.log("웹툰 DB 에러 : " + err); | ||
272 | + } else { | ||
273 | + console.log("웹툰 DB처리 완료!"); | ||
274 | + } | ||
275 | + }); | ||
276 | + }) | ||
277 | + }); | ||
278 | + } | ||
279 | + }); | ||
234 | } | 280 | } |
235 | 281 | ||
236 | -// 설명 | 282 | +// 모든 웹튼을 담고있는 배열 |
237 | allWebtoons = new Array(); | 283 | allWebtoons = new Array(); |
238 | 284 | ||
239 | // 설명 | 285 | // 설명 | ... | ... |
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
-
Please register or login to post a comment