Add version, reset-db, and list-patterns arguments

- Adds --version argument to display version information.
- Adds --reset-db argument to clear the database.
- Adds --list-patterns argument to display advertisement patterns.
- Handles version display using importlib.metadata if __version__ is unavailable.
- Adds error handling for database reset operations.
- Improves error message when no subtitle files are provided.
This commit is contained in:
Roger Gonzalez 2025-03-28 20:27:06 -03:00
parent a1e46ff198
commit e8265ca061
Signed by: rogs
GPG Key ID: C7ECE9C6C36EC2E6

View File

@ -418,12 +418,55 @@ def main():
parser = argparse.ArgumentParser(description="Remove advertisements from subtitle files.") parser = argparse.ArgumentParser(description="Remove advertisements from subtitle files.")
parser.add_argument("--debug", action="store_true", help="Use current directory for database") parser.add_argument("--debug", action="store_true", help="Use current directory for database")
parser.add_argument("--force", action="store_true", help="Process files even if they have been processed before") parser.add_argument("--force", action="store_true", help="Process files even if they have been processed before")
parser.add_argument("--version", action="store_true", help="Show version information and exit")
parser.add_argument("--reset-db", action="store_true", help="Reset the database (remove all stored file hashes)")
parser.add_argument("--list-patterns", action="store_true", help="List all advertisement patterns being used")
args = parser.parse_args() args = parser.parse_args()
# Handle version request
if args.version:
try:
from subscleaner import __version__
print(f"Subscleaner version {__version__}")
except ImportError:
import importlib.metadata
version = importlib.metadata.version("subscleaner")
print(f"Subscleaner version {version}")
return
# Get database path
db_path = get_db_path(args.debug) db_path = get_db_path(args.debug)
# Handle reset database request
if args.reset_db:
if db_path.exists():
try:
db_path.unlink()
print(f"Database reset successfully: {db_path}")
except Exception as e:
print(f"Error resetting database: {e}")
else:
print(f"No database found at {db_path}")
return
# Handle list patterns request
if args.list_patterns:
print("Advertisement patterns being used:")
for i, pattern in enumerate(AD_PATTERNS, 1):
print(f"{i}. {pattern.pattern}")
return
# Initialize database
init_db(db_path) init_db(db_path)
# Process subtitle files
subtitle_files = [file_path.strip() for file_path in sys.stdin] subtitle_files = [file_path.strip() for file_path in sys.stdin]
if not subtitle_files:
print("No subtitle files provided. Pipe filenames to subscleaner or use --help for more information.")
return
print("Starting script") print("Starting script")
modified_files = process_subtitle_files(subtitle_files, db_path, args.force) modified_files = process_subtitle_files(subtitle_files, db_path, args.force)
if modified_files: if modified_files: