Remove/detect empty media extractor directory

If the media extraction fails, try to remove an empty media directory,
ignoring any errors. When retrying extractors (e.g. `--update`), detect
an empty media directory and run the extractor; recovers from failed
media extractions prior to this commit.
This commit is contained in:
Ross Williams 2023-08-04 11:15:28 -04:00
parent b773041952
commit 176de8b830

View File

@ -26,7 +26,9 @@ def should_save_media(link: Link, out_dir: Optional[Path]=None, overwrite: Optio
return False return False
out_dir = out_dir or Path(link.link_dir) out_dir = out_dir or Path(link.link_dir)
if not overwrite and (out_dir / 'media').exists(): media_dir = out_dir / 'media'
media_dir_has_files = media_dir.exists() and any(media_dir.iterdir())
if not overwrite and media_dir_has_files:
return False return False
return SAVE_MEDIA return SAVE_MEDIA
@ -66,6 +68,12 @@ def save_media(link: Link, out_dir: Optional[Path]=None, timeout: int=MEDIA_TIME
) )
raise ArchiveError('Failed to save media', hints) raise ArchiveError('Failed to save media', hints)
except Exception as err: except Exception as err:
try:
# Try to remove an empty media directory,
# and ignore any failures
output_path.rmdir()
except Exception:
pass
status = 'failed' status = 'failed'
output = err output = err
finally: finally: