обновление сидов
This commit is contained in:
parent
df12e2f109
commit
2f17037a27
93
index.js
93
index.js
@ -302,9 +302,6 @@ io.on('connection', function(socket)
|
||||
if(hash.length != 40)
|
||||
return;
|
||||
|
||||
if(typeof callback != 'function')
|
||||
return;
|
||||
|
||||
updateTorrentTrackers(hash);
|
||||
});
|
||||
|
||||
@ -360,52 +357,60 @@ setInterval(() => {
|
||||
|
||||
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('UPDATE torrents SET trackersChecked = ? WHERE hash = ?', [new Date(), hash], function(err, result) {
|
||||
popDatabaseBalance();
|
||||
if(!result) {
|
||||
console.error(err);
|
||||
}
|
||||
|
||||
/*
|
||||
pushDatabaseBalance();
|
||||
listenerMysql.query('INSERT INTO trackers SET ?', statistic, function(err, result) {
|
||||
popDatabaseBalance();
|
||||
});
|
||||
*/
|
||||
udpTrackers.forEach((tracker) => {
|
||||
getPeersStatisticUDP(tracker.host, tracker.port, hash, ({seeders, completed, leechers}) => {
|
||||
if(seeders == 0 && completed == 0 && leechers == 0)
|
||||
return;
|
||||
|
||||
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('INSERT INTO trackers SET ?', statistic, function(err, result) {
|
||||
popDatabaseBalance();
|
||||
});
|
||||
*/
|
||||
|
||||
pushDatabaseBalance();
|
||||
listenerMysql.query('UPDATE torrents SET seeders = ?, completed = ?, leechers = ?, trackersChecked = ? WHERE hash = ?', [seeders, completed, leechers, checkTime, hash], function(err, result) {
|
||||
popDatabaseBalance();
|
||||
if(!result) {
|
||||
return
|
||||
}
|
||||
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();
|
||||
|
||||
io.sockets.emit('trackerTorrentUpdate', {
|
||||
hash,
|
||||
seeders,
|
||||
completed,
|
||||
leechers,
|
||||
trackersChecked: checkTime.getTime()
|
||||
});
|
||||
});
|
||||
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) {
|
||||
|
@ -144,8 +144,28 @@ export default class TorrentPage extends Page {
|
||||
this.torrent = data
|
||||
this.setTitle('Download ' + this.torrent.name);
|
||||
this.forceUpdate();
|
||||
|
||||
// Получаем более новую статистику пира
|
||||
if((new Date).getTime() - this.torrent.trackersChecked > 10 * 60 * 1000) {
|
||||
window.torrentSocket.emit('checkTrackers', this.torrent.hash);
|
||||
}
|
||||
}
|
||||
}));
|
||||
this.trackerUpdate = (info) => {
|
||||
if(this.props.hash != info.hash)
|
||||
return;
|
||||
|
||||
if(!this.torrent)
|
||||
return;
|
||||
|
||||
Object.assign(this.torrent, info);
|
||||
this.forceUpdate();
|
||||
}
|
||||
window.torrentSocket.on('trackerTorrentUpdate', this.trackerUpdate);
|
||||
}
|
||||
componentWillUnmount() {
|
||||
if(this.trackerUpdate)
|
||||
window.torrentSocket.off('trackerTorrentUpdate', this.trackerUpdate);
|
||||
}
|
||||
render() {
|
||||
return (
|
||||
|
Loading…
Reference in New Issue
Block a user