-
Notifications
You must be signed in to change notification settings - Fork 0
/
helpers.js
111 lines (81 loc) · 2.5 KB
/
helpers.js
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
import path from 'path';
import fs from 'fs'
import config from './config.js'
import { fileURLToPath } from 'url'
import { dirname } from 'path'
function getDirName() {
const __filename = fileURLToPath(
import.meta.url)
return dirname(__filename)
}
function getFilesInsideOutputDir() {
const directoryPath = path.join('./' + config.outputDir);
return fs.readdirSync(directoryPath, function(err, files) {
if (err) {
return console.log('Unable to scan directory: ' + err);
}
return files
});
}
function parseDuration(pageLoaded, selector) {
try {
let getDuration = pageLoaded(selector).text().split(' ').join('')
let parseDuration = getDuration.trim().split('\n').filter(e => {
if (e.includes('heure')) return e
})[0].replace('heure', 'h').replace('minute', 'min')
if (parseDuration.includes('hs')) {
parseDuration = parseDuration.replace('hs', 'h ')
} else {
parseDuration = parseDuration.replace('h', 'h ')
}
return parseDuration
} catch (error) {
return 'Duration not found'
}
}
function getImage(pageLoaded, selector) {
try {
return pageLoaded(selector)[0].attribs.src
} catch (error) {
return 'Image not found'
}
}
function getTitle(pageLoaded, selector) {
try {
return pageLoaded(selector).text().replace('\n', '').trim()
} catch (error) {
return 'Title not found'
}
}
function getRating(pageLoaded, selector) {
try {
return parseFloat(pageLoaded(selector).text().replace('\n', '').trim())
} catch (error) {
return 'Rating not found'
}
}
function getNotice(pageLoaded, selector) {
try {
return parseInt(pageLoaded(selector).text().split(' ').join('').replace('avis', ''))
} catch (error) {
return 'Notice not found'
}
}
function getPrice(pageLoaded, selector) {
try {
return pageLoaded(selector).text().replace('\n', '').trim()
} catch (error) {
return 'Price not found'
}
}
function getUrlCategory(category) {
let baseUrl = config.baseUrl
return `${baseUrl}/${category}.htm`
}
function getCsvFilePath(name) {
return `./${config.outputDir}/${name}`
}
function insertHeaders(arr) {
return [].concat([config.csvHeaders], arr);
}
export default { getUrlCategory, getDirName, getFilesInsideOutputDir, getImage, getTitle, getRating, getNotice, getPrice, parseDuration, insertHeaders, getCsvFilePath }