crawl_2.js
4.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
const axios = require('axios');
const crypto = require('crypto');
const mysql = require('mysql2');
const moment = require('moment');
const cron = require('node-cron');
const scheduler = require('node-schedule');
var now = new Date();
require('moment-timezone');
moment.tz.setDefault("Asia/Seoul");
const connection = mysql.createConnection({
host: 'localhost',
port: '3307',
user: 'root',
password: 'yj',
database: 'projectdf',
}).promise();
const GetItemDrop = async (itemId) => {
const response = await axios({
method: 'post',
url: `http://df.nexon.com/FRM/game/epic_drop.php?id=${itemId}`,
headers: {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
'Referer': `http://df.nexon.com/df/info/equipment/view?id=${itemId}&page=3&is_limit=&filter=204&max=100&min=100&level=Y&order_name=level&order_type=asc`,
},
});
return response.data;
};
let job = scheduler.scheduleJob('*/15 * * * * *',function(){
var dateT = moment().format('YYYY-MM-DD HH:mm:ss');
console.log("Start "+dateT);
(async () => {
const [item_list] = await connection.query('SELECT * FROM `item_exception`');
for (const item of item_list) {
const data = await GetItemDrop(item.itemId);
for (const drop of data) {
const input = {
itemId: drop.item_no,
channel_name: drop.channel_name,
channel_number: drop.channel_number,
dungeon: drop.dungeon,
droped_at: moment.unix(drop.time).format('YYYY-MM-DD HH:mm:ss'),
};
input['hash'] = crypto.createHash('md5').update(JSON.stringify(input)).digest('hex');
try {
await connection.query('INSERT INTO `item_drop_exception` SET ?', input);
} catch (e) {}
}
}
var dateT2 = moment().format('YYYY-MM-DD HH:mm:ss');
console.log(dateT+" insert DB Done in" + dateT2);
})();
});
// await connection.close();-> 크론 작업을 돌리기 때문에 제외
// cron.schedule('*/15 * * * * *', function () {
// var dateT = moment().format('YYYY-MM-DD HH:mm:ss');
// console.log("Start "+dateT);
// const connection = mysql.createConnection({
// host: 'localhost',
// port: '3307',
// user: 'root',
// password: 'yj',
// database: 'projectdf',
// }).promise();
// const GetItemDrop = async (itemId) => {
// const response = await axios({
// method: 'post',
// url: `http://df.nexon.com/FRM/game/epic_drop.php?id=${itemId}`,
// headers: {
// 'Accept': 'application/json, text/javascript, */*; q=0.01',
// 'X-Requested-With': 'XMLHttpRequest',
// 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
// 'Referer': `http://df.nexon.com/df/info/equipment/view?id=${itemId}&page=3&is_limit=&filter=204&max=100&min=100&level=Y&order_name=level&order_type=asc`,
// },
// });
// return response.data;
// };
// (async () => {
// const [item_list] = await connection.query('SELECT * FROM `item_exception`');
// for (const item of item_list) {
// const data = await GetItemDrop(item.itemId);
// for (const drop of data) {
// const input = {
// itemId: drop.item_no,
// channel_name: drop.channel_name,
// channel_number: drop.channel_number,
// dungeon: drop.dungeon,
// droped_at: moment.unix(drop.time).format('YYYY-MM-DD HH:mm:ss'),
// };
// input['hash'] = crypto.createHash('md5').update(JSON.stringify(input)).digest('hex');
// try {
// await connection.query('INSERT INTO `item_drop_exception` SET ?', input);
// } catch (e) {}
// }
// }
// var dateT2 = moment().format('YYYY-MM-DD HH:mm:ss');
// console.log("insert DB Done " + dateT2);
// await connection.close();
// })();
// dateT = moment().format('YYYY-MM-DD HH:mm:ss');
// console.log("done "+dateT);
// });