Read the statement by Michael Teeuw here.
Fifa World Cup overview
-
@conkhidot
here is the code of my modified node_helper.js/* global Module */ /* Magic Mirror * Module: MMM-SoccerLiveScore * * By Luke Scheffler https://github.com/LukeSkywalker92 * MIT Licensed. */ var NodeHelper = require('node_helper'); var request = require('request'); module.exports = NodeHelper.create({ start: function () { console.log('MMM-SoccerLiveScore helper started...') }, getTeamLogo: function (teamId) { var self = this; var options = { method: 'GET', url: 'https://www.ta4-images.de/ta/images/teams/' + teamId + '/64', headers: { 'Host': 'www.ta4-images.de', 'Accept': '*/*', 'Accept-Language': 'de-de', 'Connection': 'keep-alive', 'Accept-Encoding': 'gzip, deflate', 'User-Agent': 'TorAlarm/20161206 CFNetwork/808.1.4 Darwin/16.1.0' }, encoding: null }; request(options, function (error, response, body) { if (error) throw new Error(error); var image = new Buffer(body).toString('base64'); self.sendSocketNotification('LOGO', { teamId: teamId, image: image }); }); }, getLeagueIds: function (leagues, showLogos) { var self = this; var options = { method: 'POST', //url: 'https://www.ta4-data.de/ta/data/competitions', url: 'https://www.ta4-data.de/em4/data/competitions', headers: { 'Host': 'ta4-data.de', 'Content-Type': 'application/x-www-form-urlencoded', 'Connection': 'keep-alive', 'Accept': '*/*', 'User-Agent': 'TorAlarm/20161202 CFNetwork/808.1.4 Darwin/16.1.0', 'Accept-Language': 'de-de', 'Accept-Encoding': 'gzip', 'Content-Length': '49', }, body: '{"lng":"de-DE","device_type":0,"decode":"decode"}', form: false }; request(options, function (error, response, body) { var competitions = JSON.parse(body).competitions; var leagueIds = []; for (var i = 0; i < leagues.length; i++) { for (var j = 0; j < competitions.length; j++) { if (competitions[j].id == leagues[i]) { if (showLogos) { if (competitions[j].has_table) { self.getTeams(competitions[j].id); self.getTable(competitions[j].id); } else { self.getLogosFromScores(competitions[j].id); } } leagueIds.push(competitions[j].id) self.sendSocketNotification('LEAGUES', { name: competitions[j].name, id: competitions[j].id }); } } } for (var i = 0; i < leagueIds.length; i++) { self.getScores(leagueIds[i]); } }); }, getTeams: function (leagueId) { var self = this; var options = { method: 'POST', //url: 'https://www.ta4-data.de/ta/data/competitions/' + leagueId.toString() + '/table', url: 'https://www.ta4-data.de/em4/data/competitions/' + leagueId.toString() + '/table', headers: { 'Host': 'ta4-data.de', 'Content-Type': 'application/x-www-form-urlencoded', 'Connection': 'keep-alive', 'Accept': '*/*', 'User-Agent': 'TorAlarm/20161202 CFNetwork/808.1.4 Darwin/16.1.0', 'Accept-Language': 'de-de', 'Accept-Encoding': 'gzip', 'Content-Length': '49', }, body: '{"lng":"de-DE","device_type":0,"decode":"decode"}', form: false }; request(options, function (error, response, body) { var teamIds = []; var data = JSON.parse(body); for (var i = 0; i < data.data.length; i++) { if (data.data[i].type !== 'table') { continue; } for (var j = 0; j < data.data[i].table.length; j++) { teamIds.push(data.data[i].table[j].team_id); } } self.getLogos(teamIds); }); }, getTable: function (leagueId) { var self = this; var options = { method: 'POST', //url: 'https://www.ta4-data.de/ta/data/competitions/' + leagueId.toString() + '/table', url: 'https://www.ta4-data.de/em4/data/competitions/' + leagueId.toString() + '/table', headers: { 'Host': 'ta4-data.de', 'Content-Type': 'application/x-www-form-urlencoded', 'Connection': 'keep-alive', 'Accept': '*/*', 'User-Agent': 'TorAlarm/20161202 CFNetwork/808.1.4 Darwin/16.1.0', 'Accept-Language': 'de-de', 'Accept-Encoding': 'gzip', 'Content-Length': '49', }, body: '{"lng":"de-DE","device_type":0,"decode":"decode"}', form: false }; request(options, function (error, response, body) { var teamIds = []; var data = JSON.parse(body); var refreshTime = data.refresh_time*1000; data = data.data; for(var i = 0; i < data.length; i++) { if (data[i].type === 'table') { self.sendSocketNotification('TABLE', { leagueId: leagueId, table: data[i].table }); setTimeout(function () { self.getTable(leagueId); }, refreshTime); return; } } }); }, getLogos: function (teamIds) { var self = this; var logos = []; for (var i = 0; i < teamIds.length; i++) { self.getTeamLogo(teamIds[i]); } }, getScores: function (leagueId) { var self = this; var options = { method: 'POST', //url: 'https://www.ta4-data.de/ta/data/competitions/' + leagueId.toString() + '/matches/round/0', url: 'https://www.ta4-data.de/em4/data/competitions/' + leagueId.toString() + '/matches/round/0', headers: { 'Host': 'ta4-data.de', 'Content-Type': 'application/x-www-form-urlencoded', 'Connection': 'keep-alive', 'Accept': '*/*', 'User-Agent': 'TorAlarm/20161202 CFNetwork/808.1.4 Darwin/16.1.0', 'Accept-Language': 'de-de', 'Accept-Encoding': 'gzip', 'Content-Length': '49', }, body: '{"lng":"de-DE","device_type":0,"decode":"decode"}', form: false } request(options, function (error, response, body) { var data = JSON.parse(body); var refreshTime = data.refresh_time * 1000; var standings = data.data; self.sendSocketNotification('STANDINGS', { leagueId: leagueId, standings: standings }); setTimeout(function () { self.getScores(leagueId); }, refreshTime); }); }, getLogosFromScores: function (leagueId) { var self = this; var options = { method: 'POST', //url: 'https://www.ta4-data.de/ta/data/competitions/' + leagueId.toString() + '/matches/round/0', url: 'https://www.ta4-data.de/em4/data/competitions/' + leagueId.toString() + '/matches/round/0', headers: { 'Host': 'ta4-data.de', 'Content-Type': 'application/x-www-form-urlencoded', 'Connection': 'keep-alive', 'Accept': '*/*', 'User-Agent': 'TorAlarm/20161202 CFNetwork/808.1.4 Darwin/16.1.0', 'Accept-Language': 'de-de', 'Accept-Encoding': 'gzip', 'Content-Length': '49', }, body: '{"lng":"de-DE","device_type":0,"decode":"decode"}', form: false } request(options, function (error, response, body) { var data = JSON.parse(body); var standings = data.data; for (var i = 0; i < standings.length; i++) { if (standings[i].matches !== undefined) { for (var j = 0; j < standings[i].matches.length; j++) { self.getTeamLogo(standings[i].matches[j].team1_id); self.getTeamLogo(standings[i].matches[j].team2_id); } } } }); }, socketNotificationReceived: function (notification, payload) { if (notification === 'CONFIG') { this.getLeagueIds(payload.leagues, payload.showLogos); } } });
AxLED
-
Hey guys,
how do you enter the node_helper.js?
When I enter the code “sudo nano /home/pi/MagicMirror/MMM-SoccerLiveScore/node_helper.js” it will create a new file. So therefore the node_helper.js has to be stored in a folder.
Does anyone know which folder this is or how to find the file?Kind regards,
Paul -
Im using MagicMirror-FootballLeagues
It works by just adding the league 467
EDIT:
If someone is using it without luck be sure to use an api key and place showUnavailable as true
-
@paulb said in Fifa World Cup overview:
“sudo nano /home/pi/MagicMirror/MMM-SoccerLiveScore/node_helper.js”
Hi Paul,
there is a folder missing in your command, there must be a /modules/ between MagicMirror and MMM-Soccer…
“sudo nano /home/pi/MagicMirror/modules/MMM-SoccerLiveScore/node_helper.js”AxLED
-
-
@AxLed , thank for providing your code.
Unfortunately the module is shown while runnin MM but no data is loaded. I have adjusted the config,js as well as node_helper.js as you said. Do you have an idea what could ve been wrong?
Kind regards,
Paul -
I created a fork and a pull request with all necessary changes.
-
Hi,
what are the logs showing? (npm start dev [on Raspberry]) or (F12 [on broser like Firefox]).
AxLED
-
I think your fork is only working for league 4000 (Worldcup/WM 2018), as the other leagues have still use the old links. I didnt have the time to do a fork for all leagues.
I guess you have to some if then else statements, if league 4000 ist used.AxLED
-
Tried it with “4000” for World cup but not showing scores, only shows other league scores.