mirror of
https://github.com/Yuvi9587/Kemono-Downloader.git
synced 2025-12-29 16:14:44 +00:00
Commit
This commit is contained in:
@@ -77,6 +77,7 @@ class PostProcessorWorker:
|
|||||||
scan_content_for_images =False ,
|
scan_content_for_images =False ,
|
||||||
creator_download_folder_ignore_words =None ,
|
creator_download_folder_ignore_words =None ,
|
||||||
manga_global_file_counter_ref =None ,
|
manga_global_file_counter_ref =None ,
|
||||||
|
use_date_prefix_for_subfolder=False,
|
||||||
session_file_path=None,
|
session_file_path=None,
|
||||||
session_lock=None,
|
session_lock=None,
|
||||||
):
|
):
|
||||||
@@ -128,6 +129,7 @@ class PostProcessorWorker:
|
|||||||
self .override_output_dir =override_output_dir
|
self .override_output_dir =override_output_dir
|
||||||
self .scan_content_for_images =scan_content_for_images
|
self .scan_content_for_images =scan_content_for_images
|
||||||
self .creator_download_folder_ignore_words =creator_download_folder_ignore_words
|
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_file_path = session_file_path
|
||||||
self.session_lock = session_lock
|
self.session_lock = session_lock
|
||||||
if self .compress_images and Image is None :
|
if self .compress_images and Image is None :
|
||||||
@@ -1003,6 +1005,20 @@ class PostProcessorWorker:
|
|||||||
else :
|
else :
|
||||||
original_cleaned_post_title_for_sub =cleaned_post_title_for_sub
|
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
|
base_path_for_post_subfolder =determined_post_save_path_for_history
|
||||||
|
|
||||||
@@ -1443,6 +1459,7 @@ class DownloadThread (QThread ):
|
|||||||
use_cookie =False ,
|
use_cookie =False ,
|
||||||
scan_content_for_images =False ,
|
scan_content_for_images =False ,
|
||||||
creator_download_folder_ignore_words =None ,
|
creator_download_folder_ignore_words =None ,
|
||||||
|
use_date_prefix_for_subfolder=False,
|
||||||
cookie_text ="",
|
cookie_text ="",
|
||||||
session_file_path=None,
|
session_file_path=None,
|
||||||
session_lock=None,
|
session_lock=None,
|
||||||
@@ -1495,6 +1512,7 @@ class DownloadThread (QThread ):
|
|||||||
self .manga_date_file_counter_ref =manga_date_file_counter_ref
|
self .manga_date_file_counter_ref =manga_date_file_counter_ref
|
||||||
self .scan_content_for_images =scan_content_for_images
|
self .scan_content_for_images =scan_content_for_images
|
||||||
self .creator_download_folder_ignore_words =creator_download_folder_ignore_words
|
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 .manga_global_file_counter_ref =manga_global_file_counter_ref
|
||||||
self.session_file_path = session_file_path
|
self.session_file_path = session_file_path
|
||||||
self.session_lock = session_lock
|
self.session_lock = session_lock
|
||||||
@@ -1627,6 +1645,7 @@ class DownloadThread (QThread ):
|
|||||||
manga_global_file_counter_ref =self .manga_global_file_counter_ref ,
|
manga_global_file_counter_ref =self .manga_global_file_counter_ref ,
|
||||||
use_cookie =self .use_cookie ,
|
use_cookie =self .use_cookie ,
|
||||||
manga_date_file_counter_ref =self .manga_date_file_counter_ref ,
|
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 ,
|
creator_download_folder_ignore_words =self .creator_download_folder_ignore_words ,
|
||||||
session_file_path=self.session_file_path,
|
session_file_path=self.session_file_path,
|
||||||
session_lock=self.session_lock,
|
session_lock=self.session_lock,
|
||||||
|
|||||||
@@ -1223,6 +1223,11 @@ class DownloaderApp (QWidget ):
|
|||||||
self .use_subfolder_per_post_checkbox .toggled .connect (self .update_ui_for_subfolders )
|
self .use_subfolder_per_post_checkbox .toggled .connect (self .update_ui_for_subfolders )
|
||||||
advanced_row1_layout .addWidget (self .use_subfolder_per_post_checkbox )
|
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 =QCheckBox ("Use Cookie")
|
||||||
self .use_cookie_checkbox .setChecked (self .use_cookie_setting )
|
self .use_cookie_checkbox .setChecked (self .use_cookie_setting )
|
||||||
|
|
||||||
@@ -2721,6 +2726,13 @@ class DownloaderApp (QWidget ):
|
|||||||
if not can_enable_subfolder_per_post_checkbox :
|
if not can_enable_subfolder_per_post_checkbox :
|
||||||
self .use_subfolder_per_post_checkbox .setChecked (False )
|
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 ()
|
self .update_custom_folder_visibility ()
|
||||||
|
|
||||||
|
|
||||||
@@ -3718,6 +3730,7 @@ class DownloaderApp (QWidget ):
|
|||||||
'session_file_path': self.session_file_path,
|
'session_file_path': self.session_file_path,
|
||||||
'session_lock': self.session_lock,
|
'session_lock': self.session_lock,
|
||||||
'creator_download_folder_ignore_words':creator_folder_ignore_words_for_run ,
|
'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
|
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 )
|
num_file_dl_threads_for_each_worker =worker_args_template .get ('num_file_threads_for_worker',1 )
|
||||||
|
|
||||||
|
|
||||||
ppw_expected_keys =[
|
ppw_expected_keys = [
|
||||||
'post_data','download_root','known_names','filter_character_list','unwanted_keywords',
|
'post_data',
|
||||||
'filter_mode','skip_zip','skip_rar','use_subfolders','use_post_subfolders',
|
'download_root',
|
||||||
'target_post_id_from_initial_url','custom_folder_name','compress_images','emitter','pause_event',
|
'known_names',
|
||||||
'download_thumbnails','service','user_id','api_url_input',
|
'filter_character_list',
|
||||||
'cancellation_event','downloaded_files','downloaded_file_hashes',
|
'unwanted_keywords',
|
||||||
'downloaded_files_lock','downloaded_file_hashes_lock','remove_from_filename_words_list','dynamic_character_filter_holder',
|
'filter_mode',
|
||||||
'skip_words_list','skip_words_scope','char_filter_scope',
|
'skip_zip',
|
||||||
'show_external_links','extract_links_only','allow_multipart_download','use_cookie','cookie_text',
|
'skip_rar',
|
||||||
'app_base_dir','selected_cookie_file','override_output_dir',
|
'use_subfolders',
|
||||||
'num_file_threads','skip_current_file_flag','manga_date_file_counter_ref','scan_content_for_images',
|
'use_post_subfolders',
|
||||||
'manga_mode_active','manga_filename_style','manga_date_prefix',
|
'target_post_id_from_initial_url',
|
||||||
'manga_global_file_counter_ref'
|
'custom_folder_name',
|
||||||
,'creator_download_folder_ignore_words'
|
'compress_images',
|
||||||
, 'session_file_path', 'session_lock'
|
'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 ={
|
ppw_optional_keys_with_defaults ={
|
||||||
|
|||||||
Reference in New Issue
Block a user