-
Notifications
You must be signed in to change notification settings - Fork 6
/
node_helper.js
79 lines (65 loc) · 2.46 KB
/
node_helper.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
/* Magic Mirror
* Module: MMM-MovieInfo
*
* By fewieden https://github.com/fewieden/MMM-MovieInfo
*
* MIT Licensed.
*/
/* eslint-env node */
/* eslint-disable no-console */
const request = require('request');
const moment = require('moment');
const NodeHelper = require('node_helper');
const periods = ['day', 'week', 'month', 'quarter', 'year'];
module.exports = NodeHelper.create({
start() {
console.log(`Starting module: ${this.name}`);
},
serialize(obj) {
return `?${Object.keys(obj).reduce((a, k) => {
a.push(`${k}=${encodeURIComponent(obj[k])}`);
return a;
}, []).join('&')}`;
},
socketNotificationReceived(notification, payload) {
if (notification === 'CONFIG') {
this.config = payload;
setInterval(() => {
this.getData();
}, this.config.updateInterval);
this.getData();
}
},
/**
* getData
* Request data from the supplied URL and broadcast it to the MagicMirror module if it's received.
*/
getData() {
const discover = this.config.discover;
discover.api_key = this.config.api_key;
discover.language = (this.config.language ? this.config.language : 'en');
if (Object.prototype.hasOwnProperty.call(discover, 'primary_release_date.gte')) {
discover['primary_release_date.gte'] = moment(discover['primary_release_date.gte'] === 'now' ?
{} : discover['primary_release_date.gte']).format('YYYY-MM-DD');
}
if (Object.prototype.hasOwnProperty.call(discover, 'primary_release_date.lte')) {
if (periods.includes(discover['primary_release_date.lte'])) {
discover['primary_release_date.lte'] = moment()
.add(1, `${discover['primary_release_date.lte']}s`).format('YYYY-MM-DD');
} else {
discover['primary_release_date.lte'] = moment(discover['primary_release_date.lte'])
.format('YYYY-MM-DD');
}
}
const options = {
url: `https://api.themoviedb.org/3/discover/movie${this.serialize(discover)}`
};
request(options, (error, response, body) => {
if (response.statusCode === 200) {
this.sendSocketNotification('DATA', JSON.parse(body));
} else {
console.log(`Error getting movie info ${response.statusCode}`);
}
});
}
});