mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-08-19 21:03:30 -07:00
WebAPI: Added endpoints, next_announce and min_announce to tracker list
This commit is contained in:
parent
96c55c4998
commit
79fc62c184
1 changed files with 35 additions and 5 deletions
|
@ -67,14 +67,19 @@
|
|||
|
||||
// Tracker keys
|
||||
const QString KEY_TRACKER_URL = u"url"_s;
|
||||
const QString KEY_TRACKER_NAME = u"name"_s;
|
||||
const QString KEY_TRACKER_UPDATING = u"updating"_s;
|
||||
const QString KEY_TRACKER_STATUS = u"status"_s;
|
||||
const QString KEY_TRACKER_TIER = u"tier"_s;
|
||||
const QString KEY_TRACKER_MSG = u"msg"_s;
|
||||
const QString KEY_TRACKER_BT_VERSION = u"bt_version"_s;
|
||||
const QString KEY_TRACKER_PEERS_COUNT = u"num_peers"_s;
|
||||
const QString KEY_TRACKER_SEEDS_COUNT = u"num_seeds"_s;
|
||||
const QString KEY_TRACKER_LEECHES_COUNT = u"num_leeches"_s;
|
||||
const QString KEY_TRACKER_DOWNLOADED_COUNT = u"num_downloaded"_s;
|
||||
const QString KEY_TRACKER_NEXT_ANNOUNCE = u"next_announce"_s;
|
||||
const QString KEY_TRACKER_MIN_ANNOUNCE = u"min_announce"_s;
|
||||
const QString KEY_TRACKER_ENDPOINTS = u"endpoints"_s;
|
||||
|
||||
// Web seed keys
|
||||
const QString KEY_WEBSEED_URL = u"url"_s;
|
||||
|
@ -269,24 +274,49 @@ namespace
|
|||
|
||||
QJsonArray getTrackers(const BitTorrent::Torrent *const torrent)
|
||||
{
|
||||
auto now = BitTorrent::AnnounceTimePoint::clock::now();
|
||||
QJsonArray trackerList;
|
||||
|
||||
for (const BitTorrent::TrackerEntryStatus &tracker : asConst(torrent->trackers()))
|
||||
{
|
||||
const bool isNotWorking = (tracker.state == BitTorrent::TrackerEndpointState::NotWorking)
|
||||
|| (tracker.state == BitTorrent::TrackerEndpointState::TrackerError)
|
||||
|| (tracker.state == BitTorrent::TrackerEndpointState::Unreachable);
|
||||
QJsonArray endpointsList;
|
||||
|
||||
for (const BitTorrent::TrackerEndpointStatus &endpoint : tracker.endpoints)
|
||||
{
|
||||
endpointsList << QJsonObject
|
||||
{
|
||||
{KEY_TRACKER_NAME, endpoint.name},
|
||||
{KEY_TRACKER_UPDATING, endpoint.isUpdating},
|
||||
{KEY_TRACKER_STATUS, static_cast<int>(endpoint.state)},
|
||||
{KEY_TRACKER_MSG, endpoint.message},
|
||||
{KEY_TRACKER_BT_VERSION, static_cast<int>(endpoint.btVersion)},
|
||||
{KEY_TRACKER_PEERS_COUNT, endpoint.numPeers},
|
||||
{KEY_TRACKER_SEEDS_COUNT, endpoint.numSeeds},
|
||||
{KEY_TRACKER_LEECHES_COUNT, endpoint.numLeeches},
|
||||
{KEY_TRACKER_DOWNLOADED_COUNT, endpoint.numDownloaded},
|
||||
{KEY_TRACKER_NEXT_ANNOUNCE, std::max<qint64>(0,
|
||||
std::chrono::duration_cast<std::chrono::seconds>(endpoint.nextAnnounceTime - now).count())},
|
||||
{KEY_TRACKER_MIN_ANNOUNCE, std::max<qint64>(0,
|
||||
std::chrono::duration_cast<std::chrono::seconds>(endpoint.minAnnounceTime - now).count())}
|
||||
};
|
||||
}
|
||||
|
||||
trackerList << QJsonObject
|
||||
{
|
||||
{KEY_TRACKER_URL, tracker.url},
|
||||
{KEY_TRACKER_TIER, tracker.tier},
|
||||
{KEY_TRACKER_UPDATING, tracker.isUpdating},
|
||||
{KEY_TRACKER_STATUS, static_cast<int>((isNotWorking ? BitTorrent::TrackerEndpointState::NotWorking : tracker.state))},
|
||||
{KEY_TRACKER_STATUS, static_cast<int>(tracker.state)},
|
||||
{KEY_TRACKER_MSG, tracker.message},
|
||||
{KEY_TRACKER_PEERS_COUNT, tracker.numPeers},
|
||||
{KEY_TRACKER_SEEDS_COUNT, tracker.numSeeds},
|
||||
{KEY_TRACKER_LEECHES_COUNT, tracker.numLeeches},
|
||||
{KEY_TRACKER_DOWNLOADED_COUNT, tracker.numDownloaded}
|
||||
{KEY_TRACKER_DOWNLOADED_COUNT, tracker.numDownloaded},
|
||||
{KEY_TRACKER_NEXT_ANNOUNCE, std::max<qint64>(0,
|
||||
std::chrono::duration_cast<std::chrono::seconds>(tracker.nextAnnounceTime - now).count())},
|
||||
{KEY_TRACKER_MIN_ANNOUNCE, std::max<qint64>(0,
|
||||
std::chrono::duration_cast<std::chrono::seconds>(tracker.minAnnounceTime - now).count())},
|
||||
{KEY_TRACKER_ENDPOINTS, endpointsList}
|
||||
};
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue