This commit is contained in:
Yuvi9587
2025-07-10 09:59:51 -07:00
parent f214d2452e
commit fa198c41c1
2 changed files with 82 additions and 15 deletions

View File

@@ -77,6 +77,7 @@ class PostProcessorWorker:
scan_content_for_images =False ,
creator_download_folder_ignore_words =None ,
manga_global_file_counter_ref =None ,
use_date_prefix_for_subfolder=False,
session_file_path=None,
session_lock=None,
):
@@ -128,6 +129,7 @@ class PostProcessorWorker:
self .override_output_dir =override_output_dir
self .scan_content_for_images =scan_content_for_images
self .creator_download_folder_ignore_words =creator_download_folder_ignore_words
self.use_date_prefix_for_subfolder = use_date_prefix_for_subfolder
self.session_file_path = session_file_path
self.session_lock = session_lock
if self .compress_images and Image is None :
@@ -1003,6 +1005,20 @@ class PostProcessorWorker:
else :
original_cleaned_post_title_for_sub =cleaned_post_title_for_sub
if self.use_date_prefix_for_subfolder:
# Prioritize 'published' date, fall back to 'added' date
published_date_str = self.post.get('published') or self.post.get('added')
if published_date_str:
try:
# Extract just the date part (YYYY-MM-DD)
date_prefix = published_date_str.split('T')[0]
# Prepend the date to the folder name
original_cleaned_post_title_for_sub = f"{date_prefix} {original_cleaned_post_title_for_sub}"
self.logger(f" Applying date prefix to subfolder: '{original_cleaned_post_title_for_sub}'")
except Exception as e:
self.logger(f" ⚠️ Could not parse date '{published_date_str}' for prefix. Using original name. Error: {e}")
else:
self.logger(" ⚠️ 'Date Prefix' is checked, but post has no 'published' or 'added' date. Omitting prefix.")
base_path_for_post_subfolder =determined_post_save_path_for_history
@@ -1443,6 +1459,7 @@ class DownloadThread (QThread ):
use_cookie =False ,
scan_content_for_images =False ,
creator_download_folder_ignore_words =None ,
use_date_prefix_for_subfolder=False,
cookie_text ="",
session_file_path=None,
session_lock=None,
@@ -1495,6 +1512,7 @@ class DownloadThread (QThread ):
self .manga_date_file_counter_ref =manga_date_file_counter_ref
self .scan_content_for_images =scan_content_for_images
self .creator_download_folder_ignore_words =creator_download_folder_ignore_words
self.use_date_prefix_for_subfolder = use_date_prefix_for_subfolder
self .manga_global_file_counter_ref =manga_global_file_counter_ref
self.session_file_path = session_file_path
self.session_lock = session_lock
@@ -1627,6 +1645,7 @@ class DownloadThread (QThread ):
manga_global_file_counter_ref =self .manga_global_file_counter_ref ,
use_cookie =self .use_cookie ,
manga_date_file_counter_ref =self .manga_date_file_counter_ref ,
use_date_prefix_for_subfolder=self.use_date_prefix_for_subfolder,
creator_download_folder_ignore_words =self .creator_download_folder_ignore_words ,
session_file_path=self.session_file_path,
session_lock=self.session_lock,

View File

