запоминание времени торрента

This commit is contained in:
Alexey Kasyanchuk 2017-01-14 12:32:23 +03:00
parent 2840048c8a
commit 26468bcebb

109
index.js
View File

@ -151,6 +151,7 @@ io.on('connection', function(socket)
seeders: row.seeders,
completed: row.completed,
leechers: row.leechers,
trackersChecked: row.trackersChecked ? row.trackersChecked.getTime() : undefined,
}
}
@ -272,6 +273,18 @@ io.on('connection', function(socket)
}));
});
});
socket.on('checkTrackers', function(hash)
{
if(hash.length != 40)
return;
if(typeof callback != 'function')
return;
updateTorrentTrackers(hash);
});
});
let undoneQueries = 0;
@ -322,6 +335,56 @@ setInterval(() => {
});
}, 10 * 60 * 1000)
const updateTorrentTrackers = (hash) => {
let maxSeeders = 0, maxLeechers = 0, maxCompleted = 0;
udpTrackers.forEach((tracker) => {
getPeersStatisticUDP(tracker.host, tracker.port, hash, ({seeders, completed, leechers}) => {
if(seeders == 0 && completed == 0 && leechers == 0)
return;
/*
pushDatabaseBalance();
listenerMysql.query('INSERT INTO trackers SET ?', statistic, function(err, result) {
popDatabaseBalance();
});
*/
if(seeders < maxSeeders)
{
return;
}
if(seeders == maxSeeders && leechers < maxLeechers)
{
return;
}
if(seeders == maxSeeders && leechers == maxLeechers && completed <= maxCompleted)
{
return;
}
maxSeeders = seeders;
maxLeechers = leechers;
maxCompleted = completed;
let checkTime = new Date();
pushDatabaseBalance();
listenerMysql.query('UPDATE torrents SET seeders = ?, completed = ?, leechers = ?, trackersChecked = ? WHERE hash = ?', [seeders, completed, leechers, checkTime, hash], function(err, result) {
popDatabaseBalance();
if(!result) {
return
}
io.sockets.emit('trackerTorrentUpdate', {
hash,
seeders,
completed,
leechers,
trackersChecked: checkTime.getTime()
});
});
});
});
}
client.on('complete', function (metadata, infohash, rinfo) {
console.log('writing torrent to db');
const hash = infohash.toString('hex');
@ -402,51 +465,7 @@ client.on('complete', function (metadata, infohash, rinfo) {
contentType: torrentQ.contentType,
contentCategory: torrentQ.contentCategory,
});
let maxSeeders = 0, maxLeechers = 0, maxCompleted = 0;
udpTrackers.forEach((tracker) => {
getPeersStatisticUDP(tracker.host, tracker.port, hash, ({seeders, completed, leechers}) => {
if(seeders == 0 && completed == 0 && leechers == 0)
return;
/*
pushDatabaseBalance();
listenerMysql.query('INSERT INTO trackers SET ?', statistic, function(err, result) {
popDatabaseBalance();
});
*/
if(seeders < maxSeeders)
{
return;
}
if(seeders == maxSeeders && leechers < maxLeechers)
{
return;
}
if(seeders == maxSeeders && leechers == maxLeechers && completed <= maxCompleted)
{
return;
}
maxSeeders = seeders;
maxLeechers = leechers;
maxCompleted = completed;
pushDatabaseBalance();
listenerMysql.query('UPDATE torrents SET seeders = ?, completed = ?, leechers = ? WHERE hash = ?', [seeders, completed, leechers, hash], function(err, result) {
popDatabaseBalance();
if(!result) {
return
}
io.sockets.emit('trackerTorrentUpdate', {
hash,
seeders,
completed,
leechers
});
});
});
});
updateTorrentTrackers(hash);
}
else
{