From 6925c6b2256b97b183fe1470e9ec557697025407 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Thu, 2 May 2024 00:51:56 +0200 Subject: [PATCH] Clean issues about removed items on scanner startup --- scanner/providers/kyoo_client.py | 10 ++++++++++ scanner/scanner/scanner.py | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/scanner/providers/kyoo_client.py b/scanner/providers/kyoo_client.py index 19751d35..5920db4e 100644 --- a/scanner/providers/kyoo_client.py +++ b/scanner/providers/kyoo_client.py @@ -58,6 +58,16 @@ class KyooClient: logger.error(f"Request error: {await r.text()}") r.raise_for_status() + async def get_issues(self) -> List[str]: + async with self.client.get( + f"{self._url}/issues", + params={"limit": 0}, + headers={"X-API-Key": self._api_key}, + ) as r: + r.raise_for_status() + ret = await r.json() + return [x["cause"] for x in ret if x["domain"] == "scanner"] + async def delete_issue(self, path: str): async with self.client.delete( f'{self._url}/issues?filter=domain eq scanner and cause eq "{quote(path)}"', diff --git a/scanner/scanner/scanner.py b/scanner/scanner/scanner.py index 3275188a..0fa1d70a 100644 --- a/scanner/scanner/scanner.py +++ b/scanner/scanner/scanner.py @@ -35,5 +35,10 @@ async def scan( elif len(deleted) > 0: logger.warning("All video files are unavailable. Check your disks.") + issues = await client.get_issues() + for x in issues: + if x not in videos: + await client.delete_issue(x) + await asyncio.gather(*map(publisher.add, to_register)) logger.info(f"Scan finished for {path}.")