запоминание времени торрента
This commit is contained in:
parent
2840048c8a
commit
26468bcebb
109
index.js
109
index.js
@ -151,6 +151,7 @@ io.on('connection', function(socket)
|
|||||||
seeders: row.seeders,
|
seeders: row.seeders,
|
||||||
completed: row.completed,
|
completed: row.completed,
|
||||||
leechers: row.leechers,
|
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;
|
let undoneQueries = 0;
|
||||||
@ -322,6 +335,56 @@ setInterval(() => {
|
|||||||
});
|
});
|
||||||
}, 10 * 60 * 1000)
|
}, 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) {
|
client.on('complete', function (metadata, infohash, rinfo) {
|
||||||
console.log('writing torrent to db');
|
console.log('writing torrent to db');
|
||||||
const hash = infohash.toString('hex');
|
const hash = infohash.toString('hex');
|
||||||
@ -402,51 +465,7 @@ client.on('complete', function (metadata, infohash, rinfo) {
|
|||||||
contentType: torrentQ.contentType,
|
contentType: torrentQ.contentType,
|
||||||
contentCategory: torrentQ.contentCategory,
|
contentCategory: torrentQ.contentCategory,
|
||||||
});
|
});
|
||||||
let maxSeeders = 0, maxLeechers = 0, maxCompleted = 0;
|
updateTorrentTrackers(hash);
|
||||||
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
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user