From 4bbdfd2f24de4a55c0328efb9cdb8ae612e08c8a Mon Sep 17 00:00:00 2001 From: tcely Date: Sun, 22 Dec 2024 09:44:27 -0500 Subject: [PATCH 1/7] Fix paths for when filename includes sub-directories --- tubesync/sync/models.py | 78 ++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/tubesync/sync/models.py b/tubesync/sync/models.py index 455a38a5..b969ec4e 100644 --- a/tubesync/sync/models.py +++ b/tubesync/sync/models.py @@ -1261,45 +1261,6 @@ class Media(models.Model): media_details = self.format_dict return media_format.format(**media_details) - @property - def thumbname(self): - if self.downloaded and self.media_file: - filename = os.path.basename(self.media_file.path) - else: - filename = self.filename - prefix, ext = os.path.splitext(filename) - return f'{prefix}.jpg' - - @property - def thumbpath(self): - return self.source.directory_path / self.thumbname - - @property - def nfoname(self): - if self.downloaded and self.media_file: - filename = os.path.basename(self.media_file.path) - else: - filename = self.filename - prefix, ext = os.path.splitext(filename) - return f'{prefix}.nfo' - - @property - def nfopath(self): - return self.source.directory_path / self.nfoname - - @property - def jsonname(self): - if self.downloaded and self.media_file: - filename = os.path.basename(self.media_file.path) - else: - filename = self.filename - prefix, ext = os.path.splitext(filename) - return f'{prefix}.info.json' - - @property - def jsonpath(self): - return self.source.directory_path / self.jsonname - @property def directory_path(self): dirname = self.source.directory_path / self.filename @@ -1309,6 +1270,45 @@ class Media(models.Model): def filepath(self): return self.source.directory_path / self.filename + @property + def thumbname(self): + if self.downloaded and self.media_file: + filename = self.media_file.path + else: + filename = self.filename + prefix, ext = os.path.splitext(os.path.basename(filename)) + return f'{prefix}.jpg' + + @property + def thumbpath(self): + return self.directory_path / self.thumbname + + @property + def nfoname(self): + if self.downloaded and self.media_file: + filename = self.media_file.path + else: + filename = self.filename + prefix, ext = os.path.splitext(os.path.basename(filename)) + return f'{prefix}.nfo' + + @property + def nfopath(self): + return self.directory_path / self.nfoname + + @property + def jsonname(self): + if self.downloaded and self.media_file: + filename = self.media_file.path + else: + filename = self.filename + prefix, ext = os.path.splitext(os.path.basename(filename)) + return f'{prefix}.info.json' + + @property + def jsonpath(self): + return self.directory_path / self.jsonname + @property def thumb_file_exists(self): if not self.thumb: From 8ebb333ea35d557f93d71cda5922110090aa4924 Mon Sep 17 00:00:00 2001 From: tcely Date: Sun, 22 Dec 2024 10:09:16 -0500 Subject: [PATCH 2/7] directory_path should be a Path, not str --- tubesync/sync/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tubesync/sync/models.py b/tubesync/sync/models.py index b969ec4e..e0c23bf8 100644 --- a/tubesync/sync/models.py +++ b/tubesync/sync/models.py @@ -1264,7 +1264,7 @@ class Media(models.Model): @property def directory_path(self): dirname = self.source.directory_path / self.filename - return os.path.dirname(str(dirname)) + return dirname.parent @property def filepath(self): From 20527aa3c2cc5f67da7e53999d5a28c1055793bc Mon Sep 17 00:00:00 2001 From: tcely Date: Sun, 22 Dec 2024 10:26:41 -0500 Subject: [PATCH 3/7] Update tests to not expect strings --- tubesync/sync/tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tubesync/sync/tests.py b/tubesync/sync/tests.py index 6aa0ccb6..8f0de6ef 100644 --- a/tubesync/sync/tests.py +++ b/tubesync/sync/tests.py @@ -597,11 +597,11 @@ class FilepathTestCase(TestCase): # Check child directories work self.source.media_format = '{yyyy}/{key}.{ext}' self.assertEqual(self.media.directory_path, - str(self.source.directory_path / '2017')) + self.source.directory_path / '2017') self.assertEqual(self.media.filename, '2017/mediakey.mkv') self.source.media_format = '{yyyy}/{yyyy_mm_dd}/{key}.{ext}' self.assertEqual(self.media.directory_path, - str(self.source.directory_path / '2017/2017-09-11')) + self.source.directory_path / '2017/2017-09-11') self.assertEqual(self.media.filename, '2017/2017-09-11/mediakey.mkv') # Check media specific media format keys work test_media = Media.objects.create( From 495f62f25a3efaf668b9758c1cb8ef02476bbbf0 Mon Sep 17 00:00:00 2001 From: tcely Date: Sun, 22 Dec 2024 11:14:32 -0500 Subject: [PATCH 4/7] Display only the name part `media.filename` is a `str` `media.filepath` is a `Path` The second has a simple way to remove directories, so use that instead of any custom string manipulation. --- tubesync/sync/templates/sync/media-item.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tubesync/sync/templates/sync/media-item.html b/tubesync/sync/templates/sync/media-item.html index 0c78f9b4..d6a74d9f 100644 --- a/tubesync/sync/templates/sync/media-item.html +++ b/tubesync/sync/templates/sync/media-item.html @@ -98,7 +98,7 @@ {% if media.downloaded %} Filename - Filename
{{ media.filename }} + Filename
{{ media.filepath.name }} Directory From 8a04139da9f300d6560b2aefebf4f9a7d92a118e Mon Sep 17 00:00:00 2001 From: tcely Date: Sun, 22 Dec 2024 11:46:29 -0500 Subject: [PATCH 5/7] Add data items to make comparison easier --- tubesync/sync/views.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tubesync/sync/views.py b/tubesync/sync/views.py index 94e91432..52090042 100644 --- a/tubesync/sync/views.py +++ b/tubesync/sync/views.py @@ -582,6 +582,8 @@ class MediaItemView(DetailView): data['video_exact'] = video_exact data['video_format'] = video_format data['youtube_dl_format'] = self.object.get_format_str() + data['filename_path'] = pathlib.Path(self.object.filename) + data['media_file_path'] = pathlib.Path(self.object.media_file.path) if self.object.media_file else None return data From d1c6236b9d7ba8848f61be1dae81b59ed7241c9c Mon Sep 17 00:00:00 2001 From: tcely Date: Sun, 22 Dec 2024 11:54:56 -0500 Subject: [PATCH 6/7] Display the location the media was actually saved to --- tubesync/sync/templates/sync/media-item.html | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tubesync/sync/templates/sync/media-item.html b/tubesync/sync/templates/sync/media-item.html index d6a74d9f..a326b09b 100644 --- a/tubesync/sync/templates/sync/media-item.html +++ b/tubesync/sync/templates/sync/media-item.html @@ -100,10 +100,17 @@ Filename Filename
{{ media.filepath.name }} - + Directory Directory
{{ media.directory_path }} + + Database Filepath + DB Filepath
{{ media_file_path }} + {% if media_file_path == media.filepath %} +  (matched) + {% endif %} + File size File size
{{ media.downloaded_filesize|filesizeformat }} From 8def84c7b4b4ee510eee8ae449ef031bb311bff3 Mon Sep 17 00:00:00 2001 From: tcely Date: Wed, 25 Dec 2024 01:17:04 -0500 Subject: [PATCH 7/7] Use filename_path It's more directly what we want here. If `filepath` ever changed to not use `filename` the value would be incorrect, so this is the cleaner way to display this value. --- tubesync/sync/templates/sync/media-item.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tubesync/sync/templates/sync/media-item.html b/tubesync/sync/templates/sync/media-item.html index a326b09b..6f751be6 100644 --- a/tubesync/sync/templates/sync/media-item.html +++ b/tubesync/sync/templates/sync/media-item.html @@ -98,7 +98,7 @@ {% if media.downloaded %} Filename - Filename
{{ media.filepath.name }} + Filename
{{ filename_path.name }} Directory