mirror of
https://github.com/meeb/tubesync.git
synced 2025-06-26 06:56:36 +00:00
Added logging to rename_files
Also, the fuzzy matching, by key in the filename, begins at the source directory.
This commit is contained in:
parent
4f56ebd1ce
commit
2ee635118b
@ -14,6 +14,7 @@ from django.core.validators import RegexValidator
|
|||||||
from django.utils.text import slugify
|
from django.utils.text import slugify
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
from common.logger import log
|
||||||
from common.errors import NoFormatException
|
from common.errors import NoFormatException
|
||||||
from common.utils import clean_filename, clean_emoji
|
from common.utils import clean_filename, clean_emoji
|
||||||
from .youtube import (get_media_info as get_youtube_media_info,
|
from .youtube import (get_media_info as get_youtube_media_info,
|
||||||
@ -1525,17 +1526,22 @@ class Media(models.Model):
|
|||||||
|
|
||||||
# move video to destination
|
# move video to destination
|
||||||
mkdir_p(new_video_path.parent)
|
mkdir_p(new_video_path.parent)
|
||||||
|
log.debug(f'{self!s}: {old_video_path!s} => {new_video_path!s}')
|
||||||
old_video_path.rename(new_video_path)
|
old_video_path.rename(new_video_path)
|
||||||
|
log.info(f'Renamed video file for: {self!s}')
|
||||||
|
|
||||||
# collect the list of files to move
|
# collect the list of files to move
|
||||||
# this should not include the video we just moved
|
# this should not include the video we just moved
|
||||||
(old_prefix_path, old_stem) = directory_and_stem(old_video_path)
|
(old_prefix_path, old_stem) = directory_and_stem(old_video_path)
|
||||||
other_paths = list(old_prefix_path.glob(glob_quote(old_stem) + '*'))
|
other_paths = list(old_prefix_path.glob(glob_quote(old_stem) + '*'))
|
||||||
|
log.info(f'Collected {len(other_paths)} other paths for: {self!s}')
|
||||||
|
|
||||||
# adopt orphaned files, if possible
|
# adopt orphaned files, if possible
|
||||||
media_format = str(self.source.media_format)
|
media_format = str(self.source.media_format)
|
||||||
|
top_dir_path = Path(self.source.directory_path)
|
||||||
if '{key}' in media_format:
|
if '{key}' in media_format:
|
||||||
fuzzy_paths = list(old_prefix_path.glob('*' + glob_quote(str(self.key)) + '*'))
|
fuzzy_paths = list(top_dir_path.rglob('*' + glob_quote(str(self.key)) + '*'))
|
||||||
|
log.info(f'Collected {len(fuzzy_paths)} fuzzy paths for: {self!s}')
|
||||||
|
|
||||||
if new_video_path.exists():
|
if new_video_path.exists():
|
||||||
new_video_path = new_video_path.resolve(strict=True)
|
new_video_path = new_video_path.resolve(strict=True)
|
||||||
@ -1544,6 +1550,7 @@ class Media(models.Model):
|
|||||||
self.media_file.name = str(new_video_path.relative_to(media_file_storage.location))
|
self.media_file.name = str(new_video_path.relative_to(media_file_storage.location))
|
||||||
self.save(update_fields={'media_file'})
|
self.save(update_fields={'media_file'})
|
||||||
self.refresh_from_db(fields={'media_file'})
|
self.refresh_from_db(fields={'media_file'})
|
||||||
|
log.info(f'Updated "media_file" in the database for: {self!s}')
|
||||||
|
|
||||||
(new_prefix_path, new_stem) = directory_and_stem(new_video_path)
|
(new_prefix_path, new_stem) = directory_and_stem(new_video_path)
|
||||||
|
|
||||||
@ -1552,8 +1559,10 @@ class Media(models.Model):
|
|||||||
old_file_str = other_path.name
|
old_file_str = other_path.name
|
||||||
new_file_str = new_stem + old_file_str[len(old_stem):]
|
new_file_str = new_stem + old_file_str[len(old_stem):]
|
||||||
new_file_path = Path(new_prefix_path / new_file_str)
|
new_file_path = Path(new_prefix_path / new_file_str)
|
||||||
|
log.debug(f'Considering replace for: {self!s}\n\t{other_path!s}\n\t{new_file_path!s}')
|
||||||
# it should exist, but check anyway
|
# it should exist, but check anyway
|
||||||
if other_path.exists():
|
if other_path.exists():
|
||||||
|
log.debug(f'{self!s}: {other_path!s} => {new_file_path!s}')
|
||||||
other_path.replace(new_file_path)
|
other_path.replace(new_file_path)
|
||||||
|
|
||||||
for fuzzy_path in fuzzy_paths:
|
for fuzzy_path in fuzzy_paths:
|
||||||
@ -1561,19 +1570,23 @@ class Media(models.Model):
|
|||||||
old_file_str = fuzzy_path.name
|
old_file_str = fuzzy_path.name
|
||||||
new_file_str = new_stem + old_file_str[len(fuzzy_stem):]
|
new_file_str = new_stem + old_file_str[len(fuzzy_stem):]
|
||||||
new_file_path = Path(new_prefix_path / new_file_str)
|
new_file_path = Path(new_prefix_path / new_file_str)
|
||||||
|
log.debug(f'Considering rename for: {self!s}\n\t{fuzzy_path!s}\n\t{new_file_path!s}')
|
||||||
# it quite possibly was renamed already
|
# it quite possibly was renamed already
|
||||||
if fuzzy_path.exists() and not new_file_path.exists():
|
if fuzzy_path.exists() and not new_file_path.exists():
|
||||||
|
log.debug(f'{self!s}: {fuzzy_path!s} => {new_file_path!s}')
|
||||||
fuzzy_path.rename(new_file_path)
|
fuzzy_path.rename(new_file_path)
|
||||||
|
|
||||||
# The thumbpath inside the .nfo file may have changed
|
# The thumbpath inside the .nfo file may have changed
|
||||||
if self.source.write_nfo and self.source.copy_thumbnails:
|
if self.source.write_nfo and self.source.copy_thumbnails:
|
||||||
write_text_file(new_prefix_path / self.nfopath.name, self.nfoxml)
|
write_text_file(new_prefix_path / self.nfopath.name, self.nfoxml)
|
||||||
|
log.info(f'Wrote new ".nfo" file for: {self!s}')
|
||||||
|
|
||||||
# try to remove empty dirs
|
# try to remove empty dirs
|
||||||
parent_dir = old_video_path.parent
|
parent_dir = old_video_path.parent
|
||||||
try:
|
try:
|
||||||
while parent_dir.is_dir():
|
while parent_dir.is_dir():
|
||||||
parent_dir.rmdir()
|
parent_dir.rmdir()
|
||||||
|
log.info(f'Removed empty directory: {parent_dir!s}')
|
||||||
parent_dir = parent_dir.parent
|
parent_dir = parent_dir.parent
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
pass
|
pass
|
||||||
|
Loading…
Reference in New Issue
Block a user