tweaks related to #572

This commit is contained in:
meeb committed 2024-12-11 22:56:21 +11:00
1 parent a8997400b2
commit 5f28b8be66
4 files changed
+35 -28

No files matched your search

+3
View File
@@ -514,10 +514,13 @@ class Source(models.Model):
@property
def type_directory_path(self):
if settings.SOURCE_DOWNLOAD_DIRECTORY_PREFIX:
if self.source_resolution == self.SOURCE_RESOLUTION_AUDIO:
return Path(settings.DOWNLOAD_AUDIO_DIR) / self.directory
else:
return Path(settings.DOWNLOAD_VIDEO_DIR) / self.directory
else:
return Path(self.directory)
def make_directory(self):
return os.makedirs(self.directory_path, exist_ok=True)
+21 -28
View File
@@ -628,6 +628,25 @@ class FilepathTestCase(TestCase):
('no-fancy-stuff-title_test_720p-720x1280-opus'
'-vp9-30fps-hdr.mkv'))
def test_directory_prefix(self):
# Confirm the setting exists and is valid
self.assertTrue(hasattr(settings, 'SOURCE_DOWNLOAD_DIRECTORY_PREFIX'))
self.assertTrue(isinstance(settings.SOURCE_DOWNLOAD_DIRECTORY_PREFIX, bool))
# Test the default behavior for "True", forced "audio" or "video" parent directories for sources
settings.SOURCE_DOWNLOAD_DIRECTORY_PREFIX = True
self.source.source_resolution = Source.SOURCE_RESOLUTION_AUDIO
test_audio_prefix_path = Path(self.source.directory_path)
self.assertEqual(test_audio_prefix_path.parts[-2], 'audio')
self.assertEqual(test_audio_prefix_path.parts[-1], 'testdirectory')
self.source.source_resolution = Source.SOURCE_RESOLUTION_1080P
test_video_prefix_path = Path(self.source.directory_path)
self.assertEqual(test_video_prefix_path.parts[-2], 'video')
self.assertEqual(test_video_prefix_path.parts[-1], 'testdirectory')
# Test the default behavior for "False", no parent directories for sources
settings.SOURCE_DOWNLOAD_DIRECTORY_PREFIX = False
test_no_prefix_path = Path(self.source.directory_path)
self.assertEqual(test_no_prefix_path.parts[-1], 'testdirectory')
class MediaTestCase(TestCase):
@@ -1689,7 +1708,9 @@ class FormatMatchingTestCase(TestCase):
msg=f'Media title "{self.media.title}" checked against regex "{self.source.filter_text}" failed '
f'expected {expected_match_result}')
class TasksTestCase(TestCase):
def setUp(self):
# Disable general logging for test case
logging.disable(logging.CRITICAL)
@@ -1716,31 +1737,3 @@ class TasksTestCase(TestCase):
self.assertEqual(src1.media_source.all().count(), 3)
self.assertEqual(src2.media_source.all().count(), 2)
self.assertEqual(Media.objects.filter(pk=m22.pk).exists(), False)
class TypeDirectoryPathTestCase(TestCase):
def setUp(self):
self.source = Source(
directory="test_directory",
source_resolution=Source.SOURCE_RESOLUTION_AUDIO,
)
def test_directory_prefix_default(self):
"""
Test that default directory prefix exist.
"""
os.environ['TUBESYNC_DIRECTORY_PREFIX'] = ''
self.assertEqual(self.source.type_directory_path, Path(settings.DOWNLOAD_AUDIO_DIR) / 'test_directory')
def test_directory_prefix_true(self):
"""
Test that when TUBESYNC_DIRECTORY_PREFIX is set to true the directory prefix exist.
"""
os.environ['TUBESYNC_DIRECTORY_PREFIX'] = 'true'
self.assertEqual(self.source.type_directory_path, Path(settings.DOWNLOAD_AUDIO_DIR) / 'test_directory')
def test_directory_prefix_false(self):
"""
Test that when TUBESYNC_DIRECTORY_PREFIX is set to false the directory prefix does not exist.
"""
os.environ['TUBESYNC_DIRECTORY_PREFIX'] = 'false'
self.assertEqual(self.source.type_directory_path, Path('.') / 'test_directory')
@@ -81,3 +81,6 @@ if BASICAUTH_USERNAME and BASICAUTH_PASSWORD:
else:
BASICAUTH_DISABLE = True
BASICAUTH_USERS = {}
SOURCE_DOWNLOAD_DIRECTORY_PREFIX = os.getenv('TUBESYNC_DIRECTORY_PREFIX', 'True').strip().lower()
+8
View File
@@ -158,6 +158,14 @@ VIDEO_HEIGHT_CUTOFF = int(os.getenv("VIDEO_HEIGHT_CUTOFF", "240")) # Smallest r
VIDEO_HEIGHT_IS_HD = 500 # Height in pixels to count as 'HD'
# If True source directories are prefixed with their type (either 'video' or 'audio')
# e.g. /downloads/video/SomeSourceName
# If False, sources are placed directly in /downloads
# e.g. /downloads/SomeSourceName
SOURCE_DOWNLOAD_DIRECTORY_PREFIX = True
YOUTUBE_DL_CACHEDIR = None
YOUTUBE_DL_TEMPDIR = None
YOUTUBE_DEFAULTS = {