Merge pull request #1 from tcely/patch-4

directory mode on settings
This commit is contained in:
James W. Lane III 2024-12-09 20:53:00 -06:00 committed by GitHub
commit cf1aec6922
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 28 deletions

View File

@ -514,35 +514,10 @@ class Source(models.Model):
@property
def type_directory_path(self):
# Get the directory mode from the environment
directory_mode = os.getenv("TUBESYNC_DIRECTORY_MODE", "default")
# Default behavior
if directory_mode == "default":
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
# Flat mode - Place all files in the root
elif directory_mode == "flat":
return Path(settings.DOWNLOAD_DIR) / self.directory
# Custom mode - Parse prefixes for audio and video
elif directory_mode.startswith("custom:"):
try:
audio_prefix, video_prefix = directory_mode.split(":")[1].split(",")
except ValueError:
raise ValueError("Invalid format for TUBESYNC_DIRECTORY_MODE=custom. Expected 'custom:audio_prefix,video_prefix'.")
if self.source_resolution == self.SOURCE_RESOLUTION_AUDIO:
return Path(settings.DOWNLOAD_DIR) / audio_prefix / self.directory
else:
return Path(settings.DOWNLOAD_DIR) / video_prefix / self.directory
# Fallback for invalid modes
if self.source_resolution == self.SOURCE_RESOLUTION_AUDIO:
return Path(settings.DOWNLOAD_AUDIO_DIR) / self.directory
else:
raise ValueError(f"Unsupported TUBESYNC_DIRECTORY_MODE: {directory_mode}")
return Path(settings.DOWNLOAD_VIDEO_DIR) / self.directory
def make_directory(self):
return os.makedirs(self.directory_path, exist_ok=True)

View File

@ -112,6 +112,19 @@ DOWNLOAD_VIDEO_DIR = 'video'
DOWNLOAD_AUDIO_DIR = 'audio'
SASS_PROCESSOR_ROOT = STATIC_ROOT
directory_mode = os.getenv('TUBESYNC_DIRECTORY_MODE', 'default')
if directory_mode == 'flat':
DOWNLOAD_VIDEO_DIR = '.'
DOWNLOAD_AUDIO_DIR = '.'
elif directory_mode.startswith('custom:'):
custom_value = directory_mode.split(':', maxsplit=1)[1]
if ',' in custom_value:
DOWNLOAD_AUDIO_DIR, DOWNLOAD_VIDEO_DIR = custom_value.split(',', maxsplit=1)
else:
raise ValueError("Invalid format for TUBESYNC_DIRECTORY_MODE=custom. Expected 'custom:audio_prefix,video_prefix'.")
elif directory_mode not in ('', 'default'):
raise ValueError(f"Unsupported TUBESYNC_DIRECTORY_MODE: {directory_mode}")
ROBOTS = '''
User-agent: *