Nodejs - Twitch bot - für jeden viewer einen datenbank eintrag
PHP Code:
client.api({ url: "http://tmi.twitch.tv/group/user/lirik/chatters" }, function(err, res, body) { var count = JSON.parse(body)["chatter_count"]; console.log(count); var chatter = JSON.parse(body)["chatters"]["viewers"]; for(i=0;i < chatter.length;i++){ var post = {name: chatter[i], points: 0}; var usernamed = chatter[i]; var checkuser= con.query('SELECT * FROM `test` WHERE `name` = ?',chatter[i], function (error, results, fields) { console.log(results); var resu = results.map( function( el ){ return el.name; }); if(resu != chatter[i]){ var insertuser= con.query('INSERT INTO test SET ?', post, function(err, result) { }); } }); } });
Hier ist der aktuelle code.
chatter ist ein array mit den aktuellen zuschauern.
Ich möchte das jeder einzelne Zuschauer in die Datenbank eingetragen wird. Jedoch soll, wenn der Zuschauer schon in der Datenbank steht, der Zuschauer übersprungen werden.
Wenn ich das so laufen lasse, wird lediglich der erste Zuschauer eingetragen. D.h wenn es 50 zuschauer sind, wird der erste Zuschauer 50mal eingetragen.
Ich konnte deinen Code nicht 1:1 übernehmen weil ich nicht weiß welche Module dafür benötigt werden, also hab ich ihn eben in einer für mich benutzbaren Version nachgebaut.
Ich vermute das Problem bei der Asynchronizität der query-Funktion in Zeile 13. Aus diesem Grund habe ich den Code mit async umgebaut. Wenn du mein Beispiel auf deinen Code anwendest sollte alles so funktionier wie du es möchtest.
Code:
// require the necessary modules
var request = require('request');
var http = require('http');
var mysql = require('mysql');
var async = require('async');
// setting up the mysql connection
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '',
database : 'test'
});
request({
url: 'http://tmi.twitch.tv/group/user/lirik/chatters',
json: true
}, function (err, res, body) {
// only procceed if there are no errors
if (!err && res.statusCode === 200) {
// mapping stuff
var json = body;
var chatters = json.chatters.viewers;
// establishing the mysql connection
connection.connect();
// asynchronously accessing all the users
async.each(chatters, function(user, callback) {
// look if there is any entry with the current user
connection.query('SELECT 1 FROM test WHERE name = ? ORDER BY name LIMIT 1;', user, function(err, result, fields) {
// return early if there are any errors
if (err) {
return callback && callback(err);
}
// if it is a new user the result is empty
if (0 === result.length) {
// insert new user
connection.query('INSERT INTO test SET ?', {name: user, points: 0}, function(err, result) {
// call the callback function (err may or may not be undefined)
callback && callback(err);
});
} else {
// call the callback function if we already got that user
callback && callback();
}
});
}, function(err) {
// if there are any errors, print them
if (err) {
console.log('error: ', err);
}
console.log('done');
// close the mysql connection
connection.end();
// exit the process
process.exit();
});
}
});
Suche einen Arena Scoreboard Datenbank eintrag! 11/26/2014 - Flyff Private Server - 11 Replies Ich brauche Hilfe bei meine Arena Scoreboard unzwar habe ich momentan das Problem das Kills nicht gespeichert werden wenn man den Worldserver neustartet.
Darum brauche ich unbedingt die Datenbank oder den Eintrag für das Scoreboard.
Benutze das hier:
http://i.epvpimg.com/lPqSg.png
Danke schonmal für die Hilfe!
Ich suche einen Twitch Viewer Bot 04/17/2014 - Twitch Trading - 0 Replies Hallo
Ich benötige einen Twitch Viewer Bot welcher mindestens 2000 Viewer schafft ausserdem darf er fast keine PC Leistung benötigen. Falls jemand einen solchen Bot verkauft, der kann mich gerne in Skype adden: exotiqz.hd
Natürlich kann ich euch auch adden.
MfG