diff --git a/cyberdrop_dl/managers/db_manager.py b/cyberdrop_dl/managers/db_manager.py index 5eb64a8f0..53f5f72e0 100644 --- a/cyberdrop_dl/managers/db_manager.py +++ b/cyberdrop_dl/managers/db_manager.py @@ -45,6 +45,12 @@ async def startup(self) -> None: await self.history_table.startup() await self.hash_table.startup() await self.temp_referer_table.startup() + await self.run_fixes() + + async def run_fixes(self): + if not self.manager.cache_manager.get("fixed_empty_download_filenames"): + await self.history_table.delete_invalid_rows() + self.manager.cache_manager.save("fixed_empty_download_filenames", True) async def close(self) -> None: """Close the DBManager.""" diff --git a/cyberdrop_dl/utils/database/tables/history_table.py b/cyberdrop_dl/utils/database/tables/history_table.py index 502d35ea3..5b3d93fbf 100644 --- a/cyberdrop_dl/utils/database/tables/history_table.py +++ b/cyberdrop_dl/utils/database/tables/history_table.py @@ -50,6 +50,12 @@ async def fix_chevereto_domains(self) -> None: await cursor.execute(query) await self.db_conn.commit() + async def delete_invalid_rows(self) -> None: + query = """DELETE FROM media WHERE download_filename = '' """ + cursor = await self.db_conn.cursor() + await cursor.execute(query) + await self.db_conn.commit() + async def check_complete(self, domain: str, url: URL, referer: URL) -> bool: """Checks whether an individual file has completed given its domain and url path.""" if self.ignore_history: