diff --git a/Invoke-QBTCleanarr.ps1 b/Invoke-QBTCleanarr.ps1 index 13a4925..824f05a 100644 --- a/Invoke-QBTCleanarr.ps1 +++ b/Invoke-QBTCleanarr.ps1 @@ -1,35 +1,45 @@ # Configuration -$qbittorrentUrl = 'http://localhost:8080' # Change if necessary -$username = 'your_username' -$password = 'your_password' -$excludedTrackers = @('tracker1.com', 'tracker2.com') +$qbtHost = 'ktr.h4ck.me' +$qbtPort = '7878' +$qbtUser = 'kelly' +$qbtPassword = 'KjBWnJC;cabA^gFxcN]5' +$excludedTrackers = @( + 'digitalcore.club', + 'please.passthepopcorn.me:2710', + 'please.passthepopcorn.me' +) # Function to authenticate and get a session function Get-QBittorrentSession { - $session = New-Object System.Net.WebClient - $session.Headers.Add("Content-Type", "application/x-www-form-urlencoded") + $qbtHeaders = @{ + Referer = "https://$($qbtHost):$($qbtPort)" + } + $qbtBody = @{ + username = $qbtUser + password = $qbtPassword + } + $qbtSession = [Microsoft.PowerShell.Commands.WebRequestSession]::new() + $qbtResponse = Invoke-WebRequest -Uri "https://$($qbtHost):$($qbtPort)/api/v2/auth/login" -WebSession $qbtSession -Method POST -Headers $qbtHeaders -Body $qbtBody - # Authenticate - $session.UploadString("$qbittorrentUrl/api/v2/auth/login", "username=$username&password=$password") - return $session + return $qbtSession } # Function to get all torrents function Get-Torrents { param ( - [System.Net.WebClient]$session + [Microsoft.PowerShell.Commands.WebRequestSession]$session ) - $response = $session.DownloadString("$qbittorrentUrl/api/v2/torrents/info") - return $response | ConvertFrom-Json + $qbtResponse = Invoke-WebRequest -Uri "https://$($qbtHost):$($qbtPort)/api/v2/torrents/info" -WebSession $session -Method GET + return $qbtResponse.Content | ConvertFrom-Json } # Function to delete a torrent function Delete-Torrent { param ( - [System.Net.WebClient]$session, + [Microsoft.PowerShell.Commands.WebRequestSession]$session, [string]$hash ) - $session.UploadString("$qbittorrentUrl/api/v2/torrents/delete", "hashes=$hash") + # $session.UploadString("$qbittorrentUrl/api/v2/torrents/delete", "hashes=$hash") } # Main script @@ -37,15 +47,20 @@ $session = Get-QBittorrentSession $torrents = Get-Torrents -session $session foreach ($torrent in $torrents) { - if ($torrent.state -eq 'completed') { + if ($torrent.state -eq 'uploading' -or $torrent.state -like "*UP") { # Check if any of the excluded trackers are in the torrent's tracker list - $trackers = $torrent.trackers | ForEach-Object { $_.url } + if ($torrent.tracker -match "https?://([^/]+)") { + $trackers = $matches[1] + } else { + $trackers = @() + } if (-not ($trackers | Where-Object { $excludedTrackers -contains $_ })) { # Delete the torrent - Delete-Torrent -session $session -hash $torrent.hash + Write-Host "Would delete: $($torrent.name)" + # Delete-Torrent -session $session -hash $torrent.hash } } } # Logout (optional, but good practice) -$session.UploadString("$qbittorrentUrl/api/v2/auth/logout", "") +# $session.UploadString("$qbittorrentUrl/api/v2/auth/logout", "")