diff --git a/main.py b/main.py
index 8864bde..4edf08d 100644
--- a/main.py
+++ b/main.py
@@ -133,7 +133,7 @@ class TourDialog(QDialog):
CONFIG_ORGANIZATION_NAME = "KemonoDownloader" # Shared with main app for consistency if needed, but can be distinct
CONFIG_APP_NAME_TOUR = "ApplicationTour" # Specific QSettings group for tour
- TOUR_SHOWN_KEY = "neverShowTourAgainV3" # Updated key for new tour content
+ TOUR_SHOWN_KEY = "neverShowTourAgainV4" # Updated key for new tour content
def __init__(self, parent=None):
super().__init__(parent)
@@ -202,7 +202,7 @@ class TourDialog(QDialog):
# --- Define Tour Steps with Updated Content ---
step1_content = (
- "Hello! This quick tour will walk you through the main features of the Kemono Downloader."
+ "Hello! This quick tour will walk you through the main features of the Kemono Downloader, including recent updates."
"
"
"- Our goal is to help you easily download content from Kemono and Coomer.
"
"- Use the Next and Back buttons to navigate.
"
@@ -232,23 +232,26 @@ class TourDialog(QDialog):
"Refine what you download with these filters:"
""
"- 🎯 Filter by Character(s):
"
- " Enter character names, comma-separated (e.g., Tifa, Aerith). "
- " - In Normal Mode, this filters individual files by matching their filenames.
"
- " - In Manga/Comic Mode, this filters entire posts by matching the post title. Useful for targeting specific series.
"
- " - Also helps in folder naming if 'Separate Folders' is enabled.
"
+ " Enter character names, comma-separated (e.g., Tifa, Aerith). Group aliases for a combined folder name: (alias1, alias2) becomes folder 'alias1 alias2'.
"
+ " The 'Filter: [Scope]' button next to this input controls how this filter is applied:"
+ " - Filter: Files: Checks individual filenames. A post is kept if any file matches; only matching files are downloaded.
"
+ " - Filter: Title: Checks post titles. All files from a matching post are downloaded.
"
+ " - Filter: Both: Checks post title first. If it matches, all files are downloaded. If not, it then checks filenames, and only matching files are downloaded.
"
+ " - Filter: Comments (Beta): Checks filenames first. If a match, all files are downloaded. If no file match, it then checks post comments. If a comment matches, all files are downloaded. (Uses more API requests).
"
+ " This filter also influences folder naming if 'Separate Folders' is enabled.
"
"- 🚫 Skip with Words:
"
" Enter words, comma-separated (e.g., WIP, sketch, preview). "
- " The Scope button (next to this input) cycles how this filter applies:"
+ " The 'Scope: [Type]' button (next to this input) cycles how this filter applies:"
" - Scope: Files: Skips files if their names contain any of these words.
"
" - Scope: Posts: Skips entire posts if their titles contain any of these words.
"
- " - Scope: Both: Applies both file and post title skipping.
"
+ " - Scope: Both: Applies both file and post title skipping (post first, then files).
"
"- Filter Files (Radio Buttons): Choose what to download:"
"
"
" - All: Downloads all file types found.
"
" - Images/GIFs: Only common image formats and GIFs.
"
" - Videos: Only common video formats.
"
- " - 📦 Only Archives: Exclusively downloads .zip and .rar files. When selected, 'Skip .zip' and 'Skip .rar' checkboxes are automatically disabled and unchecked.
"
- " - 🔗 Only Links: Extracts and displays external links from post descriptions instead of downloading files.
"
+ " - 📦 Only Archives: Exclusively downloads .zip and .rar files. When selected, 'Skip .zip' and 'Skip .rar' checkboxes are automatically disabled and unchecked. 'Show External Links' is also disabled.
"
+ " - 🔗 Only Links: Extracts and displays external links from post descriptions instead of downloading files. Download-related options and 'Show External Links' are disabled.
"
"
"
"
"
)
@@ -259,6 +262,8 @@ class TourDialog(QDialog):
""
"- Skip .zip / Skip .rar: Check these to avoid downloading these archive file types. "
" (Note: These are disabled and ignored if '📦 Only Archives' mode is selected).
"
+ "- ✂️ Remove Words from name:
"
+ " Enter words, comma-separated (e.g., patreon, [HD]), to remove from downloaded filenames (case-insensitive).
"
"- Download Thumbnails Only: Downloads small preview images instead of full-sized files (if available).
"
"- Compress Large Images: If the 'Pillow' library is installed, images larger than 1.5MB will be converted to WebP format if the WebP version is significantly smaller.
"
"- 🗄️ Custom Folder Name (Single Post Only):
"
@@ -274,6 +279,11 @@ class TourDialog(QDialog):
" - ⚙️ Separate Folders by Name/Title: Creates subfolders based on the 'Filter by Character(s)' input or post titles (can use the 'Known Shows/Characters' list as a fallback for folder names).
"
"- Subfolder per Post: If 'Separate Folders' is on, this creates an additional subfolder for each individual post inside the main character/title folder.
"
"- 🚀 Use Multithreading (Threads): Enables faster downloads for creator pages by processing multiple posts or files concurrently. The number of threads can be adjusted. Single post URLs are processed using a single thread for post data but can use multiple threads for file downloads within that post.
"
+ "- Multi-part Download Toggle (Top-right of log area):
"
+ " The 'Multi-part: [ON/OFF]' button allows enabling/disabling multi-segment downloads for individual large files. "
+ " - ON: Can speed up large file downloads (e.g., videos) but may increase UI choppiness or log spam with many small files. An advisory will appear when enabling.
"
+ " - OFF (Default): Files are downloaded in a single stream.
"
+ " This is disabled if 'Only Links' or 'Only Archives' mode is active.
"
"- 📖 Manga/Comic Mode (Creator URLs only): Tailored for sequential content."
"
"
" - Downloads posts from oldest to newest.
"
@@ -296,9 +306,12 @@ class TourDialog(QDialog):
""
"- 📜 Progress Log / Extracted Links Log: Shows detailed download messages. If '🔗 Only Links' mode is active, this area displays the extracted links.
"
"- Show External Links in Log: If checked, a secondary log panel appears below the main log to display any external links found in post descriptions. (This is disabled if '🔗 Only Links' or '📦 Only Archives' mode is active).
"
- "- Log Verbosity (Show Basic/Full Log): Toggles the main log between showing all messages (Full) or only key summaries, errors, and warnings (Basic).
"
+ "- Log View Toggle (👁️ / 🙈 Button):
"
+ " This button (top-right of log area) switches the main log view:"
+ " - 👁️ Progress Log (Default): Shows all download activity, errors, and summaries.
"
+ " - 🙈 Missed Character Log: Displays a summarized list of key terms from post titles that were skipped due to your 'Filter by Character(s)' settings. Useful for identifying content you might be unintentionally missing.
"
"- 🔄 Reset: Clears all input fields, logs, and resets temporary settings to their defaults. Can only be used when no download is active.
"
- "- ⬇️ Start Download / ❌ Cancel: These buttons initiate or stop the current download/extraction process.
"
+ "- ⬇️ Start Download / 🔗 Extract Links / ❌ Cancel: These buttons initiate or stop the current download/extraction process. The 'Cancel' button also performs a soft UI reset, preserving your URL and Directory inputs.
"
"
"
"
You're all set! Click 'Finish' to close the tour and start using the downloader."
)
@@ -2975,9 +2988,6 @@ if __name__ == '__main__':
# TourDialog is now defined in this file, so we can call it directly.
try:
- # The following lines were forcing the tour to show on every launch.
- # By commenting them out, the application will now respect the
- # "Never show this tour again" setting saved by the TourDialog.
tour_result = TourDialog.run_tour_if_needed(downloader_app_instance)
if tour_result == QDialog.Accepted: print("Tour completed by user.")
elif tour_result == QDialog.Rejected: print("Tour skipped or was already shown.")