-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathindex.js
More file actions
62 lines (53 loc) · 1.93 KB
/
Copy pathindex.js
File metadata and controls
62 lines (53 loc) · 1.93 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
const axios = require('axios');
const { parse } = require('node-html-parser');
const moment = require('moment-timezone')
moment.tz.setDefault('Asia/Jakarta');
const parseSchedule = html => {
const schedulesPage = parse(html)
const results = []
const shows = schedulesPage.querySelectorAll('table')[0]
for (let i = 1; i < shows.querySelectorAll('tr').length - 1; i += 3) {
const schedule = shows.querySelectorAll('tr')[i].querySelectorAll('td')[0].structuredText.split('\n')
const date = schedule[1]
const showTime = schedule[2].replace('Show', '').trim()
const teamLogo = shows.querySelectorAll('tr')[i].querySelectorAll('td')[1].querySelector('img').attributes['src']
const unixTime = moment(`${date} ${showTime}`, 'DD.MM.YYYY HH:mm').unix()
let showName = '';
if (teamLogo === '/images/icon.team1.png') {
showName = 'fajar sang idola'
} else if (teamLogo === '/images/icon.team2.png') {
showName = 'saka agari'
} else if (teamLogo === '/images/icon.team11.png') {
showName = 'pajama drive'
} else if (teamLogo === '/images/icon.team5.png') {
showName = 'tunas di balik seragam'
}
results.push({
date,
showTime,
showName,
unixTime
})
}
const membersTable = schedulesPage.querySelectorAll('table')[1];
for (let i = 1; i < membersTable.querySelectorAll('tr').length; i++) {
index = i - 1;
const members = membersTable.querySelectorAll('tr')[i].querySelectorAll('td')[2].structuredText.trim().split(',')
results[index].members = members.map(member => {
if (member !== '') {
return member.trim()
}
})
results[index].members.splice(-1, 1)
}
return results
}
exports.showScraper = async (req, res) => {
try {
const schedulesPage = await axios.get('https://jkt48.com/theater/schedule?lang=id')
const result = parseSchedule(schedulesPage.data)
res.send(result)
} catch (e) {
console.error(e)
}
}