getBasicTorrentsInfo(); $torrents = array_filter( $torrents, function ($torrent) use ($tag) { $tags = $torrent['tags']; return !str_contains($tags, $tag) && $torrent['trackers_count'] >= 5; } ); /** * Only tag torrents older than specified hours */ $olderThan = null; if ($old) { $olderThanHours = (int) env('QBITTORRENT_PUBLIC_OLDER_THAN_HOURS', 48); $olderThan = time() - ($olderThanHours * 60 * 60); } if ($olderThan) { $torrents = array_filter( $torrents, function ($torrent) use ($olderThan) { return $torrent['added_on'] <= $olderThan; } ); } // Reset all array keys for torrents $torrents = array_values($torrents); if (!empty($torrents)) { $torrentHashes = array_map( function ($torrent) { return $torrent['hash']; }, $torrents ); $qBitClient->addTag($torrentHashes, $tag); echo sprintf('Added tag "%s" to %d torrents.%s', $tag, count($torrents), PHP_EOL); } else { echo 'No torrents to tag.' . PHP_EOL; } if (!$limit) { exit; } $maxRate = (int) env('QBITTORRENT_PUBLIC_MAX_RATE', 153600); echo sprintf('Limit specified, limiting public torrents speed to %s%s', formatBytes($maxRate, 2, true), PHP_EOL); $torrents = $qBitClient->getBasicTorrentsInfo(); $torrents = array_filter( $torrents, function ($torrent) use ($tag) { $hasTag = str_contains($torrent['tags'], $tag); /** * We only set the upload limit if it's not already set. * If it's set to something specific, we don't want to override it. */ $hasNoLimit = $torrent['up_limit'] <= 0; return $hasTag && $hasNoLimit; } ); $hashes = array_map( function ($torrent) { return $torrent['hash']; }, $torrents ); echo sprintf('Limiting %d torrents to %s%s', count($torrents), formatBytes($maxRate, 2, true), PHP_EOL); $qBitClient->setTorrentsUploadLimit($hashes, $maxRate);