mirror of
https://github.com/ManiMatter/decluttarr.git
synced 2026-04-26 02:35:57 +02:00
Potential fix (to be tested) by refreshing queue before pulling it
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# Cleans the download queue
|
||||
import logging, verboselogs
|
||||
logger = verboselogs.VerboseLogger(__name__)
|
||||
from src.utils.rest import (rest_get, rest_delete)
|
||||
from src.utils.rest import (rest_get, rest_delete, rest_post)
|
||||
import json
|
||||
from src.utils.nest_functions import (add_keys_nested_dict, nested_get)
|
||||
import sys, os
|
||||
@@ -12,6 +12,7 @@ class Deleted_Downloads:
|
||||
self.dict = dict
|
||||
|
||||
async def get_queue(BASE_URL, API_KEY, params = {}):
|
||||
await rest_post(url=BASE_URL+'/command', json={'name': 'RefreshMonitoredDownloads'}, headers={'X-Api-Key': API_KEY})
|
||||
totalRecords = (await rest_get(f'{BASE_URL}/queue', API_KEY, params))['totalRecords']
|
||||
if totalRecords == 0:
|
||||
return None
|
||||
@@ -53,6 +54,23 @@ async def remove_stalled(settings_dict, radarr_or_sonarr, BASE_URL, API_KEY, del
|
||||
await check_permitted_attempts(settings_dict, stalledItems, 'stalled', True, deleted_downloads, BASE_URL, API_KEY, defective_tracker)
|
||||
return len(stalledItems)
|
||||
|
||||
async def test_remove_ALL(settings_dict, radarr_or_sonarr, BASE_URL, API_KEY, deleted_downloads, defective_tracker):
|
||||
# Detects stalled and triggers repeat check and subsequent delete. Adds to blocklist
|
||||
queue = await get_queue(BASE_URL, API_KEY)
|
||||
if not queue: return 0
|
||||
logger.debug('remove_stalled_test/queue: %s', str(queue))
|
||||
if settings_dict['QBITTORRENT_URL']:
|
||||
protected_dowloadItems = await rest_get(settings_dict['QBITTORRENT_URL']+'/torrents/info',params={'tag': settings_dict['NO_STALLED_REMOVAL_QBIT_TAG']}, cookies=settings_dict['QBIT_COOKIE'] )
|
||||
protected_downloadIDs = [str.upper(item['hash']) for item in protected_dowloadItems]
|
||||
else:
|
||||
protected_downloadIDs = []
|
||||
stalledItems = []
|
||||
for queueItem in queue['records']:
|
||||
stalledItems.append(queueItem)
|
||||
await check_permitted_attempts(settings_dict, stalledItems, 'stalled', True, deleted_downloads, BASE_URL, API_KEY, defective_tracker)
|
||||
return len(stalledItems)
|
||||
|
||||
|
||||
async def remove_metadata_missing(settings_dict, radarr_or_sonarr, BASE_URL, API_KEY, deleted_downloads, defective_tracker):
|
||||
# Detects downloads stuck downloading meta data and triggers repeat check and subsequent delete. Adds to blocklist
|
||||
queue = await get_queue(BASE_URL, API_KEY)
|
||||
@@ -106,7 +124,6 @@ async def check_permitted_attempts(settings_dict, current_defective_items, failT
|
||||
current_defective = {}
|
||||
for queueItem in current_defective_items:
|
||||
current_defective[queueItem['id']] = {'title': queueItem['title'],'downloadId': queueItem['downloadId']}
|
||||
logger.debug('check_permitted_attempts/deleted_downloads: %s', str(deleted_downloads))
|
||||
logger.debug('check_permitted_attempts/current_defective: %s', str(current_defective))
|
||||
# 2. Check if those that were previously defective are no longer defective -> those are recovered
|
||||
try:
|
||||
@@ -137,7 +154,7 @@ async def remove_download(settings_dict, BASE_URL, API_KEY, queueId, queueTitle,
|
||||
logger.debug('remove_download/deleted_downloads.dict IN: %s' + str(deleted_downloads.dict))
|
||||
if downloadId not in deleted_downloads.dict:
|
||||
logger.info('>>> Removing %s download: %s', failType, queueTitle)
|
||||
if not settings_dict['TEST_RUN']: await rest_delete(f'{BASE_URL}/queue/{queueId}', API_KEY, {'removeFromClient': 'true', 'blocklist': blocklist})
|
||||
if not settings_dict['TEST_RUN']: await rest_delete(f'{BASE_URL}/queue/{queueId}', API_KEY, {'removeFromClient': True, 'blocklist': blocklist})
|
||||
deleted_downloads.dict.append(downloadId)
|
||||
|
||||
logger.debug('remove_download/deleted_downloads.dict OUT: %s' + str(deleted_downloads.dict))
|
||||
@@ -166,6 +183,9 @@ async def queue_cleaner(settings_dict, radarr_or_sonarr, defective_tracker):
|
||||
|
||||
deleted_downloads = Deleted_Downloads([])
|
||||
items_detected = 0
|
||||
|
||||
#items_detected += await test_remove_ALL( settings_dict, radarr_or_sonarr, BASE_URL, API_KEY, deleted_downloads, defective_tracker)
|
||||
|
||||
if settings_dict['REMOVE_FAILED']:
|
||||
items_detected += await remove_failed( settings_dict, radarr_or_sonarr, BASE_URL, API_KEY, deleted_downloads)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user