@@ -1223,6 +1223,11 @@ class DownloaderApp (QWidget ):
self .use_subfolder_per_post_checkbox .toggled .connect (self .update_ui_for_subfolders )
advanced_row1_layout .addWidget (self .use_subfolder_per_post_checkbox )
self.date_prefix_checkbox = QCheckBox("Date Prefix")
self.date_prefix_checkbox.setChecked(False)
self.date_prefix_checkbox.setToolTip("When 'Subfolder per Post' is active, prefix the folder name with the post's upload date (e.g., YYYY-MM-DD Post Title).")
advanced_row1_layout.addWidget(self.date_prefix_checkbox)
self .use_cookie_checkbox =QCheckBox ("Use Cookie")
self .use_cookie_checkbox .setChecked (self .use_cookie_setting )
@@ -2721,6 +2726,13 @@ class DownloaderApp (QWidget ):
if not can_enable_subfolder_per_post_checkbox :
self .use_subfolder_per_post_checkbox .setChecked (False )
if hasattr(self, 'date_prefix_checkbox'):
# The Date Prefix checkbox should only be enabled if "Subfolder per Post" is both enabled and checked
can_enable_date_prefix = self.use_subfolder_per_post_checkbox.isEnabled() and self.use_subfolder_per_post_checkbox.isChecked()
self.date_prefix_checkbox.setEnabled(can_enable_date_prefix)
if not can_enable_date_prefix:
self.date_prefix_checkbox.setChecked(False)
self .update_custom_folder_visibility ()
@@ -3718,6 +3730,7 @@ class DownloaderApp (QWidget ):
'session_file_path': self.session_file_path,
'session_lock': self.session_lock,
'creator_download_folder_ignore_words':creator_folder_ignore_words_for_run ,
'use_date_prefix_for_subfolder': self.date_prefix_checkbox.isChecked() if hasattr(self, 'date_prefix_checkbox') else False,
}
args_template ['override_output_dir']=override_output_dir
@@ -4070,21 +4083,56 @@ class DownloaderApp (QWidget ):
num_file_dl_threads_for_each_worker =worker_args_template .get ('num_file_threads_for_worker',1 )
ppw_expected_keys =[
'post_data','download_root','known_names','filter_character_list','unwanted_keywords',
'filter_mode','skip_zip','skip_rar','use_subfolders','use_post_subfolders',
'target_post_id_from_initial_url','custom_folder_name','compress_images','emitter','pause_event',
'download_thumbnails','service','user_id','api_url_input',
'cancellation_event','downloaded_files','downloaded_file_hashes',
'downloaded_files_lock','downloaded_file_hashes_lock','remove_from_filename_words_list','dynamic_character_filter_holder',
'skip_words_list','skip_words_scope','char_filter_scope',
'show_external_links','extract_links_only','allow_multipart_download','use_cookie','cookie_text',
'app_base_dir','selected_cookie_file','override_output_dir',
'num_file_threads','skip_current_file_flag','manga_date_file_counter_ref','scan_content_for_images',
'manga_mode_active','manga_filename_style','manga_date_prefix',
'manga_global_file_counter_ref'
,'creator_download_folder_ignore_words'
, 'session_file_path', 'session_lock'
ppw_expected_keys = [
'post_data',
'download_root',
'known_names',
'filter_character_list',
'unwanted_keywords',
'filter_mode',
'skip_zip',
'skip_rar',
'use_subfolders',
'use_post_subfolders',
'target_post_id_from_initial_url',
'custom_folder_name',
'compress_images',
'emitter',
'pause_event',
'download_thumbnails',
'service',
'user_id',
'api_url_input',
'cancellation_event',
'downloaded_files',
'downloaded_file_hashes',
'downloaded_files_lock',
'downloaded_file_hashes_lock',
'remove_from_filename_words_list',
'dynamic_character_filter_holder',
'skip_words_list',
'skip_words_scope',
'char_filter_scope',
'show_external_links',
'extract_links_only',
'allow_multipart_download',
'use_cookie',
'cookie_text',
'app_base_dir',
'selected_cookie_file',
'override_output_dir',
'num_file_threads',
'skip_current_file_flag',
'manga_date_file_counter_ref',
'scan_content_for_images',
'manga_mode_active',
'manga_filename_style',
'manga_date_prefix',
'use_date_prefix_for_subfolder',
'manga_global_file_counter_ref',
'creator_download_folder_ignore_words',
'session_file_path',
'session_lock'
]
ppw_optional_keys_with_defaults ={