fix: 修复一个种子多个tracker时状态显示问题

当一个种子有多个tracker时,其中一个tracker不工作时,会显示警告,现改为,只要其中一个状态正常,状态即显示为正常。

fixed 
This commit is contained in:
ronggang 2018-08-02 07:51:18 +08:00
parent 5ddc6ff2b9
commit 53b7e07ad5
2 changed files with 11 additions and 11 deletions

@ -4,10 +4,10 @@ this.all)a=this.fields.status;a=a.split(",");$.isArray(c)&&$.unique($.merge(a,c)
transmission.torrents.splitid();b&&b(g.arguments.torrents)}else{transmission.torrents.datas=null;b&&b(null)}})},splitid:function(){this.downloading=[];this.puased=[];this.actively=[];this.error=[];this.warning=[];this.btItems=[];transmission.downloadDirs=[];var b=transmission._status;this.status={};transmission.trackers={};this.totalSize=0;this.folders={};this.count=0;var d=new Base64,c;for(c in this.recently){var a=this.recently[c];this.datas[a.id]=a}var g=[];for(c in this.removed){a=this.removed[c];
g.push(a)}for(c in this.datas){a=this.datas[c];if(!a)return;if($.inArray(a.id,g)!=-1&&g.length>0){if(this.all[a.id]){this.all[a.id]=null;delete this.all[a.id]}this.datas[c]=null;delete this.datas[c]}else{this.isRecentlyActive&&!this.all[a.id]&&this.newIds.push(a.id);a=$.extend(this.all[a.id],a);if(a.uploadedEver==0&&a.downloadedEver==0)a.uploadRatio="∞";a.infoIsLoading=false;var e=this.status[a.status];this.addTracker(a);if(!e){this.status[a.status]=[];e=this.status[a.status]}this.totalSize+=a.totalSize;
a.remainingTime=a.rateDownload>0&&a.leftUntilDone>0?Math.floor(a.leftUntilDone/a.rateDownload*1E3):a.rateDownload==0&&a.leftUntilDone==0&&a.totalSize!=0?0:31536E8;e.push(a);a.error!=0&&this.error.push(a);if(a.rateUpload>0||a.rateDownload>0)this.actively.push(a);switch(a.status){case b.stopped:this.puased.push(a);break;case b.download:this.downloading.push(a)}this.all[a.id]=a;$.inArray(a.downloadDir,transmission.downloadDirs)==-1&&transmission.downloadDirs.push(a.downloadDir);if(transmission.options.getFolders)if(a.downloadDir){e=
a.downloadDir.replace(/\\/g,"/").split("/");var j="folders-",h;for(h in e){var f=e[h];if(f!=""){f=d.encode(f);j+=f.replace(/[+|\/|=]/g,"0");(f=this.folders[j])||(f={count:0,torrents:[],size:0,nodeid:j});f.torrents.push(a);f.count++;f.size+=a.totalSize;this.folders[j]=f}}}this.count++}}transmission.downloadDirs=transmission.downloadDirs.sort();this.newIds.length>0&&this.getallids(null,this.newIds)},addTracker:function(b){var d=b.trackerStats,c=false,a=[];b.leecherCount=0;b.seederCount=0;if(d.length>
0){for(var g in d){var e=d[g],j=e.lastAnnounceResult.toLowerCase(),h=e.host.getHostName().split(".");$.inArray(h[0],"www,tracker".split(","))!=-1&&h.shift();h=h.join(".");var f="tracker-"+h.replace(/\./g,"-"),i=transmission.trackers[f];if(!i){transmission.trackers[f]={count:0,torrents:[],size:0,connected:true,isBT:d.length>5};i=transmission.trackers[f]}i.name=h;i.nodeid=f;i.host=e.host;if(!e.lastAnnounceSucceeded&&e.announceState!=transmission._trackerStatus.inactive){c=true;b.warning=e.lastAnnounceResult;
if(j=="could not connect to tracker")i.connected=false}if(i.torrents.indexOf(b)==-1){i.torrents.push(b);i.count++;i.size+=b.totalSize}b.leecherCount+=e.leecherCount;b.seederCount+=e.seederCount;a.indexOf(h)==-1&&a.push(h)}d.length>5&&this.btItems.push(b);if(c){if(b.nextAnnounceTime){if(b.nextAnnounceTime>e.nextAnnounceTime)b.nextAnnounceTime=e.nextAnnounceTime}else b.nextAnnounceTime=e.nextAnnounceTime;this.warning.push(b)}if(b.leecherCount<0)b.leecherCount=0;if(b.seederCount<0)b.seederCount=0;b.leecher=
b.leecherCount+" ("+b.peersGettingFromUs+")";b.seeder=b.seederCount+" ("+b.peersSendingToUs+")";b.trackers=a.join(";")}},getPeers:function(b){transmission.exec({method:"torrent-get",arguments:{fields:"peers,peersFrom".split(","),ids:b}},function(d){console.log("data:",d)})},getMoreInfos:function(b,d,c){transmission.exec({method:"torrent-get",arguments:{fields:b.split(","),ids:d}},function(a){if(a.result=="success")c&&c(a.arguments.torrents);else c&&c(null)})},search:function(b,d){if(!b)return null;
if(!d)d=this.all;var c=[];$.each(d,function(a){d[a].name.toLowerCase().indexOf(b.toLowerCase())!=-1&&c.push(d[a])});return this.searchResult=c},getFiles:function(b,d){transmission.exec({method:"torrent-get",arguments:{fields:"files,fileStats".split(","),ids:b}},function(c){if(c.result=="success")d&&d(c.arguments.torrents);else d&&d(null)})},getConfig:function(b,d){this.getMoreInfos(this.fields.config,b,d)},getErrorIds:function(b,d){var c=[],a=new Date;if(d==true)a=a.getTime()/1E3;for(var g in this.error){var e=
this.error[g];if(!($.inArray(e.id,b)!=-1&&b.length>0)){if(d==true)if(a<e.nextAnnounceTime)continue;e.status!=transmission._status.stopped&&c.push(e.id)}}for(g in this.warning){e=this.warning[g];if(!($.inArray(e.id,b)!=-1&&b.length>0)){if(d==true)if(a<e.nextAnnounceTime)continue;c.push(e.id)}}return c},searchAndReplaceTrackers:function(b,d,c){if(b&&d){var a={},g=0,e;for(e in this.all){var j=this.all[e];if(!j)return;var h=j.trackerStats,f;for(f in h)if(h[f].announce==b){a[f]||(a[f]={ids:[],tracker:d});
a[f].ids.push(j.id);g++}}g==0&&c&&c(null,0);for(e in a)transmission.exec({method:"torrent-set",arguments:{ids:a[e].ids,trackerReplace:[parseInt(e),a[e].tracker]}},function(i,k){if(i.result=="success")c&&c(k,g);else c&&c(null)},a[e].ids)}}};
a.downloadDir.replace(/\\/g,"/").split("/");var j="folders-",h;for(h in e){var f=e[h];if(f!=""){f=d.encode(f);j+=f.replace(/[+|\/|=]/g,"0");(f=this.folders[j])||(f={count:0,torrents:[],size:0,nodeid:j});f.torrents.push(a);f.count++;f.size+=a.totalSize;this.folders[j]=f}}}this.count++}}transmission.downloadDirs=transmission.downloadDirs.sort();this.newIds.length>0&&this.getallids(null,this.newIds)},addTracker:function(b){var d=b.trackerStats,c=[];b.leecherCount=0;b.seederCount=0;if(d.length>0){var a=
[],g;for(g in d){var e=d[g],j=e.lastAnnounceResult.toLowerCase(),h=e.host.getHostName().split(".");$.inArray(h[0],"www,tracker".split(","))!=-1&&h.shift();h=h.join(".");var f="tracker-"+h.replace(/\./g,"-"),i=transmission.trackers[f];if(!i){transmission.trackers[f]={count:0,torrents:[],size:0,connected:true,isBT:d.length>5};i=transmission.trackers[f]}i.name=h;i.nodeid=f;i.host=e.host;if(!e.lastAnnounceSucceeded&&e.announceState!=transmission._trackerStatus.inactive){a.push(e.lastAnnounceResult);if(j==
"could not connect to tracker")i.connected=false}if(i.torrents.indexOf(b)==-1){i.torrents.push(b);i.count++;i.size+=b.totalSize}b.leecherCount+=e.leecherCount;b.seederCount+=e.seederCount;c.indexOf(h)==-1&&c.push(h)}d.length>5&&this.btItems.push(b);if(a.length==d.length){b.warning=a.join(";");if(b.nextAnnounceTime){if(b.nextAnnounceTime>e.nextAnnounceTime)b.nextAnnounceTime=e.nextAnnounceTime}else b.nextAnnounceTime=e.nextAnnounceTime;this.warning.push(b)}if(b.leecherCount<0)b.leecherCount=0;if(b.seederCount<
0)b.seederCount=0;b.leecher=b.leecherCount+" ("+b.peersGettingFromUs+")";b.seeder=b.seederCount+" ("+b.peersSendingToUs+")";b.trackers=c.join(";")}},getPeers:function(b){transmission.exec({method:"torrent-get",arguments:{fields:"peers,peersFrom".split(","),ids:b}},function(d){console.log("data:",d)})},getMoreInfos:function(b,d,c){transmission.exec({method:"torrent-get",arguments:{fields:b.split(","),ids:d}},function(a){if(a.result=="success")c&&c(a.arguments.torrents);else c&&c(null)})},search:function(b,
d){if(!b)return null;if(!d)d=this.all;var c=[];$.each(d,function(a){d[a].name.toLowerCase().indexOf(b.toLowerCase())!=-1&&c.push(d[a])});return this.searchResult=c},getFiles:function(b,d){transmission.exec({method:"torrent-get",arguments:{fields:"files,fileStats".split(","),ids:b}},function(c){if(c.result=="success")d&&d(c.arguments.torrents);else d&&d(null)})},getConfig:function(b,d){this.getMoreInfos(this.fields.config,b,d)},getErrorIds:function(b,d){var c=[],a=new Date;if(d==true)a=a.getTime()/
1E3;for(var g in this.error){var e=this.error[g];if(!($.inArray(e.id,b)!=-1&&b.length>0)){if(d==true)if(a<e.nextAnnounceTime)continue;e.status!=transmission._status.stopped&&c.push(e.id)}}for(g in this.warning){e=this.warning[g];if(!($.inArray(e.id,b)!=-1&&b.length>0)){if(d==true)if(a<e.nextAnnounceTime)continue;c.push(e.id)}}return c},searchAndReplaceTrackers:function(b,d,c){if(b&&d){var a={},g=0,e;for(e in this.all){var j=this.all[e];if(!j)return;var h=j.trackerStats,f;for(f in h)if(h[f].announce==
b){a[f]||(a[f]={ids:[],tracker:d});a[f].ids.push(j.id);g++}}g==0&&c&&c(null,0);for(e in a)transmission.exec({method:"torrent-set",arguments:{ids:a[e].ids,trackerReplace:[parseInt(e),a[e].tracker]}},function(i,k){if(i.result=="success")c&&c(k,g);else c&&c(null)},a[e].ids)}}};

@ -232,13 +232,13 @@ transmission.torrents = {
},
addTracker: function(item) {
var trackerStats = item.trackerStats;
var haveWarning = false;
var trackers = [];
item.leecherCount = 0;
item.seederCount = 0;
if (trackerStats.length > 0) {
var warnings = [];
for (var index in trackerStats) {
var trackerInfo = trackerStats[index];
var lastResult = trackerInfo.lastAnnounceResult.toLowerCase();
@ -268,8 +268,7 @@ transmission.torrents = {
// 判断当前tracker状态
if (!trackerInfo.lastAnnounceSucceeded && trackerInfo.announceState != transmission._trackerStatus.inactive) {
haveWarning = true;
item["warning"] = trackerInfo.lastAnnounceResult;
warnings.push(trackerInfo.lastAnnounceResult);
if (lastResult == "could not connect to tracker") {
tracker.connected = false;
@ -293,7 +292,8 @@ transmission.torrents = {
this.btItems.push(item);
}
if (haveWarning) {
if (warnings.length == trackerStats.length) {
item["warning"] = warnings.join(";");
// 设置下次更新时间
if (!item["nextAnnounceTime"])
item["nextAnnounceTime"] = trackerInfo.nextAnnounceTime;