Read the statement by Michael Teeuw here.
Fifa World Cup overview
-
So, as far as I can see, we don’t have any proper FIFA World Cup module yet, do we? And it starts TOMORROW!
I would have loved to see a solution showing some kind of iframe with the overview over the complete screen. Or at least show the playing plan in the center frame.But I can’t program one. It’s a pity…
-
I would welcome a Word Cup module, too!
-
I will try to do one. And there’s an API for it.
http://www.worldcupapi.site/ -
please make it look like mmm-myscoreboard lol, i love colors
-
Here is an alternative. Install MMM-Myscoreboard and the code is below for the WC 2018. I’ll work on it on the weekend. I won’t get time during week days.
{ module: "MMM-MyScoreboard", position: "top_right", classes: "default everyone", header: "FIFA Weltmeisterschaft", config: { showLeagueSeparators: true, colored: true, viewStyle: "mediumLogos", sports: [ { league: "FIFAWC", }, ] } },
-
@conkhidot said in Fifa World Cup overview:
Here is an alternative. Install MMM-Myscoreboard and the code is below for the WC 2018. I’ll work on it on the weekend. I won’t get time during week days.
{ module: "MMM-MyScoreboard", position: "top_right", classes: "default everyone", header: "FIFA Weltmeisterschaft", config: { showLeagueSeparators: true, colored: true, viewStyle: "mediumLogos", sports: [ { league: "FIFAWC", }, ] } },
Okay, I will try it tomorrow evening! Thanks
-
Hi to all,
i found a different solution: https://github.com/LukeSkywalker92/MMM-SoccerLiveScore with some modifications.
node_helper.js:
change the hyperlinks (or only the …/ta/… part of the links in node_helper.js to …/em4/…)
Example, Line 52:
Changeurl: 'https://www.ta4-data.de/ta/data/competitions',to
url: 'https://www.ta4-data.de/em4/data/competitions',Do the replacements on the 5 hyperlinks in node_helper, and here you go.
config.js
The league id for WM ist 4000{ module: "MMM-SoccerLiveScore", position: "top_left", header: "Live-Scores", config: { leagues: [4000], showNames: true, showLogos: true, displayTime: 60 * 1000, showTables: true } },Pictures:


AxLED
-
looks nice.
If i would be interested in this football crap, i would definetely install it on ther mirror ;)
-
@axled It doesn’t work for me :P
0|mm | Whoops! There was an uncaught exception…
0|mm | SyntaxError: Unexpected token p in JSON at position 4
0|mm | at JSON.parse (:null:null)
0|mm | at Request._callback (/home/pi/Magicmirror/modules/MMM-SoccerLiveScore/node_helper.js:115:29)
0|mm | at Request.self.callback (/home/pi/Magicmirror/modules/node_modules/request/request.js:186:22)
0|mm | at emitTwo (events.js:106:13)
0|mm | at Request.emit (events.js:194:7)
0|mm | at Request. (/home/pi/Magicmirror/modules/node_modules/request/request.js:1163:10)
0|mm | at emitOne (events.js:96:13)
0|mm | at Request.emit (events.js:191:7)
0|mm | at IncomingMessage. (/home/pi/Magicmirror/modules/node_modules/request/request.js:1085:12)
0|mm | at Object.onceWrapper (events.js:293:19)
0|mm | at emitNone (events.js:91:20)
0|mm | at IncomingMessage.emit (events.js:188:7)
0|mm | at endReadableNT (_stream_readable.js:975:12)
0|mm | at _combinedTickCallback (internal/process/next_tick.js:80:11)
0|mm | at process._tickCallback (internal/process/next_tick.js:104:9) -
@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.
-
Hi to all,
today i tried MagicMirror-FootballLeagues (which is a modified fork of MMM-SoccerLiveScore) with League ID 467 an the following config:
{ module: 'MagicMirror-FootballLeagues', position: 'top_left', header: 'Live-Scores', config: { leagues: [467], showNames: true, displayTime: 60 * 1000, showTables: true, showLogos: true, apiKey: 'secret', showUnavailable: true }Works perfect. In my opinion the fastes way to get Fifa World Cup on MM.
AxLED
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login