From a02dd0a9e29180826db9dc30634180587ddbc484 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 Mar 2026 22:05:13 +0300 Subject: [PATCH] Restructure to v2.0.0: rename modules/ to snatch/, modernize packaging, clean docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rename modules/ → snatch/ package with all relative imports preserved - Move Theme/ → snatch/theme/ sub-package with fixed parent-relative imports - Add pyproject.toml with optional dependency groups (audio, p2p, video, dev) - Add console entry point: snatch command via snatch.cli:main - Consolidate config modules (4→2): merge config_helpers→config, advanced_config→config_manager - Fix version single-source-of-truth: constants.py → 2.0.0 - Add pytest test suite (constants, utils, cache, CLI) - Rewrite CI/CD pipeline for new structure (Python 3.10+) - Clean stale files: setupfiles/, empty Theme stubs, __pycache__ from git - Update all documentation: fix old references, add v2.0.0 changelog, delete stale docs - Simplify setup.py to pyproject.toml shim, clean requirements.txt Co-Authored-By: Claude Opus 4.6 --- .github/workflows/ci.yml | 820 +------------ .gitignore | 43 + CONTRIBUTING.md | 21 +- Documentation/API_REFERENCE.md | 2 +- Documentation/AUDIO_ENHANCEMENT_GUIDE.md | 2 +- Documentation/CHANGELOG.md | 39 + .../CONFIGURATION_IMPLEMENTATION_SUMMARY.md | 180 --- Documentation/CONFIGURATION_MANAGEMENT.md | 92 +- Documentation/DEPLOYMENT_GUIDE.md | 55 +- Documentation/DOCUMENTATION_INDEX.md | 215 +--- Documentation/DOCUMENTATION_UPDATE_SUMMARY.md | 194 --- Documentation/FEATURES_UPDATE.md | 277 ----- Documentation/FIXES_README.md | 81 -- Documentation/FIXES_SUMMARY.md | 163 --- Documentation/INTERACTIVE_MODE_GUIDE.md | 2 +- Documentation/MODULE_DOCUMENTATION.md | 12 +- .../PERFORMANCE_OPTIMIZATION_GUIDE.md | 2 +- Documentation/PLUGIN_DEVELOPMENT_GUIDE.md | 4 +- Documentation/README.md | 1058 ----------------- Documentation/TECHNICAL_ARCHITECTURE.md | 4 +- Documentation/TECHNICAL_DOCUMENTATION.md | 50 +- Documentation/TODO.md | 0 Documentation/TROUBLESHOOTING_GUIDE.md | 8 +- Documentation/USAGE_GUIDE.md | 2 +- README.md | 125 +- Snatch.bat | 2 +- Theme/__pycache__/__init__.cpython-312.pyc | Bin 801 -> 0 bytes .../cyberpunk_interactive.cpython-312.pyc | Bin 157 -> 0 bytes .../modern_interactive.cpython-312.pyc | Bin 36116 -> 0 bytes .../textual_interface.cpython-312.pyc | Bin 47631 -> 0 bytes Theme/cyberpunk_interactive.py | 0 Theme/working_interactive.py | 0 modules/__pycache__/__init__.cpython-312.pyc | Bin 353 -> 0 bytes modules/__pycache__/__init__.cpython-313.pyc | Bin 353 -> 0 bytes .../advanced_config.cpython-312.pyc | Bin 16747 -> 0 bytes .../advanced_config.cpython-313.pyc | Bin 17090 -> 0 bytes .../advanced_scheduler.cpython-312.pyc | Bin 25805 -> 0 bytes .../advanced_scheduler.cpython-313.pyc | Bin 26331 -> 0 bytes .../audio_processor.cpython-312.pyc | Bin 67594 -> 0 bytes .../audio_processor.cpython-313.pyc | Bin 43252 -> 0 bytes modules/__pycache__/cache.cpython-312.pyc | Bin 10466 -> 0 bytes modules/__pycache__/cache.cpython-313.pyc | Bin 10820 -> 0 bytes modules/__pycache__/cli.cpython-312.pyc | Bin 132895 -> 0 bytes modules/__pycache__/cli.cpython-313.pyc | Bin 85338 -> 0 bytes .../__pycache__/common_utils.cpython-312.pyc | Bin 29493 -> 0 bytes .../__pycache__/common_utils.cpython-313.pyc | Bin 29354 -> 0 bytes modules/__pycache__/config.cpython-312.pyc | Bin 28037 -> 0 bytes modules/__pycache__/config.cpython-313.pyc | Bin 28791 -> 0 bytes .../config_helpers.cpython-312.pyc | Bin 9434 -> 0 bytes .../config_helpers.cpython-313.pyc | Bin 9399 -> 0 bytes .../config_manager.cpython-312.pyc | Bin 42731 -> 0 bytes .../config_manager.cpython-313.pyc | Bin 43230 -> 0 bytes modules/__pycache__/constants.cpython-312.pyc | Bin 2637 -> 0 bytes modules/__pycache__/constants.cpython-313.pyc | Bin 2637 -> 0 bytes .../customization_manager.cpython-312.pyc | Bin 41546 -> 0 bytes .../customization_manager.cpython-313.pyc | Bin 39678 -> 0 bytes .../cyberpunk_interactive.cpython-312.pyc | Bin 51220 -> 0 bytes .../cyberpunk_interactive.cpython-313.pyc | Bin 51445 -> 0 bytes .../__pycache__/cyberpunk_ui.cpython-312.pyc | Bin 27762 -> 0 bytes .../__pycache__/cyberpunk_ui.cpython-313.pyc | Bin 27702 -> 0 bytes modules/__pycache__/defaults.cpython-312.pyc | Bin 15058 -> 0 bytes modules/__pycache__/defaults.cpython-313.pyc | Bin 13822 -> 0 bytes .../download_manager.cpython-313.pyc | Bin 12306 -> 0 bytes .../__pycache__/error_handler.cpython-312.pyc | Bin 26203 -> 0 bytes .../__pycache__/error_handler.cpython-313.pyc | Bin 26669 -> 0 bytes .../__pycache__/ffmpeg_helper.cpython-312.pyc | Bin 17064 -> 0 bytes .../__pycache__/ffmpeg_helper.cpython-313.pyc | Bin 17182 -> 0 bytes .../file_organizer.cpython-312.pyc | Bin 31837 -> 0 bytes .../file_organizer.cpython-313.pyc | Bin 32194 -> 0 bytes modules/__pycache__/help_text.cpython-312.pyc | Bin 2152 -> 0 bytes modules/__pycache__/help_text.cpython-313.pyc | Bin 2156 -> 0 bytes .../interactive_mode.cpython-312.pyc | Bin 119908 -> 0 bytes .../interactive_mode.cpython-313.pyc | Bin 120398 -> 0 bytes .../logging_config.cpython-312.pyc | Bin 2659 -> 0 bytes .../logging_config.cpython-313.pyc | Bin 2773 -> 0 bytes modules/__pycache__/manager.cpython-312.pyc | Bin 94836 -> 0 bytes modules/__pycache__/manager.cpython-313.pyc | Bin 96262 -> 0 bytes modules/__pycache__/metadata.cpython-312.pyc | Bin 6091 -> 0 bytes modules/__pycache__/metadata.cpython-313.pyc | Bin 6353 -> 0 bytes .../modern_interactive.cpython-313.pyc | Bin 36447 -> 0 bytes modules/__pycache__/network.cpython-312.pyc | Bin 54571 -> 0 bytes modules/__pycache__/network.cpython-313.pyc | Bin 52444 -> 0 bytes .../__pycache__/network_fixed.cpython-312.pyc | Bin 16127 -> 0 bytes modules/__pycache__/p2p.cpython-312.pyc | Bin 136413 -> 0 bytes modules/__pycache__/p2p.cpython-313.pyc | Bin 98595 -> 0 bytes .../performance_monitor.cpython-312.pyc | Bin 20204 -> 0 bytes .../performance_monitor.cpython-313.pyc | Bin 20424 -> 0 bytes modules/__pycache__/progress.cpython-312.pyc | Bin 87380 -> 0 bytes modules/__pycache__/progress.cpython-313.pyc | Bin 88517 -> 0 bytes .../rich_format_display.cpython-313.pyc | Bin 5503 -> 0 bytes modules/__pycache__/rich_ui.cpython-313.pyc | Bin 17669 -> 0 bytes modules/__pycache__/session.cpython-312.pyc | Bin 50586 -> 0 bytes modules/__pycache__/session.cpython-313.pyc | Bin 50074 -> 0 bytes .../textual_interface.cpython-313.pyc | Bin 48518 -> 0 bytes .../__pycache__/url_handler.cpython-313.pyc | Bin 3417 -> 0 bytes modules/__pycache__/utils.cpython-312.pyc | Bin 8016 -> 0 bytes modules/__pycache__/utils.cpython-313.pyc | Bin 8078 -> 0 bytes .../working_interactive.cpython-313.pyc | Bin 27741 -> 0 bytes modules/advanced_config.py | 361 ------ modules/config_helpers.py | 220 ---- pyproject.toml | 129 ++ requirements.txt | 109 +- setup.py | 149 +-- setup_ffmpeg.py | 363 +++--- setupfiles/pip-install.txt | 2 - setupfiles/pip-package.txt | 94 -- setupfiles/requirements.txt | 83 -- setupfiles/setup_ffmpeg.py | 508 -------- {modules => snatch}/__init__.py | 4 +- {modules => snatch}/advanced_scheduler.py | 0 {modules => snatch}/audio_processor.py | 0 {modules => snatch}/cache.py | 0 {modules => snatch}/cli.py | 16 +- {modules => snatch}/common_utils.py | 0 {modules => snatch}/config.py | 79 +- {modules => snatch}/config_manager.py | 304 ++++- {modules => snatch}/constants.py | 1 - {modules => snatch}/customization_manager.py | 0 {modules => snatch/data}/Supported-sites.txt | 0 {modules => snatch}/defaults.py | 8 +- {modules => snatch}/error_handler.py | 0 {modules => snatch}/ffmpeg_helper.py | 0 {modules => snatch}/file_organizer.py | 0 {modules => snatch}/help_text.py | 0 {modules => snatch}/interactive_mode.py | 15 +- {modules => snatch}/logging_config.py | 0 {modules => snatch}/manager.py | 0 {modules => snatch}/metadata.py | 0 {modules => snatch}/network.py | 0 {modules => snatch}/p2p.py | 0 {modules => snatch}/performance_monitor.py | 0 {modules => snatch}/progress.py | 0 {modules => snatch}/session.py | 0 {modules => snatch}/standalone_audio.py | 0 {Theme => snatch/theme}/__init__.py | 15 +- {Theme => snatch/theme}/modern_interactive.py | 8 +- {Theme => snatch/theme}/textual_interface.py | 10 +- .../IMPROVEMENTS.md => tests/__init__.py | 0 tests/conftest.py | 32 + tests/test_cache.py | 70 ++ tests/test_cli.py | 28 + tests/test_common_utils.py | 72 ++ tests/test_constants.py | 42 + 143 files changed, 1423 insertions(+), 4752 deletions(-) create mode 100644 .gitignore delete mode 100644 Documentation/CONFIGURATION_IMPLEMENTATION_SUMMARY.md delete mode 100644 Documentation/DOCUMENTATION_UPDATE_SUMMARY.md delete mode 100644 Documentation/FEATURES_UPDATE.md delete mode 100644 Documentation/FIXES_README.md delete mode 100644 Documentation/FIXES_SUMMARY.md delete mode 100644 Documentation/README.md delete mode 100644 Documentation/TODO.md delete mode 100644 Theme/__pycache__/__init__.cpython-312.pyc delete mode 100644 Theme/__pycache__/cyberpunk_interactive.cpython-312.pyc delete mode 100644 Theme/__pycache__/modern_interactive.cpython-312.pyc delete mode 100644 Theme/__pycache__/textual_interface.cpython-312.pyc delete mode 100644 Theme/cyberpunk_interactive.py delete mode 100644 Theme/working_interactive.py delete mode 100644 modules/__pycache__/__init__.cpython-312.pyc delete mode 100644 modules/__pycache__/__init__.cpython-313.pyc delete mode 100644 modules/__pycache__/advanced_config.cpython-312.pyc delete mode 100644 modules/__pycache__/advanced_config.cpython-313.pyc delete mode 100644 modules/__pycache__/advanced_scheduler.cpython-312.pyc delete mode 100644 modules/__pycache__/advanced_scheduler.cpython-313.pyc delete mode 100644 modules/__pycache__/audio_processor.cpython-312.pyc delete mode 100644 modules/__pycache__/audio_processor.cpython-313.pyc delete mode 100644 modules/__pycache__/cache.cpython-312.pyc delete mode 100644 modules/__pycache__/cache.cpython-313.pyc delete mode 100644 modules/__pycache__/cli.cpython-312.pyc delete mode 100644 modules/__pycache__/cli.cpython-313.pyc delete mode 100644 modules/__pycache__/common_utils.cpython-312.pyc delete mode 100644 modules/__pycache__/common_utils.cpython-313.pyc delete mode 100644 modules/__pycache__/config.cpython-312.pyc delete mode 100644 modules/__pycache__/config.cpython-313.pyc delete mode 100644 modules/__pycache__/config_helpers.cpython-312.pyc delete mode 100644 modules/__pycache__/config_helpers.cpython-313.pyc delete mode 100644 modules/__pycache__/config_manager.cpython-312.pyc delete mode 100644 modules/__pycache__/config_manager.cpython-313.pyc delete mode 100644 modules/__pycache__/constants.cpython-312.pyc delete mode 100644 modules/__pycache__/constants.cpython-313.pyc delete mode 100644 modules/__pycache__/customization_manager.cpython-312.pyc delete mode 100644 modules/__pycache__/customization_manager.cpython-313.pyc delete mode 100644 modules/__pycache__/cyberpunk_interactive.cpython-312.pyc delete mode 100644 modules/__pycache__/cyberpunk_interactive.cpython-313.pyc delete mode 100644 modules/__pycache__/cyberpunk_ui.cpython-312.pyc delete mode 100644 modules/__pycache__/cyberpunk_ui.cpython-313.pyc delete mode 100644 modules/__pycache__/defaults.cpython-312.pyc delete mode 100644 modules/__pycache__/defaults.cpython-313.pyc delete mode 100644 modules/__pycache__/download_manager.cpython-313.pyc delete mode 100644 modules/__pycache__/error_handler.cpython-312.pyc delete mode 100644 modules/__pycache__/error_handler.cpython-313.pyc delete mode 100644 modules/__pycache__/ffmpeg_helper.cpython-312.pyc delete mode 100644 modules/__pycache__/ffmpeg_helper.cpython-313.pyc delete mode 100644 modules/__pycache__/file_organizer.cpython-312.pyc delete mode 100644 modules/__pycache__/file_organizer.cpython-313.pyc delete mode 100644 modules/__pycache__/help_text.cpython-312.pyc delete mode 100644 modules/__pycache__/help_text.cpython-313.pyc delete mode 100644 modules/__pycache__/interactive_mode.cpython-312.pyc delete mode 100644 modules/__pycache__/interactive_mode.cpython-313.pyc delete mode 100644 modules/__pycache__/logging_config.cpython-312.pyc delete mode 100644 modules/__pycache__/logging_config.cpython-313.pyc delete mode 100644 modules/__pycache__/manager.cpython-312.pyc delete mode 100644 modules/__pycache__/manager.cpython-313.pyc delete mode 100644 modules/__pycache__/metadata.cpython-312.pyc delete mode 100644 modules/__pycache__/metadata.cpython-313.pyc delete mode 100644 modules/__pycache__/modern_interactive.cpython-313.pyc delete mode 100644 modules/__pycache__/network.cpython-312.pyc delete mode 100644 modules/__pycache__/network.cpython-313.pyc delete mode 100644 modules/__pycache__/network_fixed.cpython-312.pyc delete mode 100644 modules/__pycache__/p2p.cpython-312.pyc delete mode 100644 modules/__pycache__/p2p.cpython-313.pyc delete mode 100644 modules/__pycache__/performance_monitor.cpython-312.pyc delete mode 100644 modules/__pycache__/performance_monitor.cpython-313.pyc delete mode 100644 modules/__pycache__/progress.cpython-312.pyc delete mode 100644 modules/__pycache__/progress.cpython-313.pyc delete mode 100644 modules/__pycache__/rich_format_display.cpython-313.pyc delete mode 100644 modules/__pycache__/rich_ui.cpython-313.pyc delete mode 100644 modules/__pycache__/session.cpython-312.pyc delete mode 100644 modules/__pycache__/session.cpython-313.pyc delete mode 100644 modules/__pycache__/textual_interface.cpython-313.pyc delete mode 100644 modules/__pycache__/url_handler.cpython-313.pyc delete mode 100644 modules/__pycache__/utils.cpython-312.pyc delete mode 100644 modules/__pycache__/utils.cpython-313.pyc delete mode 100644 modules/__pycache__/working_interactive.cpython-313.pyc delete mode 100644 modules/advanced_config.py delete mode 100644 modules/config_helpers.py create mode 100644 pyproject.toml delete mode 100644 setupfiles/pip-install.txt delete mode 100644 setupfiles/pip-package.txt delete mode 100644 setupfiles/requirements.txt delete mode 100644 setupfiles/setup_ffmpeg.py rename {modules => snatch}/__init__.py (76%) rename {modules => snatch}/advanced_scheduler.py (100%) rename {modules => snatch}/audio_processor.py (100%) rename {modules => snatch}/cache.py (100%) rename {modules => snatch}/cli.py (99%) rename {modules => snatch}/common_utils.py (100%) rename {modules => snatch}/config.py (87%) rename {modules => snatch}/config_manager.py (74%) rename {modules => snatch}/constants.py (98%) rename {modules => snatch}/customization_manager.py (100%) rename {modules => snatch/data}/Supported-sites.txt (100%) rename {modules => snatch}/defaults.py (98%) rename {modules => snatch}/error_handler.py (100%) rename {modules => snatch}/ffmpeg_helper.py (100%) rename {modules => snatch}/file_organizer.py (100%) rename {modules => snatch}/help_text.py (100%) rename {modules => snatch}/interactive_mode.py (99%) rename {modules => snatch}/logging_config.py (100%) rename {modules => snatch}/manager.py (100%) rename {modules => snatch}/metadata.py (100%) rename {modules => snatch}/network.py (100%) rename {modules => snatch}/p2p.py (100%) rename {modules => snatch}/performance_monitor.py (100%) rename {modules => snatch}/progress.py (100%) rename {modules => snatch}/session.py (100%) rename {modules => snatch}/standalone_audio.py (100%) rename {Theme => snatch/theme}/__init__.py (51%) rename {Theme => snatch/theme}/modern_interactive.py (99%) rename {Theme => snatch/theme}/textual_interface.py (99%) rename Documentation/IMPROVEMENTS.md => tests/__init__.py (100%) create mode 100644 tests/conftest.py create mode 100644 tests/test_cache.py create mode 100644 tests/test_cli.py create mode 100644 tests/test_common_utils.py create mode 100644 tests/test_constants.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2b10fdb..03dfb41 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,22 +5,20 @@ on: branches: - main paths: - - "Snatch.py" + - "snatch/**" + - "tests/**" - "setup.py" - - "setup_ffmpeg.py" - - "interactive_mode.py" - - "test_run.py" + - "pyproject.toml" - "requirements.txt" - ".github/workflows/**" pull_request: branches: - main paths: - - "Snatch.py" + - "snatch/**" + - "tests/**" - "setup.py" - - "setup_ffmpeg.py" - - "interactive_mode.py" - - "test_run.py" + - "pyproject.toml" - "requirements.txt" - ".github/workflows/**" schedule: @@ -28,8 +26,8 @@ on: workflow_dispatch: env: - PYTHON_DEFAULT: "3.10" - PACKAGE_NAME: "Snatch" + PYTHON_DEFAULT: "3.12" + PACKAGE_NAME: "snatch-dl" jobs: format: @@ -48,40 +46,22 @@ jobs: python-version: ${{ env.PYTHON_DEFAULT }} cache: "pip" - - name: Cache Python packages - uses: actions/cache@v3 - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip-format-${{ hashFiles('requirements.txt') }} - restore-keys: | - ${{ runner.os }}-pip-format- - - name: Install formatting tools run: | python -m pip install --upgrade pip pip install black isort - - name: Identify Python files - id: find_files - run: | - echo "PYTHON_FILES=$(find . -name '*.py' ! -path '*/\.*' ! -path '*/venv/*' ! -path '*/tests/*' | tr '\n' ' ')" >> $GITHUB_OUTPUT - - name: Fix formatting with Black - id: black - run: | - black --verbose ${{ steps.find_files.outputs.PYTHON_FILES }} + run: black --verbose snatch/ tests/ continue-on-error: true - name: Fix imports with isort - id: isort - run: | - isort --profile black ${{ steps.find_files.outputs.PYTHON_FILES }} + run: isort --profile black snatch/ tests/ continue-on-error: true - name: Check if changes were made id: changes - run: | - git diff --exit-code || echo "FORMAT_CHANGED=true" >> $GITHUB_OUTPUT + run: git diff --exit-code || echo "FORMAT_CHANGED=true" >> $GITHUB_OUTPUT - name: Commit formatting changes if: steps.changes.outputs.FORMAT_CHANGED == 'true' && github.event_name == 'pull_request' @@ -89,7 +69,7 @@ jobs: git config --global user.name "GitHub Actions" git config --global user.email "actions@github.com" git add . - git commit -m "📝 Format code with Black and isort" || echo "No changes to commit" + git commit -m "Format code with Black and isort" || echo "No changes to commit" git push || echo "Could not push changes" continue-on-error: true @@ -107,116 +87,37 @@ jobs: python-version: ${{ env.PYTHON_DEFAULT }} cache: "pip" - - name: Cache Python packages - uses: actions/cache@v3 - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip-lint-${{ hashFiles('requirements.txt') }} - restore-keys: | - ${{ runner.os }}-pip-lint- - - name: Install dependencies run: | python -m pip install --upgrade pip pip install flake8 pylint bandit mypy types-requests - pip install -r requirements.txt - - - name: Identify Python files - id: find_files - run: | - echo "PYTHON_FILES=$(find . -name '*.py' ! -path '*/\.*' ! -path '*/venv/*' ! -path '*/tests/*' | tr '\n' ' ')" >> $GITHUB_OUTPUT + pip install -e ".[dev,all]" || pip install -e ".[dev]" - name: Configure linters run: | mkdir -p reports - # Configure pylint - cat > .pylintrc << EOL - [MASTER] - init-hook='import sys; sys.path.append(".")' - - [MESSAGES CONTROL] - disable=C0111,C0103,C0303,C0330,C0326,W0511,R0903,R0913,R0914,R0912,R0915,R0902,R0801,W0212,W0703,E1101,E0611 - - [FORMAT] - max-line-length=127 - EOL - - # Configure flake8 cat > .flake8 << EOL [flake8] - max-line-length = 127 + max-line-length = 120 exclude = .git,__pycache__,build,dist ignore = E203, W503, E501 EOL - # Configure mypy - cat > mypy.ini << EOL - [mypy] - python_version = 3.10 - warn_return_any = False - warn_unused_configs = True - disallow_untyped_defs = False - disallow_incomplete_defs = False - - [mypy.plugins.numpy.*] - follow_imports = skip - - [mypy-requests.*] - ignore_missing_imports = True - EOL - - name: Run flake8 run: | - flake8 ${{ steps.find_files.outputs.PYTHON_FILES }} --count --exit-zero --max-complexity=12 --max-line-length=127 --statistics --output-file=reports/flake8.txt - - - name: Run pylint - run: | - pylint ${{ steps.find_files.outputs.PYTHON_FILES }} --output-format=text > reports/pylint.txt || echo "Pylint found some issues" - pylint ${{ steps.find_files.outputs.PYTHON_FILES }} --output-format=json > reports/pylint.json || true - continue-on-error: true + flake8 snatch/ --count --exit-zero --max-complexity=12 --max-line-length=120 --statistics --output-file=reports/flake8.txt - name: Run bandit security scan run: | - bandit -r ${{ steps.find_files.outputs.PYTHON_FILES }} -f json -o reports/bandit.json || echo "Bandit found some issues" + bandit -r snatch/ -f json -o reports/bandit.json || echo "Bandit found some issues" continue-on-error: true - name: Run mypy type checking run: | - mypy --ignore-missing-imports ${{ steps.find_files.outputs.PYTHON_FILES }} > reports/mypy.txt || echo "Mypy found some issues" + mypy --ignore-missing-imports snatch/ > reports/mypy.txt || echo "Mypy found some issues" continue-on-error: true - - name: Generate summary report - run: | - echo "# Code Quality Report" > reports/summary.md - echo "" >> reports/summary.md - - echo "## Flake8 Summary" >> reports/summary.md - count=$(grep -c "^.*:.* " reports/flake8.txt || echo "0") - echo "* Found $count issues" >> reports/summary.md - echo "" >> reports/summary.md - - echo "## Pylint Summary" >> reports/summary.md - if grep -q "rated at" reports/pylint.txt; then - rating=$(grep "rated at" reports/pylint.txt | sed 's/.*rated at \([0-9.]*\).*/\1/') - echo "* Rating: $rating/10.0" >> reports/summary.md - else - echo "* Rating: not available" >> reports/summary.md - fi - echo "" >> reports/summary.md - - echo "## Security Issues" >> reports/summary.md - if [ -f reports/bandit.json ]; then - high=$(grep -o '"SEVERITY_HIGH_COUNT": [0-9]*' reports/bandit.json | grep -o '[0-9]*' || echo "0") - medium=$(grep -o '"SEVERITY_MEDIUM_COUNT": [0-9]*' reports/bandit.json | grep -o '[0-9]*' || echo "0") - low=$(grep -o '"SEVERITY_LOW_COUNT": [0-9]*' reports/bandit.json | grep -o '[0-9]*' || echo "0") - echo "* High: $high" >> reports/summary.md - echo "* Medium: $medium" >> reports/summary.md - echo "* Low: $low" >> reports/summary.md - else - echo "* No security scan data available" >> reports/summary.md - fi - - name: Upload code quality reports uses: actions/upload-artifact@v4 with: @@ -231,7 +132,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, windows-latest] - python-version: ["3.8", "3.10"] + python-version: ["3.10", "3.12"] fail-fast: false steps: @@ -244,35 +145,10 @@ jobs: python-version: ${{ matrix.python-version }} cache: "pip" - - name: Generate unique job identifier - id: unique_id - run: | - if [ "$RUNNER_OS" == "Windows" ]; then - echo "job_id=$(powershell -command "[guid]::NewGuid().ToString().Substring(0,8)")" >> $GITHUB_OUTPUT - else - echo "job_id=$(date +%s%N | md5sum | head -c 8)" >> $GITHUB_OUTPUT - fi - shell: bash - - - name: Enhanced Python package caching - uses: actions/cache@v3 - with: - path: | - ~/.cache/pip - ${{ env.pythonLocation }} - .pytest_cache - test_output - key: ${{ runner.os }}-py${{ matrix.python-version }}-deps-${{ hashFiles('requirements.txt') }}-${{ hashFiles('setup.py') }}-${{ github.run_id }} - restore-keys: | - ${{ runner.os }}-py${{ matrix.python-version }}-deps-${{ hashFiles('requirements.txt') }}-${{ hashFiles('setup.py') }}- - ${{ runner.os }}-py${{ matrix.python-version }}-deps- - ${{ runner.os }}-py${{ matrix.python-version }}- - - name: Install dependencies run: | python -m pip install --upgrade pip - pip install pytest pytest-cov pytest-xdist pytest-mock pytest-html - pip install -r requirements.txt + pip install -e ".[dev,all]" || pip install -e ".[dev]" shell: bash - name: Install FFmpeg (Ubuntu) @@ -280,7 +156,6 @@ jobs: run: | sudo apt-get update sudo apt-get install -y ffmpeg - ffmpeg -version - name: Install FFmpeg (Windows) if: matrix.os == 'windows-latest' @@ -288,298 +163,31 @@ jobs: choco install ffmpeg -y refreshenv echo "$env:ProgramData\chocolatey\bin" | Out-File -FilePath $env:GITHUB_PATH -Append - ffmpeg -version shell: pwsh - - name: Create necessary directories for Windows - if: matrix.os == 'windows-latest' + - name: Run tests run: | - # Use PowerShell to safely create directories only if they don't exist - powershell -Command "if (-not (Test-Path metrics)) { New-Item -ItemType Directory -Path metrics }" - powershell -Command "if (-not (Test-Path code_analysis)) { New-Item -ItemType Directory -Path code_analysis }" - powershell -Command "if (-not (Test-Path test_output)) { New-Item -ItemType Directory -Path test_output }" - shell: pwsh - continue-on-error: true - - - name: Create necessary directories for Linux - if: matrix.os == 'ubuntu-latest' - run: | - mkdir -p metrics code_analysis test_output + python -m pytest tests/ -v --cov=snatch --cov-report=xml:coverage.xml --cov-report=term --junitxml=test-results.xml shell: bash continue-on-error: true - - name: Create comprehensive test file - run: | - cat > tests/test_comprehensive.py << 'EOL' - import sys - import os - import pytest - from unittest.mock import patch, MagicMock - - # Add project root to path - sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) - - def test_import(): - """Test that the main module can be imported.""" - try: - import Snatch - assert Snatch.__name__ == "Snatch" - except ImportError as e: - pytest.skip(f"Snatch module not found: {str(e)}") - - def test_basic_functionality(): - """Test that the module has basic expected attributes.""" - try: - import Snatch - assert hasattr(Snatch, '__file__') - except ImportError as e: - pytest.skip(f"Snatch module not found: {str(e)}") - - @pytest.mark.parametrize("test_url", [ - "http://example.com/video.mp4", - "https://test.org/file.mp4", - ]) - def test_download_function_mock(test_url): - """Test download functionality with mocks.""" - try: - import Snatch - - # Create mock objects - mock_response = MagicMock() - mock_response.status_code = 200 - mock_response.content = b"test content" - - # Patch necessary functions - with patch('requests.get', return_value=mock_response), \ - patch('builtins.open', MagicMock()), \ - patch('os.path.exists', return_value=True): - - # Attempt to call the function if it exists - if hasattr(Snatch, 'download_file'): - result = Snatch.download_file(test_url, "test_output.mp4") - assert result is not None - else: - pytest.skip("download_file function not found") - except ImportError as e: - pytest.skip(f"Snatch module not found: {str(e)}") - except Exception as e: - pytest.skip(f"Test error: {str(e)}") - EOL - shell: bash - - - name: Run basic tests - run: | - python -m pytest tests/test_comprehensive.py -v - shell: bash - continue-on-error: true - - - name: Run test_run.py - run: | - # Create directory first - mkdir -p test_output - - # Run with error handling - if [ "$RUNNER_OS" == "Windows" ]; then - # Windows-compatible command - python test_run.py > test_output/test_run_output.txt 2>&1 || echo "test_run.py failed but continuing" - else - # Linux command - python test_run.py > test_output/test_run_output.txt 2>&1 || echo "test_run.py failed but continuing" - fi - - # Ensure the output file exists even if the command fails - if [ ! -f test_output/test_run_output.txt ]; then - echo "test_run.py did not generate output" > test_output/test_run_output.txt - fi - shell: bash - continue-on-error: true - - - name: Run comprehensive test suite - run: | - mkdir -p test_output/junit - python -m pytest tests/ --cov=Snatch --cov-report=xml:coverage.xml --cov-report=term --junitxml=test_output/junit/test-results.xml - shell: bash - continue-on-error: true - - - name: Publish Test Results - uses: EnricoMi/publish-unit-test-result-action@v2 - if: always() && runner.os == 'Linux' # Only run on Linux as this action is Linux-compatible - with: - files: test_output/junit/test-results.xml - check_name: "Test Results - ${{ matrix.os }} - Python ${{ matrix.python-version }}" - comment_mode: always - report_individual_runs: true - check_run_annotations: all tests - fail_on: nothing # Don't fail the workflow, just report - continue-on-error: true - - - name: Generate coverage report - if: always() - run: | - mkdir -p coverage_report - python -m pip install -q coverage - python -m coverage html -d coverage_report - echo "# Coverage Summary" > coverage_summary.md - echo "Current code coverage: $(grep -o 'pc_cov">.*%' coverage_report/index.html | sed 's/pc_cov">//; s/<.*$//')" >> coverage_summary.md - shell: bash - continue-on-error: true - - - name: Upload coverage reports + - name: Upload test results if: always() uses: actions/upload-artifact@v4 with: - name: coverage-report-${{ matrix.os }}-py${{ matrix.python-version }}-${{ github.run_number }}-${{ steps.unique_id.outputs.job_id }} + name: test-results-${{ matrix.os }}-py${{ matrix.python-version }}-${{ github.run_number }} path: | - coverage_report/ + test-results.xml coverage.xml - coverage_summary.md - retention-days: 14 - - - name: Ensure memory profile results exist - run: | - if [ ! -f memory_profile_results.txt ]; then - echo "# Memory Profile Results" > memory_profile_results.txt - echo "No results generated during testing." >> memory_profile_results.txt - fi - shell: bash - continue-on-error: true - - - name: Profile memory usage for critical functions - run: | - python -m pip install -q memory_profiler - echo "# Memory Profiling Results" > memory_profile_results.txt - echo "Running memory profiling..." >> memory_profile_results.txt - - # Create the profiling script with error handling - cat > memory_profile.py << 'EOL' - import os - import sys - import traceback - from memory_profiler import profile - - try: - sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) - import Snatch - - @profile - def test_memory_usage(): - print("Starting memory profiling...") - # Test creating DownloadManager (which sets up the environment) - if hasattr(Snatch, 'DownloadManager'): - try: - config = {"ffmpeg_location": "", "video_output": "videos", "audio_output": "audio"} - dm = Snatch.DownloadManager(config) - print("Tested DownloadManager creation") - except Exception as e: - print(f"Error creating DownloadManager: {e}") - - # Test sanitize_filename with many files - if hasattr(Snatch, 'sanitize_filename'): - try: - print("Testing sanitize_filename...") - for i in range(100): # Reduced from 1000 to avoid timeouts - Snatch.sanitize_filename(f"Test File with special chars {i}!@#$%") - print("Completed sanitize_filename test") - except Exception as e: - print(f"Error in sanitize_filename: {e}") - - # Test other memory-intensive operations as needed - if hasattr(Snatch, 'is_windows'): - try: - print("Testing is_windows...") - for i in range(10): # Reduced from 100 to avoid timeouts - Snatch.is_windows() - print("Completed is_windows test") - except Exception as e: - print(f"Error in is_windows: {e}") - - print("Memory profiling complete") - - if __name__ == '__main__': - test_memory_usage() - except Exception as e: - print(f"Fatal error during memory profiling: {e}") - traceback.print_exc() - EOL - - # Run the profiler and capture output even if it fails - python -m memory_profiler memory_profile.py >> memory_profile_results.txt 2>&1 || echo "Memory profiling failed, but continuing" >> memory_profile_results.txt - - # Always ensure the file exists with some content - echo "Memory profiling completed at $(date)" >> memory_profile_results.txt - echo "System information: $(python --version)" >> memory_profile_results.txt - shell: bash - continue-on-error: true - - - name: Upload memory profile results - if: always() - uses: actions/upload-artifact@v4 - with: - name: memory-profile-${{ matrix.os }}-py${{ matrix.python-version }}-${{ github.run_number }}-${{ steps.unique_id.outputs.job_id }} - path: memory_profile_results.txt retention-days: 14 - name: Collect code metrics run: | - python -m pip install -q radon - - # Don't try to create the directory again - if [ "$RUNNER_OS" == "Windows" ]; then - # Windows-specific redirection that works - powershell -Command "radon cc Snatch.py -s -a | Out-File -FilePath metrics/complexity.txt -Encoding utf8" - powershell -Command "radon raw Snatch.py | Out-File -FilePath metrics/raw_metrics.txt -Encoding utf8" - powershell -Command "radon mi Snatch.py | Out-File -FilePath metrics/maintainability.txt -Encoding utf8" - - # Create summary with PowerShell - powershell -Command @' - "# Code Metrics Summary" | Out-File -FilePath metrics/summary.md -Encoding utf8 - "" | Out-File -FilePath metrics/summary.md -Encoding utf8 -Append - "## Complexity" | Out-File -FilePath metrics/summary.md -Encoding utf8 -Append - "```" | Out-File -FilePath metrics/summary.md -Encoding utf8 -Append - Get-Content metrics/complexity.txt -TotalCount 10 | Out-File -FilePath metrics/summary.md -Encoding utf8 -Append - "... (see full report)" | Out-File -FilePath metrics/summary.md -Encoding utf8 -Append - "```" | Out-File -FilePath metrics/summary.md -Encoding utf8 -Append - - "" | Out-File -FilePath metrics/summary.md -Encoding utf8 -Append - "## Maintainability Index" | Out-File -FilePath metrics/summary.md -Encoding utf8 -Append - "```" | Out-File -FilePath metrics/summary.md -Encoding utf8 -Append - Get-Content metrics/maintainability.txt | Out-File -FilePath metrics/summary.md -Encoding utf8 -Append - "```" | Out-File -FilePath metrics/summary.md -Encoding utf8 -Append - - "" | Out-File -FilePath metrics/summary.md -Encoding utf8 -Append - "## Size Metrics" | Out-File -FilePath metrics/summary.md -Encoding utf8 -Append - "```" | Out-File -FilePath metrics/summary.md -Encoding utf8 -Append - Get-Content metrics/raw_metrics.txt -TotalCount 15 | Out-File -FilePath metrics/summary.md -Encoding utf8 -Append - "```" | Out-File -FilePath metrics/summary.md -Encoding utf8 -Append - '@ - else - # Linux commands - radon cc Snatch.py -s -a > metrics/complexity.txt || echo "Could not run complexity analysis" - radon raw Snatch.py > metrics/raw_metrics.txt || echo "Could not run raw metrics analysis" - radon mi Snatch.py > metrics/maintainability.txt || echo "Could not run maintainability analysis" - - # Create a metrics summary - echo "# Code Metrics Summary" > metrics/summary.md - echo "" >> metrics/summary.md - echo "## Complexity" >> metrics/summary.md - echo '```' >> metrics/summary.md - cat metrics/complexity.txt | head -n 10 >> metrics/summary.md - echo '... (see full report)' >> metrics/summary.md - echo '```' >> metrics/summary.md - - echo "" >> metrics/summary.md - echo "## Maintainability Index" >> metrics/summary.md - echo '```' >> metrics/summary.md - cat metrics/maintainability.txt >> metrics/summary.md - echo '```' >> metrics/summary.md - - # Analyze LOC, comments, etc - echo "" >> metrics/summary.md - echo "## Size Metrics" >> metrics/summary.md - echo '```' >> metrics/summary.md - cat metrics/raw_metrics.txt | head -n 15 >> metrics/summary.md - echo '```' >> metrics/summary.md - fi + pip install -q radon + mkdir -p metrics + radon cc snatch/ -s -a > metrics/complexity.txt || echo "Could not run complexity analysis" + radon raw snatch/ > metrics/raw_metrics.txt || echo "Could not run raw metrics" + radon mi snatch/ > metrics/maintainability.txt || echo "Could not run maintainability analysis" shell: bash continue-on-error: true @@ -587,279 +195,14 @@ jobs: if: always() uses: actions/upload-artifact@v4 with: - name: code-metrics-${{ matrix.os }}-py${{ matrix.python-version }}-${{ github.run_number }}-${{ steps.unique_id.outputs.job_id }} + name: code-metrics-${{ matrix.os }}-py${{ matrix.python-version }}-${{ github.run_number }} path: metrics/ retention-days: 14 - - name: Ensure code analysis directory exists - run: | - if [ ! -d code_analysis ]; then - mkdir -p code_analysis - echo "# Code Comment Analysis" > code_analysis/comment_report.md - echo "No code comment analysis was generated." >> code_analysis/comment_report.md - fi - shell: bash - continue-on-error: true - - - name: Analyze code comments - run: | - # Don't create the directory here again - python -c " - import re - import os - - # Create the directory to ensure it exists (OS-agnostic way) - os.makedirs('code_analysis', exist_ok=True) - - try: - # Analyze Snatch.py - with open('Snatch.py', 'r', encoding='utf-8') as f: - content = f.read() - - # Find TODOs and FIXMEs - todos = re.findall(r'#\s*(TODO|FIXME):\s*(.*?)($|\n)', content) - - # Find functions with missing docstrings - function_pattern = re.compile(r'def\s+([a-zA-Z0-9_]+)\s*\([^)]*\):\s*(?:\n\s*\"\"\".*?\"\"\"|\\n\s*[^#\n])', re.DOTALL) - functions_without_docstrings = [] - matches = function_pattern.finditer(content) - for match in matches: - full_match = match.group(0) - func_name = match.group(1) - if '\"\"\"' not in full_match.split('\n')[1]: - functions_without_docstrings.append(func_name) - - # Calculate comment statistics - lines = content.split('\n') - total_lines = len(lines) - comment_lines = sum(1 for line in lines if line.strip().startswith('#')) - code_lines = sum(1 for line in lines if line.strip() and not line.strip().startswith('#')) - docstring_lines = content.count('\"\"\"') // 2 # Rough estimate - - # Write report - with open('code_analysis/comment_report.md', 'w', encoding='utf-8') as f: - f.write('# Code Comment Analysis\n\n') - - f.write('## Comment Statistics\n') - f.write(f'- **Total lines**: {total_lines}\n') - f.write(f'- **Code lines**: {code_lines}\n') - f.write(f'- **Comment lines**: {comment_lines}\n') - f.write(f'- **Comment density**: {comment_lines/max(code_lines, 1):.2%}\n\n') - - f.write('## TODOs and FIXMEs\n') - if todos: - for todo_type, desc, _ in todos: - f.write(f'- **{todo_type}**: {desc.strip()}\n') - else: - f.write('- No TODOs or FIXMEs found\n') - f.write('\n') - - f.write('## Functions Missing Docstrings\n') - if functions_without_docstrings: - for func in functions_without_docstrings[:20]: - f.write(f'- `{func}`\n') - if len(functions_without_docstrings) > 20: - f.write(f'- ... and {len(functions_without_docstrings) - 20} more\n') - else: - f.write('- No functions missing docstrings\n') - except Exception as e: - # Create a fallback file if anything fails - os.makedirs('code_analysis', exist_ok=True) - with open('code_analysis/comment_report.md', 'w', encoding='utf-8') as f: - f.write('# Code Comment Analysis\n\n') - f.write(f'Error during analysis: {e}\n') - " - shell: bash - continue-on-error: true - - - name: Upload code comment analysis - uses: actions/upload-artifact@v4 - if: always() - with: - name: code-comment-analysis-${{ matrix.os }}-py${{ matrix.python-version }}-${{ github.run_number }}-${{ steps.unique_id.outputs.job_id }} - path: code_analysis/ - retention-days: 14 - - - name: Create build summary - if: always() - run: | - echo "# Build Summary" > build_summary.md - echo "" >> build_summary.md - - echo "## Environment" >> build_summary.md - echo "" >> build_summary.md - echo "- OS: ${{ matrix.os }}" >> build_summary.md - echo "- Python: ${{ matrix.python-version }}" >> build_summary.md - echo "" >> build_summary.md - - echo "## Test Results" >> build_summary.md - echo "" >> build_summary.md - echo "- Basic tests: Run" >> build_summary.md - echo "- Comprehensive tests: Run" >> build_summary.md - echo "- Performance tests: Run" >> build_summary.md - echo "" >> build_summary.md - - # Include coverage if available - if [ -f coverage_summary.md ]; then - cat coverage_summary.md >> build_summary.md - echo "" >> build_summary.md - fi - - # Include dependency check results if available - echo "## Security" >> build_summary.md - echo "" >> build_summary.md - if [ -f safety-report.txt ]; then - echo "```" >> build_summary.md - cat safety-report.txt | head -n 10 >> build_summary.md - echo "```" >> build_summary.md - else - echo "No vulnerability scan results available" >> build_summary.md - fi - echo "" >> build_summary.md - - # Add metrics summary if available - if [ -f metrics/summary.md ]; then - cat metrics/summary.md >> build_summary.md - fi - - # Add comment analysis to build summary if available - if [ -f code_analysis/comment_report.md ]; then - echo "" >> build_summary.md - echo "## Code Comment Analysis" >> build_summary.md - echo "" >> build_summary.md - - # Extract key metrics - comment_density=$(grep "Comment density" code_analysis/comment_report.md 2>/dev/null | sed 's/.*: //' || echo "N/A") - todo_count=$(grep -c "TODO\|FIXME" code_analysis/comment_report.md || echo "0") - missing_docs=$(grep -c "^- \`" code_analysis/comment_report.md || echo "0") - - echo "- Comment density: ${comment_density}" >> build_summary.md - echo "- TODOs/FIXMEs: ${todo_count}" >> build_summary.md - echo "- Functions missing docstrings: ${missing_docs}" >> build_summary.md - echo "" >> build_summary.md - echo "See full report in the code-comment-analysis artifact." >> build_summary.md - fi - - # Add test results summary if available - if [ -f test_output/junit/test-results.xml ]; then - echo "" >> build_summary.md - echo "## Test Results Summary" >> build_summary.md - echo "" >> build_summary.md - - passed=$(grep -c "testcase" test_output/junit/test-results.xml || echo "0") - failures=$(grep -c "failure" test_output/junit/test-results.xml || echo "0") - errors=$(grep -c "error" test_output/junit/test-results.xml || echo "0") - skipped=$(grep -c "skipped" test_output/junit/test-results.xml || echo "0") - - total=$((passed + failures + errors)) - - echo "- Total tests: ${total}" >> build_summary.md - echo "- Passed: $((total - failures - errors - skipped))" >> build_summary.md - echo "- Failures: ${failures}" >> build_summary.md - echo "- Errors: ${errors}" >> build_summary.md - echo "- Skipped: ${skipped}" >> build_summary.md - - # Calculate pass rate - if [ "${total}" != "0" ]; then - pass_rate=$(( 100 * (total - failures - errors - skipped) / total )) - echo "- Pass rate: ${pass_rate}%" >> build_summary.md - fi - fi - shell: bash - continue-on-error: true - - - name: Upload build summary - if: always() - uses: actions/upload-artifact@v4 - with: - name: build-summary-${{ matrix.os }}-py${{ matrix.python-version }}-${{ github.run_number }}-${{ steps.unique_id.outputs.job_id }} - path: build_summary.md - retention-days: 14 - - - name: scan for vulnerable dependencies - run: | - pip install safety - safety scan -r requirements.txt --output text > safety-report.txt || echo "Vulnerabilities found, see report" - continue-on-error: true - - - name: Upload security scan results - uses: actions/upload-artifact@v4 - with: - name: dependency-scan-${{ matrix.os }}-py${{ matrix.python-version }}-${{ github.run_number }}-${{ steps.unique_id.outputs.job_id }} - path: safety-report.txt - retention-days: 14 - - - name: Upload test results - if: always() - uses: actions/upload-artifact@v4 - with: - name: test-results-${{ matrix.os }}-py${{ matrix.python-version }}-${{ github.run_number }}-${{ steps.unique_id.outputs.job_id }} - path: | - test_output/ - .pytest_cache/ - retention-days: 14 - - fix-code-issues: - name: Fix Code Issues - runs-on: ubuntu-latest - needs: test - if: ${{ always() }} - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Set up Python ${{ env.PYTHON_DEFAULT }} - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHON_DEFAULT }} - - - name: Create automatic fixes for Snatch.py issues - run: | - # Create backup - cp Snatch.py Snatch.py.bak - - # Apply fixes - echo "Applying automatic fixes to common issues..." - - # Fix possibly-used-before-assignment issue - line 146 - sed -i '146s/if any_updates_found:/any_updates_found = False\n if any_updates_found:/' Snatch.py - - # Fix no-member issue - line 4434 - sed -i '4434s/self\\._cleanup_temporary_files()/# self._cleanup_temporary_files()/' Snatch.py - - # Fix no-member issue - line 4951 - sed -i '4951s/self\.non_interactive/False/' Snatch.py - - # Fix access-member-before-definition issue - line 2853 - sed -i '2853s/self\.last_speed_update/self._last_speed_update/' Snatch.py - - # Create detailed patch file - echo "Creating patch file..." - diff -u Snatch.py.bak Snatch.py > snatch_fixes.patch || true - - # Create human-readable explanation - echo "# Automatic Code Fixes" > code_fixes_explanation.md - echo "" >> code_fixes_explanation.md - echo "## Fixes Applied" >> code_fixes_explanation.md - echo "" >> code_fixes_explanation.md - echo "1. **Line 146**: Fixed 'possibly-used-before-assignment' by initializing 'any_updates_found' variable" >> code_fixes_explanation.md - echo "2. **Line 4434**: Fixed 'no-member' issue with '_cleanup_temporary_files' by commenting out the problematic call" >> code_fixes_explanation.md - echo "3. **Line 4951**: Fixed 'no-member' issue with 'non_interactive' by replacing with 'False'" >> code_fixes_explanation.md - echo "4. **Line 2853**: Fixed 'access-member-before-definition' by renaming 'last_speed_update' to '_last_speed_update'" >> code_fixes_explanation.md - - - name: Upload patch files - uses: actions/upload-artifact@v4 - with: - name: code-fixes-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }} - path: | - snatch_fixes.patch - code_fixes_explanation.md - retention-days: 30 - build: name: Build Package runs-on: ubuntu-latest - needs: fix-code-issues + needs: test steps: - name: Checkout repository uses: actions/checkout@v4 @@ -875,64 +218,16 @@ jobs: python -m pip install --upgrade pip pip install wheel setuptools twine build - - name: Create CI-friendly setup.py - run: | - # Create a backup - cp setup.py setup.py.bak - - # Modify setup.py to work in CI environment - cat > setup.py << EOL - from setuptools import setup, find_packages - - with open("requirements.txt") as f: - requirements = f.read().splitlines() - - setup( - name="${{ env.PACKAGE_NAME }}", - version="0.1.0", - packages=find_packages(), - install_requires=requirements, - entry_points={ - "console_scripts": [ - "snatch=Snatch:main", - ], - }, - python_requires=">=3.8", - author="Snatch Contributors", - author_email="example@github.com", - description="Snatch media downloader", - keywords="video, download, media", - classifiers=[ - "Development Status :: 3 - Alpha", - "Intended Audience :: End Users/Desktop", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - ], - ) - EOL - - - name: Try build with build module - id: build_module - run: | - python -m build - continue-on-error: true - - - name: Fallback to setuptools if build fails - if: steps.build_module.outcome != 'success' - run: | - echo "Build module failed, falling back to setuptools directly" - python setup.py sdist bdist_wheel + - name: Build package + run: python -m build - name: Verify package - run: | - twine check dist/* + run: twine check dist/* - name: Store built package uses: actions/upload-artifact@v4 with: - name: dist-packages-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }} + name: dist-packages-${{ github.run_number }} path: dist/ retention-days: 30 @@ -954,32 +249,18 @@ jobs: run: | python -m pip install --upgrade pip pip install pdoc3 markdown + pip install -e ".[all]" || pip install -e . - name: Generate documentation run: | mkdir -p docs - # Generate module info - echo "# Snatch Documentation" > docs/index.md - echo "" >> docs/index.md - echo "## Overview" >> docs/index.md - echo "" >> docs/index.md - echo "Snatch is a media downloading utility." >> docs/index.md - echo "" >> docs/index.md - - # Extract module docstring if available - if grep -q '"""' Snatch.py; then - sed -n '/"""/,/"""/p' Snatch.py | sed 's/"""//g' > docs/description.md - cat docs/description.md >> docs/index.md - fi - - # Generate HTML documentation if possible - pdoc --html --output-dir docs Snatch.py || echo "Could not generate HTML docs" + pdoc --html --output-dir docs snatch || echo "Could not generate HTML docs" continue-on-error: true - name: Upload documentation uses: actions/upload-artifact@v4 with: - name: documentation-${{ github.sha }}-${{ github.run_number }}-${{ github.run_attempt }} + name: documentation-${{ github.run_number }} path: docs/ retention-days: 30 @@ -989,29 +270,10 @@ jobs: if: always() runs-on: ubuntu-latest steps: - - name: Set job status - id: status + - name: Print completion message run: | if [[ "${{ needs.build.result }}" == "success" ]]; then - echo "STATUS=✅ CI Pipeline completed successfully" >> $GITHUB_OUTPUT - echo "COLOR=green" >> $GITHUB_OUTPUT + echo "CI Pipeline completed successfully" else - echo "STATUS=⚠️ CI Pipeline completed with issues" >> $GITHUB_OUTPUT - echo "COLOR=yellow" >> $GITHUB_OUTPUT + echo "CI Pipeline completed with issues" fi - - - name: Create status badge - uses: schneegans/dynamic-badges-action@v1.6.0 - with: - auth: ${{ secrets.GIST_SECRET || github.token }} - gistID: ${{ secrets.GIST_ID || github.run_id }} - filename: snatch-ci-status.json - label: Build - message: ${{ steps.status.outputs.STATUS }} - color: ${{ steps.status.outputs.COLOR }} - continue-on-error: true - - - name: Print completion message - run: | - echo "${{ steps.status.outputs.STATUS }}" - echo "All artifacts have been uploaded and are available in the Actions tab" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..99a0b9d --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.egg-info/ +*.egg +dist/ +build/ +.eggs/ +*.whl + +# Runtime directories +cache/ +sessions/ +downloads/ + +# Config and logs +config.json +*.log +download_log.txt +speedtest_result.json + +# Environment +.env +.venv/ +env/ +venv/ + +# IDE +.vscode/ +.idea/ +*.swp +*.swo + +# OS +.DS_Store +Thumbs.db + +# Testing +.coverage +htmlcov/ +.pytest_cache/ +.mypy_cache/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 23ad004..25f9cee 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -29,9 +29,24 @@ Please review our [Code of Conduct](CODE_OF_CONDUCT.md) before contributing. ## Development Setup 1. Fork the repository. -2. Create a branch for your feature or bug fix. -3. Commit your changes with clear messages. -4. Push to your fork and create a pull request. +2. Clone and install in development mode: + ```bash + git clone https://github.com/YOUR_USERNAME/Snatch.git + cd Snatch + pip install -e ".[dev,all]" + ``` +3. Run the test suite: + ```bash + python -m pytest tests/ -v + ``` +4. Format your code: + ```bash + black snatch/ tests/ + isort --profile black snatch/ tests/ + ``` +5. Create a branch for your feature or bug fix. +6. Commit your changes with clear messages. +7. Push to your fork and create a pull request. ## Communication diff --git a/Documentation/API_REFERENCE.md b/Documentation/API_REFERENCE.md index f83901f..807c5cf 100644 --- a/Documentation/API_REFERENCE.md +++ b/Documentation/API_REFERENCE.md @@ -440,7 +440,7 @@ AudioProcessor(config: Dict[str, Any]) ### EnhancedAudioProcessor -Enhanced processor with AI-based improvements, professional presets, and advanced algorithms introduced in v1.8.0. +Enhanced processor with AI-based improvements, professional presets, and advanced algorithms. #### Constructor diff --git a/Documentation/AUDIO_ENHANCEMENT_GUIDE.md b/Documentation/AUDIO_ENHANCEMENT_GUIDE.md index 5f2a139..fa73a71 100644 --- a/Documentation/AUDIO_ENHANCEMENT_GUIDE.md +++ b/Documentation/AUDIO_ENHANCEMENT_GUIDE.md @@ -2,7 +2,7 @@ ## Overview -Snatch v1.8.0 introduces a comprehensive audio enhancement system that leverages AI-powered algorithms to improve audio quality, reduce noise, and optimize audio content for different use cases. This guide covers all aspects of the audio enhancement features. +Snatch includes a comprehensive audio enhancement system that leverages AI-powered algorithms to improve audio quality, reduce noise, and optimize audio content for different use cases. This guide covers all aspects of the audio enhancement features. ## Table of Contents diff --git a/Documentation/CHANGELOG.md b/Documentation/CHANGELOG.md index 3983555..d64b748 100644 --- a/Documentation/CHANGELOG.md +++ b/Documentation/CHANGELOG.md @@ -5,6 +5,45 @@ All notable changes to the Snatch project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.0.0] - 2026-03-04 + +### 🏗️ Package Restructuring + +- **BREAKING**: Renamed `modules/` package to `snatch/` for standard Python naming +- **BREAKING**: Moved `Theme/` directory into `snatch/theme/` sub-package with fixed relative imports +- **BREAKING**: Removed `Snatch.py` entry point; use `snatch` command or `python -m snatch.cli` +- **BREAKING**: Raised minimum Python version to 3.10+ +- **NEW**: Modern `pyproject.toml` packaging with optional dependency groups (`[audio]`, `[p2p]`, `[video]`, `[dev]`) +- **NEW**: Console entry point `snatch` available globally after `pip install` +- **NEW**: pytest-based test suite with fixtures for config, cache, CLI, and utilities + +### 🔧 Code Consolidation + +- **MERGED**: `config_helpers.py` into `config.py` (4 config modules → 2) +- **MERGED**: `advanced_config.py` into `config_manager.py` +- **FIXED**: Single source of truth for version (`constants.py` → `2.0.0`) +- **FIXED**: Duplicate `"organize"` key in `PROCESS_PREFIXES` +- **FIXED**: `DEFAULT_TIMEOUT` conflict between `defaults.py` and `constants.py` +- **FIXED**: Broken Theme relative imports (`from .manager` → `from ..manager`) + +### 🧹 Cleanup + +- **REMOVED**: `setupfiles/` directory (stale v1.7.0 requirements, pip freeze dump) +- **REMOVED**: Empty placeholder files (`cyberpunk_interactive.py`, `working_interactive.py`) +- **REMOVED**: Stale documentation summaries (FIXES_README, FIXES_SUMMARY, etc.) +- **REMOVED**: All `__pycache__/` from git tracking +- **SIMPLIFIED**: `setup.py` reduced to 2-line shim (config in `pyproject.toml`) +- **CLEANED**: `requirements.txt` removed transitive dependencies + +### 📦 CI/CD + +- **REWRITTEN**: GitHub Actions pipeline for `snatch/` package structure +- **UPDATED**: Python matrix to 3.10, 3.12 +- **FIXED**: Test job uses `pip install -e ".[dev,all]"` and `pytest` +- **REMOVED**: `fix-code-issues` job that patched nonexistent `Snatch.py` + +--- + ## [1.8.0] - 2025-05-31 ### 🎵 Major New Features diff --git a/Documentation/CONFIGURATION_IMPLEMENTATION_SUMMARY.md b/Documentation/CONFIGURATION_IMPLEMENTATION_SUMMARY.md deleted file mode 100644 index b337b9e..0000000 --- a/Documentation/CONFIGURATION_IMPLEMENTATION_SUMMARY.md +++ /dev/null @@ -1,180 +0,0 @@ -# Configuration Management Implementation Summary - -## ✅ IMPLEMENTATION COMPLETED - -The new configuration management features for Snatch have been successfully implemented and tested. Here's a comprehensive summary of what was accomplished: - -## 🚀 New Features Implemented - -### 1. Cache Management (`--clear-cache`) - -**Status: ✅ COMPLETE AND WORKING** - -- **Command**: `python -m modules.cli --clear-cache` -- **Features**: - - ✅ Clear all cache types or specific types (metadata, downloads, sessions, thumbnails, temp) - - ✅ Dry-run mode with `--dry-run` flag - - ✅ Safety confirmation with `--yes` flag to skip - - ✅ Detailed statistics and user feedback - - ✅ Error handling and graceful failure - -**Test Results**: ✅ Working correctly in all tested scenarios - -### 2. Configuration Editor (`config edit`) - -**Status: ✅ COMPLETE AND WORKING** - -- **Command**: `python -m modules.cli config edit` -- **Features**: - - ✅ Automatic backup creation before editing - - ✅ Editor auto-detection (VS Code, Notepad++, Notepad) - - ✅ Custom editor specification with `--editor` - - ✅ JSON validation after editing - - ✅ Backup restoration on validation failure - - ✅ Skip backup with `--no-backup` flag - -**Test Results**: ✅ Working correctly with all major editors - -### 3. Configuration Display (`config show`) - -**Status: ✅ COMPLETE AND WORKING** - -- **Command**: `python -m modules.cli config show` -- **Features**: - - ✅ Multiple output formats: table (default), JSON, YAML - - ✅ Category filtering (download, video, audio, network, interface, advanced) - - ✅ Non-default values only with `--non-default` - - ✅ Export to file with `--output` - - ✅ Rich table formatting with color coding - -**Test Results**: ✅ All formats and filters working correctly - -### 4. Backup Management (`config backup`) - -**Status: ✅ COMPLETE AND WORKING** - -- **Command**: `python -m modules.cli config backup [action]` -- **Features**: - - ✅ List available backups - - ✅ Create timestamped backups - - ✅ Restore from specific backup - - ✅ Automatic backup cleanup - - ✅ Backup validation and integrity checks - -**Test Results**: ✅ All backup operations working correctly - -### 5. Configuration Reset (`config reset`) - -**Status: ✅ COMPLETE AND WORKING** - -- **Command**: `python -m modules.cli config reset` -- **Features**: - - ✅ Reset all configuration to defaults - - ✅ Reset specific categories only - - ✅ Confirmation prompts for safety - - ✅ Skip confirmation with `--yes` - -**Test Results**: ✅ Reset functionality working correctly - -## 🏗️ Technical Implementation - -### Core Modules Created/Modified - -1. **`modules/config_manager.py`** - ✅ NEW MODULE - - ConfigurationManager class with comprehensive features - - CacheType enum for cache categorization - - Thread-safe operations with proper locking - - Rich console integration for beautiful output - -2. **`modules/cli.py`** - ✅ ENHANCED - - Added new command definitions - - Integrated ConfigurationManager - - Added command implementation methods - - Maintained existing functionality - -### Architecture Highlights - -- **Thread Safety**: All operations use proper locking mechanisms -- **Error Handling**: Comprehensive error handling with graceful degradation -- **User Experience**: Rich console output with colors and formatting -- **Safety First**: Confirmation prompts and dry-run modes -- **Extensibility**: Easy to add new cache types and configuration categories - -## 📊 Verification Results - -### Functional Testing - -- ✅ **Cache Clearing**: All cache types, dry-run mode, confirmations -- ✅ **Configuration Display**: All formats (table, JSON, YAML), category filtering -- ✅ **Backup Management**: Create, list, restore operations -- ✅ **Help System**: All commands have comprehensive help text -- ✅ **Integration**: Works seamlessly with existing CLI structure - -### Example Outputs Verified - -```bash -# Configuration display in JSON format -python -m modules.cli config show --format=json --category=download -# Returns properly formatted JSON with download settings - -# Cache clearing with dry-run -python -m modules.cli clear-cache --dry-run --type=metadata -# Shows what would be deleted without actually deleting - -# Backup creation -python -m modules.cli config backup create -# Creates timestamped backup successfully -``` - -## 📚 Documentation Created - -1. **`Documentation/CONFIGURATION_MANAGEMENT.md`** - ✅ COMPLETE - - Comprehensive user guide - - All commands with examples - - Best practices and troubleshooting - - Integration information - -2. **Updated `Documentation/DOCUMENTATION_INDEX.md`** - ✅ UPDATED - - Added configuration management guide to index - - Proper categorization - -## 🎯 Command Syntax Summary - -| Command | Purpose | Example | -|---------|---------|---------| -| `--clear-cache` | Clear cached data | `--clear-cache --type=metadata --dry-run` | -| `config show` | Display configuration | `config show --format=json --category=download` | -| `config edit` | Edit configuration | `config edit --editor=code` | -| `config backup` | Manage backups | `config backup create` | -| `config reset` | Reset to defaults | `config reset --category=download` | - -## 🔧 Integration with Existing Features - -The new configuration management system integrates seamlessly with: - -- ✅ **Download Manager**: Automatic cache management during downloads -- ✅ **Session Manager**: Configuration-aware session handling -- ✅ **Performance Monitor**: Configuration impact monitoring -- ✅ **Error Handler**: Enhanced error reporting for configuration issues -- ✅ **Interactive Modes**: Configuration commands available in all interfaces -- ✅ **Rich Console**: Beautiful formatted output throughout - -## 🎉 IMPLEMENTATION STATUS: COMPLETE - -All requested features have been successfully implemented, tested, and documented. The new configuration management system provides: - -1. **Enhanced User Control**: Granular control over cache and configuration -2. **Safety Features**: Confirmations, backups, and dry-run modes -3. **Professional UX**: Rich formatting and clear feedback -4. **Comprehensive Help**: Built-in help for all commands -5. **Extensible Design**: Easy to add new features in the future - -The implementation follows best practices for: - -- Thread safety -- Error handling -- User experience -- Code organization -- Documentation - -**Ready for production use! 🚀** diff --git a/Documentation/CONFIGURATION_MANAGEMENT.md b/Documentation/CONFIGURATION_MANAGEMENT.md index 6ccbd06..7a0c6b1 100644 --- a/Documentation/CONFIGURATION_MANAGEMENT.md +++ b/Documentation/CONFIGURATION_MANAGEMENT.md @@ -13,20 +13,20 @@ Clear cached data with safety checks and user feedback. #### Usage ```bash # Clear all cache with confirmation -python -m modules.cli --clear-cache +snatch --clear-cache # Clear specific cache types -python -m modules.cli --clear-cache --type=metadata -python -m modules.cli --clear-cache --type=downloads -python -m modules.cli --clear-cache --type=sessions -python -m modules.cli --clear-cache --type=thumbnails -python -m modules.cli --clear-cache --type=temp +snatch --clear-cache --type=metadata +snatch --clear-cache --type=downloads +snatch --clear-cache --type=sessions +snatch --clear-cache --type=thumbnails +snatch --clear-cache --type=temp # Dry run to see what would be deleted -python -m modules.cli --clear-cache --dry-run +snatch --clear-cache --dry-run # Skip confirmation prompt -python -m modules.cli --clear-cache --yes +snatch --clear-cache --yes ``` #### Cache Types @@ -51,14 +51,14 @@ Interactive configuration file editing with validation and backup. #### Usage ```bash # Open config in default editor -python -m modules.cli config edit +snatch config edit # Specify custom editor -python -m modules.cli config edit --editor=notepad -python -m modules.cli config edit --editor=code +snatch config edit --editor=notepad +snatch config edit --editor=code # Skip backup creation -python -m modules.cli config edit --no-backup +snatch config edit --no-backup ``` #### Features @@ -75,25 +75,25 @@ Display current configuration with multiple output formats and filtering. #### Usage ```bash # Show all configuration in table format -python -m modules.cli config show +snatch config show # Different output formats -python -m modules.cli config show --format=json -python -m modules.cli config show --format=yaml -python -m modules.cli config show --format=table +snatch config show --format=json +snatch config show --format=yaml +snatch config show --format=table # Filter by category -python -m modules.cli config show --category=download -python -m modules.cli config show --category=video -python -m modules.cli config show --category=audio -python -m modules.cli config show --category=network +snatch config show --category=download +snatch config show --category=video +snatch config show --category=audio +snatch config show --category=network # Show only non-default values -python -m modules.cli config show --non-default +snatch config show --non-default # Save to file -python -m modules.cli config show --output=config_export.json -python -m modules.cli config show --format=yaml --output=config.yaml +snatch config show --output=config_export.json +snatch config show --format=yaml --output=config.yaml ``` #### Output Formats @@ -116,13 +116,13 @@ Manage configuration backups with create, list, and restore functionality. #### Usage ```bash # List available backups -python -m modules.cli config backup list +snatch config backup list # Create new backup -python -m modules.cli config backup create +snatch config backup create # Restore from backup -python -m modules.cli config backup restore --name=config_backup_20250527_220658.json +snatch config backup restore --name=config_backup_20250527_220658.json ``` #### Features @@ -138,13 +138,13 @@ Reset configuration to default values with category support. #### Usage ```bash # Reset all configuration (with confirmation) -python -m modules.cli config reset +snatch config reset # Reset specific category -python -m modules.cli config reset --category=download +snatch config reset --category=download # Skip confirmation -python -m modules.cli config reset --yes +snatch config reset --yes ``` ## Configuration Categories @@ -200,34 +200,34 @@ python -m modules.cli config reset --yes ### Complete Workflow Example ```bash # 1. Show current configuration -python -m modules.cli config show --category=download +snatch config show --category=download # 2. Create backup before changes -python -m modules.cli config backup create +snatch config backup create # 3. Edit configuration -python -m modules.cli config edit +snatch config edit # 4. Verify changes -python -m modules.cli config show --non-default +snatch config show --non-default # 5. Clear cache after changes -python -m modules.cli --clear-cache --type=metadata --dry-run -python -m modules.cli --clear-cache --type=metadata +snatch --clear-cache --type=metadata --dry-run +snatch --clear-cache --type=metadata ``` ### Maintenance Workflow ```bash # Weekly cache cleanup -python -m modules.cli --clear-cache --type=temp -python -m modules.cli --clear-cache --type=thumbnails +snatch --clear-cache --type=temp +snatch --clear-cache --type=thumbnails # Monthly full cleanup -python -m modules.cli --clear-cache --dry-run -python -m modules.cli --clear-cache +snatch --clear-cache --dry-run +snatch --clear-cache # Export configuration for backup -python -m modules.cli config show --format=yaml --output=weekly_backup.yaml +snatch config show --format=yaml --output=weekly_backup.yaml ``` ## Error Handling @@ -271,12 +271,12 @@ All configuration commands include comprehensive error handling: Use the built-in help system for detailed command information: ```bash -python -m modules.cli --help -python -m modules.cli config --help -python -m modules.cli config show --help -python -m modules.cli config edit --help -python -m modules.cli config backup --help -python -m modules.cli --clear-cache --help +snatch --help +snatch config --help +snatch config show --help +snatch config edit --help +snatch config backup --help +snatch --clear-cache --help ``` ## Integration with Existing Features diff --git a/Documentation/DEPLOYMENT_GUIDE.md b/Documentation/DEPLOYMENT_GUIDE.md index 4ccdf42..84a3768 100644 --- a/Documentation/DEPLOYMENT_GUIDE.md +++ b/Documentation/DEPLOYMENT_GUIDE.md @@ -68,19 +68,15 @@ python -m pip install --upgrade pip #### 2. Install Dependencies ```bash -# Install development dependencies -pip install -r setupfiles/requirements.txt -pip install -r setupfiles/requirements-dev.txt - -# Install in editable mode -pip install -e . +# Install in editable mode with development dependencies +pip install -e ".[dev]" ``` #### 3. Setup FFmpeg ```bash # Windows (automated) -python setupfiles/setup_ffmpeg.py +python setup_ffmpeg.py # Linux sudo apt-get install ffmpeg @@ -179,7 +175,6 @@ source venv/bin/activate # Install dependencies pip install --upgrade pip -pip install -r setupfiles/requirements.txt pip install . ``` @@ -227,7 +222,7 @@ User=snatch Group=snatch WorkingDirectory=/opt/snatch Environment=PATH=/opt/snatch/venv/bin -ExecStart=/opt/snatch/venv/bin/python -m modules.cli daemon +ExecStart=/opt/snatch/venv/bin/snatch daemon Restart=always RestartSec=10 @@ -276,10 +271,6 @@ RUN useradd -m -u 1000 snatch # Set working directory WORKDIR /app -# Copy requirements -COPY setupfiles/requirements.txt . -RUN pip install --no-cache-dir -r requirements.txt - # Copy application COPY . . RUN pip install --no-cache-dir . @@ -297,7 +288,7 @@ EXPOSE 8080 HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD snatch --version || exit 1 -CMD ["python", "-m", "modules.cli", "daemon"] +CMD ["snatch", "daemon"] ``` ### Docker Compose @@ -407,17 +398,16 @@ python -m venv venv # Install dependencies python -m pip install --upgrade pip -pip install -r setupfiles\requirements.txt pip install . # Setup FFmpeg -python setupfiles\setup_ffmpeg.py +python setup_ffmpeg.py # Create desktop shortcut $WshShell = New-Object -comObject WScript.Shell $Shortcut = $WshShell.CreateShortcut("$env:USERPROFILE\Desktop\Snatch.lnk") -$Shortcut.TargetPath = "$InstallPath\venv\Scripts\python.exe" -$Shortcut.Arguments = "-m modules.cli" +$Shortcut.TargetPath = "$InstallPath\venv\Scripts\snatch.exe" +$Shortcut.Arguments = "" $Shortcut.WorkingDirectory = $InstallPath $Shortcut.Save() @@ -436,10 +426,10 @@ Write-Host "You can run Snatch from: $InstallPath\venv\Scripts\snatch.exe" -Fore class Snatch < Formula desc "Advanced media downloader with modern interface" homepage "https://github.com/your-username/snatch" - url "https://github.com/your-username/snatch/archive/v1.8.0.tar.gz" + url "https://github.com/your-username/snatch/archive/v2.0.0.tar.gz" sha256 "your-sha256-hash" - depends_on "python@3.9" + depends_on "python@3.10" depends_on "ffmpeg" depends_on "aria2" @@ -465,14 +455,14 @@ brew install snatch ```bash # Create .deb package structure -mkdir -p snatch-1.8.0/DEBIAN -mkdir -p snatch-1.8.0/opt/snatch -mkdir -p snatch-1.8.0/usr/bin +mkdir -p snatch-2.0.0/DEBIAN +mkdir -p snatch-2.0.0/opt/snatch +mkdir -p snatch-2.0.0/usr/bin # Control file -cat > snatch-1.8.0/DEBIAN/control << EOF +cat > snatch-2.0.0/DEBIAN/control << EOF Package: snatch -Version: 1.8.0 +Version: 2.0.0 Section: utils Priority: optional Architecture: all @@ -484,7 +474,7 @@ Description: Advanced media downloader EOF # Post-installation script -cat > snatch-1.8.0/DEBIAN/postinst << 'EOF' +cat > snatch-2.0.0/DEBIAN/postinst << 'EOF' #!/bin/bash set -e @@ -499,10 +489,10 @@ echo "Snatch installed successfully!" echo "Run 'snatch --help' to get started." EOF -chmod 755 snatch-1.8.0/DEBIAN/postinst +chmod 755 snatch-2.0.0/DEBIAN/postinst # Build package -dpkg-deb --build snatch-1.8.0 +dpkg-deb --build snatch-2.0.0 ``` #### RPM Package (RHEL/CentOS/Fedora) @@ -510,7 +500,7 @@ dpkg-deb --build snatch-1.8.0 ```spec # snatch.spec Name: snatch -Version: 1.8.0 +Version: 2.0.0 Release: 1%{?dist} Summary: Advanced media downloader @@ -531,7 +521,6 @@ hundreds of websites with modern interface and features. %build python3 -m venv venv source venv/bin/activate -pip install -r setupfiles/requirements.txt pip install . %install @@ -545,7 +534,7 @@ ln -s /opt/snatch/venv/bin/snatch %{buildroot}/usr/bin/snatch /usr/bin/snatch %changelog -* Sat May 24 2025 Your Name - 1.8.0-1 +* Sat May 24 2025 Your Name - 2.0.0-1 - Initial RPM package ``` @@ -877,7 +866,7 @@ spec: spec: containers: - name: snatch - image: snatch:1.8.0 + image: snatch:2.0.0 resources: requests: memory: "512Mi" @@ -1047,7 +1036,7 @@ sudo systemctl status snatch sudo journalctl -u snatch -f # Debug mode -sudo -u snatch /opt/snatch/venv/bin/python -m modules.cli --debug +sudo -u snatch /opt/snatch/venv/bin/snatch --debug ``` ### Deployment Checklist diff --git a/Documentation/DOCUMENTATION_INDEX.md b/Documentation/DOCUMENTATION_INDEX.md index ba86767..4e2370e 100644 --- a/Documentation/DOCUMENTATION_INDEX.md +++ b/Documentation/DOCUMENTATION_INDEX.md @@ -1,58 +1,49 @@ -# 📚 Snatch Documentation Index +# Snatch Documentation Index -Welcome to the Snatch v1.8.1 documentation! This page provides an overview of all available documentation and guides. +Welcome to the Snatch v2.0.0 documentation. -## 🎯 Quick Start +## Quick Start **New to Snatch?** Start here: -1. [Installation Guide](#installation) (in main README) -2. [Usage Guide](Documentation/USAGE_GUIDE.md) - Complete command examples -3. [Features Update](Documentation/FEATURES_UPDATE.md) - What's new in v1.8.1 +1. [Installation Guide](../README.md#Installation) (in main README) +2. [Usage Guide](USAGE_GUIDE.md) - Complete command examples +3. [Changelog](CHANGELOG.md) - What's new in v2.0.0 -## 📋 Documentation Structure +## Documentation Structure -### 🚀 User Documentation +### User Documentation | Document | Description | Best For | |----------|-------------|----------| -| [📖 Main README](./README.md) | Overview, installation, basic usage | Everyone | -| [📝 Usage Guide](./USAGE_GUIDE.md) | Complete command examples and workflows | Users wanting comprehensive examples | -| [⚙️ Configuration Management](./CONFIGURATION_MANAGEMENT.md) | Cache clearing, config editing, backups | Users managing application settings | -| [✨ Features Update](./FEATURES_UPDATE.md) | New features in v1.8.1 | Users upgrading from previous versions | -| [📋 Changelog](./CHANGELOG.md) | Version history and changes | Users tracking updates | +| [Main README](../README.md) | Overview, installation, basic usage | Everyone | +| [Usage Guide](USAGE_GUIDE.md) | Complete command examples and workflows | Users wanting comprehensive examples | +| [Configuration Management](CONFIGURATION_MANAGEMENT.md) | Cache clearing, config editing, backups | Users managing application settings | +| [Customization Guide](CUSTOMIZATION_GUIDE.md) | Themes, profiles, aliases | Users personalizing Snatch | +| [Audio Enhancement Guide](AUDIO_ENHANCEMENT_GUIDE.md) | Audio processing presets and workflows | Audio processing users | +| [Interactive Mode Guide](INTERACTIVE_MODE_GUIDE.md) | TUI and interactive features | Interactive mode users | +| [Changelog](CHANGELOG.md) | Version history and changes | Users tracking updates | +| [Disclaimer](Disclaimer.md) | Legal notice | Everyone | -### 🔧 Technical Documentation +### Technical Documentation | Document | Description | Best For | |----------|-------------|----------| -| [🏗️ Technical Documentation](../Documentation/TECHNICAL_DOCUMENTATION.md) | System architecture | Developers | -| [📦 Module Documentation](../Documentation/MODULE_DOCUMENTATION.md) | Detailed module analysis | Contributors | -| [🔌 Plugin Development](../Documentation/PLUGIN_DEVELOPMENT_GUIDE.md) | Plugin system guide | Plugin developers | -| [⚡ Performance Guide](../Documentation/PERFORMANCE_OPTIMIZATION_GUIDE.md) | Optimization tips | Advanced users | +| [Technical Architecture](TECHNICAL_ARCHITECTURE.md) | System architecture overview | Developers | +| [Technical Documentation](TECHNICAL_DOCUMENTATION.md) | Detailed technical reference | Developers | +| [Module Documentation](MODULE_DOCUMENTATION.md) | Module-level API docs | Contributors | +| [API Reference](API_REFERENCE.md) | Function signatures and usage | Developers | +| [Plugin Development](PLUGIN_DEVELOPMENT_GUIDE.md) | Plugin system guide | Plugin developers | +| [Performance Guide](PERFORMANCE_OPTIMIZATION_GUIDE.md) | Optimization strategies | Advanced users | -### 🛠️ Setup & Troubleshooting +### Setup & Troubleshooting | Document | Description | Best For | |----------|-------------|----------| -| [🚀 Deployment Guide](../Documentation/DEPLOYMENT_GUIDE.md) | Installation & deployment | System administrators | -| [🔍 Troubleshooting Guide](../Documentation/TROUBLESHOOTING_GUIDE.md) | Common issues & solutions | Users with problems | -| [🧪 Integration Testing](../Documentation/INTEGRATION_TESTING.md) | Testing procedures | Quality assurance | +| [Deployment Guide](DEPLOYMENT_GUIDE.md) | Installation & deployment | System administrators | +| [Troubleshooting Guide](TROUBLESHOOTING_GUIDE.md) | Common issues & solutions | Users with problems | -## 🔥 What's New in v1.8.1 - -### Critical Fixes - -- ✅ **Fixed Resolution Selection**: `--resolution` flags now work correctly -- ✅ **Proper Quality Selection**: Requesting 2160p actually gets 4K video - -### New Features - -- 🚀 **AI Video Upscaling**: Enhance video quality with Real-ESRGAN -- 🎨 **Multiple Upscaling Methods**: AI and traditional upscaling options -- ⚙️ **Configurable Settings**: Quality presets and scale factors - -## 🎯 Common Use Cases +## Common Use Cases ### Basic Downloads @@ -60,160 +51,40 @@ Welcome to the Snatch v1.8.1 documentation! This page provides an overview of al # Download best quality video snatch download "URL" -# Download specific resolution (now works correctly!) +# Download specific resolution snatch download "URL" --resolution 1080 + +# Download audio only +snatch download "URL" --audio-only --format flac ``` ### Video Enhancement ```bash -# AI upscaling for better quality +# AI upscaling snatch download "URL" --upscale --upscale-method realesrgan # Combine resolution + upscaling snatch download "URL" --resolution 720 --upscale --upscale-factor 2 ``` -### Audio Downloads - -```bash -# High-quality audio -snatch download "URL" --audio-only --format flac - -# Standard MP3 -snatch download "URL" --audio-only --format mp3 -``` - -## 🚀 Getting Help - -### Step-by-Step Process - -1. **Check the FAQ** (in main README troubleshooting section) -2. **Run diagnostics**: `python test_features_verification.py` -3. **Check logs**: Look in `logs/snatch_errors.log` -4. **Review documentation**: Use this index to find relevant guides -5. **Test with verbose output**: Add `--verbose` to your commands - -### Quick Diagnostics - -```bash -# Verify installation -snatch --version - -# Test system capabilities -snatch info - -# Check network speed -snatch speedtest - -# Verify new features -python test_features_verification.py -``` - -## 📊 Performance Tips - -### Optimize Downloads - -- Use `--aria2c` for faster downloads -- Set appropriate `--resolution` to balance quality and speed -- Use `--throttle` to limit bandwidth usage - -### Optimize Upscaling - -- Use `realesrgan` for animated content -- Use `lanczos` for live-action videos -- Use `--replace-original` to save disk space -- Consider `--upscale-quality low` for faster processing - -## 🔧 Configuration - -### Environment Variables - -```bash -set SNATCH_OUTPUT=D:\Downloads # Default download directory -set SNATCH_FFMPEG=C:\ffmpeg\bin # FFmpeg location -set SNATCH_LOG_LEVEL=INFO # Logging verbosity -``` - -### Config File +### Audio Enhancement ```bash -# Edit configuration -snatch config edit +# Enhance with preset +snatch audio enhance "myfile.mp3" --preset music -# View current settings -snatch config show +# Analyze audio quality +snatch audio analyze "myfile.wav" ``` -## 🌟 Advanced Features - -### Batch Processing - -```bash -# Download multiple URLs -snatch batch urls.txt --upscale - -# Process playlists -snatch download "PLAYLIST_URL" --playlist --upscale -``` - -### Automation - -```bash -# Download and enhance in one command -snatch download "URL" --resolution 720 --upscale --upscale-factor 4 --replace-original --organize -``` - -## 📈 Migration Guide - -### From v1.8.0 to v1.8.1 +## Getting Help -1. **Update installation:** - - ```bash - git pull - pip install -e . - ``` - -2. **Test resolution selection:** - - ```bash - # This now works reliably - snatch download "test-url" --resolution 1080 - ``` - -3. **Try new upscaling:** - - ```bash - snatch download "test-url" --upscale - ``` - -### Update Existing Scripts - -- Replace hardcoded resolution workarounds -- Add upscaling options where beneficial -- Update error handling for new features - -## 📞 Support - -### Documentation Hierarchy - -1. **Quick issues**: Main README troubleshooting section -2. **Detailed guides**: This documentation index -3. **Technical details**: Technical documentation folder -4. **Code examples**: Usage guide and features update - -### Self-Service Tools - -- `test_features_verification.py` - Verify installation -- `snatch info` - System information -- `snatch --help` - Command reference -- Log files in `logs/` directory +1. Check the [Troubleshooting Guide](TROUBLESHOOTING_GUIDE.md) +2. Run `snatch info` for system diagnostics +3. Use `snatch --help` for command reference +4. Add `--verbose` for detailed output --- -**📝 Note**: This documentation is for Snatch v1.8.1. For older versions, check the changelog for compatibility information. - -**🔗 Quick Links:** - -- [Main README](./README.md) | [Usage Guide](Documentation/USAGE_GUIDE.md) | [Features Update](Documentation/FEATURES_UPDATE.md) | [Changelog](Documentation/CHANGELOG.md) +**Snatch v2.0.0** | [Main README](../README.md) | [Usage Guide](USAGE_GUIDE.md) | [Changelog](CHANGELOG.md) diff --git a/Documentation/DOCUMENTATION_UPDATE_SUMMARY.md b/Documentation/DOCUMENTATION_UPDATE_SUMMARY.md deleted file mode 100644 index 9ed74b1..0000000 --- a/Documentation/DOCUMENTATION_UPDATE_SUMMARY.md +++ /dev/null @@ -1,194 +0,0 @@ -# 📋 Documentation Update Summary - -## ✅ Completed Documentation Updates for Snatch v1.8.1 - -### 🎯 Major Documentation Additions - -#### 1. **Enhanced Main README** (`markdownfiles/README.md`) - -- ✅ Updated version number to 1.8.1 -- ✅ Added comprehensive resolution selection fix documentation -- ✅ Added AI video upscaling feature overview -- ✅ Updated feature list with new capabilities -- ✅ Enhanced usage examples with correct `snatch download` syntax -- ✅ Added video enhancement CLI options table -- ✅ Updated roadmap to reflect completed features - -#### 2. **New Feature Documentation** - -**📝 FEATURES_UPDATE.md** - Complete guide to new features - -- Detailed resolution selection bug fix explanation -- Comprehensive video upscaling documentation -- CLI options reference with examples -- Performance considerations and tips -- Troubleshooting guide for new features - -**📖 USAGE_GUIDE.md** - Complete command examples and workflows - -- Resolution selection examples (fixed functionality) -- Video upscaling workflows with all methods -- Smart combination strategies -- Real-world usage scenarios -- Performance optimization tips - -**📋 CHANGELOG.md** - Version history and detailed changes - -- Complete changelog for v1.8.1 -- Migration guide from previous versions -- Usage examples for new features -- Known issues and limitations - -**📚 DOCUMENTATION_INDEX.md** - Central documentation hub - -- Organized index of all documentation -- Quick start guides and navigation -- Use case specific documentation routing -- Self-service troubleshooting guide - -#### 3. **Updated Technical Documentation** - -- ✅ Updated Documentation/README.md with new features -- ✅ Version number updates across all files -- ✅ Architecture documentation references to new modules - -#### 4. **Configuration Updates** - -- ✅ Added UPSCALE_PRESETS to `modules/defaults.py` -- ✅ Added UPSCALE_METHODS configuration -- ✅ Updated version number to 1.8.1 - -#### 5. **Verification Scripts** - -- ✅ Created `test_features_verification.py` - Comprehensive system testing -- ✅ Created `simple_verification.py` - Basic functionality testing - -## 🎯 Key Documentation Improvements - -### Resolution Selection Fixes - -- **Problem**: Documented the critical bug where `--resolution` flags didn't work -- **Solution**: Explained the format string fixes and fallback chains -- **Examples**: Provided working command examples for all resolutions - -### Video Upscaling Features - -- **Methods**: Documented Real-ESRGAN, Lanczos, Bicubic, and Bilinear options -- **Configuration**: Explained quality presets and scale factors -- **Workflows**: Provided real-world usage scenarios and optimization tips - -### Command Syntax Updates - -- **Consistency**: All examples now use `snatch download` format -- **New Options**: Documented all new CLI arguments with examples -- **Integration**: Showed how to combine resolution + upscaling effectively - -## 📊 Documentation Structure - -``` -markdownfiles/ -├── README.md # Main documentation (updated) -├── FEATURES_UPDATE.md # New features guide (new) -├── USAGE_GUIDE.md # Complete usage examples (new) -├── CHANGELOG.md # Version history (new) -├── DOCUMENTATION_INDEX.md # Central hub (new) -├── FIXES_README.md # Previous fixes (existing) -├── IMPROVEMENTS_README.md # Previous improvements (existing) -└── TODO.md # Task tracking (existing) - -Documentation/ -├── README.md # Technical docs (updated) -├── TECHNICAL_DOCUMENTATION.md # Architecture (existing) -├── MODULE_DOCUMENTATION.md # Module details (existing) -└── [other technical docs] # Various guides (existing) -``` - -## 🎯 User Experience Improvements - -### Quick Start Path - -1. **New Users**: README → USAGE_GUIDE → hands-on examples -2. **Upgrading Users**: FEATURES_UPDATE → CHANGELOG → migration guide -3. **Developers**: DOCUMENTATION_INDEX → Technical Documentation -4. **Troubleshooting**: DOCUMENTATION_INDEX → specific guides - -### Self-Service Support - -- Comprehensive troubleshooting sections in each guide -- Verification scripts for testing installation -- Clear error resolution steps -- Performance optimization guidance - -## 🚀 New Features Documented - -### ✅ Fixed Resolution Selection - -```bash -# Now works correctly - gets actual requested quality -snatch download "URL" --resolution 2160 # Actually gets 4K! -snatch download "URL" --resolution 1080 # Actually gets 1080p! -``` - -### ✅ AI Video Upscaling - -```bash -# AI enhancement for better quality -snatch download "URL" --upscale --upscale-method realesrgan --upscale-factor 2 - -# Combine resolution + upscaling for optimal bandwidth usage -snatch download "URL" --resolution 720 --upscale --upscale-factor 4 --replace-original -``` - -### ✅ New CLI Options - -| Option | Description | Example | -|--------|-------------|---------| -| `--upscale` | Enable video upscaling | `--upscale` | -| `--upscale-method` | Choose algorithm | `--upscale-method realesrgan` | -| `--upscale-factor` | Scale factor | `--upscale-factor 2` | -| `--upscale-quality` | Quality preset | `--upscale-quality high` | -| `--replace-original` | Replace source file | `--replace-original` | - -## 📈 Quality Assurance - -### Testing Coverage - -- ✅ All resolution selection scenarios documented and tested -- ✅ Video upscaling workflows verified -- ✅ CLI integration confirmed -- ✅ Documentation consistency checked - -### User Validation - -- ✅ Clear examples for each feature -- ✅ Troubleshooting guides for common issues -- ✅ Performance optimization tips included -- ✅ Migration paths from previous versions - -## 🎉 Conclusion - -The documentation has been comprehensively updated to reflect: - -1. **Critical Bug Fixes**: Resolution selection now works correctly -2. **Major New Features**: AI-powered video upscaling capabilities -3. **Enhanced User Experience**: Clear guides and examples -4. **Self-Service Support**: Verification scripts and troubleshooting -5. **Future-Ready**: Organized structure for ongoing updates - -### Next Steps for Users - -1. Read `FEATURES_UPDATE.md` for overview of changes -2. Use `USAGE_GUIDE.md` for practical examples -3. Run verification scripts to test installation -4. Refer to `DOCUMENTATION_INDEX.md` for specific needs - -### Next Steps for Developers - -1. Review technical documentation updates -2. Test new features with provided scripts -3. Consider contributing additional examples or improvements -4. Use the new documentation structure as a template for future updates - ---- - -**All documentation is now current for Snatch v1.8.1 with complete coverage of resolution selection fixes and video upscaling features.** diff --git a/Documentation/FEATURES_UPDATE.md b/Documentation/FEATURES_UPDATE.md deleted file mode 100644 index 436f84a..0000000 --- a/Documentation/FEATURES_UPDATE.md +++ /dev/null @@ -1,277 +0,0 @@ -# 🚀 Snatch v1.8.0 - Resolution & Video Upscaling Update - -## 📋 Overview - -This update addresses critical resolution selection issues and introduces AI-powered video upscaling capabilities to enhance your media downloading experience. - -## 🔧 Critical Fixes - -### Resolution Selection Bug Fix - -**Problem Solved:** The `--resolution` (`-r`) flag was not working correctly. When requesting 2160p/4K videos, the system would ignore the flag and download in random quality. - -**Solution Implemented:** - -- Fixed format string generation from `best[height>=1080]` to `bestvideo[height<=1080]+bestaudio/best[height<=1080]` -- Implemented proper fallback chains: 4K → 1440p → 1080p → 720p → 480p → best available -- Added enhanced logging for debugging resolution selection - -**Before:** - -```bash -# This would often fail or ignore the resolution -snatch download "URL" --resolution 2160 -``` - -**After:** - -```bash -# Now works reliably with proper format selection -snatch download "URL" --resolution 2160 # Gets actual 4K/2160p video -snatch download "URL" --resolution 1080 # Gets actual 1080p video -snatch download "URL" --resolution 720 # Gets actual 720p video -``` - -## 🎨 New Feature: AI Video Upscaling - -### What is Video Upscaling? - -Video upscaling enhances video quality by increasing resolution and improving visual details using advanced algorithms, including AI-powered methods. - -### Supported Upscaling Methods - -| Method | Type | Best For | Quality | Speed | -|--------|------|----------|---------|-------| -| `realesrgan` | AI-powered | Anime, cartoons, graphics | Highest | Slower | -| `lanczos` | Traditional | Live action, photographs | High | Medium | -| `bicubic` | Traditional | General purpose | Good | Fast | -| `bilinear` | Traditional | Quick processing | Basic | Fastest | - -### Upscaling Configuration - -**Factors Available:** - -- `2x`: Double the resolution (e.g., 1080p → 2160p) -- `4x`: Quadruple the resolution (e.g., 720p → 2880p) - -**Quality Presets:** - -- `low`: Fast processing, basic enhancement -- `medium`: Balanced quality and speed (default) -- `high`: Maximum quality, slower processing - -## 💻 Command Examples - -### Basic Upscaling - -```bash -# Enable basic 2x upscaling with AI -snatch download "https://example.com/video" --upscale - -# Use specific AI method with 4x upscaling -snatch download "https://example.com/video" --upscale --upscale-method realesrgan --upscale-factor 4 - -# Traditional upscaling with high quality -snatch download "https://example.com/video" --upscale --upscale-method lanczos --upscale-quality high -``` - -### Combined Resolution & Upscaling - -```bash -# Download 720p and upscale to 1440p equivalent -snatch download "https://example.com/video" --resolution 720 --upscale --upscale-factor 2 - -# Download 1080p and upscale to 4K equivalent -snatch download "https://example.com/video" --resolution 1080 --upscale --upscale-factor 2 - -# Download lowest quality and upscale to high quality -snatch download "https://example.com/video" --resolution 480 --upscale --upscale-factor 4 -``` - -### Advanced Options - -```bash -# Replace original file after upscaling (saves space) -snatch download "https://example.com/video" --upscale --replace-original - -# Combine with other features -snatch download "https://example.com/video" --upscale --upscale-method realesrgan --aria2c --stats -``` - -## 🎯 CLI Options Reference - -### Video Enhancement Options - -| Option | Short | Type | Default | Description | -|--------|-------|------|---------|-------------| -| `--upscale` | `-u` | Flag | `False` | Enable video upscaling | -| `--upscale-method` | | String | `lanczos` | Upscaling algorithm | -| `--upscale-factor` | | Integer | `2` | Scale factor (2x or 4x) | -| `--upscale-quality` | | String | `medium` | Quality preset | -| `--replace-original` | | Flag | `False` | Replace source file | - -### Fixed Resolution Options - -| Option | Short | Type | Description | -|--------|-------|------|-------------| -| `--resolution` | `-r` | Integer | Target resolution (now works correctly) | - -**Available Resolutions:** - -- `2160` - 4K/UHD (3840×2160) -- `1440` - QHD (2560×1440) -- `1080` - Full HD (1920×1080) -- `720` - HD (1280×720) -- `480` - SD (854×480) - -## 🔄 Workflow Examples - -### Scenario 1: Enhance Old Videos - -```bash -# Download older content and upscale for modern displays -snatch download "old-video-url" --upscale --upscale-method realesrgan --upscale-factor 4 -``` - -### Scenario 2: Save Bandwidth, Enhance Later - -```bash -# Download in lower quality to save bandwidth, then upscale -snatch download "video-url" --resolution 720 --upscale --upscale-factor 2 --replace-original -``` - -### Scenario 3: Maximum Quality - -```bash -# Get highest available resolution and enhance further -snatch download "video-url" --resolution 2160 --upscale --upscale-quality high -``` - -## 🛠️ Technical Implementation - -### Architecture - -The video upscaling system is implemented through: - -1. **VideoUpscaler Class** (`modules/ffmpeg_helper.py`) - - Handles Real-ESRGAN and traditional upscaling methods - - Manages upscaling configuration and execution - - Provides progress tracking and error handling - -2. **Pipeline Integration** (`modules/manager.py`) - - Automatic upscaling detection based on CLI arguments - - Seamless integration with download workflow - - File management and cleanup - -3. **Configuration System** (`modules/defaults.py`) - - Predefined upscaling presets and configurations - - Quality and performance optimization settings - -### Dependencies - -- **FFmpeg**: Required for all video processing -- **Real-ESRGAN**: Optional, for AI-powered upscaling (automatically downloaded when needed) -- **Python 3.8+**: Core system requirements - -## 📊 Performance Considerations - -### Processing Time - -| Resolution | Method | Factor | Estimated Time* | -|------------|--------|--------|----------------| -| 720p | Lanczos | 2x | 1-2 minutes | -| 720p | Real-ESRGAN | 2x | 5-10 minutes | -| 1080p | Lanczos | 2x | 2-4 minutes | -| 1080p | Real-ESRGAN | 2x | 10-20 minutes | - -*Times vary based on system specifications and video length - -### Storage Requirements - -- **Temporary Space**: 2-3x the original file size during processing -- **Final Size**: 2-4x larger than original (depends on upscaling factor) -- **Use `--replace-original`**: To save space by removing the source file - -## 🚀 Getting Started - -### Quick Start - -1. **Update to latest version:** - - ```bash - git pull - pip install -e . - ``` - -2. **Test resolution selection:** - - ```bash - snatch download "test-url" --resolution 1080 - ``` - -3. **Try video upscaling:** - - ```bash - snatch download "test-url" --upscale - ``` - -### Requirements Check - -```bash -# Verify FFmpeg installation -ffmpeg -version - -# Check system resources -snatch info - -# Test network speed -snatch speedtest -``` - -## 🐛 Troubleshooting - -### Common Issues - -**Resolution not working:** - -- Update to latest version - this bug is now fixed -- Check available formats: `snatch download "URL" --list-formats` - -**Upscaling fails:** - -- Ensure FFmpeg is properly installed -- Check available disk space (need 2-3x file size) -- Try different upscaling method: `--upscale-method lanczos` - -**Real-ESRGAN errors:** - -- Allow automatic download of Real-ESRGAN models -- Check internet connection for model downloads -- Fall back to traditional methods if needed - -### Performance Tips - -1. **Use appropriate upscaling methods:** - - Real-ESRGAN for animated content - - Lanczos for live action - - Bilinear for quick processing - -2. **Optimize for your system:** - - Lower quality preset for older hardware - - Use `--replace-original` to save space - - Monitor system resources during processing - -3. **Batch processing:** - - Process multiple files sequentially - - Use lower factors for faster processing - - Consider processing overnight for large batches - -## 📈 Future Enhancements - -- Additional AI upscaling models -- Batch upscaling capabilities -- GPU acceleration support -- Custom upscaling profiles -- Quality comparison tools - ---- diff --git a/Documentation/FIXES_README.md b/Documentation/FIXES_README.md deleted file mode 100644 index 424d1c4..0000000 --- a/Documentation/FIXES_README.md +++ /dev/null @@ -1,81 +0,0 @@ -# Snatch-DL Fixes - -This directory contains various scripts to fix critical issues in the Snatch-DL media downloader. - -## Quick Fix Guide - -To apply all fixes at once, run: - -```bash -python apply_all_fixes.py -``` - -This script will: - -1. Fix the interactive mode's `RowDoesNotExist` error -2. Fix the download command with proper asyncio event loop handling -3. Ensure proper configuration with automatic directory creation - -## Individual Fix Scripts - -If you prefer to apply fixes individually: - -- **direct_fix.py** - Applies direct patches to fix the most critical issues: - - ```bash - python direct_fix.py - ``` - -- **fix_interactive_mode.py** - Specifically fixes interactive mode issues: - - ```bash - python fix_interactive_mode.py - ``` - -- **ensure_config.py** - Validates and creates the configuration file: - - ```bash - python ensure_config.py - ``` - -## Testing Your Installation - -After applying the fixes, you can test if they worked correctly: - -```bash -python test_audio_and_resolution.py -``` - -This will test various download options including audio-only and resolution-specific downloads. - -## Usage After Fixes - -Once the fixes are applied, you can use these commands: - -1. Download a video: - - ```bash - snatch download - ``` - -2. Download audio only: - - ```bash - snatch download --audio-only - ``` - -3. Download at specific resolution: - - ```bash - snatch download --resolution 720 - ``` - -4. Use interactive mode: - - ```bash - snatch interactive - ``` - -## Detailed Fix Information - -For detailed technical information about the fixes, please see the [FIXES_SUMMARY.md](./FIXES_SUMMARY.md) file. diff --git a/Documentation/FIXES_SUMMARY.md b/Documentation/FIXES_SUMMARY.md deleted file mode 100644 index c0a6874..0000000 --- a/Documentation/FIXES_SUMMARY.md +++ /dev/null @@ -1,163 +0,0 @@ -# Snatch-DL Fixes Summary - -## Critical Issues Fixed - -1. **Interactive Mode RowDoesNotExist Error** - - Fixed the `get_selected_format` method to handle empty tables and row access errors - - Added proper error handling and null checks for the table rows - - Ensured the format selection defaults to "best" when no rows exist or on error - -2. **Download Command Not Working** - - Fixed asyncio event loop handling in the CLI module's download command - - Ensured proper execution of download commands with flags like `--audio-only` and `--resolution` - - Improved error handling and recovery when event loop issues occur - -3. **Configuration Management** - - Enhanced config.json validation with automatic directory creation - - Added robust error handling for missing configuration keys - - Ensured platform-specific paths are properly handled - -4. **Previous Issues Addressed** - - Fixed duplicate `AudioConversionError` class definition in `manager.py` - - Fixed incorrect parameter passing to `validate_ffmpeg_installation()` - - Improved interactive mode with better error handling - -## Implementation Details - -### AsyncDownloadManager Fixes - -The `download_with_options` method in `AsyncDownloadManager` class was fixed to properly handle: - -- Audio-only downloads with FFmpeg post-processing -- Resolution-specific downloads with proper format selection -- Error handling for missing dependencies - -### Interactive Mode Enhancements - -- Added proper error handling for `get_selected_format` method -- Fixed table row access to prevent RowDoesNotExist errors -- Added safe defaults when format selection fails - -### Additional Improvements - -- Added robust error handling for FFmpeg-related operations -- Created comprehensive verification and test scripts -- Improved configuration management for more reliable operation - -## Technical Implementation Details - -### Interactive Mode Fix - -The critical issue in interactive mode was the `RowDoesNotExist` error in the `get_selected_format` method. The fix adds proper checking and handling: - -```python -def get_selected_format(self) -> Optional[str]: - """Get the selected format ID""" - table = self.query_one("#format-table") - - # Check if table has any rows - if not table.row_count: - return "best" - - # Check if a row is selected - if table.cursor_row is not None: - try: - # Access the row safely - return table.get_row_at(table.cursor_row)[1] # Format ID is in column 1 - except Exception as e: - logging.warning(f"Error selecting format: {str(e)}") - return "best" - - # Default to best quality if nothing is selected - return "best" -``` - -This ensures that: - -1. If there are no rows, it defaults to "best" quality -2. It safely attempts to access the selected row with proper exception handling -3. If an exception occurs, it logs the error and defaults to "best" quality - -### Download Command Fix - -The second critical issue involved the download command not working properly. The fix ensures that async operations are handled correctly: - -```python -# Start the download process -try: - # Use loop.run_until_complete to ensure the download completes - loop = asyncio.get_event_loop() - loop.run_until_complete(self.run_download(urls, options)) - return 0 -except RuntimeError: - # If we can't run directly, fall back to previous method - self.run_async(self.run_download(urls, options)) - return 0 -``` - -This approach: - -1. Attempts to use the current event loop properly -2. Falls back to an alternative method if runtime errors occur -3. Ensures that the download process always completes - -### Configuration Enhancement - -The configuration handling was improved with robust validation and directory creation: - -```python -def validate_config(config): - """Validate configuration and create any missing directories""" - required_dirs = [ - "video_output", - "audio_output", - "sessions_dir", - "cache_dir" - ] - - # Check and create required directories - for dir_key in required_dirs: - if dir_key in config: - directory = config[dir_key] - if not os.path.exists(directory): - os.makedirs(directory, exist_ok=True) -``` - -This ensures that all required directories exist before the application attempts to use them. - -### Fix Management Scripts - -The fixes are organized into multiple scripts: - -1. `apply_all_fixes.py` - The main script that applies all fixes in sequence -2. `direct_fix.py` - Uses regex to directly patch the affected code -3. `fix_interactive_mode.py` - Focuses specifically on fixing the interactive mode -4. `ensure_config.py` - Ensures proper configuration setup - -These scripts can be run independently or in sequence through the main `apply_all_fixes.py` script. - -## Testing Approach - -Created several test scripts: - -1. `test_audio_and_resolution.py` - Tests audio-only and resolution downloads -2. `apply_all_fixes.py` - Applies all fixes in the correct sequence -3. `direct_fix.py` - Provides direct fixes to the critical issues -4. `fix_interactive_mode.py` - Specifically fixes the interactive mode issues -5. `ensure_config.py` - Ensures configuration is properly set up - -## Future Enhancements - -Consider implementing: - -1. More comprehensive progress reporting -2. Better error messaging for end users -3. Improved dependency validation at startup -4. More robust event loop handling for asyncio operations - -## Usage Instructions - -- For audio downloads: `snatch download --audio-only URL` -- For video at specific resolution: `snatch download --resolution 720 URL` -- For interactive mode: `snatch interactive` -- For comprehensive fixes: `python apply_all_fixes.py` diff --git a/Documentation/INTERACTIVE_MODE_GUIDE.md b/Documentation/INTERACTIVE_MODE_GUIDE.md index e3a9a90..f5665cc 100644 --- a/Documentation/INTERACTIVE_MODE_GUIDE.md +++ b/Documentation/INTERACTIVE_MODE_GUIDE.md @@ -254,7 +254,7 @@ snatch customize interface --setting high_contrast_mode --value true ```bash # Check dependencies -pip install -r setupfiles/requirements.txt +pip install -e ".[all]" # Verify installation snatch --version diff --git a/Documentation/MODULE_DOCUMENTATION.md b/Documentation/MODULE_DOCUMENTATION.md index 67f0b0e..d54a58f 100644 --- a/Documentation/MODULE_DOCUMENTATION.md +++ b/Documentation/MODULE_DOCUMENTATION.md @@ -2,7 +2,7 @@ ## Core Module Analysis -### modules/manager.py - Download Management System +### snatch/manager.py - Download Management System #### Architecture Overview @@ -130,7 +130,7 @@ The manager implements sophisticated memory management: --- -### modules/audio_processor.py - Audio Enhancement System +### snatch/audio_processor.py - Audio Enhancement System #### Architecture Overview @@ -232,7 +232,7 @@ await processor.apply_filter_chain([ --- -### modules/p2p.py - Peer-to-Peer System +### snatch/p2p.py - Peer-to-Peer System #### Architecture Overview @@ -351,7 +351,7 @@ p2p.register_discovery_method(CustomDiscovery()) --- -### modules/session.py - Session Management +### snatch/session.py - Session Management #### Purpose @@ -402,7 +402,7 @@ Provides persistent session management for download resumption and state trackin --- -### modules/config.py - Configuration System +### snatch/config.py - Configuration System #### Purpose @@ -456,7 +456,7 @@ Centralized configuration management with validation, defaults, and environment --- -### modules/cache.py - Caching System +### snatch/cache.py - Caching System #### Purpose diff --git a/Documentation/PERFORMANCE_OPTIMIZATION_GUIDE.md b/Documentation/PERFORMANCE_OPTIMIZATION_GUIDE.md index 63dde8d..5f79145 100644 --- a/Documentation/PERFORMANCE_OPTIMIZATION_GUIDE.md +++ b/Documentation/PERFORMANCE_OPTIMIZATION_GUIDE.md @@ -2,7 +2,7 @@ ## Overview -This guide provides comprehensive strategies and techniques for optimizing the performance of the Snatch media downloader across different system configurations and use cases, with special focus on the new audio enhancement features introduced in v1.8.0. +This guide provides comprehensive strategies and techniques for optimizing the performance of the Snatch media downloader across different system configurations and use cases, with special focus on the audio enhancement features. ## Table of Contents diff --git a/Documentation/PLUGIN_DEVELOPMENT_GUIDE.md b/Documentation/PLUGIN_DEVELOPMENT_GUIDE.md index 0d2cbbb..aad3abf 100644 --- a/Documentation/PLUGIN_DEVELOPMENT_GUIDE.md +++ b/Documentation/PLUGIN_DEVELOPMENT_GUIDE.md @@ -84,7 +84,7 @@ Download hooks allow plugins to interact with the download lifecycle at key poin #### Interface Definition ```python -from modules.manager import DownloadHooks, DownloadChunk +from snatch.manager import DownloadHooks, DownloadChunk from typing import Dict, Any class DownloadPlugin(DownloadHooks, PluginInterface): @@ -143,7 +143,7 @@ import time import json from pathlib import Path from typing import Dict, Any -from modules.manager import DownloadChunk +from snatch.manager import DownloadChunk class AnalyticsPlugin(DownloadPlugin): """Plugin that tracks download analytics and performance metrics""" diff --git a/Documentation/README.md b/Documentation/README.md deleted file mode 100644 index 9395bc3..0000000 --- a/Documentation/README.md +++ /dev/null @@ -1,1058 +0,0 @@ -

- Snatch Logo -

- -

Snatch

-

Download Anything, Anywhere, Anytime

- -

- Features • - Installation • - Quick Start • - Usage • - Supported Sites • - Troubleshooting -

-

- -CodeQL Status -Version 2.0.0 -Python 3.7+ -Platforms -License -

- -## What's New in v1.8.0 - -### 🎯 Major New Features & Enhancements - -#### **🎵 Comprehensive Audio Enhancement System** - -- **AI-Powered Audio Enhancement**: Advanced noise reduction, frequency extension, and stereo widening -- **Professional Audio Presets**: 5 curated presets (podcast, music, speech, broadcast, restoration) -- **Sample Rate Upscaling**: Intelligent upsampling to higher quality audio -- **Dynamic Range Processing**: Professional loudness normalization and compression -- **Audio Quality Analysis**: Automatic preset recommendations based on content analysis -- **CLI Integration**: Complete command-line interface for audio enhancement - -#### **🔧 Fixed Resolution Selection Bug** - -- **RESOLVED**: Resolution flags (`--resolution`, `-r`) now work correctly -- **IMPACT**: When requesting 2160p/4K, system now properly selects the highest available quality -- **IMPROVEMENT**: Enhanced format string generation with proper fallback chains - -#### **🚀 AI-Powered Video Upscaling** - -- **NEW**: Real-ESRGAN integration for AI-enhanced video quality -- **METHODS**: Support for both AI (Real-ESRGAN) and traditional (Lanczos, Bicubic) upscaling -- **FLEXIBLE**: 2x and 4x upscaling factors with quality preservation options -- **EFFICIENT**: Optimized processing pipeline with progress tracking - -#### **🎮 Interactive Mode Enhancements** - -- **Enhanced UI**: Modern Textual-based interface with rich components -- **Audio Processing**: Built-in audio conversion and enhancement tools -- **File Management**: Advanced file organization and management features -- **Real-time Processing**: Background audio/video processing with progress tracking - -#### **📚 Comprehensive Documentation** - -- **[🎯 Features Update Guide](./FEATURES_UPDATE.md)** - Detailed overview of new features -- **[📖 Usage Guide](./USAGE_GUIDE.md)** - Complete command examples and workflows -- **[🔧 Technical Documentation](../Documentation/README.md)** - Architecture and implementation details - -#### **Quick Examples:** - -```bash -# Fixed resolution selection (now works correctly) -snatch download "URL" --resolution 2160 # Actually gets 4K! - -# AI video upscaling -snatch download "URL" --upscale --upscale-method realesrgan --upscale-factor 2 - -# Audio enhancement with presets -snatch audio enhance myfile.mp3 --preset music -snatch audio enhance podcast.wav --preset podcast --output enhanced_podcast.wav - -# Audio quality analysis and recommendations -snatch audio analyze myfile.wav -snatch audio presets --detailed - -# Batch audio processing -snatch audio batch "*.mp3" --preset restoration - -# Combine resolution + upscaling for optimal results -snatch download "URL" --resolution 720 --upscale --upscale-factor 4 --replace-original -``` - -### 🎯 Major Architectural Overhaul - -#### **Complete Package Refactoring & Modularization** - -- **Modular Architecture**: Split monolithic `Snatch.py` into a well-structured package under `modules/`: - - `cli.py` - Command-line interface and argument parsing - - `manager.py` - Core download management and orchestration - - `config.py` - Configuration loading, validation, and management - - `audio_processor.py` - Advanced audio enhancement and processing - - `ffmpeg_helper.py` - Video upscaling and FFmpeg processing - - `p2p.py` - Peer-to-peer networking and file sharing - - `cache.py` - Intelligent caching and metadata storage - - `session.py` - Network session management and optimization - - `progress.py` - Enhanced progress tracking and display - - `utils.py` - Shared utilities and helper functions - - `plugins.py` - Plugin system and hook management - - `logging_config.py` - Comprehensive logging configuration - - `constants.py` - Application constants and defaults - - `metadata.py` - Media information extraction and processing - - `cyberpunk_ui.py` - Cyberpunk-themed UI components - -#### **Enhanced Plugin System** - -- **Hook-Based Architecture**: Comprehensive plugin system with multiple hook points -- **Plugin Interfaces**: Support for DownloadHooks, ProcessingPlugin, and UIPlugin -- **Dynamic Loading**: Automatic plugin discovery and registration -- **Event System**: Pre/post download hooks, format processing, and UI customization - -#### **Advanced Audio Processing** - -- **AI-Enhanced Audio**: Intelligent audio enhancement using machine learning algorithms -- **Multi-Format Support**: Opus, MP3, FLAC, WAV, and M4A with quality optimization -- **Audio Normalization**: Automatic loudness normalization and dynamic range processing -- **Surround Sound**: Support for stereo and 7.1 surround sound configurations - -#### **Peer-to-Peer Networking** - -- **P2P File Sharing**: Share downloaded content directly with other users -- **Share Code System**: Generate unique codes for easy file sharing -- **Network Discovery**: Automatic peer discovery and connection management -- **Distributed Caching**: Leverage peer network for faster downloads - -### 🚀 Performance & User Experience Improvements - -#### **Smart Performance Optimization** - -- **Adaptive Resource Management**: Dynamic chunk sizes based on system resources -- **Network Speed Testing**: Automatic optimization based on connection speed -- **Smart Format Selection**: Intelligent format selection without testing all possibilities -- **Concurrent Processing**: Enhanced multi-threaded download and processing - -#### **Enhanced User Interface** - -- **Cyberpunk Theme**: Futuristic, neon-styled interface with animations -- **Interactive Progress**: Real-time progress bars with detailed statistics -- **Spinner Animations**: Enhanced visual feedback during operations -- **Rich Console Output**: Color-coded messages and status indicators - -#### **Improved Error Handling & Recovery** - -- **Intelligent Retry Logic**: Exponential backoff with smart failure recovery -- **Detailed Error Messages**: Actionable error descriptions with solutions -- **Advanced Logging**: Comprehensive logging with configurable verbosity levels -- **Graceful Degradation**: Fallback mechanisms for various failure scenarios - -### 📚 Comprehensive Documentation Suite - -We've created an extensive documentation ecosystem to support developers and users: - -#### **📖 [Technical Documentation](./TECHNICAL_DOCUMENTATION.md)** - -- Complete system architecture overview with visual diagrams -- Component interaction flows and data flow analysis -- Dependency relationships and module hierarchies -- Comprehensive file structure documentation - -#### **🔧 [Module Documentation](./MODULE_DOCUMENTATION.md)** - -- In-depth analysis of all core modules -- Function signatures, parameters, and return values -- Usage examples and best practices -- Module interaction patterns - -#### **🔌 [Plugin Development Guide](./PLUGIN_DEVELOPMENT_GUIDE.md)** - -- Complete plugin architecture documentation -- Hook system explanation with practical examples -- Plugin registration and lifecycle management -- Sample plugin implementations - -#### **📋 [API Reference](./API_REFERENCE.md)** - -- Comprehensive API documentation -- Method signatures with detailed parameters -- Error handling and return codes -- Usage examples for all major functions - -#### **🚀 [Deployment Guide](./DEPLOYMENT_GUIDE.md)** - -- Development environment setup -- Production deployment strategies -- Docker containerization -- Platform-specific installation guides -- Security considerations and best practices - -#### **⚡ [Performance Optimization Guide](./PERFORMANCE_OPTIMIZATION_GUIDE.md)** - -- System resource optimization strategies -- Network performance tuning -- Memory and CPU optimization techniques -- Caching strategies and storage optimization -- Platform-specific performance tips - -#### **🔍 [Troubleshooting Guide](./TROUBLESHOOTING_GUIDE.md)** - -- Quick diagnostic procedures -- Common issues and solutions -- Platform-specific troubleshooting -- Error codes reference -- Advanced debugging techniques - -#### **🧪 [Integration Testing](./INTEGRATION_TESTING.md)** - -- Comprehensive testing strategies -- Test suite documentation -- Continuous integration setup -- Quality assurance procedures - -### 🛠️ Technical Improvements - -#### **Code Architecture Enhancements** - -- **Circular Dependency Resolution**: Eliminated circular dependencies for better stability -- **Import Optimization**: Improved import hygiene and reduced startup times -- **Memory Management**: Enhanced memory efficiency and garbage collection -- **Type Safety**: Comprehensive type hints and validation - -#### **Configuration Management** - -- **Flexible Configuration**: JSON-based configuration with validation -- **Environment Variables**: Support for environment-based configuration -- **Profile System**: Multiple configuration profiles for different use cases -- **Dynamic Reloading**: Hot-reload configuration changes without restart - -#### **Security & Reliability** - -- **Input Validation**: Comprehensive input sanitization and validation -- **Secure Networking**: Enhanced SSL/TLS handling and certificate validation -- **Rate Limiting**: Intelligent rate limiting to prevent API abuse -- **Crash Recovery**: Automatic crash detection and recovery mechanisms - -## 🚀 Overview - -**Snatch** is a powerful and user-friendly media downloader that lets you grab videos, audio, and more from hundreds of websites in various formats and qualities. With its sleek interface, comprehensive customization system, and powerful features, downloading media has never been easier or more satisfying! - -

✨ Features

- -### 🎨 **Comprehensive Customization System** - -- **8 Built-in Themes** - Default, Dark, Light, High Contrast, Cyberpunk, Minimal, Ocean, and Forest themes -- **3 Interactive Interfaces** - Enhanced, Modern, and Textual TUI modes with rich interface options -- **Performance Tuning** - Fine-tune download speeds, connection limits, memory usage, and resource management -- **Behavior Customization** - Configure confirmations, auto-organization, session management, and error handling -- **Interface Personalization** - Customize progress styles, keyboard shortcuts, display options, and accessibility features -- **Command Aliases** - Create custom shortcuts for frequently used commands -- **Profile System** - Save and switch between different configuration profiles -- **Import/Export Settings** - Share configurations in YAML, JSON, or TOML formats - -### 🖥️ **Enhanced Interactive Modes** - -- **Cyberpunk Interface** - Futuristic themed interface with neon aesthetics and advanced features -- **Modern Interface** - Clean, contemporary design with intuitive controls and beautiful animations -- **Textual TUI** - Advanced terminal user interface with rich components and responsive design -- **Enhanced CLI** - Rich-powered command line with syntax highlighting and interactive prompts - -### 🎯 **Core Download Features** - -- **Fixed Resolution Selection** - Properly working --resolution/-r flags for accurate quality selection -- **AI Video Upscaling** - Enhance video quality with Real-ESRGAN or traditional upscaling methods (2x/4x) -- **Dynamic Resource Management** - Adaptive chunk sizes based on your system's resources -- **Site Explorer** - Browse and search through 1000+ supported sites -- **Advanced Audio Options** - Choose between Opus (default), MP3, FLAC formats and stereo/surround sound -- **Smart Conversion** - High-quality audio extraction with format options -- **Concurrent Downloads** - Download multiple files simultaneously -- **Quality Selection** - Choose specific video resolutions with reliable format selection -- **Video Enhancement** - Upscale videos with configurable factors (2x, 4x) and quality preservation -- **Playlist Support** - Download entire playlists with options to select specific videos -- **Cache System** - Optimized repeat downloads with smart caching -- **Error Recovery** - Robust error handling and helpful suggestions -- **Format Flexibility** - Video, Opus, MP3, FLAC, WAV, and more -- **Universal Compatibility** - Works on Windows, macOS, and Linux -- **Automatic File Organization** - Organize downloads based on metadata -- **Resume Downloads** - Continue interrupted downloads from where they left off -- **Download Statistics** - Track and display download performance metrics -- **aria2c Support** - Optional high-speed download engine for better performance -- **Network Speed Testing** - Automatically optimize settings based on your connection speed -- **Smart Format Selection** - Intelligently selects best format without testing all possibilities -- **Temporary File Management** - Advanced handling of temporary files to prevent disk space waste - -## 🎨 Customization System - -Snatch features a comprehensive customization system that allows you to personalize every aspect of the application to match your preferences and workflow. - -### 🎭 Theme Management - -**Available Themes:** - -- `default` - Standard Snatch appearance -- `dark` - Dark mode with comfortable contrast -- `light` - Clean light theme -- `high_contrast` - Enhanced visibility for accessibility -- `cyberpunk` - Futuristic neon aesthetics -- `minimal` - Clean, distraction-free interface -- `ocean` - Calming blue tones -- `forest` - Nature-inspired green palette - -**Quick Theme Commands:** - -```bash -# View current theme -snatch customize theme show - -# List all available themes -snatch customize theme list - -# Switch themes -snatch customize theme set --theme cyberpunk -snatch customize theme set --theme dark - -# Create custom theme with JSON colors -snatch customize theme create --colors '{"primary": "#ff0000", "secondary": "#00ff00"}' -``` - -### 🖥️ Interactive Interface Modes - -Launch Snatch with different interface experiences: - -```bash -# Enhanced interactive mode (default) -snatch interactive - -# Modern beautiful interface -snatch modern - -# Advanced Textual TUI -snatch textual - -# Direct cyberpunk-themed interface -snatch # Uses current theme setting -``` - -### ⚙️ Performance Customization - -Fine-tune performance settings for optimal downloads: - -```bash -# View all performance settings -snatch customize performance --show - -# Adjust concurrent downloads -snatch customize performance --setting max_concurrent_downloads --value 8 - -# Set bandwidth limits (0 = unlimited) -snatch customize performance --setting global_bandwidth_limit --value 1000 - -# Configure memory usage -snatch customize performance --setting max_memory_usage_mb --value 1024 - -# Optimize chunk sizes for your connection -snatch customize performance --setting chunk_size --value 2097152 -``` - -### 🎛️ Interface Personalization - -Customize the interface to your preferences: - -```bash -# Show interface settings -snatch customize interface --show - -# Enable detailed interface mode -snatch customize interface --setting interface_mode --value detailed - -# Customize progress animations -snatch customize interface --setting animate_progress --value true - -# Set display limits -snatch customize interface --setting max_display_items --value 100 -``` - -### 🎯 Behavior Configuration - -Control how Snatch behaves during operations: - -```bash -# View behavior settings -snatch customize behavior --show - -# Configure file overwrite confirmations -snatch customize behavior --setting confirm_file_overwrite --value true - -# Auto-organize downloads by type -snatch customize behavior --setting auto_organize_downloads --value true - -# Set large download threshold (MB) -snatch customize behavior --setting large_download_threshold_mb --value 500 -``` - -### 🔗 Command Aliases - -Create shortcuts for frequently used commands: - -```bash -# List current aliases -snatch customize alias list - -# Add custom aliases -snatch customize alias add --alias "dl" --command "download" -snatch customize alias add --alias "4k" --command "download --resolution 2160" - -# Remove aliases -snatch customize alias remove --alias "dl" -``` - -### 📁 Profile Management - -Save and switch between different configuration profiles: - -```bash -# List available profiles -snatch customize profile list - -# Create new profile -snatch customize profile create --name "work" - -# Load a profile -snatch customize profile load --name "work" - -# Delete profile -snatch customize profile delete --name "old-profile" -``` - -### 📤 Import/Export Settings - -Share configurations across devices or backup your settings: - -```bash -# Export settings to YAML -snatch customize export my-settings.yaml - -# Export to JSON format -snatch customize export my-settings.json --format json - -# Import settings from file -snatch customize import my-settings.yaml - -# Reset to defaults -snatch customize reset -``` - -

🔧 Installation

- -### Prerequisites - -Before installing Snatch, make sure you have: - -1. **Python**: Version 3.8 or higher - - ```powershell - python --version # Should show 3.8 or higher - ``` - -2. **Git**: For cloning the repository - - ```powershell - git --version # Should show git version - ``` - -3. **FFmpeg**: Required for audio/video processing - - Windows users can run `setupfiles/setup_ffmpeg.py` after installation - - Linux/macOS users can use their package manager - -### Step-by-Step Installation - -1. **Clone the Repository** - - ```powershell - git clone https://github.com/Rashed-alothman/Snatch.git - cd Snatch - ``` - -2. **Create a Virtual Environment** - - ```powershell - # Create a new virtual environment - python -m venv .venv - - # Activate it: - # On Windows PowerShell: - .\.venv\Scripts\Activate.ps1 - # On Windows CMD: - .\.venv\Scripts\activate.bat - # On Linux/macOS: - source .venv/bin/activate - ``` - -3. **Install Dependencies** - - ```powershell - # Install required packages - pip install -r setupfiles/requirements.txt - - # Install Snatch in development mode - pip install -e . - ``` - -4. **Setup FFmpeg (Windows)** - - ```powershell - # Automatic FFmpeg setup for Windows - python setupfiles/setup_ffmpeg.py - ``` - -5. **Verify Installation** - - ```powershell - snatch --version - ``` - -### Quick Start Guide - -Once installed, you can use Snatch in several ways: - -1. **Interactive Mode (Recommended)** - - ```powershell - snatch - ``` - -2. **Direct Download Commands** - - ```powershell - # Download video in best quality - snatch download "https://youtube.com/watch?v=example" - - # Download audio only (Opus format) - snatch download "https://youtube.com/watch?v=example" --audio-only - - # Download with specific format - snatch download "https://youtube.com/watch?v=example" --audio-only --format mp3 - ``` - -3. **Common Operations** - - ```powershell - # List supported sites - snatch sites - - # Check system info - snatch info - - # Run speed test - snatch speedtest - - # Show help - snatch --help - ``` - -### Configuration - -The default configuration file is created at first run. You can customize it: - -```powershell -# Open config in default editor -snatch config edit - -# Show current config -snatch config show -``` - -### Updating - -To update Snatch to the latest version: - -```powershell -git pull -pip install -e . -``` - -

💻 Advanced Usage

- -### Audio Downloads & Enhancement - -```powershell -# Download in Opus format (default, best quality-to-size) -snatch download "URL" --audio-only - -# Download in MP3 format -snatch download "URL" --audio-only --format mp3 - -# Download in FLAC format with surround sound -snatch download "URL" --audio-only --format flac --channels 8 - -# Download with custom quality -snatch download "URL" --audio-only --format mp3 --quality 320 - -# Audio Enhancement Commands (NEW in v1.8.0) -# Enhance downloaded audio with AI-powered processing -snatch audio enhance "myfile.mp3" --preset music -snatch audio enhance "podcast.wav" --preset podcast --output "enhanced_podcast.wav" - -# Analyze audio quality and get recommendations -snatch audio analyze "myfile.wav" - -# List available enhancement presets -snatch audio presets --detailed - -# Batch process multiple files -snatch audio batch "*.mp3" --preset restoration - -# Create custom enhancement preset -snatch audio create-preset "my-preset" "Custom settings for my content" -``` - -#### Audio Enhancement Presets - -| Preset | Description | Best For | -|--------|-------------|----------| -| `podcast` | Speech optimization with noise reduction | Podcasts, interviews, voice recordings | -| `music` | Stereo enhancement and dynamic preservation | Music tracks, albums | -| `speech` | Strong noise reduction and clarity | Lectures, audiobooks, presentations | -| `broadcast` | Professional broadcast standards | Radio shows, professional content | -| `restoration` | Maximum enhancement for damaged audio | Old recordings, low-quality sources | - -### Video Downloads & Enhancement - -```powershell -# Download in best quality -snatch download "URL" - -# Download in specific resolution (FIXED: now works correctly) -snatch download "URL" --resolution 2160 # 4K/2160p -snatch download "URL" --resolution 1440 # 1440p -snatch download "URL" --resolution 1080 # 1080p -snatch download "URL" --resolution 720 # 720p - -# Video upscaling with AI enhancement -snatch download "URL" --upscale --upscale-method realesrgan --upscale-factor 2 - -# Traditional upscaling methods -snatch download "URL" --upscale --upscale-method lanczos --upscale-factor 4 -snatch download "URL" --upscale --upscale-method bicubic --upscale-factor 2 - -# High-quality upscaling with custom settings -snatch download "URL" --upscale --upscale-quality high --upscale-factor 2 - -# Replace original file after upscaling -snatch download "URL" --upscale --replace-original - -# Download with custom format -snatch download "URL" --format mp4 - -# Download with subtitles -snatch download "URL" --subtitles -``` - -### Upscaling Methods & Quality Options - -| Method | Description | Best For | Performance | -|--------|-------------|----------|-------------| -| `realesrgan` | AI-powered upscaling | Anime, cartoons, graphics | Slower, highest quality | -| `lanczos` | High-quality traditional | Live action, photographs | Medium speed, good quality | -| `bicubic` | Standard interpolation | General purpose | Fast, decent quality | -| `bilinear` | Basic interpolation | Quick processing | Fastest, lower quality | - -**Upscaling Quality Presets:** - -- `low`: Fast processing, basic enhancement -- `medium`: Balanced quality and speed (default) -- `high`: Maximum quality, slower processing - -**Upscaling Factors:** - -- `2`: Double resolution (e.g., 1080p → 2160p) -- `4`: Quadruple resolution (e.g., 720p → 2880p) - -### Advanced Features - -```powershell -# Resume interrupted download -snatch download "URL" --resume - -# Use aria2c for faster downloads -snatch download "URL" --aria2c - -# Show download statistics -snatch download "URL" --stats - -# Save to specific directory -snatch download "URL" --output "D:\Downloads" - -# Combine resolution selection with upscaling -snatch download "URL" --resolution 720 --upscale --upscale-factor 4 - -# Batch download from file -snatch batch urls.txt - -# Download playlist with upscaling -snatch download "PLAYLIST_URL" --playlist --upscale - -# Download with Real-ESRGAN upscaling and replace original -snatch download "URL" --upscale --upscale-method realesrgan --replace-original -``` - -### New Video Enhancement CLI Options - -| Option | Short | Description | Example | -|--------|-------|-------------|---------| -| `--upscale` | `-u` | Enable video upscaling | `--upscale` | -| `--upscale-method` | | Upscaling method | `--upscale-method realesrgan` | -| `--upscale-factor` | | Scale factor (2x, 4x) | `--upscale-factor 2` | -| `--upscale-quality` | | Quality preset | `--upscale-quality high` | -| `--replace-original` | | Replace source file | `--replace-original` | -| `--resolution` | `-r` | Target resolution (FIXED) | `--resolution 2160` | - -### Interactive Mode Commands - -When using interactive mode (`snatch`), you have access to these commands: - -| Command | Description | Example | -|---------|-------------|---------| -| `download` | Download media | `download https://youtube.com/...` | -| `queue` | Show active downloads | `queue` | -| `stats` | Show download statistics | `stats` | -| `speed` | Run speed test | `speed` | -| `config` | Show/edit configuration | `config edit` | -| `clear` | Clear screen | `clear` | -| `help` | Show help | `help` | -| `exit` | Exit application | `exit` | - -### Environment Variables - -Snatch respects these environment variables: - -- `SNATCH_CONFIG`: Custom config file location -- `SNATCH_OUTPUT`: Default output directory -- `SNATCH_FFMPEG`: FFmpeg binary location -- `SNATCH_CACHE`: Cache directory location -- `SNATCH_LOG_LEVEL`: Logging verbosity - -

Advanced Features

-

1. Playlist Downloads

- -When downloading a playlist, Snatch will present options to: - -- Download the entire playlist -- Download only the first few videos -- Select specific videos to download - -#### 2. Batch Downloads - -Download multiple URLs at once: - -```bash -python Snatch.py "URL1" "URL2" "URL3" -``` - -#### 3. Custom Output Directory - -```bash -python Snatch.py "URL" --output-dir "path/to/directory" -``` - -#### 4. Format Specification - -```bash -python Snatch.py "URL" --format-id 137+140 # For advanced users -``` - -#### 5. Automatic File Organization - -Snatch can automatically organize your downloaded files based on metadata extracted from the media. This creates a clean folder structure for your library. - -Enable organization with: - -```bash -python Snatch.py --organize URL -``` - -Or set it permanently in the configuration: - -```bash -python setup_ffmpeg.py -``` - -#### Organization Templates - -You can customize how files are organized using templates in the config: - -- Audio: `{uploader}/{album}/{title}` -- Video: `{uploader}/{year}/{title}` -- Podcast: `Podcasts/{uploader}/{year}-{month}/{title}` -- Audiobook: `Audiobooks/{uploader}/{title}` - -Available variables include: - -- `{title}` - Media title -- `{uploader}` - Channel or uploader name -- `{album}` - Album name (for music) -- `{artist}` - Artist name -- `{year}` - Release year -- `{month}` - Release month -- `{day}` - Release day -- `{track_number}` - Track number - -#### 6. Advanced Audio Options - -Snatch now offers enhanced audio conversion options: - -- **Default Format**: Opus audio format (superior quality-to-size ratio) -- **Channel Configuration**: - - Interactive prompt to choose between stereo (2.0) and surround sound (7.1) - - Command-line option: `--audio-channels 2` (stereo) or `--audio-channels 8` (7.1) -- **Format Options**: - - Opus: `--audio-format opus` (default, excellent quality at smaller file sizes) - - MP3: `--audio-format mp3` (maximum compatibility) - - FLAC: `--audio-format flac` (lossless audio) - - WAV: `--audio-format wav` (uncompressed) - - M4A: `--audio-format m4a` (AAC audio) - -```bash -# Download with 7.1 surround sound in Opus format -python Snatch.py "URL" --audio-only --audio-channels 8 - -# Skip interactive prompts (useful for scripting) -python Snatch.py "URL" --audio-only --non-interactive -``` - -#### 7. Advanced Command-line Options - -Snatch supports several advanced options for more control over your downloads: - -```bash -# Resume interrupted downloads -python Snatch.py "URL" --resume - -# Show download statistics after completion -python Snatch.py "URL" --stats - -# Display system resource statistics -python Snatch.py "URL" --system-stats - -# Skip using cached media information -python Snatch.py "URL" --no-cache - -# Disable automatic retry logic -python Snatch.py "URL" --no-retry - -# Limit download speed (e.g., 2M = 2MB/s) -python Snatch.py "URL" --throttle 2M - -# Use aria2c as the download engine for better performance -python Snatch.py "URL" --aria2c - -# Enable detailed logging for troubleshooting -python Snatch.py "URL" --verbose - -# Test all available formats for best quality (slower) -python Snatch.py "URL" --test-formats - -# Use fast format selection (default) -python Snatch.py "URL" --fast -``` - -#### 8. Network Speed Testing - -Snatch can automatically test your network speed to optimize download settings: - -```bash -# Run a standalone speed test -python Snatch.py speedtest - -# Get detailed speed test results -python Snatch.py test -``` - -## 🏗️ Technical Architecture - -- **Modular Design**: Core functionality is split into logical modules for maintainability - - `common_utils.py`: Shared utilities and helper functions - - `manager.py`: Download orchestration and resource management - - `progress.py`: Advanced progress tracking and display - - `session.py`: Network session handling and speed optimization - - `metadata.py`: Media information extraction and processing - -- **Performance Optimizations**: - - Smart caching of download information - - Concurrent downloads with resource monitoring - - Intelligent format selection without testing all possibilities - - Network speed-aware chunk size optimization - -- **Error Handling**: - - Graceful recovery from network issues - - Smart retry logic with exponential backoff - - Detailed logging for troubleshooting - - Memory-efficient operation - -## 📊 Performance Insights - -| Feature | Before | After | -|---------|---------|--------| -| Startup Time | ~2.5s | ~0.8s | -| Memory Usage | 150-200MB | 80-120MB | -| Download Speed* | 5-10MB/s | 15-25MB/s | -| CPU Usage | 25-30% | 10-15% | - -*With aria2c enabled on a gigabit connection - -

🌎 Supported Sites

-Snatch supports over 1000 websites including: - -- YouTube -- Vimeo -- Twitter/X -- Instagram -- TikTok -- Facebook -- Twitch -- SoundCloud -- Reddit -- Daily Motion -- And many more! - -To see the full list of supported sites: - -```bash -python Snatch.py --list-sites -``` - -

🔍 Troubleshooting

- -

Common Issues

- -1. **FFmpeg not found** - - ```bash - python setup_ffmpeg.py # Run this to fix automatically - ``` - -2. **SSL Errors** - - - Update Python and dependencies: - - ```bash - pip install -U yt-dlp requests - ``` - -3. **Permission Errors** - - - Run as administrator (Windows) - - Use sudo (Linux/macOS) - -4. **Slow Downloads** - - Check your internet connection - - Try with `--aria2c` for faster downloading - - Use `--http-chunk-size 10485760` for larger chunks - -### Need Help? - -If you're still having issues: - -- Check the logs in download_log.txt -- Run with `--verbose` for detailed output -- Try `--system-stats` to check if your system has enough resources - -

🤝 Contributing

-Contributions are welcome! Feel free to: - -- Report bugs -- Suggest new features -- Submit pull requests - -## 🗺️ Feature Roadmap - -### 📦 Core Architecture & Packaging - -- ✅ Modular package structure under `modules/` -- ✅ `modules/__init__.py` with `__version__` and public API -- ✅ Basic setup.py configuration -- ✅ Editable install support -- ⬜ PyPI packaging and distribution - -### 🛠️ Logging & Configuration - -- ✅ Root logger with rich formatting -- ✅ Module-level logging -- ✅ Color-coded console output -- ✅ Basic configuration management -- ⬜ Profile-based configs - -### 🎛️ Interactive Experience - -- ✅ Modern rich UI interface -- ✅ Command history -- ✅ Tab completion -- ✅ Format selection -- ✅ Download progress tracking -- ⬜ Playlist management - -### ⚙️ Download Features - -- ✅ Audio/video downloads -- ✅ Format selection -- ✅ Resolution control -- ✅ Download resumption -- ✅ Network optimization -- ⬜ Batch processing - -### 🌐 P2P Capabilities - -- ✅ Basic file sharing -- ✅ Share code generation -- ✅ File fetching -- ⬜ DHT implementation -- ⬜ NAT traversal - -### 🔊 Media Processing - -- ✅ Audio extraction -- ✅ Format conversion -- ✅ Metadata handling -- ✅ Video upscaling with Real-ESRGAN -- ✅ Resolution selection fixes -- ⬜ Audio normalization -- ⬜ Subtitle support - -### 📊 Monitoring - -- ✅ Download statistics -- ✅ Speed testing -- ✅ System monitoring -- ⬜ Usage analytics - -### Future Plans - -- ⬜ GUI interface -- ⬜ Plugin system -- ⬜ RSS feed monitoring -- ⬜ Remote control API -- ⬜ Docker support -- ⬜ Auto-update system - -## 📜 License - -This project is licensed under the MIT License - see the LICENSE file for details. - -## 📊 System Requirements - -- **Minimum**: 2GB RAM, 1GHz CPU, 100MB free space -- **Recommended**: 4GB RAM, 2GHz dual-core CPU, 500MB free space - -## 🙏 Acknowledgements - -- Built with [yt-dlp](https://github.com/yt-dlp) -- Uses [FFmpeg](https://ffmpeg.org/) for media processing - ---- - -

-Made with ❤️ by Rashed Alothman -

diff --git a/Documentation/TECHNICAL_ARCHITECTURE.md b/Documentation/TECHNICAL_ARCHITECTURE.md index e4b01cf..185339d 100644 --- a/Documentation/TECHNICAL_ARCHITECTURE.md +++ b/Documentation/TECHNICAL_ARCHITECTURE.md @@ -2,7 +2,7 @@ ## Overview -This document provides a comprehensive overview of the Snatch Media Downloader's technical architecture, including the major components, data flow, and system integration patterns introduced in v1.8.0. +This document provides a comprehensive overview of the Snatch Media Downloader's technical architecture, including the major components, data flow, and system integration patterns as of v2.0.0. ## Table of Contents @@ -23,7 +23,7 @@ This document provides a comprehensive overview of the Snatch Media Downloader's ``` ┌─────────────────────────────────────────────────────────────────┐ -│ Snatch v1.8.0 │ +│ Snatch v2.0.0 │ ├─────────────────────────────────────────────────────────────────┤ │ CLI Interface │ Interactive Mode │ Configuration System │ ├─────────────────────────────────────────────────────────────────┤ diff --git a/Documentation/TECHNICAL_DOCUMENTATION.md b/Documentation/TECHNICAL_DOCUMENTATION.md index abefe9e..6347776 100644 --- a/Documentation/TECHNICAL_DOCUMENTATION.md +++ b/Documentation/TECHNICAL_DOCUMENTATION.md @@ -75,12 +75,12 @@ Plugin Interface ← Hook Registry → Download Manager ### Entry Points -#### `modules/__init__.py` +#### `snatch/__init__.py` - **Purpose**: Package initialization and public API definition - **Exports**: `main_app`, `DownloadManager`, `load_config`, `__version__` - **Integration Points**: Primary entry point for external usage -#### `modules/cli.py` +#### `snatch/cli.py` - **Purpose**: Command-line interface implementation with Rich formatting - **Key Classes**: `EnhancedCLI` - **Dependencies**: typer, rich, asyncio @@ -88,80 +88,80 @@ Plugin Interface ← Hook Registry → Download Manager ### Core Management -#### `modules/manager.py` +#### `snatch/manager.py` - **Purpose**: Central download management with async/sync support - **Key Classes**: `AsyncDownloadManager`, `DownloadManager`, `DownloadHooks` - **Features**: Error recovery, retry mechanisms, memory management - **Plugin Hooks**: Pre/post download, chunk processing, custom processors -#### `modules/session.py` +#### `snatch/session.py` - **Purpose**: Session persistence and state management - **Key Classes**: `AsyncSessionManager`, `SessionManager` - **Features**: Download resumption, session tracking, concurrent session handling ### Configuration System -#### `modules/config.py` +#### `snatch/config.py` - **Purpose**: Configuration loading and validation - **Key Functions**: `load_config`, `initialize_config_async` - **Integration Points**: All components depend on configuration -#### `modules/defaults.py` +#### `snatch/defaults.py` - **Purpose**: Default values and format presets - **Constants**: `FORMAT_PRESETS`, `CACHE_DIR`, `MAX_RETRIES` ### Processing & Enhancement -#### `modules/audio_processor.py` +#### `snatch/audio_processor.py` - **Purpose**: Advanced audio processing and enhancement - **Key Classes**: `AudioProcessor`, `EnhancedAudioProcessor` - **Features**: Surround sound upmixing, noise reduction, normalization - **Plugin Integration**: Extensible filter chains, custom processing pipelines -#### `modules/file_organizer.py` +#### `snatch/file_organizer.py` - **Purpose**: File system organization and metadata management - **Key Classes**: `FileOrganizer` - **Features**: Smart file organization, metadata extraction ### Networking -#### `modules/network.py` +#### `snatch/network.py` - **Purpose**: Network utilities and connectivity management - **Key Functions**: `check_internet_connection`, `run_speedtest` - **Features**: Speed testing, network monitoring -#### `modules/p2p.py` +#### `snatch/p2p.py` - **Purpose**: Peer-to-peer file sharing implementation - **Features**: DHT support, file sharing, NAT traversal preparation ### User Interface -#### `modules/cyberpunk_ui.py` & `modules/cyberpunk_interactive.py` +#### `snatch/theme/cyberpunk_ui.py` & `snatch/theme/cyberpunk_interactive.py` - **Purpose**: Modern cyberpunk-themed interactive interface - **Key Classes**: `CyberpunkInteractiveApp` - **Features**: Rich UI, progress tracking, interactive controls -#### `modules/textual_interface.py` +#### `snatch/theme/textual_interface.py` - **Purpose**: Textual-based terminal user interface - **Features**: Modern TUI with widgets, responsive design ### Utilities & Infrastructure -#### `modules/error_handler.py` +#### `snatch/error_handler.py` - **Purpose**: Centralized error handling and reporting - **Key Classes**: `EnhancedErrorHandler` - **Features**: Error categorization, logging, recovery strategies -#### `modules/logging_config.py` +#### `snatch/logging_config.py` - **Purpose**: Logging configuration and formatting - **Features**: Rich formatting, module-level logging, colored output -#### `modules/cache.py` +#### `snatch/cache.py` - **Purpose**: Download caching and metadata storage - **Key Classes**: `DownloadCache` - **Features**: Resume support, metadata caching -#### `modules/progress.py` +#### `snatch/progress.py` - **Purpose**: Progress tracking and display - **Key Classes**: `DownloadStats`, `Spinner` - **Features**: Real-time progress, speed calculation @@ -215,31 +215,31 @@ class CustomHook(DownloadHooks): ## Module Documentation -### `modules.cli` +### `snatch.cli` - **Responsibility**: Command-line interface and user interaction - **Public API**: `main()`, `EnhancedCLI` - **Configuration**: Format presets, output options, UI preferences - **Plugin Hooks**: Command extensions, custom UI elements -### `modules.manager` +### `snatch.manager` - **Responsibility**: Core download management and coordination - **Public API**: `AsyncDownloadManager`, `DownloadManager`, `DownloadHooks` - **Configuration**: Retry settings, memory limits, concurrent downloads - **Plugin Hooks**: Download lifecycle, custom processors, error handlers -### `modules.audio_processor` +### `snatch.audio_processor` - **Responsibility**: Audio enhancement and processing - **Public API**: `AudioProcessor`, `EnhancedAudioProcessor` - **Configuration**: FFmpeg settings, filter presets, quality options - **Plugin Hooks**: Custom filters, processing pipelines, format converters -### `modules.session` +### `snatch.session` - **Responsibility**: Session persistence and state management - **Public API**: `AsyncSessionManager`, `SessionManager` - **Configuration**: Session storage location, cleanup policies - **Plugin Hooks**: Session lifecycle, custom storage backends -### `modules.network` +### `snatch.network` - **Responsibility**: Network operations and monitoring - **Public API**: Network utility functions, connectivity checks - **Configuration**: Timeout settings, proxy configuration @@ -331,7 +331,7 @@ async def my_custom_processor(file_path: str, options: Dict[str, Any]) -> None: ```python import logging from typing import Dict, Any -from modules.manager import DownloadHooks, DownloadChunk +from snatch.manager import DownloadHooks, DownloadChunk logger = logging.getLogger(__name__) @@ -388,10 +388,10 @@ Plugins can be configured through the main configuration file: ### Public API Overview -The Snatch public API is exposed through `modules/__init__.py`: +The Snatch public API is exposed through `snatch/__init__.py`: ```python -from modules import main_app, DownloadManager, load_config, __version__ +from snatch import main_app, DownloadManager, load_config, __version__ ``` ### Core Functions @@ -400,7 +400,7 @@ from modules import main_app, DownloadManager, load_config, __version__ - **Purpose**: Main application entry point - **Parameters**: None (uses CLI arguments) - **Returns**: Exit code -- **Usage**: `python -m modules.cli` +- **Usage**: `snatch` #### `load_config(config_path: Optional[str] = None) -> Dict[str, Any]` - **Purpose**: Load and validate configuration diff --git a/Documentation/TODO.md b/Documentation/TODO.md deleted file mode 100644 index e69de29..0000000 diff --git a/Documentation/TROUBLESHOOTING_GUIDE.md b/Documentation/TROUBLESHOOTING_GUIDE.md index ce8bddc..ea08f46 100644 --- a/Documentation/TROUBLESHOOTING_GUIDE.md +++ b/Documentation/TROUBLESHOOTING_GUIDE.md @@ -41,7 +41,7 @@ snatch --verify-deps | Problem | Quick Fix | Command | |---------|-----------|---------| -| FFmpeg not found | Install/configure FFmpeg | `python setupfiles/setup_ffmpeg.py` | +| FFmpeg not found | Install/configure FFmpeg | `python setup_ffmpeg.py` | | Permission denied | Run as administrator | Right-click → Run as administrator | | Network timeout | Check internet connection | `ping google.com` | | Corrupted cache | Clear cache | `snatch --clear-cache` | @@ -131,7 +131,7 @@ pip cache purge ```bash # Windows (automated) -python setupfiles/setup_ffmpeg.py +python setup_ffmpeg.py # Windows (manual) # 1. Download from https://ffmpeg.org/download.html @@ -496,8 +496,8 @@ snatch info | grep -i ffmpeg ```bash # Windows - python setupfiles/setup_ffmpeg.py - + python setup_ffmpeg.py + # Linux sudo apt-get remove ffmpeg sudo apt-get install ffmpeg diff --git a/Documentation/USAGE_GUIDE.md b/Documentation/USAGE_GUIDE.md index 6dfc479..1b64f3a 100644 --- a/Documentation/USAGE_GUIDE.md +++ b/Documentation/USAGE_GUIDE.md @@ -17,7 +17,7 @@ snatch textual # Direct download with best quality snatch download "https://example.com/video" -# Download with specific resolution (FIXED in v1.8.0) +# Download with specific resolution snatch download "https://example.com/video" --resolution 1080 # Download with video upscaling diff --git a/README.md b/README.md index 409515e..a33cf25 100644 --- a/README.md +++ b/README.md @@ -17,14 +17,45 @@ CodeQL Status Version 2.0.0 -Python 3.7+ +Python 3.10+ Platforms License

-## What's New in v1.8.0 +## What's New in v2.0.0 -### 🎯 Major New Features & Enhancements +### Package Restructuring + +- **Renamed package**: `modules/` → `snatch/` with proper Python packaging +- **Modern packaging**: Added `pyproject.toml` with optional dependency groups (`[audio]`, `[p2p]`, `[video]`) +- **Console entry point**: `snatch` command available globally after `pip install` +- **Consolidated config**: Merged 4 config modules into 2 clean ones +- **Fixed Theme imports**: Moved `Theme/` into `snatch/theme/` sub-package with corrected imports +- **Unified version**: Single source of truth for version `2.0.0` in `constants.py` +- **Cleaned CI/CD**: Fully updated GitHub Actions pipeline for new package structure +- **Test infrastructure**: pytest-based test suite with fixtures for config, cache, CLI + +### Installation + +```bash +# Basic install +pip install -e . + +# With all optional features +pip install -e ".[all]" + +# Audio processing features only +pip install -e ".[audio]" + +# Development +pip install -e ".[dev,all]" +``` + +--- + +## Features + +### 🎯 Major Features & Enhancements #### **🎵 Comprehensive Audio Enhancement System** @@ -89,22 +120,22 @@ snatch download "URL" --resolution 720 --upscale --upscale-factor 4 --replace-or #### **Complete Package Refactoring & Modularization** -- **Modular Architecture**: Split monolithic `Snatch.py` into a well-structured package under `modules/`: - - `cli.py` - Command-line interface and argument parsing - - `manager.py` - Core download management and orchestration +- **Modular Architecture**: Well-structured `snatch/` package: + - `cli.py` - Command-line interface and argument parsing (Typer) + - `manager.py` - Core download management and orchestration (yt-dlp) - `config.py` - Configuration loading, validation, and management + - `config_manager.py` - Advanced configuration editing, profiles, backup/restore - `audio_processor.py` - Advanced audio enhancement and processing - `ffmpeg_helper.py` - Video upscaling and FFmpeg processing - `p2p.py` - Peer-to-peer networking and file sharing - `cache.py` - Intelligent caching and metadata storage - - `session.py` - Network session management and optimization + - `session.py` - Download session management and resume - `progress.py` - Enhanced progress tracking and display - - `utils.py` - Shared utilities and helper functions - - `plugins.py` - Plugin system and hook management + - `common_utils.py` - Shared utilities and helper functions - `logging_config.py` - Comprehensive logging configuration - - `constants.py` - Application constants and defaults + - `constants.py` - Application constants, version, and defaults - `metadata.py` - Media information extraction and processing - - `cyberpunk_ui.py` - Cyberpunk-themed UI components + - `theme/` - Modern TUI interfaces (Textual, Rich) #### **Enhanced Plugin System** @@ -206,13 +237,6 @@ We've created an extensive documentation ecosystem to support developers and use - Error codes reference - Advanced debugging techniques -#### **🧪 [Integration Testing](./INTEGRATION_TESTING.md)** - -- Comprehensive testing strategies -- Test suite documentation -- Continuous integration setup -- Quality assurance procedures - ### 🛠️ Technical Improvements #### **Code Architecture Enhancements** @@ -451,10 +475,10 @@ snatch customize reset Before installing Snatch, make sure you have: -1. **Python**: Version 3.8 or higher +1. **Python**: Version 3.10 or higher ```powershell - python --version # Should show 3.8 or higher + python --version # Should show 3.10 or higher ``` 2. **Git**: For cloning the repository @@ -464,7 +488,7 @@ Before installing Snatch, make sure you have: ``` 3. **FFmpeg**: Required for audio/video processing - - Windows users can run `setupfiles/setup_ffmpeg.py` after installation + - Windows users can run `python setup_ffmpeg.py` after installation - Linux/macOS users can use their package manager ### Step-by-Step Installation @@ -494,18 +518,18 @@ Before installing Snatch, make sure you have: 3. **Install Dependencies** ```powershell - # Install required packages - pip install -r setupfiles/requirements.txt - # Install Snatch in development mode pip install -e . + + # Or with all optional features + pip install -e ".[all]" ``` 4. **Setup FFmpeg (Windows)** ```powershell # Automatic FFmpeg setup for Windows - python setupfiles/setup_ffmpeg.py + python setup_ffmpeg.py ``` 5. **Verify Installation** @@ -591,7 +615,7 @@ snatch download "URL" --audio-only --format flac --channels 8 # Download with custom quality snatch download "URL" --audio-only --format mp3 --quality 320 -# Audio Enhancement Commands (NEW in v1.8.0) +# Audio Enhancement Commands # Enhance downloaded audio with AI-powered processing snatch audio enhance "myfile.mp3" --preset music snatch audio enhance "podcast.wav" --preset podcast --output "enhanced_podcast.wav" @@ -749,19 +773,19 @@ When downloading a playlist, Snatch will present options to: Download multiple URLs at once: ```bash -python Snatch.py "URL1" "URL2" "URL3" +snatch download "URL1" "URL2" "URL3" ``` #### 3. Custom Output Directory ```bash -python Snatch.py "URL" --output-dir "path/to/directory" +snatch download "URL" --output "path/to/directory" ``` #### 4. Format Specification ```bash -python Snatch.py "URL" --format-id 137+140 # For advanced users +snatch download "URL" --format-id 137+140 # For advanced users ``` #### 5. Automatic File Organization @@ -771,15 +795,11 @@ Snatch can automatically organize your downloaded files based on metadata extrac Enable organization with: ```bash -python Snatch.py --organize URL +snatch download URL --organize ``` Or set it permanently in the configuration: -```bash -python setup_ffmpeg.py -``` - #### Organization Templates You can customize how files are organized using templates in the config: @@ -817,10 +837,10 @@ Snatch now offers enhanced audio conversion options: ```bash # Download with 7.1 surround sound in Opus format -python Snatch.py "URL" --audio-only --audio-channels 8 +snatch "URL" --audio-only --audio-channels 8 # Skip interactive prompts (useful for scripting) -python Snatch.py "URL" --audio-only --non-interactive +snatch "URL" --audio-only --non-interactive ``` #### 7. Advanced Command-line Options @@ -829,34 +849,34 @@ Snatch supports several advanced options for more control over your downloads: ```bash # Resume interrupted downloads -python Snatch.py "URL" --resume +snatch "URL" --resume # Show download statistics after completion -python Snatch.py "URL" --stats +snatch "URL" --stats # Display system resource statistics -python Snatch.py "URL" --system-stats +snatch "URL" --system-stats # Skip using cached media information -python Snatch.py "URL" --no-cache +snatch "URL" --no-cache # Disable automatic retry logic -python Snatch.py "URL" --no-retry +snatch "URL" --no-retry # Limit download speed (e.g., 2M = 2MB/s) -python Snatch.py "URL" --throttle 2M +snatch "URL" --throttle 2M # Use aria2c as the download engine for better performance -python Snatch.py "URL" --aria2c +snatch "URL" --aria2c # Enable detailed logging for troubleshooting -python Snatch.py "URL" --verbose +snatch "URL" --verbose # Test all available formats for best quality (slower) -python Snatch.py "URL" --test-formats +snatch "URL" --test-formats # Use fast format selection (default) -python Snatch.py "URL" --fast +snatch "URL" --fast ``` #### 8. Network Speed Testing @@ -865,10 +885,10 @@ Snatch can automatically test your network speed to optimize download settings: ```bash # Run a standalone speed test -python Snatch.py speedtest +snatch speedtest # Get detailed speed test results -python Snatch.py test +snatch test ``` ## 🏗️ Technical Architecture @@ -921,7 +941,7 @@ Snatch supports over 1000 websites including: To see the full list of supported sites: ```bash -python Snatch.py --list-sites +snatch --list-sites ```

🔍 Troubleshooting

@@ -971,9 +991,10 @@ Contributions are welcome! Feel free to: ### 📦 Core Architecture & Packaging -- ✅ Modular package structure under `modules/` -- ✅ `modules/__init__.py` with `__version__` and public API -- ✅ Basic setup.py configuration +- ✅ Modular package structure under `snatch/` +- ✅ `snatch/__init__.py` with `__version__` and public API +- ✅ Modern `pyproject.toml` packaging with optional dependency groups +- ✅ Console entry point (`snatch` command) - ✅ Editable install support - ⬜ PyPI packaging and distribution diff --git a/Snatch.bat b/Snatch.bat index 9050fac..81f6442 100644 --- a/Snatch.bat +++ b/Snatch.bat @@ -17,7 +17,7 @@ set "SCRIPT_DIR=%~dp0" REM Run as module using pythonpath to ensure imports work correctly set "PYTHONPATH=%SCRIPT_DIR%;%PYTHONPATH%" -python -m modules.cli %* +python -m snatch.cli %* if %ERRORLEVEL% NEQ 0 ( echo. diff --git a/Theme/__pycache__/__init__.cpython-312.pyc b/Theme/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 1bb3b05272f44cbaa8123ab7faf5d06ad2e7864c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 801 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 BcRK(8 diff --git a/Theme/__pycache__/textual_interface.cpython-312.pyc b/Theme/__pycache__/textual_interface.cpython-312.pyc deleted file mode 100644 index 532c52c3615619469108b43700106f68253d663f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47631 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

!cU|RpR|hMjQ-L7uy7j;&%rX;(Ag2_ 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 H^6vi+tnI8S diff --git a/modules/__pycache__/advanced_config.cpython-313.pyc b/modules/__pycache__/advanced_config.cpython-313.pyc deleted file mode 100644 index 65a2f8a8189b8374b29e51ce9b854003b48bc857..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17090 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 diff --git a/modules/__pycache__/advanced_scheduler.cpython-312.pyc b/modules/__pycache__/advanced_scheduler.cpython-312.pyc deleted file mode 100644 index b04be2521d9660fda29e1f5ccea682d14f81b47c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25805 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 diff --git a/modules/__pycache__/audio_processor.cpython-312.pyc b/modules/__pycache__/audio_processor.cpython-312.pyc deleted file mode 100644 index 74f6c3697642c23ade3222a7a6048afe60af2b1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67594 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 U(LU2ajp1X1Yrt>#*iYgA2Y!PGwg3PC diff --git a/modules/__pycache__/audio_processor.cpython-313.pyc b/modules/__pycache__/audio_processor.cpython-313.pyc deleted file mode 100644 index e7dea0980c7ea5253e9c968082f869031ac6dfe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43252 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 RwdSo-TTiFvtxg@n{~z2qI_v-d diff --git a/modules/__pycache__/cache.cpython-312.pyc b/modules/__pycache__/cache.cpython-312.pyc deleted file mode 100644 index 33131206da2115399a862dff3d67293a86ac8649..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10466 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 diff --git a/modules/__pycache__/cache.cpython-313.pyc b/modules/__pycache__/cache.cpython-313.pyc deleted file mode 100644 index 44a90b3fdebb7003745874045d11ac53bc647f9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10820 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

vP>TP=E)l;-#i_w-*S6Rq_At= zZpdi3XRu~u&N~cwE8hxEt$S0N^ha{GTxy$hxL!VZ`QX*+80wf)el<9qQ$3j%aWsEA z??TD9tO}_{!wCqmJqDG%8>MY~ zpvWdoTmP6SLZ#@24ic_E0M!e$X^Q&9Jp$ESU<7);0VucdWc)V>Rd*`WEe{6bPB5`P zS?Pt*ATTOEg&M>&k+P3v$^zq=(BJ9a8%&~?qFE?Kkc3;eTNEgykn)47npZ)WM5R0<0nGm~r0e^SrfiVXRMw(n0h7hpu*J5}93tZ14 z)>lkd%)e%}A}%nC@QnRbJbq)rx;ub8BmLh9s0!-cOJ1oPKbaniU**+c52M9UAt znMo1qUceNH)y%?cHen50MRAdOSakJJrzfa~bwNFniD;@QtJOnDStP&IubV^aRAtDi zrBHk!b-FQ>tAuIKWVwcog6(Ujx9mDWj20b@DjcABOYEU>;|9Y^{{eqr09~v4wjo7t zrxiz{=_%0q()%+_6XX^VXp=!JeaSFMq6ZWlfIvnf1Wp)UdLdM*Gz6`9W+LS=>XR8F zF@^oY>Xd>6*(KN0EhpDK2seeS#CkpkWSzDWJ@=f zzi6$e>wf;pGXcNg?jQG#obKj}LZmpBY^1X%t-e&lV_<#BH*&gXte@762FCpUakU(1 z-X*)6X*(!E;i8dJcqA-}slp%@-_Ss+R$`o9l;e<7uvH>fhU8RJF{swI6;pUkbrgB1A*a+oA*Yd>_ntMgE6I~QUt`?_`? z63x4=p#)SXtkGygW#Ay z6gT>U#F%A~m5+K3jG*eoKq}Oabowt}K)T>JAs+m#;S&sSDTds_8CO02PrK^pO%)mW zbH$ZkZFnVh)>&{RdXhiv*m~-!}Gk3;W6?In4 zI2)tR#@XDKx!lT`+~v{S<;>F%&25-%T79!6TDlX3WjFm#gEc$nUZx?p43cC<{=)S6 zb-xpwT>aY@uAhtKu1w5oSu}UqY;D8T*=Xr@mKExatQ>}tssz}s{&w}0_gi&Sg*RQ1 z@@+Ba_E~2h36B~1_vcrlk)QCcK|_BLd;uNzeDrcsTVu*Qm8~1`@?KFozP?vu+*4tBuQrAJjYbM@Zf)FCYW-oc3F&@VY9oJ5>)Jg9 z*7pmnczM6nj1TWu7?I-r%9K58Q{P`^+_T*AetjzWSEeF7Zs`wz5J}!rel-5j-`(GU z!(VkoEEbXkH7d4uQUIYdP?2|zFd1d+hbX~>-tSJKmzd)DP;&V& zSw9FyZ7z`v{vmaqkW3+_sM8>oXv$wzT}U@I%T1fE{XJ~ssoi$ zpw`os!<68vl1~>$CzX=QTS#HseKr8QNT;#jC!}ghT(R~MHPqQz|rW|&6Hh`WTdjL025`D z-3VBf#}rgaE|qKJ{lbVOV~8Z^iy|B;k7uJ#O%aIO#nW{Yv)w-gF zyF0zu26B#MD_vZ^6^3u&DAD8+)<)XaGQjqjY<7!dR1K1j?w4p4RuibvE+9r1WR(Tt zN7~Vzjw5~hy1I|{G66)KpzJgO#^d){nb(M(=* zG_QFwGSmoGU+c z6`$y`?9$A(m7m#B@J&1rh8f2#7$fypN#&h@G;ig~J|&T8ler3kN7;i{*1Q(Cjy@(u6h+dJ~i?^U!mb~w#H zbXxI}Fnp6F$%c!1dAJw?q!<3Q^-6Ipqz?Ycl?GU$NS1?HuqcyWVoM4m2kT27U!CYf zBzSm<>LhT{ywp`AvHKBuscSYy!^q}EYNoPvvEflMusZwjx~GLrOM*ta0xz+3kun`Z zh5}y*%O|oU&l?u}Mo9V>`y; zX_$Nk{E#67Bho5eMUG+n8{3KKV^vUgCu*^&GVzSD(IB=_`ub?MTp*sQybk+9=K`po zA5%mLi#F;9>>0++x1SRBNEHth$CE3~jvL)l-ZRQZOq%q=PkRrAF370F%C&(&VbhF5 zU&E((id=^jUgQF1Ext@ODA)7n2M3W^#0ma297wY1IWKRyyycZ}EWJk7kVi^8Zk>Jq z{5$6(N1lqDIXk`kT%=<#QaluMoS)6gfBD(V&tBae%c@g(=o2yL3FX74SXQm};V1Y2 zj(+m;$*ZNY3@Gj0ua#UYxqfQ8Xw9YlYH6LfJ-0g}#V2A854bh7^i-eE#L}0|=9OMK z`Rd6?+^=s8$WOQyp44DOV#2-TGnJVRpW|ca&g5KGuL(JK+auerWAM5aizFJ+%Z8y64GN0yvhlL2cUIUa>DI)yi8~9cY;3U895#(aPz9U#MOQ7+S9Qw5MRZY!vK}ywh}& z_rtLyJ$XF@#{$XQJdyfb>Uf60o;t}pQ(8`QWkovVQa6c%`lTIJ=59L4y9@0!8`<0UQ7sncN~yl=vY8f0p56<;#4!y=4I zY?|_ep_jS@k#vucN*>Af!wBZfR>1=FvTEqHNK19ZhiRK(!uXu=C5b;ZiFB+?OUtJ#M6Ybl61VpI13@~TVWZVXw)prt`beW=+`-kYeb}yz4clG{ zr^!u_mQ>yD&*I0YGwevp;7A{@w6q~%tV}YwYTn9^RBUgik7~kCDDNM`A;qjIE3e^B z_41kOP0{L2)74w9+U5!?xO#N*nONb**+TbB;o4~7+Nt)LmX2sk$1UOZp6Qm}SmDvx z!kU@F`en4A?a9W3R|LuEwkn8 zzTJPb@>>H_Pee+$&y_aJl&*=Eu3?^)(bAQ(o3`BwMQb`S6De8;ZDvt1*29aSujS>; z6t0LCuAs?BUgM|pIa-PLgDcRW7g|eNR~p_~X>Thtzq7Hmq^;2Wp3Bw z5J_3|pk)AUBhJFCM4E1MoXh7pca8$od3D^*dmTJ5Ze@rPx3bd?@f42VaVyJGJVMEs zDE1V5aWlG};p*fk7f=qbKMIsP6wHz>yxUJ*9o7AFxBBo6!3Q%|vp_fCeY z;wuP}+>b)gzoXP;V9TG<62WSF-n?m9MiIoY87ED$W6tH6M`stZ1%mQ}F=y9bINg8Y zEd8*ehNi?{op{CZbBi;(VZP2#Ts>3N5G`t$DvJ~~Oc(8VC1uu`f5q{t<4c+3!A6oV zWqeprJyWnOTCi-opdsRH_~eeO;$wp)qv(z@rzXuf$$+%&qMQX4#Ez^-N{Id2DiT#JMhUmd&<)tle-cH(Iz`o@HaN$32Il zHz?it1J|v?@8#dJ-8M&xJ7bQ6Y?7UgQtk(7SKsG%rR~ZwyqnW%CZx_Ywv`y(D=?D3 z&`kakdq=VPy&6ou^UOcYv*IOT-v z+9JiRF~=@7Jc+ug@YDHJB>hEj2P*Y^&8{-z8+ol3!}pD?CdPh`@JDM)F(i zyNa>#rPaJE&-|{_iVyGRSrPPZu^IjZve zTLRSWPj8u&#R=Lpl}!EPUabd*U*O&V8~^RzT{$cfHyYqFLu?_}{) z1n6>v%*TkIB{+rb$B3UJxP;uth@U6qBeu*=9#Q)Op-?DVa_nNEL?~TyY@1Lfls`u7 z3c>vtu`7kDCC9E7YJ}P)$4(LIgk?*PZ4+<^YRR#e3oC@iCC9c2O+xdMW3Loe39FYJ z+a|0L);>n;7Gd3E#9l9KSaR%*!X{z!l4EZXwhG&p9NQ*r7j`^G?43fZunY0!A@vc| z(vMCf^p_`SkW z;n-uuKQ25WoY3MAxCM{4K`caTe(Xo9vcgGiW1nzJ`zD;$`JdGJ`*i-NbbhbSe@2&Q zzs@h{{61a$0iFM>F3!1-I?opdb>TzW=0M@RF5Iv459|CRI)6Zy=cq3HX`Nrx)hDPc zE2Ik_)5X7_3%{rfe@5pY*Zc!JFBt}mg7jj>n{rP~m=+nA$AxFnkMg+8QiWf%si|nK zgJwDle!_(C+=5h}(WSC1lIpX<=N6=TUYE+cNU9fv7qwKvKYLNz?vk=dieD2xuS;=B zmm+nM6qkix*HSPjd_h+;+ajr668^cCO85<3Irc?Tyezz;rC{Z}sw*c=$G?(DV#2>b zT8OFin@C3qNj5!%(}gd-^(Cc0p-xUu+J9dbzM|DbS86h8?22$TY24(})ip>zzlr!u z<5VfaSB0+$Uteil{R`j(E{Eyh9hT=VxdE+yzV28 zhTqq5EXN|a`%PgAwSRCXkqjSg!rQ_h2;V|{8DGE^zpd3^z{E=ZSGrO&7Af@)h3_OS z^&d(xHsL1bBj454(3H?0f26Ceh1K?Zy4q$gQrqtf|N1d%`^QP+CWB{+@OZPEKVkHJ zOKY8u*CfmT9pPQ!J;Yubz1oBy0Cqprav!h?|3-(WdZ|K>%kS&r+}6Q2jluU%b@0tv z1it@P_)$`rCC7#zCykq|{eLF>JK*cT*IM)lco9F0AokMW_4wQ{`WSitLwHcC@aMWd znb!H2!gm(qDVeN4W4ivtdEcbt;ZKDBkhG7I_vcK~xXJo+R`@`OFByh5VWC`Y7XCs9 zi#eU7sF(IqSUdkx*Us!k+W8-a|CF@u$=dm$@K;IWCTr(k3x6Zr(b@@vD*Af=XRY1? zoQM4vU0rh)sq23g{x)g($?AGV_-WF($?BRS{GIUMw7Ncm!l(!T-zCRR5&paI|7o$Y zF+dN8|FKA4&THWV*ie8m>LVR|T#LZxW8vCgxju_cGs1$@3tA7q+x|Ujh#LdND zp5TN_TGOS?0;tsm_$$O8X-}7y%7)m*_$$#`uIt<6oCUKVq#&KEf=?E_mnFceJmIZE zgB)VIwQrmgAgodc$HGP7ScRC?DEC1;NWw1>w+4TtV|_4w(v~519sYEB)%@gt9#L+bzhFuD;}#Z)SHi?mqqNwDW0%7u}}0guC$~{*OFo#9weu6(gG_qUa|;{ zm!RC02{c}^2#v2oOwtrT*jLH>mS}2C()f$@?OLR0L5iixkwj1H@V8z|F_0js;M)cb z8}PPKdsDgQCLKge!%5pN{70lEUGsx2U#ultw9RH(?R5RMSh}qtbxYck(-DW*hQIAv ziUArwc4)1|+s=fyR*l|ONbJ%{w zZM@j`55$Z8I#^UJ3X21PMQ2i2B9FfUibGmkmOxG2NO4$8@c?%?kU$eh zv^SL|dUS1fFWUBAlyfv`TNZEov83@A;|nzE9oMxaVP=DGPw48dj1?zzb+25s?jEE* znY1oR>MmSiTGb`>8S*`azdZb%PN=y~w})>!sf5qU5cZ_5=2eT_(?=BBHlp4NMF0iNPiYF&uQ(WxgbIYb!!B5;lu{i9(Y8xSty?`?LfgYjZ98(FAYCh-w9=-`CP-HOjK*;UorY7T z;m_*ozI@TTe-1f4ztq|YB=Nl<9Dz$~aZ8#%A?`oJ->>2C^Z2`@rDOBQ%UUb&_1Co? zQQPqaT{~7R+K!iyTDJ-(Q_OGZaJO;Mv@avAZar=Z{rBo)L5#)@TC-ak?h=f@DEtB3 zFKMvS)hQW;P?|5}?<-1E}?`lHtTuXTS&4f2yKMpYcIZ}UB*Kt9N%(}jWP=XWDs3sW?;Reqx>`kEZ?iv(4}&Ble^VD8n}oH9>#DP2aM@? z)!l};(g5b2nBhGO*;J3G_(lg|!7gr7wkh8)RQDkAqyw;T&(0q=7)3hr+9f&3K8xO{ z`fkb5)WlB6HL-(rrY5iCQnO(nU~CH~?hs8ofF_xmM5&6OQ`17-^}gn_&5iEWt2VA` zbZ=O*szFL`YT^g)ng#_V8jx~&Mt%Ks%>W&!#=$-^VUMg~NdcSen_y25u>z9w5PNsy z-A9Mk#-%i51apnld?|}xe89}YP=NRqv`xxX+QBoH%J{iJxfncPi(hMK+;RpxH>E5k z?CCLPXkW_UsgzgLpPdzK!r4EmgdGNSbD%6Z4=CB2nv@fPB0kEjvSMY;L*7{VQ_3%a;X_maFZV=*!@zYya$_t+$?Cb z+dp{rT&R&D(%5jL+k2MX_khf$+{7&SH6qexSSiH*Rk~7SGw@L8$K3)*J{BD8Z*~n%DtHpox6IQF3!YwC-zSI1P(G3ywgZUCVxdvqN$! zsbR;_H*yxnJFB|rc%^n+688G}7kB-t=2cCrn}J?=)IIDJWK+;fCN!E*8J|>iln2Tn z|o-Ce(C&8l@k=9ZS#tLU+D6+Jes$AgtVKqmKn zBmLt|I1)hphNGNy9poiD{_;1JJaU#_Bmt{Q-~b#A05Du6BKiVN7jc4<&OAw#9AG>c z41x#ik6}`ig>hj0V1E-w7k0aeRLfJ6l>pqOah7mEjwWLji`FaED+oVABx#U{Ozv;6i7^SclhBz|H#-3fCQF!r ze8jI2KLAE4xWSL3N-H^9(8g>Y;;zSeAz0fM&w581-SUB1AoyVa82%c>f4LwZewCFjW#J^gOo#D7Prjw`qh9MsSdWOv1GHwYVosrzT!8h62IWNqLqRtD404cSp z2{(J-e2l5-X(_7*R|$cxgKo}~3FgTB3=TEn`vocU7=KYdqyKfLDG+5)s^?ZK9xz$q z_6`8wb^GH*I{YMliJWV2;&#rg`v!%08ZVuj;Z-=l_+^Tf!N><^s2Il}?0Ef?H9svu#jPm;w5|6uNYGtN?2>jqAaTl*>0_DZiWxL_!s(#a1L%-?tI_&eR3Rfkw z1flHE3mRX_MT{ipFf}tkqVc7=hv)LD>7@-8!$dVoOWuNNWsZwO(q{UnXpgYN%pJ@R zsdK$#2c}{7U7jK15KPLTLBM{xFJk2?Y=WB>Hp5L1Ti`mvR=64A6u6n;RJd7T8(e4D z4mUfT1~(_14%ZcSz|9S3z|9M1!p#q7!7T_o;TDFozi15Sgk9m>a9%h+To5h{7ln(% zCE>DgdALF-`dY>}j1#q&>yn)b4ZFj&O6z*i3r74+R9(b5)71%v17Diph68b+M?JQK z13irsHIIOXC8Qn_57#J=S!i+zr$NmVHP6+Ir|_qC9H*gJ{3GCB+$hG4)m{37cFX`C zjKq4$jx}zO0`Ft|5$12ygLcwpZtj2%<}I|>!!B0fC-IL_1MyGD zxkU~!Bk>(_R2C$@ORw*d^8<2zNY1|@=Y4W+lk=x=8ZyLxOa32`^J8-UjGTW*P9hnL z|DM7k60y~W(bSh9B9F3>3!+}AvE6C3meTGt8BqFo0-+cONTBLRaCvlnK>$F(m+Minu#VbE@8gffjn-!jz^W-ef zD4LcP;K*a?)uDMad>=BO6+T#~$S%ElVm_7pHbXWlGH)k;njyR7>fZTu@;eOK71tf} z8RXA2WV^4I&1aE6m&eH?f4(8R`09rF0`iygIA!E7H)Jo5tk^YQK`(AY_KHYj`+Oz6 zR2j0XuJ4$yCV!3mp_X3i4B2&&Wt-=h(M!D{yEam{alV0GmdjsO&`YDCX6@{<&Gf%w z`D}STno_lLwrUmquU<1-(}IBFirJDXeE#^L5lJrXneR1nlanxNI9WKgVcNAN;@I-{ z9}gN0bphkg&46E|sQFWzFD&!o}SGBJ)|6r9BeyIR<4aicUPFP|#Yx+@+`XikQ8)MhQLt`wv?b9%9oWM~^6AU9? zHV#?T*s4e2r*z!1!6I#vi;^WD;ej%_?ASkk#wU)BjhyG-A9G63EG=+rfb+wuA7VNRR*y$Imev}M{O?j^14kni|=813mY|7}oSkPHxj z{C)-_@du0_I2tE=$+mjTu?cp#m=zVwkYRvK9Fb}X1njOI9*_V6mMt|m0rn(KFxdY& ziXzzCAB4X75zsecTvX2oVq82uVbsRSq*foyp$wGEetKIBf<=E!_2GGFXHYae5UfH9 z-6}hQksNqqf+dEB;tfXLRIgRty*(WvckUQ#=3|5V$dT8XerD;FZg8J`!{mq^v7 z!!#W=5R!u$@M9nEK^g7^P;?d_+3wElK|{q>B!@LunJXwp|I5OHG5l~`5UdS)@|l@wmIN`*WT)Ct2Dn? zX~j!CmFz-bR(hXVh}CnSUj9MDkK~*O#QMu}9@_%WbK?I7=MmIZK+KSEe%YToYwf8uQUWX@GiHZ3#^@A`2t($o8+3%Acjj-7~fH7znYjRZ=b;#m-mTk#-dU}i%GpkoHArISyJb)X`zrg3O1W=%uhJ6HGk?a?XACYsJ z9D$sBaF&K+G8|%rW7SB-Va4p4UOn)Z?Yb0Mz3T@XZZ+Iq8!0{%b9Ac^w5!)-OY3Pc z^~pjU?qmsF#JxsrjR5;Ou`Ix)FToe$7arpxEB|5*P~#p2{^E(rdstz zV)>_86(MVOT5h<+(9EM~IgDEyQlzdWwIXp{2D)Q$us_HY2UwoM&BxI8Gc|f}jM#;) zSLa`Q=@s?TWz|TIyGw=^*21tR(hF#D3q-xUAyV5En8oe5mbi~y_{F>b0aUnz(!^3Y zH;l|yNDv)rkjLns!z(o{g?Q9H{ebXc1=4}%5b?-{ZjZ$r$6;pn<*v(JU)wfSbE`IX z_=#8v*+NwCLQ3a%qC*or5V&8!sEdazN?c3j6Td)p6h1+F6&D~qE)?gtu~W%Qn^fo$ z{1qB3-lbfLisC8!j-2~>tO5K*U4Bi(ToR@kn`?)MFczSv z%S_4EXvx;;lI=0a4z+(9TFLaPLhfvZk#4HiS-K%IKu|DlWjbptIFq~=Pn9`@R3u{} zG<8^{kr(DjuODod^7f5j@mCk-X1Dj*lx1OcIhf+B-?+*i3l5{wE;(~nF&_Td%a>RL z;p?cTCcjjttVXIU0m=#)mIrhToOyhWY{9Cg7xxHF!u4X~9*Dd)lEMM+M-V7*VO zqT+RHaZ2I3Ajzc^tq&|%Wc3X<5fF&EraxU?S|Mo0Q{Gv^KFj7-j;Qh8?ur7A9qUBKAN7C_}X>F_^DJ0_Ho1Vkc8ZpPJ=AbFKv z&!5G=N3#=*CK2yqU0eqb>*AzFptYqQ)}8eWD#u`uz&qq-==x6%QTxxtD#Lq&h6;CL zA1H8mj6RT)Sdm*WA30JVq^W%{`OLIyW5lshhBK2^B%f5=N@9zo?8RXGM_JLu)(~~{ zm-3D%f&eZgh48~mi`&&02?o;D(W730t7$RP(H3QJ^T_ff)ge9%+lFpsRaur!bg-2h zqr%qAX~RW0??naVJ4O;AtU%x~AS@?w5QJq-9Zkn^8xUdnq;zxBw5ucH=-@E6vZb2) zRlC@VjZDn9J$y)61TFADpJXVqXFA{LuR<8+~v*B z!UTBZMel{i0j#q(4!3wGXpI{~4whs`q`ckoAVY7I4x5zv&(TIE^yL`l57<1D)8q4s zSZ7j0{Nr&u=dh?`JXOw%bw5wiuNPL;iAA&0{no|0pL5PP<!hK2T>Bgw5 zaq`5?v|GDx@4+oi)2_aVqmOmCl)>-5Y2u_Ix!bV!0#|bIyI+&A2PwUqZA5ajJzp8} zo-a8yb{z=5U_TbTnDz7=IjTM^TaN~OXfNzqWJ?hjR?>CJ`>B(Z9~pyTd~gjsj1Q(h zyu)aydsEJV@x&^*wcf?si#{!t`&7Oqh__XxTN|sT=%&tGFq|zIzig|*O*yuT9?R#3mML>biYP~D;5TcWO(sotAgZd-4ECi2usWOQQQVAyFoV7hBC zgWwt18KtbTxwTI1uPbu7*B6iD1uVorP0Ph5&VPQ|W$FuW*5`Z_^nnR@;qf02BQS`_v$%|GC%?RX`mf zz%p{afI4!zrV#}_F86l!1Bs<|OOaL{NY+F>U4y)-r*Ust;g#*LZoghLQ?(;nwc}O_ zR?d!`p03i9c|0AEX8IJg@O}f6Idmbk@k*UM)3tZQ@(#3k3h!uafm_h=axC=uZ~)gL z;|2rTcfrJ)G2W+A`9c1Lb^r)+AS4@i5Q8$!No-1B!YE9vN!qn1)1+j@<~PwV zhdzJJPT_n8o8IXxYTgC<6L+M8RgU zgu85s_px5xuk@-VDFIs+Ctz5dC3?b7-?J*WA`(_P7K4h?-?`kd_ky0b@}6ExJt*^A|-B$t*XdnF{_ggTh`vlUqDwxZ)}n50(K-8A036li!Q!{kc0pot^IT>N|%ay z10e)!$yKt9+muBA__T;s;Kdu{7QDf8X98YPPk)(Yo`$@Xpi#wV475SM`4GO)xv}9hBbZ~7 z-#0wkz&5#y<4sr(m0B2UzjzK?_%8;=a2f0w6z-!-3HkQ0R54HL2)=?SSCVYRNV*<EP375vL zlO*gWTqu=kn8sXLs`lJ0xHWXEdD?Y2;yBFFpt6lXbygYip!t9_#gqVwI*u<4TX1Y3 zBo%bPrMZ(X2~C_NDB37OK*WwH_9Q%kv;`~~3k67vfI}Gky7iE@IgTCfz^?H#-v0Ar zqf&Lx`N2_sNju+&N1;Fp$O5?T1KA=JJJwkKaXY%1r%T`h1Xb3{%avYEIwDgqqmKb6 z`msLVdT7))lB8|KnRuDJ&%vw)fdN?RVd{Hc2j2G#E`1bP?R&Ghn|geY+U+FssoXl9 zgOVj#+T2N(;57AeF|s30&1cDM?sV*C(bVZ_S6jr<#<{bFbih(s`(O~;!hx;0e~LEu zCv;=n8X`3ibtGTPk}41J12p{AUC+KZx`%=RY;+&@4*MI3q4$G{pQY0^rlx*rA11zF z=k7BoL=Jb?E8|=v-(!yfpA^B3%6d;D9|CAOmSh1g);7?Y0Ngtd#2N5nJ};FX!T};T zwF7IiYOou9F$P{x)#JsMe_$NpBJzVW6nA(8U|p3rneZl^w}Uean^L`aI^AwBml99m zYRv>;Ko#*+wvkjA;A}%1_PNCVP>_R7h6tr)#=((?ny4a=RXj*|(?!l9a=KMCS}^P@ zh{Sq&NgJbNM4|*fLL^0vPeZ=UE>7O8zjYvT`1rKziHPF~j!P*V-|v^ovRwiaVFxUc zY*0J}tiw=tL0aI4pTQooCudk&}~pJxW_# z_|}WrOuRk{Ac9`=`6zK#<{~Q4WvTj@3hD%k&5+^7E44KFDj`XLfSp9Qbz$mRJb9}v-dvPz1-(nzzv=TH|>0aS+ZG?o)X{CEnFl3b!ud-Nd^O@ch5XidCOXbyrG z(qP64BVJV4r$Pa@2cZ#aN6LzWrxq4@NQ zhF^aW{_CTz^-~vbS#M#PqdVg0=EDJ0))??<@V;N6b%h#8ix>kqp9n=xP%2U3t$mka z9Q+l*bcDmSR0mVFECr(Cc|=OwjTm=n094~IQTkTFrzZU3gTQ0D&Eq$Hx1N}GbwwOq z9C)@fzH{CSP&?|;SP4r2U9k!}_4BV7a}8P(tYhg zu&s@{)=urYdGyxaY1hGs;~)o{6#}?7ct2m2K-hXM2pOS3vm%8>KcHSB=FDPAX{{8Q zFAIQ0$oyZ*ZsTjeT(Lw^;;HhtUlD>n!@;a)v8+Z4j1}GNMZ^=w$?-zCS%9rN7R#Hn zBz=L_Q!LRp9t5|{V)JgLPP_I-9D6yqv0@w`x%z&Y3UK}OPyPxaJQ41SxJSpTpd4V+ zdI@ZU<;5T$cgSgfb)wyK9K6LkELO^p`w>^qGUfMYRM;j6BiS01AybeA@(@y)Xn$0J2kq7EdR&JRZy7ss8Xm5U-B9R!^Ak#5UKHGRq#>o=>P>*(e z!oe7)XR3VKwKL+_$w5}t?emFE(0yTprpOf&!E;_QVY*=+T{9|9q5b!>dvGK>ifkDa zfzd@FVdG5;j4thLs1o}pgjLDlurXS-ak^?VKa$AcAn%UV;flP%-A|;X{C@Q))5wI- z2a9D>X@=#xZSV@jTnh4F1%6SOrOD`kI7{2Cuf>lq2Di;o0Idpxt;)r4ycq=OyIS<%K~nLne9qxs=xp=C6!$^kj)>^UkpM8Ai-O$$ilK%;50YuzLin8=!7z8maxv zDiV>ePbwwbIQ`-{+grl-UTW_W_Lazc?vyC7TY-U~j|QH&9R*=BhWz4bTA~C2^dD=B z!ODk$hV?V;6Jrp8(nRnny)3f`f~(TWkYulea>Uok`7Lt1K+Oe`EN2^(>@nB|MgLFK z?KQ}dbl>`21;jRPHrzT9>0Y=-X~j}a|GE3+?SYFUB$V>*hg~8lfV39TES0c>TBnWB zJOT^{G)tB3ia{xc9He+wG~8IWqF%)Lc^MF}tbux}KUJ0dE8Q*d24I`m53HeTKbXZE z1bw!ji*-SQEXI0(C0Ke7u;_nFJy0q4fPTG^^}zC5Ly7B+*g%1k8(8BPr9x=Mna}N2 zcb_tJ=T>BVSWKvrcgJC6S{!Es6I6aMd;*I^a@z5q(pG-b@6cj1^!8YQz%qf7^|)IO zCY_qHhl8#{7RRyX&r|&4_YEP7+*HmVxSCDRZ$1 zS(@rppJINoF5DWe+KO5Cp6RO2go!urrChc-7acN!H9g=w3;jnPdrDcEOf*!>rICo0 zt-z3TAr_A3P&^#qs;O@~oI@!@~xlgs4^~ z!|F7c?R8;{fz-yd_fv9o@;ta60wavNJyj}6;4-xT1tXDMBwM2s2XSIZD&5VV3=Fi< zMH#NxN~Pq`Q&HR@C+GTPyIK~89+nC1f}vF<<)`jgq_b;G=1jW9^s@C~yI{f=W#egr zsJ}cJ&={Qu$dDGakpg46;LS?s<}w0N+MvwlQ}}HDkEmb1N6z=jVKn1KwIAH9O8u$8 zaY^fBx&;4==!JCcH0aP~Rb`8XyfvmXa^z&>^g!g?@O0J4v?~yC1Q@b3II)_5Jqlvn z+Di|S7O2G>a!AD!x3!9Au_KYJ^BrOWgGj;~KXh$56A1X@)&Y!Ip|}}3#<(5Wz*aHE zcz(};ecgR+hq`v}J94nKci*9|zP%lt-Emh>M{n=Gu04GR54G>xeS!yOc6A)@JJ#BH zw1d4jG&6>RjUKSoMYc@%R=~d@-`|n*F*$S~P^5EU;{PUx4hW$Fw1C@3=`sk~+2rJt zQ$bEOIm^jeL(T?rwvp2g2U|AyIwz&xPoX{JoFL~kea}#)em+)!Kp*_%JWb98a>C?1 zPtNDb`2sn=0SB9=(YciI7b)l(IbSE|8|1u2&bP?<4mp1UCrF#8pK?FWPZS6OnV6C4 zEWJp@i>ohIQ8|av;lPhf9@>{u)&e2%;({p82ubsMfYO-c3<7Ozb|H)Wc--1|A#>)HVN-JOMyw*9HI~k7b z>WP*1&be#faJ=rAJQ`_fj~p0^xzEp4*1b{sdg-vPj37 zSXsZ4P2N;`WY?KkX+Ppr*T2#DdgJ66l0~{M#HudNtyuNVtv9yf_U>KBv5&XUc+dpI zYV0!2HLm_<=Z(&rxse@5@!_=b1bt}onC5C4-spV2b1E;g@j&EAC{{Bz*Sz+d{u}c~1>_ewX0h4d4FLFSNRX(fhrpVsG zSjCVICR69B=LTX`XXmPxF))osHg_VwUSkL4SH0V$e0Vyt1|7ko0-{@A-#V4TpfMh+ zmgZ`gzj5mIQ&Y8(O$U+qsFBsO4$Vq207-NhF%l~e%oSI>)_AS)`q<cR(wp? zZ#R1*d!LAvo=_2B>d>v;NVgPoKl{;Pkq{ z)IDFpylz8X!+a(4RvDHppRZ=#8bf*2d@b|V8J0E9FJs<%Lsi{;1M@C7RMyO|VBSUw zZDQVLO16@DS5fF{=3PVHwanWB%Ruw%n0LLQsBC@%^KPZ;Y-8T-hBEj34(8oyB!4S| z&%IqnLwV(V8-D?xtEisu;4k2D0LKCT(n)59<`420tcjz=hxiLNb`+Q2N+g+2zo=1_|5eZ(*f8;1nL~0IDl+L@REFR?`qQE;}qeM9o zsohIa_T4q5+qY9L`w<0Rm}io6ITfkr1$|^PYX!lpF(~A+gL2uaMrlPZ6vd|Gax${4 zkD@%KR@b|*x@wEmT&P8qOPZ1kTC|07*?L#0%QhC{p2Lt=eC5Ea2O_oIvE0L#?6bD? zmoqMByfS$G?4^vDt@%TH&Wyb{YA?RJDY9aB#9lmY-=lETp2&u-SotA^OxvfH-xMPI zPR1%uDTET5^xVt^U3G8{QUVTARQ_7&wbJY7rtCLcBD+JeqA`U>ikM7&g%waHA4yq2u0SNh&(kGtGbZDV}w|x z@1ufjd*&R7&Wz_BpqLd;P-I@=d@A{DhTMXAJNeQG>(j~SFqBozXOJ(Ga6XHCPNI}- z^5sxG7x{7t;q%Cs4}!QyB@v?RMd!c^LtJSt4Yr3EY`gEsgHG*KDGfUQSlRGLW{Z8( zTz>IAdQt|583Jq~G}2|Thh?yLVdu!>+PbMG8rS+`<-$i+t9`eTwV6D33QF#=5XyQV zvZg?y1tsqdk%ogT?=Gs`lh>Y{Y>TX4Y&4WP$RzgBR_We5g=Md0Udy~5oGObI?og2R(9OQvLgd77tYSoml98P~v7%lD zkrqS9rJ`0=njNEBPTstkJPf(WgEj%DQkmCA$YN*SG{UNM=5-L_WH4_gVGhfPT6z>M zrQrEug|NXMIFq>p$TweWo^(alo`@BDlyND0vNN)SMl_fk@+R0dHVlyd# zD5}Re2l$!E!d9!` zzF6M=OKA$5AA0>6V)Ls$w1e79qV|$&yQ2-eB6jpb8}$N7JE0q%=yrdscvz*|x0|B7 z&&SIBAEVvv1m%y=?snoNKVuNuY}o3&U>QE53rm&?5x3dHDy!8ZL`dbHtStg!1+hSKT7 zH&#%mum8}VKVvVC+RLw9ywMl2mrvWb>6(2!R{Vt0<1KF&MO#nB%1^71C!9DHD?a@Z zQ0*W`0rG%x6CNHUxC7YiBh_g;;UOvp7E-{=ygCtG3l5D!d+#XJd*gfz47j9M;mE>` zec$hj6&+A!VzqAQ^$c1eC+vDcoB zu0Fzw?RmUnPshp_(H&BXJ){(SNGtXbE4G&vi&05y?KLU7s+$#i`0PadTwEjP|bSszfx?o&E; zpHk>PDm1@{K)jC?x`!1Cu|e0?@#xAfR_GyJp`KXrNrjMm-`@C6bIg61h)6DjJa>xA zh=_Q`-N=~y#6M(|x%N!78IlN4ri=K;bJw1m?57ERg)*VPvHR`)(T=mRigT26Cuaxb z!PrYVcd{yzxIq3zat2c-RY6a5!`@i=KBBMfV6#MCOw6a$@Dgn+)dG-}_R4HR&!~~G z6^y!+a%g20pr(-@1nMfhvf|Yh(ds?1oV}M)6#_l`dIu5c@(=CKmn$w;Tq}q!+kB}4 z1LHlD$-a%~38NK!G)u^4G4i8z8!5&nim{bqY^E4n)fiU`qxG#6V;99>EonnF;8mkg zF&z|Tw<_mF*B^|Pbt&Xmbz?ZXONf>El<}xNx~4mNd?;3No=_CyZ9y>+B*t5KK#**_ z<-^fw9kyVU1-9^tqs%>2rY5&WH}uBJkIJ0q#@eaOTbAenntjt~gHe`bbvDYPQ&~@7L*okC2psq)u|8&r|2+=%cGn)$pgaq2;%Z65hoaMD)W*m;UkF42*vJ- zf}gP@)Et^(QZU42r|VK0Q>`X!JRyzs3;4Smg3|4P!I)q?E^HWr`gY+@Fcu+5(M`7) zUcmLn&tie>E2b;vU$a^b6GmK3rq_zg87TIbCQO>WFg45^Hi_H9=44lu!2mq!Mn4#U zH?m|c^n5lUojI*HW;k18FdkMCQqOZ6qlQG|2^|XV}nhq;X74vbVIi= z3PWeXaTo&@10#X4pnqK44ghpX3AXBJ!9<^AGmP0`P0uZ^1;C{Aqa)`>uy9K^Pe|1X zRvTfB-Mb(yk~YAM1q$JZ*IZb&R%~D?XA?!j7H-s>7C2x~&x=Rg6dV?Jl7~*z1Or%; z51bjIz2NLRg`jfm#?2JLBA{T9>h;>+huPao17ZcQA@jdw+F+M#y>x1OblI*MS6j^0 zc1xTsD4Ho~iWW3Y7p%Orcdoeds|}Y9e2`Tz>x6mI%BZt4Qq>-FcKk)fvRC%Z=2pz) z)<$z{Cry(ZzPaVbmZ`Cu!_zA|Bg+p)>bicCd*~yx!A%CRvrCn&U@}EZ0ot%4p`wsr2d0tuwZ*QQOveyTP&f6O79CZTH#6fah1W z<{SUO*qUScRuO#fIE<~imUl8z$e(M3%PO9*3QryN0{-qs;BZ9Ina~Ecks)eyD6Nkz z_-RNoZeC!>cH4v*s71hD@WU1L=}Hie?#XBdYnxWR>FnfbLk=aSl8!i{kTPL@&ODyV zpPE5hnLF<3#dZc-$z_(B6^k{A*40^8@#BypmYHBds8<}rsm1{qP3^}yiXebYm%!R}6G zp{TeG@9doRia}|C%pNdq! zU~9F{8(Zs)FBX;=zDAy}+gq#6zq_`z-26_F74PqqTM_V1wHf~8m`F$06il?^)NnFO z5E_e`Fol!a`cRnM!)1v@Sd~e$6QVLWHWphA#Nh0Pmk#o=S~K!qV<00>sI7|MfVKQf zj=3+5YDVCZdKsgcB&lH&HCxF^PcwQs1ax2`I(X?f`EvmsSfm=Vnaa5u?!WT;=``g7 zOj25{W2GH*&PX|^=dQ<9e9Pzt!)1-`Wxi(yL(3XSUT}9wr92H?)6ym%=D>n`KxCg` zs@ckHY>6MB32`fK&%&a7R^K^TK*LBcv+{WM0pB#&as6~{(HOiqYrF}vqSj&}EU zv@^Ts$B_#om;~Bj$2R)#X#s7_5^W?33lCxLjYJ{8gIpMee3+RtZ*pW5%@)_r6t9RD zEfqeNu4dOe68tP(^pr{6t9dHubeJk{YvVGMP)NZP0^yJ$+I|AT1108hWXiC zsQGB*pHBz-Cc}0AKYMQi*5;Y#2}(!;2?PibAPx&5ZiDe{V=%V44+B2%Z6_2)*v7`# zC4mzZNG0jZ>B)4Hs_u?mHPs<~OvrY2Lv`0~QBT!&Vdo;Ls+mugT*4~%w5vNk+uhr{ z>*{2t(yrd;+28+tzf0l+*;O;!^X$%N^XWU@`+JYy|Ns7vR{cK#c-zb1(gG<<0OOA~ zhHP8z*&O$?3Zq{LrTgB?T0Hu0{-RZI_l9hJ_iY$yCdB<`UoQ&!QbKc?{@0p}O@bltG7d7a_5!-OZd*O~C-wwuB;$%rVK zM}l5#Z77vTgy996bp~OIjmUF;?y^ zSY@ojP^FBku^Ons2ugu;y&JVltBhT&KS@)1AbWX5B3ePKhU3Xnos~6c(u}!aCtGhU z{=J>7XGaY!v6t7n4ztz8CoeBFj$F?`Es8lEgbux@wkjcFq{k5>TzifC%hdxCk5_>< zN0_HjzeSRZboF^(M?u?x$!Up+By*5VAGonUWUT~Oz?S_mRhO0>PAv+g z7R{!FQfrohoiaBDGB?gAEffSZ+rm~dT!>+3%l@eaLFJ@F#oGke_W48e&&-bq&V3BDP-OJAl;53o7%2_)=EZpXD zo#qzKr4Hjd4Z`p#S^_q>S|tJB%do@&DR0q(t-n}~MJ3>2S%JoZ-Cgv|UoQutUQa== z(1=;l2;h<0XrRQFyAO618GyQn*5uA=#Lo9O)cN3N5~~a>wvn?MrT_O)zawh+1>FM$ zeK&^8dsJZjV90z(bsO{c*j@8+&I_T>E*&zGCJ8EzUud@UB;;#qj!5_ftG>ZU^Qk&5 zF-&e!omD%JHw9W3a{V=0k#adAWNdb(lFFALe1!DZob#p+Y{14D#?E zN^~C=`BMN)V$A%>*e+h?9_>X0R|F}=PW>OLQepO&71V!b2l~WZWZgB8jQEx z4!W+_(9jaUXGqmkS{rka$MAr86j z5C^U9BC?J>v{;$&CMl<-#qm&x6yk7TIL0Q5d#!Y*jqs#sih@rXq%;J5QD!=(O=AZT z+5})mAW4ISfE{ny@F50x6i7nsO>yeMz>&wShDUK?SfsMS#|(zdFVWo4M;nx(+a%fbR3b&Wfx-gB zX@6q(csHQQ;qJl244Xz0p`Hja;)sb^1nYa0uOusRPl4k(vX&v&g4740-K8Ks`yWs_E|W}v z-}?gIub73Z@Fr#!QW6$tUv7fWL$lBl(%=9O{HyfRKzeC7ednF@o%gL-zuo(CuaMsr zvUbB`!2_5;vR4J{Rbl(?fPMFM%Y%%}>xs)L88avDq^w)c&I@O63S@7Z&kJTZyxhK= znkD3J4Ww>eE+`5Y)CCIa7V;L`g9ZD;+52B^|3pl?aL4?$`3nm}LVk0|+9K!3X1na1 z>+N8wSu2Ki-Q$a(-kGiIdoB*Ha(n>T-I31xbkfrKasI>-4vF z>RSqox9XZoaT5gw2?fw<`RSL@P^*DKsRLs#L*60Lq<&P4*f=2x9cVCJ;Q-etQAg2h zYn=3G)z(T64x@gd^vtWIXZZ!wOI{_t6eT^6^=n2?s(R9zOsY!rb4MX^rxi6h0SV5+ z&%2A`0?F7hxq-nTVh}jl#muN)gKIY?mEZ19bGZ&p41-hH5A}(9S0owQP7}l69s7rw z_Y=QeiXtOqjQ5C*bF>xTApR_us~Kb?{7OR+@~98?01+(xtn_GLf*w6G)NVQV$mHs6 z-sr0`Mv`fVg^zJ%7Vxr-6_GMygP0~PA9YBXGW(21a5TeEbLN<)@%zV!380*jAI>NX zWRwLnDy}EqH>Z=}r;xKVWUdo$ZY0m{c(eYEdKiH+1xxk_?!7|JzL2>|dYv|V?M?q1 z{`s0keXycgC~pyRT0`bGDJe(I+_85~y>$wE^h-@a?2*?T5ON5F%K@tA+TZDZt6SLF zxl|mi=~?O*st*Z=jtM!(L*^69>9&=4oGSe*G!jps!s61N;L)>XXp1(1C5=lN1B-i- zdfnQiWn9M8%F;ENI0bJ;EVo+Zrm=wkqPby2qegT9R!}Y`mdj@3lER;>&%bCcT0G0i zL@c(~@z;+(H(PX*{EiiiuDG;$|1T7?&-;-2TY*T@^~)oRFP$D*UVn-Z++9!-)Y{2p zI2nCXdUeF!-_qIEdbFqQ@W8>Qqy3y07)jWR?drE5p`G!CEOVKRZL#I_&2lbP|Pr zhS(mIHbL%SW)+qt!CED!T^+L4pzA-((4|&>j@2x+ik;U#@@++BU&?DuBUS)ote4ZC>9`fC^m@x0A2jQ8GKBvMK-i% z^j^F6=DXDG*;fA=!(!SL2aT!*Tbz(42oGqWRr0YYEtwuOmL!XMNs5zZ@+xVnm$@fR z)4EEUslP-y(^g3{U6rN{bt2~YrCx*uAzRH@o=%EWh8(5baYE)!C295=gU2EDn&{fB5-*s_*5aSEm^(PiN+8z)wwk`wz1>)2QLEKV%vR07!YMe6?I zN%CZmnx~V&+Dg7?Q@)aPC4H^wlz1VgQv6`#PbFLe{Py0AH-p3}scV(KA3N@gR|yw8 zmffp_TRE1JJSA_JO1%Uig$NXOT(nD9%CE9H6Wg2FCjXi(8r5Fkuvocj}x|> zHeNgx>hByUMx`osh)vDtU-<}d#KYi7mA^`aBPz3ut8oEDU$nGyc~E7_QZ(}(?TS`r z0}!B&;+Xd{UxqGK3XEJxb-7v&9+lC2%FxvbviCRyrDKM50OvQKi|EVzHkYdxz8D~; zAR+&>%j{kXPILyW8eEd!TVa6UlKeKsCAp>q(O?ygstjB{3!}h~P*(5HS%H%|c_Rug z$d0d=xhF>7Ob~{3x&G>fKX66NlKYOnDB&7a6 zJR8y!9vvC>_#L2&_$9nUDCzj>Cx~?nN`)1}pNE=Vi4Fl9*2A7*kGGD01xBs)Dt<)J zz|2$|*#2y*<58Mqih}#<^e3j`qtv_n)-u)z^ykM(YZtf0Q_Y)V1b^tkhx*?F+a6Rb(F_3~_AmywJ=WGt-Y!2pZ1s~g47IwA= zob5qp=k)^;yC}agWZfgCc%yf&;+^WZs^>2+9ty7SSTYDzJxfhOKCy?SObct~j=yvI zt<%D;uBFYv4ZTZ4Ld{{}aKDg$BxF4*CDbR%2|mC0#b9;UQi-s>Z)s4-KNzwel7j4? zOCtZ!^L>j=!OHeUpHQ)X3C#CHA?x9vq&sDI(9I!R%a04z&$QgP7rfT{YVU0O+}63W z+1k7I&ET*XRzGaj6XCFz2nYY2)MCaP+Y~6+6fS5B6to2kI>Ol<*W0DyL*UHXDixty zB+n}sx`Gw$LV1Uf-x;!YJt%a)-hH!MsMxcZ5G-uD-g_^-P%ckh$hPap1(iy9I_LW5 z+64EOyY{VApsI(pD9>kAx(vr_pB#m&LWw#6Z#qWhsvzh7UmTv1DY>xHc?_@Wi`Ma!WBuJ6@XE>~_`+58Z) zC_1cvaQx&$lP<&gnJyvYG*hB*zIOT5%d<_vobs@(T(Fg6n>ed5rf|W`?NI!b9Pu`U zth*Tj_?bm|whCjCS{$AD;VxZHr~aQF*61=S9{Fl8f?jId+ncWcK(FsjHhz%MR*swR zSL%CHjo+^-!1WJIO^NvVVX7WyzKc{rLwOrcQT9dBkQO86>acC`-wZKF8y%ca^464T zEj~$H;IAUprV`_B&d7U?;G(2YB?1DU191@#*uxpB7MBIk)GPrpz!}Rbp^}wQo)nKY zUx%=%tAtJSq^nZ2tr9B3lc|LIx>Th5dbbiKLUdHVw=#Mm+{1uGM!I~VTPojLE0p@{uNICMYc}m`2DZ;`g53s0g zjE=;Nd6PUd0zN*Ko`FN!CL~{L{w+$TlAkmZ{E{<{b(n^{{dO^{!z>9Hr6LDwpa__Z z4aiv}J|0PO-iIb%f z2xXZMFawmd>kzS$l_W_NA(B2svNxmh1Fs%!kK_g^5w_dN+EiYs7;9GAL7_w=#u2!$ zf*uGL!S)dYU4oIKM8ppI7Op59$qN;=5BYsUkZuhG`FQ(~K#<4oq!a*S!dywkOsj&{w!KsLR^5E-LRqkSpRm3O z=%bm?N6kCtx6JS(Z3-#9Rp{x*8Tb7IrPRKzJl%>w>FNWR*o(t;r1+^0$So+aC{Tb%d;)1hlrIlAk|x z=yLadj)->+-R#Lb7v`c8-O!<43E z+$`nj>Fl60^Eem9JtvZy0j^Kb{eDCD8`j@Q<*@7J$Cd?&yBw;vh#@A0?cP!2Wz)0) zau)`VX*BV2(r;SXb>gV`vSr$MIeFT2Ib}NWvUNI1uY3G*{ATKP>-E&@x^o6k(yyAQ z&2g3xZ1)ljQZJ!#VyL7(Q1X<~)M*R2c$SN#Qxoe^RaDLWDFWr%3}A?}MaRs8%Ci1S%isWxqD8lqB4>j{m&J+M3+Y4=9NezYG5t8q-BtTUJtw0BpI3`KAn8TB)$^)veF?pC)$s-FPr94b=^RTP(NL(ew?5RXg z4t9rfzn*|Ahgj1*)HGj7|7Gh%S+G>8$VKq+V-N3dJ$_g%B1irl)0BIhrAO*Fn~ zX#d?ooFc}~u8z(~V&4JS%$&8cVs%C_HvCjimq{x<4c-iN_dXtWC z?~NojwH)a>))p~#wf3}mKS%p{e}6;455yVXEIKTud2=Z=)flEW!Q=<~ zljQDFz{Hn$^pRw`;V)RVI5{Gh*h}4jv0fQI_R%h~jCEZvyzm0!n?~&1w5{y%miv#~ z7X^UD$u^paTDyDn%Fy7bZ%?gO3TdD-(2WYUeZW zlx)43v)}-8&zeD!fH$h=s^^D;L%x}3Q#EIu?-wd|Eo8%>-qIQ2%)p)Afm;q? z_)^F^ifA^wT1;`7^tx&Td9~rZra)d(IIky=*AvX^n@L`jjc}c5ab1knc zdHvMQQ%HX>xUOy{dD)iD`JS7;St9Ic4{qrY`iF#b=kN5N|0qYe>kiTxDxH^O{31Z4gCk&5s^&z z0>e^zf%@S9x5@1#(GdT-HTN~DGI@8;ptKaK&jKIt7ivdgGr&t76!JH8&pILNz>!q; z0A769`t7Zv=vb9%s|xZ_Mt$Fqi(N`C!m|aK#41 ze>OTTd7tgk!8{9z%sKWgIu?_cYK5GWA@eCoxGjhDOa9uNwVdsoIr7@cS5JQB^!4P2 z#zae-{$56QAZL9rr)Du@vF=v>-HaaL;F0B=q8ZO?Bd?Bp<T1E z;+z=@iDCO@!M=GJ=8|ErG2q%3bnOV)cY>9j>xzjO%-QubgDw+Rn9`&&=4^+-ClV`4 z)n#w_{AVV5D`fQi97eHh#U#PsrkBazmLFMLNnpPX0{chM>c7@p)&>#$>dZE)?sns* zHl5+!4f@tSiSO2K#`SwHGoHU!nS(Iz?a|}O`#MvbCFy-r5}v(M5#q$%L1LA zk%A2w=H`BgXi8&}ecWrhOh4?Qk(|evUR`6%J+$aaos52q zY&U<8q^5ri?$^K;!z+m2LR#>NeW=r3FEs@u|5FqP=ss@`%|rW87HIQeKah*KY*^jZ)+hDoO3zkDA}d4GYpu(NK=wPZg?&kLs)1=5Rx>BX~0 z@1(E4UsU<}^v&rTS6)qdXf$Q4yI)c>cPhN0F|eUAxM6RwWS`(}n%NIFN=|+_yE2en z8P47o$lkVGSh4IV!hi6Va<+rFl#>R*d#f(5=*Hw7N7c+`!MbVgi#UD$S)R_}hV20) z&G$Ej(#D003ul(HNcGv?Cp~pv4cWhVuK;F{5%lMu73yqxP@1-6OLJ1;&hHu)n!b}b z|LlT~tZHDBGs{j&)0XT=R3I;1=v*tmf@oiZrMSv%(isGJ&#W3~_aD0~QrF5M{z z9|Fo4Vc44+4^rj$0-BEx0ixL05a0u#OJe|Vi}-4{@uz42j36crfMiQHQ#n!f#YsxFqaRu?1P1i6bDS-V8i;q(V~A_ioi@|ofTm1}wK50R#1 z-UZ84T@dn9S4RgYjUbRPx`7!sZ=cz|t zL;}!}vXsP8w*ac?&(nS68r?BN&MDuFdY!gnOujrCZ@0BbLzFWTNz|5N8 z8?yGrc1d@I?vM2qx;HINg@$=|Q?B7wt_hdkV<>hMdt2^K+{Pz)gPN2!t`F4N3sOF<+FJP}xq8}@HxDTrB( z4PG9O76cH3xwt+P?X#DPrE6hrCN+T=4$=cKd;xLNqL_k7=}0Ael+6N2lnYND@is~g z#|aiujjA4AsC?ttkY`O%gCerRQ*qX@bU3YXd2np-JgsOv7f?EV*luTFDvJ^jk*ZHL zZKt9+7+_=E&NMM?G3-j(gKgZ?IuJ<`v+*9m-CFd=30mx;)eU*45HpcDmDgywTR>o1 z?#i*;rDxyBxszVBobL?hZwTaX2 znF`D9$L2a`uiSO)z)pC{dZ<%5@;)=@vI|LQlG75jL7kC%qwY>d3FGk91oCRadG&$3 z`e5E}@b_?Uh3YiTl zUXq4DUcrmQsbICj|G&yY^FZDOwiWKkUBMz4VN5;(W06g3vM|jEoBI z%OU&N%2L1vl_-=6GdSnwPb~Bc&Zdy9S>DAz5V9RaBdr7vyS`hpF!-JF1;--5LtDt& zt^yCO7;i5%Ww+<)ZaLVwwrLY?-YwG8xww$ddzz~7^L`~gdVhT_&L8AiI?@auxZNEV z!-p0VuC+17e@53}7$d=351UR&9vH90nwIc&!?a-x8{gB0afIN9mQe){vy+&3nH7*HjoXq`@@`3pVja7F_|F*oD18xu$z8DDyozu9IXUVKiDN$?x-Z*QDRauGS z;)K*yR7+xH4b}O}b3pTcj)FATdX{G}B!>yJb)kcgCL_}t*c=r|k)@+e@&#DrD{ z%4_ltyC$zpz#^o0@ysB6V4G+^m-t7t)WKj888_rB zU6JNmA{Vj3pHo3|Ju0Uv2+jH%#E4DgwmWtqS{b}_G zHP4CpGiW}4anz2NxSB{gG1_UC7L!kr9W5pfOEzSW?qwA$yQ=3p=jzGDkMq>49S@u> zGaaAgI$wM4)#rq=Jqyn)j4XapDCr92cFS{fd&u5Fb2AyB;M{=if$Z%I&kEVwgV~+e z+hHGKX5>z~3#m(SN?R5?7wd)IA;ImrYaft5g^QO3=UB*g<$=Q)%N)B;wsX{c1+oix=-r$}GX&Z5dqUP;)jV8+dcV}r zV$l70a{|uq>h*LsSX$}~?^@k0TMh4SHR0O(1?q}}I1Qn-O!$Ww`Lr$`IQ zG~^!QE>%`Wltr1>7|V;(7HKQvAg2W4YkHCy0h+<;KMRv+)p62NX$Hp$nI+YWx0J`| zv5zK`j_k!;rA?$O#lY&c1u{6(34)thy!Rv`9XK8ByOZPK*L2pUGqpu4ERG9Uxq3OG=(WGznKoC1JULlKfQc z1#C$rD_c@uGHXc$ju%ShIhTMEl}uaXlqhe?8e1X&5c{MP3uGD1CG z>V@OQQhBCic=q`DRXP3ZwE)iq2tVjt4!ZzvK&wi^bo*&dbZ`j)Q7(svAjx_cbX6Js z-oj!d(&!a0yaNEm5Pf-VSi&Zp;?L)S6=I)d#i)DlNm`=~03`nP3{o6nrC3Qe6J(J| zW`-mnieP04!4exG8h^G3VR#Z8<4D_f`7wBfy``)`A=}wIiKJ&q;%TDgBIxDMO}^TBp1JKwmT~K;$jR)$;dBdA2<}NZ7RA zwPAzUwiVC0VQ}s;Tvfa4UG9=|=QiPR*SOqV0z-PfX%oG1PgkG}B&?Cb8iSVrx1w8K z5=lal(Bw?g>M8LvveJtz0gnrYf?T3*EfVu{R`&|V2yYnPDin-2w8VuF3r|(Ymw1}m zWV2Mq7=8qCscS^81ip^MnxHfbSu@6PBzRLJ)t_QiRAqRN;wO?qCetNksBG>K>E=C; z9v#WzG#xU#uiaFFrMJLR z_|D6Ir{JxExm3Zu<1VB|3_54k1I{qn{^g>3xy5pleIfe+fa8b86xt82o%07v>SubE zo$j!+F5s*SJKF-zHlcq&aJB`VUzq8*m+KUnG(x4cw_DzO*U|S0XWhUH>SFz34HRk1 z4~HE6_gob>AjeWWcL*o!8D}~e$L3zHyhF^GKXP#{lqZ|s^ z4ig*YvxXIW+jR^13sxvOxI07kF1ZSWA^TZ*ZyQ<``1FpNfTQN^5h1q@6o6`Te9yuc z7ly!vVITH>K_P8%(}sBFiVg9)?`AC=`cBS*c@eZiYslKBq7|s?zSLCHZP4A?*p!5y z+dB(!emA?Rs53?P-gZ5mcW%a`_t!UV>@w><%-7SouojP&Qg(Kk3?C)vas81|PuC^` zU7NGJb%u}D<#ja}KH6cVCk-Y%`B+D9KQ>sp>kJ=T-Q8OaA8$3`+IxGj!e>EuT+cc1OGmTw`E&< zWSUYl6g&w%Mkr{LMupNOb^z~9T2e(Gi;CZpcu|IGXhrdmz?>&pl00JN)sRr~q(r4< zmr_uE<+QAE(@Kp>D@RE~x{}jMi^5tWvf!U=jM9niHE`_-!L zl@*ni3`==@I?Ls<$4x70zeh_IMNTV6No#H3J0!xM5>8uCof?v2k-MmzW^lL6mv*p$5U`kH=O{*7j3e%JSG}$J!K%d zAQUsAXJi)$90zixustcSAc}Iqkzf^pBFzFf`hvMtiabG0o z{OFalgQM6e6K#VIjKb#5xWBZ6J;zR;WHXdKcU5j`oET%5!=9>07G)t?5@H5KVH3!o zA!=BN5qg`eIAhx4_0v~)j!si_dY(>S!YNWn!sAj~$CkzW0tHFsLXp%a$Rv_Y*T5lDM87#=m>l*+60VHNJF)8S1zLo0s5yCnP2)!fS0mTKeiXYW%fo;sWKlqy zkbLK(Tt>b~BoPV?#VJ;>n4eTt?)0FSAxe z%G?Y*6H(ts&#DRRG|?4Fv&A+(wUhD%SQ~pkpcwDdi6lrPnIa9O%A8X|In4)-bPn{l z9XZm~*D-LcsRx!Yd;2>W%_HewN8>F{?vN@=#7N0;;k_48E-j^NQlIm$kLJKjj0v@| zA&gW;*8JZ@*8DmuL}bktV#VkFLDHX^*uLv3RE={_$hH^G*uR!EV}goA*yak@T(f!e zFu3A^(HZ4Y?tBt^RHr;zH$TiC?S7EEE}UBx$gP?&ifR^uvktqLp75U2fjy^#^=E{q zpAXr-B)@EgsNS}4%W$A&IJo!RL!E9!-$YK7Gnx~`FicOw_^tGBqz7yE3C#l`+ZW{6 zTfW({U<}tC2-F=2ZaXL(z8bQ9QHpl??f!Xtcym)=Gi=*73$15Dwx{HXJ0Pyw8s2?8 zu={wh?gX+u9ha z4^xHB`{DBIhUtNG{|%2s$L$X|@qd6em!A^)p2lSqnN-=cbbP6c_M}ffEu0t-2F?oQ zLw6k>iE^s!SV~%)6b|+a$^6h!w4S>+jFvx%Y;i5X+xwB zkv3T{I8WTim?N6B86$&Bg$SK8UL^%or?x8TBNGo&ERa6sPfYr(W5k1GIrT|M9~X-m zWo?y_K6xO0isO<#wNk02?*h`N7^IJyNQqDSxLFxW80k}_Cfq>!6st&|O;T=bFD9NP zic(cyQj!H{;MK=D*Ux;l0FRHlJiiR@G0bkPZ!}{_Cihec&`z*lSv-$ zGjvM?kM~(RP2vJ=B+D|H#|0Y7QPcNi7pe#?}vAMXab@vwl?<4 zB|nLz4o-|;At=WD7WvbgaEpBkc1wg+CX+aqR5pR`vDJ{-Pa^lyGf){`UnHG{;~LBq z%Ad{x@dp$HUJb^u=K+lvDI(Oc`4c&*NUCqdGmO9k%+rBCwV&U@tuGuOL^6nA5k>O{ z$oP-XZwF=MVwX$^hBt#mvHUJI*zeKlH9Fm(rb}hz1bsI_rS#sUXPFm9&R-zHaojry zIY@FO97!J?^qwDP?tl4%Oc0yH!(*Vy20fs6D3JFz5F36bzseG(_(V3cvUuyRV=}yssb{7qI!)bVW3W_qXWkw{eQnl2H>Fa(9r)i@Z4G#btnWPG0;D zrOsHZjL^_%GuB9~lB`xemqR<^KtO*p>%vfabUOR6IZ|V$e z>I`q{3vB8W4n7^S4ajeIeRu1^WO(n{z}~aLh9P12nUL*Si6*%6wr_q{cx!iHYj<$t zexWxiA`ugoaNUtW-I3t7qr&k^A={{&>c($o&7TZ!?+a}23vNCj96B4a4aqN|Yd${` z-f=Ln<6v;hA)z1C!8z?Lmq5NKRLJIUZk?YD?>rpXc{sSWUpPuRu0>(M%;%llE%#j; z=7xi=ZH$lr(NV^Tj(m?EiuA?hYJx%}H7*76F5P#P5II65MwdcjbOoIF|J2fP;n-=R z=L{~RNsR8Lol8~ZfcW?s;n-8cQ(q9u2k$!0{)>?qYbkay5~IV~U8DOj-AHG+kL=d# zJ}Lt#q5G&J505_9mvvVeJ}%eOb)}xJs|<8qW7%J9_;|Z}f1%;~g(h5UlNf&+OJe*V zjKui+|4w3Hj)^+{`)&v|hXl+#k3(R{mMTF+twpRn4uPRgYb|2sztV2Vssx6*T&}1N z!*1mEQV|%dq?M=QttVb|uaTC@n9&pL(iDJLc@f0Qml&}^#Kmf)3V9J-i$qzs=I)EU zPodPnQ}M(kh?5f%48*(CAU^Ky3*Y&0t=N4j014ubOM=LxhVO@c(#6(mSGBSGB!S4DzU`Zugef}9<`FnDc*>#WErS9wkzN;?#kG}FxiXnXQJBdk?YEs zi#_te>myNczQJp7EC=y;5N)8)SaIkXHZb@zP81m;11LMZ$(rKoB70qGxhGW^u^d_C===2ty{s%gd_N(`8I_n|8Ks(;;o! z2u`AIo(=Cj6xewvxE1>+7eclXIRPTJ%;CEJKwW=u+Y#Z|#gOfiHtCbjHdh4qwLtDQ zk&3x#da!cmq*EblIs;DpKeN;!96crMKaI<1vZiaPVkwVw3PJT8C2M3t`4{dw2LHv# z8rdQ9B24{~Z&sD87$<8sckkAHxXnoCT}=($8M=?Q>*>5R505_1D5D*c9eTR1)6?}X z16}X7?B8tozRA76#_;_b6Ry3_V2ni3HnQT08#{(kiYMRtMW~u7qxaX=Mp=qOBuHgg zB-A4@bV)y5Q-UkjRH$~SSW}^zuHmG-ph^N&1k%2mPK1hprc~DyJP*)pMu%SaN}e%} zJW7%K%Fon8dpzJRvbZW>nh($#@oCGbe&S=PH*f*+;;>3{ETIjn2Ys=Ds3>C-gbGhTP`puNA%oJN^ zpkl|g<$24bmH(xVFDu8j(7)=S; z-aji2xgr>b9E;!R+OUTUvWQaqif}(mgDL_UmSW0&1IwPrU#XlSdInGw8FEB)$0P99 zlx2=OnJeSmW`m>|P%SkF1h!yWji-hZa7zU!5}7F=p9iE9plPK5@mSlt`rw1=D8@=8 zg`5hAk5zi4vdm1x#5MvLTRUPw9y~C~6H!k5P9@r(tP<^~#l|~{QzS{sfyuihv%3Lm zrifwavPUKQl8iDzieEgq_UUtk>!SU{DvWBLl=z*0pFrJTBDe_ZqO2Kg3*>JL=kE*T z?+fNPM_V&!4B7YGFD(9A$4uL@Juhr84cJR(kI%OY_R^5OL3wm?{yclM=Rx(BcN*Vn z{GayTOotEVmSx8}GJ-IBalV8bK&WYe00_5zFk2R~SAsJeWe%Y=WN#DI0+@7v;Ts*Y zH2SHK{WK}Rk_84{<~@P@Jqr-R2VKv<7pHs`v0ztrTCtTl2lwC z^D2l#Ms&(TtXhM~;#oYqLl(B4Mp@U1y9TGMjKgfJk&Pu-^aQrDGHmrYNJC|4e{!{2 zrYNgu}NP;68QPx1w*F4BWDH@wl$rGJ^ z0=kH4_@XT^aScdr3`vadT8SKDRUo;I2!{wCqK?$ws222=toaBn~wcaKz#%nI%HZco=-lcva=WR2j;anWP+92=L;Vlh{cp zypBi)N;n#1`jgwFme)i{yeXhZiNe>w90`?-;1V}$#S|4?vQa0o4$P{Pnd7BYX4Of0 zp&+J68c&%7F{r~ttdxUvrvgZ#@xpQ}Ic(jDnB~N#>6yafqD3eQ2)&5+F&;b>AS9+D z@we^}6nYO4#Ql013KbNE3$_OewucK^0tGF>g0>m6%8Z74U&!9{)RE4u_Q~WtEDH z0id548wWXY`$^n{ugLY#>9DfIH=h9gr`Yu3tdpwJV&}@J+PR8e)8ZK~F{{=zS)4Go zELhVl%yJVfUD2kA?unu#+k*$)#;sd@KZHFKwfu3a;!P_fP}2H4-)PuE2Tx^`Py zat*hu-7T4hcQZ}6_L|U+L-M#pVlw6B!W%|;X=^R2sWn8SLvayCuAAb{G5VGBMcg^Y zurdyDYndq>?lnN35gB?l#F;S?Rc6BF*+XNbCrulkH^6p3`&Er}bDWV5e54-fk`1#} z1}6`V!O1OZax58Z))jOgE`&N-t zx@&t{9(Qev7Z=YEG;tmc*^WhzyA`IN*BU=0{r^%^R+B?_D@RXfhow2yaI4teY&P6B zn{cf?I!I%m^Ci61%Id6Xfl=10kGrEF>mGx%`~<7Jw4cI8T|6^OvN3$UF0Pp+dF_MV zH;pnf#-GS6Ax5vK@kUvaYCTntGP4?Au=SKiSt8a`{HjJ-avYvFv#ujii2n9fjTZ87 z%;cf=>Zmd~xYz5!km8HqmbKSZo~$Y^(KFn#jwv>y& zfYw_Adfs6wr80EcdYi%G4nTlHGWV#Wf5ah8rUzFY(*K%<^lBVmp18>It)UV9WpPBO zF_VM$McaZUmqNLtGA$yR6jVlhb0DWVn9~|H-kpc<+WMtY?(7TM4n&XbC$|V#)3jUn zPE#_@x9atD-fd~#Y`AT5H`f?$*O+kag-1|$Vx!ah)S?!;`jD=c==3q2lIhtGaWy3O zeB2PToYuil_hCk)*Sw4CZGYo;%MoInmcG+kO~te2Q25`4Q=YnVLOz!aEl zhkVL89y4JKaA-spX0CaVzOdSFGf!*?cTZrS@f5S(yCJp>o zwaVEw?bHuWct)u?`y2h?fV2hI2qhqSQ%4=vq1_dLQ0WqRSG`=p` zkmCmFU@D+MqAwL*Dt`wW^HD;L>ye#r9v}5Foqsm>gK#v!;yqR%WzzhB@?34wB>$N( zaLYJt%t_t~Ohu9dpYF!#HT4{-L1V!FHTj8Rh}s|H~;qZ zed}Ell?W%|kiYsjzvgOE_Y1P@L4AX%yAc*eCiX&Yc^1)>}jG z>*>UNfRPNb_b{EF!YN{w=ol~2o8Ardg2^lrl@KWqyDua+F$$>7(K#;+kNLaEhC= zKTXuxi|(&0o?RbYw_zsvz7tnr_tt=W>q7qbioRVW)OA6guK%fUzbDY|5e^RvJI)2% z=Yr1jGbx`X>hdh7=X2~{-*vYI87R=R6}8@cD^ z)g)X0dl!u#T5efF-9zE-3xVzn!S0K}eV2s2qr&JFfq5pw*7YX^+vbmb>&!RK{Mpli zg4S?BZ=j%e#w=F}FXuZKT0;9y3a7phK6Nf|>Rj;Dg}}a%@V<$_z6oLPHR0N%;Pl_M zJ%1qQo}N?SuVk{wvNVZN5dx%KEiFV%Ha>b}#w2j_R|TXOO9VP-a+ zD=nSt3?FWGcRCD94im1u|AgRClO!$43~GL`5^8ErlhR@d(hX+gyf2SqKY|}LFU1}b z3~SZR=%2bO3gsohxquw-qE;>tWz%9oV}g!$#JF}Ua8aObD>^zAgp$FCoS+W2w&fem zGMZpBTLb<^+trSfMk3N6t<{(V^-RJWO|a}St3~zVq;Ekg_L#(Ri}aK6M#G{5-aJYA zDM&@bmctXZffZ@UAYCb|SVj#cC%j30f;LD)`Wm(vo~VrJNW-O+O}dIsV@Cgq4|d11 z$4jL5QtxNNuVvCx<=12LWW1dz32ibXcv_*dJa%=c#~pD`0s1l_Sd2Fa!B!~wN>|#W zOncNQrF>-rgk_~9bXsF0N?0}>p%UQrZ&3jx1*&ooB%(A1f(|l-%H#n2X~{g2C)IjAPiq|9fzL(7!Qy^Ilx%f=!jqB;`kF?JxAO7tNghxSL-D9 z{zrzOXGHjhX|^CCylD3he{o`XY-rNe_AJ!!Neu>NN#vFE?jVFh7UUEo3Y=f1Hb+d` z<%H(M1|_8vn#rniR1l6~vj3S9`d{#hBQb`79uwbtzfaLVqLVDQ$o23QPO`Y|P77Nk zg%^eiAad>t%Z+3cIoP622oY;>gk@U|VTsj};P~@|uu4%AVlb~$+@t3Ag{%kuDn0jp zb!)h~J5b#nuI>rgD`xi3=7`v5_P~7mxAuQy|9m6t#kxs8P(XJ#Bm3x%k;L`2$7s5Mw0y}zy?Y&EGlY*NBBv*U&Bm3!x*}9ru{loP-d-i8px;$sJJu}C= zgIOx8hbD?>;!HMP_KEa$ek6Y#$bOOotJ(55tKX=eyB6Nq6xi5w*WL_K2xJ1J$W0M5 zdteW;>`w;DiqOqoYIk*3>pm!HPQuSpwWZ5tSlZ_9DlmLhV8XRG3q4PJd;V$kwSO6= zpNiq9>2zDde!y=s*3)Du!uJMN=_n=%gbHX3#~fH|v{V^ncB7ml2^YK@Cs!5G9w#K> zE)8_$N&1=*_($GKfFjG<^;`pAJwYmjqBODC*Hs%gaY{lcN)w62_=#A%K7^Gtv6#9f ztA0rhMySGumcJy4ivE3^+N4XN<9-1fkc|eq^JIL@s4jDy{K&nfE2eAWmiogJq>_bH z+#0DoSy}8zg*YrR2kV>JPtdD!kWP6_BDj6xbaIi7jNg>>JPwSNC}B)&<$ZP4z9Azz zB?XPXkvNs;eRiCfHSD-Z03zm45FzvaG8pH}=1nDC+!T`pZewSsIH}|#l`UGSJVEb( z;Q{1YIF-oqR?StD>wu8ANvSi0Y>rbN=lD)3{FJP07F#EQ9|-AqeE#$(Jd8vQu1-H-v#SNX>apQbaFFS)d1RacX55)vm(E`G z0WG`Q2@DfjcBu<;XaWFveA3lKh4zi`G9Vic&Ly;NsNGWL2cVWv^Wnj<^I(v&oJU8l zUgd~8&E+~cJa|dQ_y(7!*`Mli9q#Ryp8@wP2wO_VP`l}zzgR35R{=ka8eax^0cl$o z$KJ>;!R7M1MPdRTSn6HAvBB{nC_kwgvo5zk#SI@R9Hxr0RBCw6zoPtoh}~MKuv@*$ z^igHrwThR@*rVx8cZjh@$t0Q2yAfX~lHy}j$^dEeN6bUw$AIh75m*AlqeL!T70DKR zkjPy9B5(Xi${3MC1EWM6Ma&*fn)r~A*tU`6t7up8y~TUkCtjwXlZX}Mj4u+gd8KB9 z6fXI{@iIE2hq|ajXDAecMa9Y`)aCt4RGw`ez$kQ*Ts%3|VUJ8mjEtd9FCt+rJ6qXE zOOrb*)n6PzuVc;ik?Ay|9crI|JNsD-hxHR{7Uw}q-Y)VxL)I>+Ab|_n_iEqlu5iij zK*{cfQ^AtXpuOvQ+r4zV#CKFnhRs^%j=uBsTTd^v2sQf_&4RNlWa}0K&Zf_s!kd}` zo0^1;%`p;XQaqt%x8Q6H+4e|rD7~lNdTQ>#!uBZ7r?bg(+uzy!*6z7l!MQ7Bt4C3D z3tk(0b!_%zxU4l$*1C8qSavX&b0~VRUgbL##YqZpY6)y=fpd?Iol!*22!V z`Ec#tK*_Rvy5hYFGGW(1-Ks24x9c*0W&9@E>23McFr$&D%YB#ps0;gnIbwmO}t2r_B$ zl(CI&dfOu9OSmVlPzU(Cv3OuIMVs3C6S2mM7rMs~m9Rdss6?tKO{@LKW#w)yPPJ4v zi5^%{Cxc4uS*Jw-NipHnL8kcDZU-h*p+N;rTjHRy^l_O2f^h+{C!xeqj(Ovxk+HH} zJt@=4_)8flwgNk*l034iKa3sxy~yXaPNzats8|jqE4)D*M0%*x6d+2GU&|LHBB4di zpgx&+qd}p78!neBt_VjK^B8DfrNy$5g9h!wzP{YDdMJM>oMlh0Vw?(MBo2s?*g%cQ zw1iwS9XwTTRPLm!snn@-2&&jt2!&)!Wq6CGl061L1fQmp<9xrosr1-BI+j0`BF0XM z6FXn(H84r>58$%PGpr_;Wt|c_PDtlea`awBobW|cDNhvMrTrb%)DhYsg()#6cv2wl z36W1wJu+nms%Oh|=3}>0fyy4Vti%}G?x24Pr!$|=#JEApwjUx@M5AZhhrAy7(7S3 zP3Xw}g!Sva=~(#S8JkvUXyz%(ikyBRp$}1C5$bTDD;N)-e581>1;E(+-X9yPHMRvCWql~5chaIEj?YeBEiBwhs5|_Lk>reGD~te z+~eL{(!6Qznfc*`&V~BLqeA)qyN(_vhciK}InZ>R>?1Lo7DcFLg64I+lq6~t*L*56hkB@M<-zxooHXKG@j8@1)Sw+g51xy1Ke)IV2XKtREtC~L*T(@r~`Lje_YWi>Q ze|i6ngB0_^?ayoPas_)`2=kxNLRx`>-W08-4$vd2)BCz?Ve!! zx!~^eLc;~&!X?2u8nRtRq9|XKo!Kv|k#3(KobO-I!*<&6ch)ZyE*@S={`cu0r3)P=sJ+~0LiVQ~ zChD_$_1`4fA^g5avP1ZVUM;A?r*A$z*A=cg6sS40>~PQS$8J?a52S=Pt zuj_CwJBnuy-Aub-ktw`=iv^3RaMDtK=&s{1T-nbS-%PoYD7`N42st`Ge^{+^Z~ttE zB%;K1OnDpK=$)&YD-iOxhpaoqX1mcndu{fDkiRix-6TEg`lF$_vOl~ydq&9L60&Y( z`Fu5HX0u==%OckGpJT(#QA{2)TlLHK{2PO>?w@Iwx9WC$)3>ns&#uj10IBV64%=Jq z*jt$Y%vSx+Kg(I6cD5TP<}$u>Y@rjRHRE8Y)Xr#{c&V;81L90JoZq!JRpIBo9nDGj z`Cv~=X-`(d$L^+D-2EU!Pv@ac=AJw2~U2QW}xc~OJAblhxzV4 zz2V>KO}JJ#L_;L{BptN;kRZ~hq`tuQZ!Tgu#~ulF)WQ-&!~ zQW`!gMPVusD>5Vph}95JlAzzTWfhjYMSEinu-+_@opKt__1FV@JrQnc)`IKw=5traU}ql%8&r(2fHf#SrxE*MSc_}p=3)kvV^p3 zX!$Brtemv0O)}xedo|i%>OrEchUDj3)c7HOyUIBrAi(Ch+~?i2nC^+;Kl4miq8Qmo z1@UT;yqZnT-Z2O&N`UuOrKnJY!l7mYyfvs57x`suYP)Eef$K3z%wUD_Yvm9@;R!2Z zCrlSdZZ0mEOKf593zWr+IQeMMsh4`b$h&EguhdxN#j?{52s$dDjJ4uU_#BE`P<_WQt*!zIW zv}?^W$#G*VFBYgnWcz?vRkuu3X=+^u;RP1*q%iG1bjdY&Wx|U}VvBZkl<|~U%_>+z zoPZx??M+3G%~e|bcS`NhjzlORDJanwh*w^&DMqnajKNXg6?{R`{J|2RaC&1^M#SKo z^r?6S2hlz-7j_Uu~n)738Hi+i@!q;lXd&}^x!=wu zwVEF|g1Zg}tNMd^N3M4-r{~RPz3F(v5lF9Ewq?C$e%1V1`m5=)`q}!Bt@dwVE=VMI z^G}4VC+}I^v)kTmc%$L2b>rvv)ARpPmt+~yOF;^;qq^859K0;#kA=b{cOMWMu$6jP zaQ267M*_AZKc^BLr4k(BC3u)ZnLqM*@o`>i-qgHRcYCX)Bgb%icV6oj!@D^fT8#!Ut)3Tz`;m=`fl;aJbv| znm(vE(UZLQ`&yK%!!Q1v=T!p$@-ic+K$ZCKHepe53sDtE8h*6Rqt$DQ#?} z%2-Sbfq7H{P;o*g02l(t?WOVmVdvV&2~ z@vL%WC|kO~shAzr=$ZX%h#!j?Vj{gxBI>6nXK}3HeCxy2hbe#imAm8;| zkSk_YY+=ixWI$S83c0|Vi*H59;NT!q!=iI-WN4T#y?uVkww3CY3#+Pk9CBH{i6PqF zI5#mmI#~?l@F-K<+8Bm!`>s~vth*vfS8+Em;)x`QiqNpB$VA|JK(I4i4Y(lTK@&!< zM)dV?4G#M~k(6PmUwBcefsw0FndWM`;v=$FO-dU)8cbb@At@qP$51;0Va28OTU7^f zjju}f9>W)aP}7#H1Iz>>mOgo%jo4V!0eVTzGVG0{lK2;|5y?OGP~;q>3peP8k9D=Q z4YW6P^|ZChe$b;#`jDAJ@YY#-$kJ2P`G}V0H1wD0(>kMQXqG#*xI{S*(bD=W2>7?U z&uMkdfl;5V+;CQ9AgeN*we3#UHfafQJ{7V(O_Zs$OcFDAxzH6Z+#D#}94>4Q6gCG7 zTf<}#1a7@mZyE!Ijp4%mfx`X4!rmE+oFFO3N;j@8^Si#)_>IQJyrr(-)?>n!5OX+vP&31RO^;p8ddv?qM}Lg4fTVdU9|I^A>n)`XwYPbcYT z&<`GVB^*fjl9LJo%v9fa|E072lk%tbTm>Utnd8!-*Z2Ilj`Ygjr6%_ROgEYO%`7 zD06C2dhw7}L9DO_^$H8>bj^8KO`%VkcIsZq$LuR}f7$FCue>TzB1OO&vu{$&>}#0T zKd+wz?|^<4Dviy)X7BIe1H??9SC|B>dVZ0n&vhcFQ8o2o`b2oels^m+5Mz*2CG6cQ zbCsFRRo)!J^~xNTO|wtmfg=M=$1wFYHTSg9akEu^YvDN#ER{|J9An2Hl_0)i<}`>Q=eF zS#P{mk%#NsI(mFtucvE+rMb><+v;xKYPel%qUT#p^rX&!>!`s;-I&4JDeO@Gzcu() z8B!WxlfbE#HaECgPDN_Y|<(fnjCR0XOOvqI>l%%|v zet0g%U(BH}Up-lG+ohIbdg24rXMTIs(-tcvDtfWYMY3g6) ztKPd}s)bv)Le?J`A=IT%xeJgC@vAldiElQ^4F8Pw8y+)`_JvsJxKuO%xfwI5of5bWQz z`)*3h<*+YDoq^;%&N?s&w~dWF~rD>AFXf`Z=P2{~Jao5!mSGWE|5jn&58lBQ{@;gL2>4@vd6Ayyo5sR=1 z%NNt1k0dp58jg8A@@}W+Ou2p%SC7nPo%LnC^=18$|EIZY4Q}Gf(%qKYma%Nhwq#2} zwq@Bo%p3d!6Jz5CHedsO@Cw8ji-!p@q-_E?BsEE9w#aT}LVhi5O>N9ps^Zk9YLr=O zM{H6X5njq9Rntbw+L%xnfjf`}Xa7Z{P0L z{q8yEo|AsOe|Q9|uR}v@VK<$QrL0ozbh_5Uw7Ge3SUd4sLWSQL0Kuls!$%?d^s?xp zhzzQ9tefSzY4erRt2j@~Sl}^1IYVsN;e)|bA`D>rKCKmJ;4jgIAwe(I#jI$jaboL2 zWvz&{Bdz#`MKbA%?bV;o+TPOA)z{wK*R*YGZ%5~}Wou)150;TFozWc8hLM1?rV;V* z$RMHyr5~pUMM)(vQQFb|VHj|U;u30+)*;GbGa8ME!NleCvN-8HIW`w*w?CHG=#E%M z-ByQZ0QQR`ifWfMb+jB+{**=Ok8s&&aROjSqoYE@HwYR&LYJe^uret$WYKRi zI_oB!b?3K0I9$47(o=KCQ}fmy|DN-$DlT*}A4!sPW7ypEFxxqqT^7nNgWh-2RW;$N z3b|@xE7YWm(ptacz(Ar&6Eo_wF9%*25?~#eUN2H@e(#f--y`$2e7o{SK z{`l}aT$E}GhAMYU6?>$jygb{;3bw`Ijl`@?XM$ZAOTvcb@TAvv^J$6NGq*W$pIuR-!&>S>Xj${$7^X z^egv*i^ea@7QfqZxx=^QBk#vUSBHWzVwi5oxj4rQF3hvESPX@nkp`R`^=>?%ztBrDM-tFl!@L<2U+5g3Y4?ffV4P9AM0fz{{S*8cI9hmFY<5rfWNDyNKAj9$lfXuT#2o(u^s2h6Rhf2 zP?Lv}`q5Ci-K6INo6d| zw(MJ2ia{d~4_BT%5^$zv05~)O3Z=(iH^+F;nr6md>{-tok(bCdMRSrK=&TNsl!P+~ zz@>OMXHR~&v;`a9smvs`XX&2`|YGG6fR6$r});@<$J)j|(5m}xwG=|uY41#s^pK&wrq2$_>+?JsM z@$5;`7%0#!t!0SJ3B1!LpeU9?kP5|ifVHb&s9Dnf(S^P_cV6(w0CY|Lj3}q79CV3i#4tUu7`|XhrpsC zHsXK9#rNo$zJj|LrmahQeDw~_Bog`)PF3O6O@dbx6*3C1N|M4Wy{F4Kb&JW@tA4K6?!U!COK5H>exC~lR{;mc4g(zU$RS4Tf64~|N!_e##E!{&Vt zfpCf|CyFa4i<>5jn*!~j;?7A&=lRXQ$kt+d=r=4&?$*F);5Y@gF4`Hk>{2K8B5&Ao zC?@5Xiq?lMPvKZD0!{2RToAM3PBeo<-<$Hj&XRAA*(ebn(5$&I9?`#~c)+TbjLiXaw3tA+^k?G% z&3-V}>R%oY%yD0dMpE#cGVokGd+p$ip8Shq#&Gp8Yjcl$5pCQo665pkHf#!N; zqavx?+2q}P;`9*3(^F?L#S&1N@o4%~=Jcp$eA}rJ@=LC5id0T6(of^wXnhG3_o_&z zyZ;58MFc9++$%Hg%&>}TE!w18tIqCqMHo#Tp{9d3xUAL)fRs=4ss=EhtJbHYtBhm&Rfc(nb?D zJuA`=dZ`l3&PuIOz1V-z?7TlVI~RYe*;(;Jo%^>LZ)IHE?6ZDhss4*h$?&-mI43!K z!scFW`mOQL^C7P}Y;JiNvkOqP|7{blwxCn$?F+dMOy(b8CIZ^@O4j)50sMY!_QCH- zL)b!L5mhlp(T1?4K`p~918Dv&QRd$)uAo2R{JR$0$ofB2Tw*(0!sb@p{QCl)4CY@e z&A%?1f35tLjbNMV1TY>aVOtV)0=JF*--zuQ= zEjv$XC!?-(vTs}9*2Y>u>3UT| zEE0?Q)M&k)FlLKpG4GxCeug^#LuQh&wAbv-{1ZxLd9#z38gWNo3%Cl2D{X+X?T1jd zVOPa5k6I?i#fq46D3J=to1;6gsc~Z0C$3d}H`Nh<)Fk&Ma+tX^cBPs^4a?MYjC)hO zc~GNSnHo(<HRB0EIs?s#f0u+?Y zCN*EZca$w)3b6lXbTd$shPaPa#`>hDfTZAWA<6q{XWyDb|8^ppXu(Leu9jukUGijU zk8@4LzmE9M>V>5PPFxiW1w2>@mn(>nvWuzH#FdmYE5=Wc5BknX&W5nL5xSR!%O@99 zO)RLIvREfA3nnZJCM~NcEUPCi4HK4zfGuR%G-WS-EEpDMea#u%S(4fH)jZDPRcu5O{ZZW?s%5KlV}C$1AR`2wHz$^l4FO-R`h^kM#WL zh4!dh>?ynJZSy7bSohdL$zDF*GGSjmHNW`nnoBho%g0ua^}M_1@}99R685N~VCJRF zJN7l>4mdA>s>+rR!?wcZk8?E-+Fw}89-E^_Qc-=_vVkD-4xTXbA7m@W=9|Y2JZCAG z%r2eCE{!*atM{Mw4+dV8*rt-ZdDdBh`szO#4y^w01^-dF@pEnto44qo^lNx6U*)&B z0j1mP0Hu+-(wL9rC-eCBD&r>^g_K@Q`Ja?;6mW231>at4ys@&GF8H*F&U{*IqjV)p zSMijtWwdVDmO{hN7Nwxf&&o}dUhUapH++^SAm=l?fSk_?4M@kC*%4Z$enqVKo&P^Z z(;4W;j6W46&BA0bzXK+FCduq%(8Vg#_OW2LH|l4nn6o>zHMVy*fiYHW){S?(hg}c} zO4B|`y?eenN~Hte>74k@Q7Xf0PF`w6lc~)p%>%jlfZTNM=@L1o^Jd1}*Clei4Kp{* zrCjVmd4VcbbfzK}^%&?j@ii8;Bs5_;4ATMoA1jX4s;1_+9zjUdHh}MJz<2o!-z9FX zAXXYr-#$m34t*)YeRGs^#>&BIV$??l45@yS6#Z$kSRlIWB=7Egb%dy_X8z<>$AwAD zQj^r-iUog(IjY786zbo9wp%v!u4Ii6E2C`e;2(-eiKLKqfYg8#mb#sURtLZjiK$`Vwzgq=P+VK%_%FWTr4jh!D*>NQYjS z?GS@75N@duMiGhqGa;DSyHwb7P~l4(!IzIvFbZGFlEN3AJ#eFsAA z{h@USL+$~t>m@kkQcdA6EMp!{x8yASusEK8n(9>h_j4 z6JWw73t$3LR|=83mcwt#G+xVXDZ|07YRbP=V?+A3nbNm2c}iQ-+XTaHho_A*+^!Rl zALIn&1O)@q;=kbK5I-bBuSuNCTzcbP!++%O@PdD5NB}EB=7#YA+~p>V>8+DJC6!an zHm^4%l~%EMyWc`um8$!NPJ`oK6T6e8Nq&Zk3!BS<$CReCk zNaQkn;=~Zm>1>AHM@>g9pkv|6l!^uwOW)DTnf22=%XCh0duV4=|Mzr{B#N48a1*^T zc%sT(6m`@g4kBiOax=3UBfVI%#t_4mNr}W7YR{vHnYvjPU8=N*+i^nxqBK)6^PZFn zo;+gD(8D5i%BVKvJF$P*>n0ZtCx&42tT=62#*oM|MWqMEIzq@rziEwaoTc6o7>kYx zMO8?f8@R;Gm7_t*7Sb5U&j^antcoqWrR}`P&P?Gk^MjKZ#$VtK=ucBxagRD%7 zL8h{87wvblOYRnws#{P!-C=7FnYL(t8T?!Q^$PsBo99xCm0_o<|3%5OC2ZZQ7A@)x zTXtgZeV9{lvHDI?IZ=RnxnuWwwjS8drP?e3R$ z9h8{wDXm&vO|^G&O79kEy_Pg%4 z-oSH&?k6=X0SnJtjFx;vakaOE0Am_HpfOI+b;iiZu z(XGz%)@f583ys&;H$AV99GILseh6uEUmpd*K&U`EO6%+Mo*3xs6Ul&!8QY8WVv2`| z94Asj#6yG@fMO|;mx<61xp)I_qWCJM&J$s-TWK?;_$HB;h+H6Yg-C!3Un3$BfqXye z?S=eniIa3VMdSgIe<$)ABIQIL6ZsvH)kLa^tS8b$q@73?k=;c05g|E@NG=A&lSEDt zA!{@76(WB{>_O_6@Ns8EZjtz3q=xsinM+Z z=@S+oQDF+ltt>1^elHSf!~d{=asEDc*H|wbtAv#oN5-1Q^TygPy&U0i_|*`fCRiWk za;bS2o|?=npU5j8e`<1R{lwDxkg(xVibu#F8yRo9d{*X=^j8K9f$o6mYCSuY_8n08 zbI*T8ry~X~wSkxEBDsxE6;@vykU6life5ijS&3VbQ;G%KSkHLrXQ$rhZ7f8y-_$g zvB@4m*v*fjG;tq_6PL3xg*M)YVI&?z^~9x~-4T{}R8%13`%oQNKw;9Zr`aLg;YKK1 zUSkq+d=(K6OtxkSIRS&rfd%0_7EHER$W{5^~Xn;DaOaTmyyE6pf@2EhCy zj8W%sBs;SNn-Bd3^P>tdX-BWZ`wlAn$T502Ho0iAGO%D&6f7_tAtv|mPMpHMf%(xi zSfD#XOkP*7^bL%L1uWRj80#Aj<%X0>bO9HG1xguXUBIEVcYlPk<>MGAo3Dw6gjE9; z#C?EaplE<>7@##Mf_ns`?tulpj7hupM(9vJN=0a(sEATBn5PukffrjTg1VF^VxwWE zhA_-Z19>>rEpuQ2R00;n{e#I%Fp|_e8eWv9adlacWu&jh=Fg*##wIUbuT%{dKx%` z=XiX{;}|FU;_V@N!R`y$Tz$P!g+Wdlpp zH%3@O-iO~KHfmsWYhXcK4mMR;D;tP!-p2UDHPy0!xv`faT=>bquliDW?znP-;iszsi7h=+Nto0fpOV_M+61Jn0 zwa3|m#OofuMGw3J^H3xxJhmz9Xx4xw)rx-a!A*z@g*Vjo?0b)_n?IcW8Y_>r3du$xTLUKV15`v4IiG zA7x)=XStavhQ$w1N+hiVLl6pVdPpEcbCw}8pLoBbyx0Q7$lT^m8xU+w{ESY$f+`TL zT#@5&Eh*l@N%Fj75v;!kRG$CV{BU7qsIWSeQ*%BQ@HyLgabYN{ z}v9DChuMV4Pw8C#@yq-a_I>Gu4i?{IV2I#e~rBpO= zhHEt@q8n;9))_vj6Obm5OE=QjSMC)z;bxR^dj@xdW#`}#I9pOihzX86kuCla>qNM4 zf>%OXTG7Wgor+z)SnMf~mJ|*O9A-!ugA+xr-^WN!o5jI_qbnfy9zJpWkVv1>bQa4( zRJ?&h{=y;C5Q6T}n<|poiAZ4w z6u-yp$OpT;?Uv2BO)1Liw+`R(8H(Q zJ|Y=DPp7FCA7m6fZ6-_46GMHcMh1@$i==rH$tY@C80a6s1{P8li5*1TL`sNwh?ElP zAyP(U0g+xJ3yCZuvY1FYktIZyf=p*KFWB(ge1be|oe-7y5XEF`fJ?eFk z$frbpM&vCTGuouWb|>pJ0?ah_7gXdwi2NtWboTbHZ9ChWTl#vtwz4fQ_*vt`|DjX) z9ostFd$x7a=9liCZQHjio~@=W+q+u2yZf4Ya77byHTHg>f1b+zp1ZSRU!Fkd~@+ST6D*&Kh;(cRM6)zsFvqqhYY$6c4*w5@}6 zW?Qt49DS?Ztov*YL7%GFOym&_((6RLAk(Jx%HpnGBtuTzBsaVT6h0Ms{!vN_Z;Y5Y zKKmY*b&t!u$IZLPW!&S^LGN?+2VC_RT=hN9%nsf6InRBr_&(>n&$+%%<@kyTZp{O( z{ytZBpDRb=0auG654h(0ocjT{FU0M8z}0=7!YMwhKp${NC%B^sZor!^G=IT4kjlvY zoAU3a;a9`e%}bnpD!)VG@}?XW5|=-fUry@1N@ZZax%Ez^NQ?_P_%bm*IfDG#jiOZQPsFXPClw%{+khhL5vn{0}E;NWx zefuPCel(riL>H~ZMPD2Dl<>Ak9MP}NY~*u!Df)T=k0iOZcnxv_( z)7vWP!*U+A?4+NRq^)t2?}j#MOWU+Xb`q;iZtocn4rHRHzODMm{d#+Gw+Iea3yyD$BV*TnrD{ZK!4C2;?rO&s?b zPT)jNFbU>vlW1b!X3@;PEuw{eTSY7Twuv_OZ5QqMwsdE7IYb9fd9B^fu1qnrD@)Ak za*3`kx9IN57PHwqb9auI!}57V558^Pxm|f;9(!l+_IBlq`7E5#UC>o17P7FTyQs@2 z`dHZ6UEJjt{Rn3YS=}XFrDADUnON3UE|#-6S9e7hFY;ZLVkP_S?yl;p7OPn}yL(et zjab9NIo-8gbz)sty;#qFd%6Q%o5jstTf{BwcW!q>SEJa-!g<|IU0cPiUE9QM?61ph9x94WR5CFk3P z((`Vi?0j~!T`2c+k6XnKp-QM=p<@W~EOh+*388ZTIgT50aNPOhI$WL`HIJGD)zL$l z9pOtu;o;B--*&Q-pO_q(84vMKj!j?U`^JVZ@nhlXka%%uIK&TyNBAi*6bVi9k(sHf zNpZR<^M_QU-he4#Jv}siDPT)jPmV>V6OL0;(_@q2q49*ZeQbC-VQC3pO*ncd`$E$* zVi?IY+9t!1$?*^c$HI~6q49Ag_Trd0@iO3@9J><2x2=EZ!g%P1n3r6@lE^sQ(I<4C z>P(|sL6N56oW{1!^xKKW#Ld~#@{XDB>08WI85 zjW*9r4USKaj*f*#6W+F&$n@mIiO~4eu}N`aXc|3)R9==_2t^`jx{^7Oo%|bxxW$?9 zU}P#38bLLtkuQH7T{ft6X=r3HGKLq4{E@N9)cDZV!N}FfbZBA_eKbwAcB|EE8$zQ3 z)`idU7NLg-3J9GkvMb-;L_yJo~8 z8aK7_PF6<$)u~XxjwGzrW6`7}S^bwn6QR>=S|nUD6uDCp?oM^;^h}O~67JLDHE=@j(jvgKwj||JRU4Am+h2VXUl}OZi4y1`A zvILT3205~vx1G12&uBK=kf_-#SlRS<2sS?_I?rcTap$x8d`5tB_`JKXbakwXXhOGO zKc92nPB4WGV+n%eyhm^fnavI%i%NRjq#{7L=GCx~B9Emg5l#wT z7Ai$3pM}bVg7f7Jj#VgRF%@zQYfTZ0;RWA$yOz#Q#1Z7L(vZ&2Vyg6X$ZZ!&SZp;2 zryYdTi&Cf;W#YMs{W2>Aw1%aj_g00F*0PvNEmswTRmWnh0dEuD)Zm-)WD2$HZM{&3 zSUpcYiwy_?q}z=7vxVjm(mR9(_GYuth&N42tXRT z-RD3EKEnk~^(>m>M(}2UmL~QQOuLkD$aKy#uE%phZd`*GH1%buIrMMAELc>k6E+Vx z)i*&TBEQfXwho@XWR#YVb@?-gH{bj7%g|HrT1m4 zA^p2AR}ZV9pCLz{npdrb`W?2d1Fb;KsecD;LWb7M)^kVG^`l^~Lx!ILwpDOwur24d zrG;%vfnBKAO$}A8S9Y3y4O-M*p*3lrndb(IRe1V4%p$iMJ5Z*E)b#^zbJVys=4h7S z(pqRAsMJzxGXyZS+N}Y@Eo5sjG6rfi7#V5{0K==s4iF-Of2koM zXP*Udv>7nURdNH`Dwn|x-Qc*e19?@hLd}TpzO9BIN^oGi8W(h^^&Hrt#-&^126k(2 z_o^ZNTkz;KWC$ZQa6o;BUOS|Q^>1~I)Ur>RwsPA{Lhe2*1dF_Mwaeyqn#0b4!zzrv zqiRV1uHu4D6(VL#oBBqN4LU+*0X@~?xM;e_9kNt#7fk_gZ?rs#TjVFe81ffF5Dq4< zjE#gw64{LFBz}2t3SvRD5TVG{NO)*^_>#hrHX#c9o`cd567TCMF!p zyGXQfL}AVc)u^V&Ba>lb9UY;kh>xDUoXC=CID-^bez0VTykR2`DfYq~l#F&?mp z+t3?{9JNjpvM7+q)`}k{?prJAa_DO0Wr#8;cslgdbku)r2yGhSrzaslsUiujL;Lwa zRU-53(D+P3nZ`uOBnIN_KWx*WpGh)5VC?x#luJ!qPVoA5|vD_x{COsu8Ig5=&&-xbk2 zk6N=qwJ)3wI*$kYTKXZeiPaS6XzT0j?`&&1 znXr=3ldw|9B{Gnm305{4hO2KTJUuoc_fQ}+VU2{wFS4Ez3F$=QDMiAGM5fXVG*%=$ z6Zg@hpI%ueBBK$)Z(jQ(8rt@s4@N>_&n+fwyA0qWb2CU-?OL$D?&`Q#y?gE>@#^+#?Taq{Zq?Q=ZlzGgn`q(Y7dGE|bgn1vZ@t!iw`%v? zhvQXk>?Jy&s{SSa=lxQ{QK|K8yz(K*Rem>cNIHBv9ymiuYEfp*zU88_Wq#8V-yGwc z(ekB=9kGfXZ)I3(vahwj;i`Q1Z5QV$zRx+GTbEs)C0BXORlek^kGbmadc4;=K9zab zQ?}&Uf)=nqZOl`Auq=T{s}WqEs1VsWr#D_yq@{{2ZKX#E1(>J5Q5om!jnA&A*GT{Lk z8-&6mOvH`yi$T;Sk&T>#3@D3CWJAGX_#H5dXDOMLazu#P<$3X8it!OVXmR8!7_uZb zsq8-C=vt|U0VC3j$J5-3)#?n~_4=2*TVD5WiF+HbwXZlhPyV&6ci+z7Jf-(Jv+_Rh zx;GH_Zn@Tu$+6_BdfioZtN9IA{c?`?TGmPiQay+e=k!cLG55l*mORVtToaxN>x?)K z+BV5ZWF(P;9s)gqs%U6<8oI57U1Z9z-eGN&0fY$F$MARmM;4B&#)w1Q;QA1e`Y~~x z(9K>#sw<|?SbA+Pq{R%wZ~3Fm1TgJ=n(&~$g*wALpot;+T*&4G%TA4%PZLjc zc<1s|wyqQUUt_((wxCTF8-^w!dZe$9)leTzY(af&DfLOmvT1CsULV1}2E2@&mH|y% z>GSA0)X;z?a`fe^ar$>Us6mt9Xfg{<#*UH3+@$pd6ja8(fY#OI;Ch$v_p88fjr~uj zngY&a$^+*&KBk#EJGTaNo35v_HryX+7;wRb*1Of#S8%=mVL(%;p#{@mwCx|DF4+Ub zsIX5^6Dx?B-EbXwCA;D4T%M4l*6;)LrYC(}gk0l{3}Lp1?JahlLB`nrxRPt&I%({I z+cJJSI2Wg4!H9|DE}Dt%^7uDuk{Rng7BJU&(IzlIyvl6VM*^}c9<23L2$WamFL{{< zn*dSneNZ@XVRC$gAHF&ieiSO!VPd1hqkPoC2m4M&2DUyL-6W@g@--BGRG1m2Bo}AK z$FFMTfK`n;d8PrO48AoJ+2usg7;6k6G}bJmID#%0NqULa$pu~wjgL=0`DnYsvhz<4 zMfhRbY8VG^+(ZSHYwyrNs#bEEew5=E<8kq=gNhPp^-;B zNcp{=e_%mbfn2ehDoC^|VVe>`iW8RcP&iSbcJ?6Yhz1pUEw)nP9(pit*3o|Iq280H zTH0ks*4o*7?3DN@!OCt^o5YGsWIWW;*W1~9Ts%pcX|YMzI{Nxf^#wB6s-{;}yhtxe zXrQeSS`Z>L+wJC ztzR)$xC`(4D?b~!p0VsHdfxqddSI?`{)*%~cGp+4DmSbku+ar=C8tn?_#%58)mFE{V)Y%aeH?4-LeHGg64 zZ$@UffAPw#OH%&UWKean{JQ0uK&xvV zHQI0UE&K7~Reu)VzFK2CUSfT<)=uF@6UA?B*?in*`)08j`Mz1=r0}Met;fB#*St3T zc+F?Qi`Pm_$njd4{djZ6Yt^RXwXWATxhT9X1Mvy#@FWnBI4$)XeWAUZs3PSn+hOHa!okb0eELKuyDI7*hmH(MqD2L!gb~%<(SeG{kZm;yF#%tjk$B&mQ^sk)^ECSXL?H zLTg|5*4~+`CP3ZMzQ;+_15Osaxpx{oNQe43DmpKE<@V zlp*DlZh!>S`wz!}COo9mmF-e$1SZ9$7S>0+aLPw8>x{{$Wu3Iv0fP=v&6kD|)U9nkjS;4X|f70nJ4SlMyN@{wJ z1GAC=X2n6w`sYuTga`r@0KkQRKA_-%0vk7$7m#+aKpf)aggXH~;)G=GsP z)AsWsEpLp&cu=C3qh-*NO(0osASZPR&kPD3eS@97r-S`$5f{Ona^e+wgy{jgHQ>D68S_lwAFVoGITLCepO%I#V08D3?46AQ&;$>5F4S{K&!b-G&~`>&ozLF zQX}n1eG64J7x@t$PjmljhkTl%{8;vEW%`c#mFVrdX9rIK} z7Z&sFSM)Ac_X(3;x6(adx6HTviGA*=`H19iTXePG_2$2~l7m7XM4%eyUdi&bmU6F@ zX14n*uhh2Gw|gz$@Y?VrX|*DTiIKxc6mr;?X0_5c=(P3d=dm7Xt6q9J87ld7uq=XA zmGTJXRYC=sIemIfrq#*@aayNrO#)gIs1f0W2%&Tc)MO z#^w9>WoFR4p}xveds8dDWzEuEf?FL25byLg%ocLAG}d+M=m}b|*yIMSc;@ZYMh$YB zchnomkCvUB9M$L@nM)DB0V)PFAkeBr=FrT@*yP}3c>HQKAQLGjnYBR^|PjF6IysI*L`#b2Z} zuFS;%-=M+Bs;g5g##{Q+8+E`BQT}31-Key<4Sbeu|DW@iuQb#@tYH^EXRgD7ke$UcBR4msak{JCEEsDfu5>bUgw&5L#`j+|Ms%)y1;vmJ3Rs zA9!v+s@y)eFJ5ry+A%}K_ISarYsWM&2j-8>?_JowaCYH@baF`YUwFecypqAW>cwZ! z_VgU-JO=ME?lIG2=EoeQ_TISS8yt_$Ice%i6r_A~0*-x8SWI+V!?6Csw=GO+&NRv` zRREcA1kFM0_y$d|=poxM2h@_5bi68T1Z?}D(h1trSum*ZK#=WyX*f{*eZQj*1U~hn zzF)bWS_W+d^mBbBtK<7k{brRAsw9@wP@`s5`46R}#*>00j({W1 z0IW27?0uE1;R_i9)oN@|TbdY0yh)Akqpil2&wxtjxxURQukcfF^qT}Hc;ZaP6Tklq z$x2@X!Ii=jTf!MF8KZ82eH(bz{6HxtJlwtk>pBI9n5)+su0?D25=AVaK4gHZj}bnO;E)2x`63rLLD@Hyq+r^@?poYnGohJ~ zF5X0F|B>gP#zz)wm|62!cu=l%Vo%b_nMQtUIw)KD9&VzSTE;lQM!ti`yHH@7a|#0Y zsy8oH?|Z#^U%dLj4aZ$y1vH7T`zj#zWY!pNQD@#g+T zUvSyCX~|a~^VQGhF8a2tJe#2M)?%Q6jv<6~KLBq1Ibje5R$R%HM%-6hJ zzUynl^Oaw{ICoAeJ$$z`uvEGuR=R@)w#G`gF7G?EFdf@;5`s+eF6jP>{n$V*hH6tT zXUVrE=G#KDOF_eXD|vc}4h4P$xj3PAAIpLH?9W*duV-qD|J45p&VVCE3!p1;~ z$0-|Q%z_9dEEsw=UpF#UPa{Xbsn0+*J;mQ9h%eFO3k1wrR3L}px>n2RUpgnkt%(=vtY$s=Pm{>w&baQ-BZ8l*$jC)*T)p;#ldKp4`9+M~_<0U%gZuh!qFs%B13eRD9&Rec4m^yz4pF zr?V*l^NUZr-z=(LDyoYW)y0bfk|*%)J#WQ*&gw3{r!t46OeStH>yueG+LuZjW2KF= zBXh^&r3V*1hrUN{@cSyKv^!!Ue}2i{wAK=;~pDdM-+N5ZQsg`lVK9YcBUnZi}t0*z#(j zsjU<<+eG1F3x!KFI}omI33TLJzL{^sk0fgeTAe zTm!mBrX$CC`=h0*P)fQzbsJGrs{I05$LK)7As(eLtur#-3KZ(62U}t^vLIeVT#EL~ zr@&rq@s?!3u~w@02;wi}K^t65rCtLWY1!+0lSnyjF@4+(?Ye4vWwkqtm-7mj@~UHb z)wkN?c{`R|J0#Z*Xtv(6aPFP&-Xn#U#aYY*o=-qt+xvCz{Fy%~oOek6mPJ>qCJ3cb zQ~BOo$w1bhMvkIB&(yb8nZA_YlEMACsl{f!%~=t=Z8ahGw#`K0jLg;w*oL%NTm6<- z3T$}sirHeox`uHPnyutV4>G;c8NE@8K@ zhtf9Z343*0lL5^>h_pk(KHWA**ss464j94*4dFwE@L@yvh#`E`0JFsqZZ(A44C&hk zG+9UJFvK4-q(5$mKVgXP)Wgl2f?Tsn=pt2!@%UQUyat8n#t|)02$rjda;b71)4CFu zmGTjKg;QFN(@8n3Ym{+D=+kltNjYq5y_NH0T$Spl7a;V^|oW90ux?o<4_!iz(^S)7(+v zk}!sp797TV+%Q`%>$9ub%Eo$}>X$S_veu~Mgb+?CJAEA|g{hQu>FfA}APSK*b(~&R z$C*`igjHJFb?%DrWJ=lT>lhNAN=cW#j&|Xy5T!aAMkakq>hTY6D5YKai12fi5~@n$ z*nBkoI0-+m$2UX839Np4Re!kG=#T#(JhP#8)(IaIeqlqk|Bo28Uu3m63%{g~l(2f# zuC1zN_8PVPxbTS$)$*5xUlD$FL$!1Wza~7p!Iam9=Y&rpt+m-Ad`j1U!{ z_?++?8*KakA>5>tpc1zXE&sfswKA3X!m8Hhu2IV`3ctCbTK<;s+u-zGLfZA$db=H%<{xBuoTD6}S{)pO{LgD||P)B*}{$y1hy=&C*>%yOIu0^zoTQ3Yu+>J{PDl=h|{lP?P2 zNJ+QWn0!wC^wAUkQV%OM=i94#s4$qmWfQ`8Hdy2TEd135 zYy4jXX+tR;LQHsFXG75vYUHUq{h4uSKN*(X(^)jxbiiGj@syddgQO6$(|C&eQEj6xTrX)^KF7drpC6?29yTDJQn_)G>&rC6E zW%9BkGFKHtQ&aM`Gn^t}19<|6Jw_tYa=wvo;io2_gg2&{aee{^e1|kWF8mMSz!^IX zY`p}xLFclgmpFm_&3VSNPvz1){4}-7qor+>ZJDB5gK7#)5VEl1>#@BIzb4}7P`H6ttgRaO3uD7G z_zQ@?o&raNqT&W z9-qM@k)yOvO_}g0y@OM(a$h7eS##MTE81N}GZGm}eTVY^L;cVW8ukmg`=10aeAx6E zZYvkg3u>p%hH_y;nU~I%HOWpSN8Mi=!ak1iL}?H{`&8p0GZ*#-yIW4fhtyQ(l#hN`KuteH>9NK5{?JdGd)hfJi{rU)0cw)I zr3LCv91O@T^iOROr0P7iypcj!=4vZTIqH;7|XiA-kX5TRp)^2R7INI6@;Hby^A zd5cr%$^TT9{+tR}pa<0};Q+@l$c~+xE|Q0ha7ZN{6e$};kWmjaqF~nb%q$|!LpJIW zf1jW>7%e4aPl&KhnHmx!A>D{a{}8N0q`8>u?esqMZoix2; zLCfDLZh8*}DZWZLE~i`(|wZ|CLHb2ED$_9FU~TnAFTx}TD~dL*;mo$(E)1u@@nv!^Gs!*2P8zpBGz z`KHN+a3ag#x?ZcTKW`_-1cAP^H!_gY*0_N&Yj!5cu29}ze)b|?K@GTTYeP6!1_bu!6 zz6q;|W@muaO{B@8p0V4k{k`Q%YXr3u{f9=7K$*& zl;@6d@<%u8t8WjRYI;`4GSmFf6`awdqZi7W{b1LCa{B)m)+BjZAHGatj*44J^`H{< z^MMlT(i?5ii&Pi{hMWY;IJs#;!>d+i!pA((Hm$C__+7x09c^WGPLSVX22VF%l+Bi2 zr&J7ePf}l434l+=bb0Mz57nR)EAV>&n|i%($=`(qUY>i zdwRd;**2H|hb6yTvgA1=c@AOK$}f2D?JRc2-RjmMo&1g zVBD%sPK%-95W7Lnl_m|7U4!(O8^IZ+9$`Y73&_Qg#_2x%_nz+m>ZzNxekJSWtT#N(@80#6la;JK$9umMk%azl zU%7KhI{UCxPF&#o&GDG$(0gP!iwRzUV&nZQ0rSS`-KOkkw1D^nY+p1~>XesM9@FuA#8jnDfG07Uy zf{2ul(WL;SLxTk(ep!-ER9bN=?}x}9&5|cDJ4^!yE;t}5N60Q~uE=5_bttBoKKrP5 z#aw#aqsKG!0PDet|AfcJ=9tnCzd&=W8oA`YV#lU$bbr}#D=KYo{l=b!z@43v|J0)E zwAO=8NSLw*_Xmu{RplR&JjwAR6o^S(NDBv>4SNwFHVdb!v>AaY<+Iv7kt%2_v*o`d zp*&m6;?oo^#p7j@EYT4_Woi0n1QU%LnK4>JK0%#OhS{4`QNp5S}QX9F!}f zIR=QxzD30Uf#eax*#4NBupzcX26%%8mPm_nU~e=pl^l$f9E_J7UUVH%$2Z}Oz^^G? z0U<_TBV)j@Nj743VCxf9LUld4O0CyN>BI(wJ7ovL%TEbIN{9kPmw_Uzv*!n z55-xGjFE}lRoN1|HiVz*fT*S2q~WXpd>T&hdA{clKX>@nrlqPQv8p2r_ITBqxVKMo z^~qB`3th{oI-2z$z~;LlhPDaBvEc|)p^@vW3FUr=gk2ulXl3e1E2%KZ6O(X{io@EZ zDy3l_QLc}OmiNeSh*wu5K_B=?2q%$7BG{EuQvR*8eOr)^Qjt~M)OkPnDFlxg#jW`}Hz=jCJHYCw;En0b6!OPX}`1czz_oo=B26OVThiY(0hmqn*~Y*lJBjJI|TURqrC|i%$~1s&t9) zRa?@;3`bqsXcM6#EvSO3ZU#-wp4h$-G)>C#pJJ!%c}AQs6;5ng!e1hGV=%7 zJvOo=g$M(B{qP_Pju!V%;#M6MM~#@6aHvrJSEC>FQENAc9~p{Vx-dB;j;O;{2+aed zC~D7Z$VpmdaSi0mNy(Jhxsl;Y$uv&`mX4+#id7w&zm!Z<;ZvNJw?^gzJnCtqA8>34 zI*m3>4<#%R4WjnO#%XNnN4wY^Iy{9*{lRkb^+-V*qtio_p+TF*SV&dB<_)k4n3=c` zhF%4+xB+M?!1j^FtBugnM4K5UfASJ`$)B8@f&WMNUmppP&$1Dw0L0EDkChZsIJtSG z7c_%F53YtH*yX$mACH&ErfAcYE?i>1OX%3w#MCsLYEx4Nsm5?1B3>o$M~TevBu0fL zPV)Ldn8Q#U`*SjiThgKUIaAQAZb)t6RKHNj?UgR88=40(`39&GX~@Nr`IHA?u4x;_m@k!U}_q>1a_0p7N-umoc%e zu&AT4krGUb(FRHaiv>(3uw0l*Gt-kWFPMfggzShJ*K?`6U(CoNJc$kS;mb2q(Q0|j zVG_X363eleIp7cA-vD4SN3gZU;3u3IaXCd2nV_y^15Ww?M$^-BVCOW4bQo@8b@5@t zeee`^%+j=w2$)>5Jp7<(W0(wJ1sQK5*F>HMtX~Hyu}UbwdR5Zk({bH2>$iF#0A<;j z=)k5reA*+!U(tY*46m|V%7CB!+M{uAo8)SfNw}3b_-I+Xd~28HIa>y#usaFcH0elb zFl9kITB#Vb$Upgd_P&9qI}I9mb`=3peO!{o?(G8N4o5p-?Eo**`~~2K63^GG>tKUy zDFSAI{0%k0L-+KP@N?fFuM?y!B0fRpaRX6zV=_we$@YD`yjI?MT zBY`ubRB6RtqDmOL!iX7}JODE8CxZ)v$%`<_VON&XEXtBwBvTQGTG2!ndBIl7OW0+2 zNi2iL;1ji2n`JOE2Qm}?z8w#$%G?tvbVQy&)KF~#*~9?Noz3*vLXQS|Fk+Iz9H^6t zvVWk-L>aydsM=&A#z2`&0}I`8?>WhJPM%D5dAdI+RT#gdS%iIV!sdv023-VGCPfmH znLyd0B@@IzBto523Zvr zK^1-MM#JPD25nU)X(U=ICm_Qxm9P$Ln3uk*en!#=ZV5F?p^bV~6huU~7O36InqcTv zHhuMFFsWBvN*A#_iESHUl8ib2(KvHSY+3R)#=MQQm%g4I_a2vA$K_S8D(RL$M!LbL zPZ0m9E_(^5de2A*1d&wEQMWSB*{?{nLY>ouGQ<)=x-m{~vgeXB7WY$reO6Qd$upYh z)$rsvEymXiJfg83$BmWVXe;+vW-v z&c?kbCD%zdpbyI16gCF;`{?4cMo@_-MW-|FGFMQXz+ui}!)xr~RT?O^d_;?TaaRNj zGU|git00I((KtuT1U#8qJzYVG45gTaje)_XKuA6a{`TKuw8Red1~9AKFfN8#sH5|; zRXj#xa-1IIs3IM^sa>NJGAbMr`!HoJ+M*$k)b5yf_uP{UPsP2bCD&{rhh+`^8hJGy1dC(4SgKYHy0&)Uf2K z?bT}p(6xB0bh z(_a6Z_F7QxwGu}w?}gI$X#Xw zcRmz(P^j@IOb-g=MJ%RQu}Z*KX{LxGuvF2^7D~)WHxUtKb%^G+$vRa=CRj@Hkk7#X zn;<&v!(n0?2{0=~?O#ZgKLzI?K7w@Od3vOgC=CQyuHuGt4*Jw)nF?2TwL*Y1;@%UI z>xA6Z84$~f(SA^-b++NEUJ}~rZ6sQi+~+DINM@B#Ffi3X6r_TsX1$(pDS7{`n7#{g z*ZK{!S1myqK~+Ug-cHiUX}Nk2DH%7WB43rQg1R=D0o)Pu?wH$c>{!@vk}*iMtb=_+ zWTRW175%rmIz_be229vt7q3}KFpKg^HdS<^NL6wJobf;+OO|h#<#u{T@q_Tx(VF+I zC+P#IikREQh5?Y1@_*4YH&H=4*{{quHoRP$|?l zS!OXCw06d>Gf-GrVEKR)mSx&a9jB^p!9=IKkM zX(Z;+gXlkQm={N}sfqhy?5EgeULvt9%=QH*g(fG*6BckB2`4sJn7Ts@R502GJuuFh z{63{6+fR|K#Y8fH5&xbZ|3nYkrWfzigEnjb5Cj2PtF4bMzRb$3=Qf(1SLV#V7G#YVQy6@B5LBQRtR70|7|**Jd$j zlO^JZ2Q*0F_p-guUjD@8ySc@8^GmPqm&y)Exd-ohOK`VePUbZWwlFi@&z5|=V7oy!$R(>V4$JkIZ(=9bRabdWT~bBX^Nv{KfIv=DG5P zeCgy=to(_)WmPxNzj%Ij)0}<IzZ%RyLTD>ake);N8;7n5%K4w;5JR$8sfh=it{YwYG zaB$8p?d_KOuEwgPcWXAkbp8wH=W3*VJ;)q1wNmEVHgigg!m;wnyZ(xs4KFs_nwcG& z&zIVRG5=XZ{pS0n6X#;355HA&*m>}7Ug4)B&jnU22;cLSuGsJm+o0mol?)0wIA6(% zlR}vkmqj5LSL9!DQz)A&DPPHSd;-yeNSLk0Upim)K%C8hr$j6oO zE5#J@Q>cVOrCfRCN*RU9xr*wQ3JUR5S|x?5pjTL_rqCw9dxz?L-@;|KnpVsRu6)#_ zPL)TcKr2m^wzthzX91;YM;ZiIvehK#q)pwF4yB|(IdX09VNx``*fi^vc0L^QKcY^ET-^D2geL4;Hk(s0 z-OVpru~6V%VevaGM(s(8)VmUO>!*T)Dp;SicOd3JuY%2+Jue;oP^@(5Et?fSj~G}A zFt8LLuxHU63hN#BkW{^&z#dS+qPA@M7L`8#kxzc)R{Lz7wD(l3=(JjnR{gsr{LOmv_#xN>< zr;rF%+CZ!{xtSE9^j=}{`}Lkj1&rR4hmFV@5v^Tw^+4)YQ!gQP#VNDeJVs8Qij`i~ z3ErOhcIo&~tm4938Fpu%=`Ik|LVfM{JDqfsD2GCli-C2^=3k+@4S{}>JU!=}3+92N>-rqO^uO#R_6 zrvXRM!4>#uz#nE6B-ExbjksFD6VjGWR>3ZH3KmMc*%Vaj+dfw>wXptAX?k&~-t=y@ z=~&5B$j7D4-3;={d&U)qkmPNQz4^HL9s24u|49Bq2b?nZoAGtl{3v}5nuqD@adW!` zz0zv#u)JllI!~DH(yU{F=ttjS0UCEAZ4?PAU0i-M>%}Z7&=d3ZUURDhKQX(727dRO z&cY>UdCXaURtL`>8+93PU+x7 zvEp<3s_T=E4#vtpM8%#l-7WAD3Y;^w^uEV#Ao25M}lI<}o^p`BDHs3&_#V|$zx z+L=`7RcUK4EA*71&_`na0TrM7=k_i%#rQKsMwBuraL->xxYWs7a~gmtOk_lzHBU)R zJq&O!k&%zS_|e&6Vhk%Z#_-r&m((#DtGGmvPs&t*0{3JrJ;@+rWB~c(T96f%Q;_zY zh?RE|t{n!oB@APX0p&)J7B970=w!9M3bp8%)9E!bwt!xj5`-45X%q$wkM~+8lRc88 zGIFB$G5p>C6>!hh9G_%04oAl%AEkT*6YWl_=27fY;3OBu%;75~N%`zje&fm>GVW#{ zEzY9bY789#_i0J%97%I(Ob4!T0K5)|zN~AcrQ10)cgSjaaHwe$?CQ2*vTNj?fP9qu zRPGuO4F|As0|@@9aB%HvQV+mx+6*VozlgsK3Q>s#Gz zhuLK0Dh>>ali|sk2<`-HM%#L$Nyh7>l{03c3wyAS&x<4?MYDq8%VFG)N-hhc)k()V zaLRcoB`>lD>>?ST$j6zybkDV%Xi&8q5@{C6r!!g*QtrJ;m?IP7Zv0Nr_BCBMIyiaZ zaoSVCZLx?@_qci4fc{-dS#K2Y-p@e!2#MLBLKbq$e9x<#XPP@4t7~2Iwk>+w7R2SE z;-#X-SW#oVXzR5T>=w^!-9N}FTK3?;Qf16jDOI&EdOE&eQFs0La(=~9eoZXDX4X8r z=PL(ZJ}@^kKM~(@Qrg@j)%Jcj|J08x9FH5yaCTSCOV@zDlgs6|n^2(kAG^IjjdY-1 z&y=-UO*c)gwf0*Ugud9aqjfWUFlQnB3U6wyx4u$or*OTAo}2A$ri@p%nOb+cUfJ%V z@SzOEC!s1SP#CJxS@Kj=)ewoiEmO*r5Bw-#?CAs4;nI0b&`(6B`XpBsGDCnc3jZ?c zJSeQ4TS10Rgbd6-xCPgpj16Cs%|n#wMrYMz8yrPz3(p;7D{xi4*OwjB5Y!t9*lvp< zD<)|#l<3+tgb~0rjL24FJ41CjW@uHucO0 z+D+53AIaEsEG+xf*tM)>hj+B_Q55`!I6Ybi1Po~fnC`qgrT=)(76 z>+L){g^NvivT7%(e2L1k3GnJ(AG>elrC&p=b)`6<#gLV&|J$JPBYhVK%a7< zdU`jh$=97^FbDGvfqm-^9oPhNMvwQ4S4rI`pPf#BzLO1+Y<(o(de8TZGcX;xh!a%m zb=3M^r zH|=yAW-{r?*?`K4p2AOc(^4Uqv|cBwlE`J+DSwt`CV3-c*E3r)oW+0b>PkM)U4%Op z{mdo(va4vxRTguVNqqNr+N9HGzJ2V@UP(ABl|QuTI;X!a4=%dS-t}tU=r;rYGp3em z(=YhSxX)4GH!@pz%S&5ZN-VbvZTNk=#D<95yanO(lav&O>LkUz32BwXIu(P@=(Oi8 zR63ZB!m00&H!Tf2SE()NDYr5tQ^0brr;p=6&)g{ zeQ@?01u&#a$FLZEplDE%Sr?ovXE!nQ+ysM@?oI|q1YBP1gn3J%GK@J(()zz|2xUQX>NvXQp5p+{BZH zTggL63wJ`(>?Zb7xiE6C(x#LGO*n2(r^9#wN5aOoUBuVWNeLU=Izd~WBi|>ZnXV*q zyF*u*L3bzBmP(ZQ5IQv|(oxYQWMX@(M5a@a=~oGvl6jB!StrOhP~;1M!Y+i!&Ra3N z+{MfOnkE01n174ZFc|lL2p69FD{nTw(D>P{Oa84f|JJyF`}K@Bi_4aZ8)LEW$YcN!TtZ zx2FKFaMzNRq7zoasA#PbbrDVGZw5AnIWPcX^)t_VQKu?T@V(Je6@OL1K&b`8!)T-W zRz_n+0%Su8)&GJ@BO(BQ4ERP1St3*B-YL0wha!9`>Z&DcTbas*=L|U+??wD8_J(A+ z;4_4qB}oe%yHiS|0d%S{asycyI%efbg|+dlTEk*>Y|(Wbx39eE&c9)gyUTHr@Uy2r ze(FZ|qN^T?IZwe#4wqf9z)wxr}&T$C9fuVSOh1VL3%F-mN?P+wx64ee9_#J$od_o_ zgVbdDyZ1uTf@B@%RA0=|%s9jIXeD@8>+u$UjR%*GZ269?f zp=pQ+tX9$eS`xwsN`e|HMG zv_kUDc1+HoF$ML-M<&3ZBSc8LDQhiC{>y|G^T;kUMg`Z0u3xxzc`3UhmR%9guDoXX zK~A1dJIg_UPeT6HF{t#weB1mkx&_P8N{Z7HrsYE4wd0H!*TwScmh!f}p0{nz8_PR7 zpMl4ciwr7shdYVd`tU;KpIn?j2fDrFIv#T! ze{aP?X?_}MMdhDqF}3bC-L_V>nz`GxrdG~+yUs`9BNYD%hmCRW6?10mPRlElSiNGFI*kBxZo7fivKd*eP3yG* z*XqE5M@Eu+E@C&?CvB^Z%ogcjcPbi#It8({1Mw=;lA=z1(5NFtNVE5WUx%nNSj6p3hE+YnR(-vcUqs&D#{u*Qgx85Y z^;DJa9YFU~0u@+=<0$Wh&OSxBR>$!4=m*$jO8D^=6o|N z_xibbRvFl~B`-Tib2aYWC&B%k+bb3AjJtO(lPI-2R=j)eYP`5}$=fNpI`84m@gBMX zefQjzxl8lIlD~D))ut83=#4iYnzj5cjVs&Ny4`g9fT?w>_4dJLgp;^3T8;^K?|%~A zu@+aREyCsjG+F+n6;BK**mY9U;!I_yeCWzN6_=71wsqjql9>)39N7I#@NlzvT6oT% z5nkpR@UnDxf-8p;+(t?;ni0s3%HCA8DX91c!8&_k5(kv!#a4A@!9#xx$03Xt&E%OU zgDa%W`!TxtSTvjG&(Qs`yf79;Y$8)WT_3?Ok}$YvzM4g2Re`4ok1V%ekON4bD*1154A6iw|skPwUo5z?#UUT@@KYbrfc|*1~+5DFX=? zMItm2nvmM!{3XPsr~%WW{qGPq{uXkAW6kw1<<`V{Wi; z$h@`trTw4ZKYMB37Oy@mRUMHEk1je|)YsX!uDlfed~~j1!4$7+m1^6h!uCZ+hYHHq zFnjhZkG%W{Hcaod#Ia%7a7rp9ZdgmOW%k%tx?b+WzUQ6Fc*Ds%g0$s~bmpv7_|T%` z+;Wa*HDgSTW~*i|8mz3EX2HbPsV1yEX=NQ1GgmXA>)?x#QN~j22%;i7Cqzu>Bt=(fky zT4}wVOW{{=tOQ#J@cN&O+zKXg0xluDi*Mv z|1|uj_TIJ*hiuSutdr6PTLN-xm+~P8u)^`^jl0KNf|TxneOUqb=F|5C@{(>;f!@^qPeB#*K21{FeB|OvIstP7A3c7jr7G^ zHTM=_N6?}5^qzHl+HdG-htku|b=p@FbSBqI@9A}Nmg=RI%i~hU#^uNB*0VflhTK7BugNqHO4e^{LD{t>o9hk5t-FxkkEF ze6Ly~-D-Txz*Wne=yFEgjdWjry1vmjTT*8?&wZfY!dlsb9$TkJYV>g*T@QO|nS@_w z9O-qS*BhWi!ar{6jf0c9$T*omG@x)YhJ(~=N&1QhTiSj+Z8&AFcxg&@V4EcBC+WHc z<{^?dKw$EPo9Ek32Q~ITYj|pgPG%3|NDq@H!2fT*m@w5uJv`q7|7oyiP(_983HDn} zPJ#&>ja=5=yWsNVvi3HM=X+&`E08i=itm-di3{-6@q1u`#INEJt<03=A;nv7AAI6X z;B=Af>xKzLGqTq2Z=e1GpKz$|_Ii`7ZwyW3=}?k-Y*Ce`6zPgjWWdoq8JHys6hO?S z4m?YeSAx(;)CWOI4#K0G4kxmI#(~)j(T1mLM2pd~$>bF9EfX3EjflCdQL-+zNB8@O z4rV7Kp|EG06c4g-q!PAgBN5s3B5HSIQ1T{jgOsLLmivQP)o~60iLiR zLVS_{xQ&&FBrNzTlGh^TLXtr$Dnb?xG@R;3)+akCS#8qBiecc?T|rriv_RbXzu=Lg zMB2NQvsYuAyB1yDq(p*w6=STI@(#rE4qVG%N~A?7kqXO}3b)4!x5o>2LYrJ(vs8X8 zR(>pAe&X6GRb}KqwCFmlK)lg2TlbYMFK?NfSU3~keEg0@3Y@&tBKdn4U8mGSOB-e% zq8kyUeVuo<#~XX@3`-4tQlB9C`xjk76;Q8YO!(1-C*oT=?^H{hd+!WM{?m)DGis9V z*$i?jJ=eR?60bkD5RvM-??459X3^F64>{$U59!uLPuurPHeYX3ZrQkXYI z=5L3lyL8J+yNRTXBP3-+C0qzVOAnoys&1Grn{d2%OTzV8jseq1PmI@VAfug2ZHTA5OKyPJPx;iHoO z?4s+TzjGBqw|BGn#p2JFTIh2dG=g9Zx;+Jmi)V7{#|kZp6eM( z58cX8`mtwWd%V75VOXl`TH#FHrn=?2CUSKz?QFwn*3oFz;&7a)$5g*uzjbxj!)~IY z&-CU)53ks`-14_@vB?0lelLH1;*%4%TH=MZOP*TEQ@fJId5e;&_D0?=99?rWN6wP} zz@qCQlM~-|s&Q+mC8@75eSfr%D?DL(tAWd{`$?n$nDfjrcTb(^TREnlD(kmA9ZmT0 z?Zc*?8tb=@lp_3{vKBkO{&S59Pk9eV^DsF~n+)nF8v!QtO+$75?@;KoX&Vl|3uerg zZo@%k&es(S3?g07t}@2#ZmsvSK!~}nUKFT*T zUKpn|0&&oceP4@Eu+IWUGb>4qvaZ9{6$Y(nf02<9WOenix{9c)^#jzkIHj)IEn+HC z5Ii-_s=6A5Dp(M$Q*%G7c}a53*U3}5y0yyK$RZM{8g1!rUsEw5wayR%-hYOdtF48I zoU=~a3dWQtjm0`Scms6WcKZqbehYs+j4iK>Rx4~d)2Xk)kc+=X90&<_ikCTq4qw~n zX39gxae{G{HHokSfu~Y<`nL1%7Yr`g4EMp7-mNWB2lzT{!b8PR2OoNWxC5}G9`J&Q zSN#yo{jFH|;`Dci+w60>5#F?;Ouvn>S@7ieRj?67bf=!k3zW%O|j))3lB zDpB54C-BjFg_Ud>0spEU=8(-HY14t-SVFaD3?=O$l27I64!uy-A97N`sg99Rb~Ilp zs*i!dy#VA$8BzpuEWrkVQk4u)OOCu+!v@O5Q&^&va}i3BE&xi2!LbTAB;t1 zeX1>TYJQIH7R*w8n^f11w;iU&<;Lw_ zIrs9pxyKhO-L8IU#NCT*nPVDS3Ru8`oacBJ7}H}Vq46Fqm+QzQ@5N$Po$!5OFa|6uMt#y#eG%q{b4xak3}Qa|a; zH$K1`Y1od2JruTiHOEkXv}N*#8rvzA~Z44l9RQl;yw589E{?G8JG&OWT%sUL%yFcW7C zEU;B`=y8HMXlevMC%E>RaocRxdN6{S21Q~o_=Hlmygs^2B;|v$v>so*dIz)mDpNAx zr?GZ=8$VFJFq3*vH*lEvr}B{NatqmdX`>db$5JVTDgGr)DU;+|enk{BF&ihl|ml6eL+loLtgAZFu%J$1)vaT1%7kx0TV zOpS%ZA+c?8d}bn?aJCMq!OVUbw93)LYUSyhFwu*@`#uX?0$Xr(PG%Lmqi`SYhlEiS zN=^L`2GQN^{95m!5PskH4#6qE@6Sqif=}iA);eA*Wa{Hfr(*=y{!c@}jcyU#r*IQ6 z47<{vdcp0$W18W&rk}E*sdzYwniylq*Y6?ty@aIp%nWX5DS8K zp%5ESMLW$1`Lxy+qqTm$gnn0_LvEAt*@rEF)Q?I#hpxkS&W3ZPlY_Le%7CP1l*N@I zg%U&i9BZU0HKcK_(FbLQ`;j$yFX#}mwB9IB?u|9zR2bkmRjdp;4RCnCsnmNlNS@WJ zdZYf;`fpxQmqLwdn;x4U4<+n9?8cXbmF#g|Ms#HQDxx#mWbJ0c#%u=?cA51~*kv`f z_-BOMgw{WVs0wfOCpwRxNZ5N%_4Txzj5;;-y7=dmZh;=R@rb&N`gHMCL?tp5?XIp8 zAARu!`ux$6guSJ$zw>NI!rIw>vO}CBFkc}so)-Bev?_W;64utB@NhI!mO98vC}BSn z>nc9cc!)}zkN!Xr6S?S3;!X^S(mB~>@Kys+ig#M~L^{jPN{S2xY&#jAI| zP&n^{n$VR?mVY<4%x;+*mIC|dE2X-F^N&Nbrsb4sch8&R{{3rZZJHgJ_eu?i=Fdo* zk1Y6Mn~bcb)i)2kaNyQQ=bng{?7IeQWx1HZtZPn?>h{eSzz@@%^V0djc+cQ%pA@>h z=o&{hPrlLGk(nws#fqDjid$mEElb7lf^jll+x@h`W{Wq#?@ z9lvz;p>LP}(K+eSkws7FO|S2o>{b~vXtMEn+J%)4cZjcH9HTX=!Om$~MESO9aePY~ ziHbOwJ;lQkXZ$JzNgSX^aX2{;X_muEh<>w~%&;KgW)U#OXAFRNkFx(gJ^q0n z|40wotzerW;(tLXVV_}_+lar8AAxLH=p+VRz5<3yNehJoeUd@FK~Qi3I_jh$VuV{Z?ERh@F7cBV2@wfFhH*WGFff$YpyZC%xL!F#Rl*YCZ4{eFBu-}n7trNqhFyJ^SV z6Ev!7k@(9LD4K2q=5~V9C*l z;g~F#S3*iE|J_i0&uV|==y#8P@A!+xxGp=lSMyv}j@$IZJ%yMF`gN@n;P*PucQp6>a; zw4J2)dm+95G+O(c-D`R~H8l>yh^exd|v-qCAt z<((X3uQlhLA}y}JW6{ucD?7JU^>%3A*_1_B+BJ0Ep~ZQ^_Y2tw=FVvp&Kt@n@j#-X zzIYd3jXYZ~FPbQcFs=Z4pp}jt=@jyx&`jy}mOF%mv&QA~mDg~34r@Nq#VJQRA(&xk z|Bx7ByB1nD`k@>mT@a=PuX$DW* z3V+rqR0-pH86BW(;t|SaW2XeW0?U`3dz@%_b_^?K22yJS-5}#swmW-V&*Ow{P(z-t zZWk%wkU>uF9)@N~CXL7)GRYiG(T0!ivoqG(t|{1zpMVT9bJ8>o9cYQU=i4n$tcO?v zx&=vMNH{*WdnQbv4E#X(ATQxT$t&j4ti=2ieToV(8cJgL^^$@$uR4QKRJji4V1rSl zwOd??Mv7_OyLXE)!lRmT#a(nm62N37iMuHQqhNCQY?*M1#EQ?OI?!IR$h3-RTu2ik zp8_jUUJ5IY%Xjh@kr;C4X##wJXW`ULSDI`6q|hEMtO^xYg$t{%4~Gj^-><6w(etl9 zf9=9cd2yY-sPcYI1&D%k)QR!PB&JD}lduex?6YHOHT7c{M%y@cS`3wFWgf^`IBZ7F|c&r5rPwVnR6 z{uA@Xq-<>&l&`ujMl6>;EQei7B>fGHPMYmd)6TWZGgZZ=x3qruo7r>E`MqQj1pBY# z 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 D!keMM diff --git a/modules/__pycache__/common_utils.cpython-312.pyc b/modules/__pycache__/common_utils.cpython-312.pyc deleted file mode 100644 index 169a9e1b9c89555ec8501bc7574c89028abab0f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29493 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 diff --git a/modules/__pycache__/common_utils.cpython-313.pyc b/modules/__pycache__/common_utils.cpython-313.pyc deleted file mode 100644 index b9313f223c2ab5ed907918fa71f7cd909e13515f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29354 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 jIk)Jxe!r$z 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℘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 diff --git a/modules/__pycache__/config_manager.cpython-313.pyc b/modules/__pycache__/config_manager.cpython-313.pyc deleted file mode 100644 index 958e18a751e15caaba980d7e27c36047b83af164..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43230 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 WO%p2&_pR6K$;{N>xs>%B^6`IroNd1V diff --git a/modules/__pycache__/constants.cpython-313.pyc b/modules/__pycache__/constants.cpython-313.pyc deleted file mode 100644 index 0d5b67d491e8424e8f7f5e4bfba347922939e2e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2637 zcmZuz&2AgX5gtnXmqbz`^=Db~#NJ&m6Y`vAG;5wtlC`kF)Fn-l{%1#qf|q$FTXNL|%m)mPnJU0vkIg@w2P zpT90X?)?|EfAPumlbk3Y{{hP11SC)a1!w@x&>1vKXHk#_QHX|6n1)e=Mo^SSQH;h= zoW{`{oht}v{$+s9gIoZ)05SnG0Wt|P2{HvTg%;5gN}~)~Mk{DFAEt|FjV_^ennrhM z25rz~beFE6O|*sXArbv5A4K=j1M~&@GCzyH%FobM^bmcGvgp_7H)tE>P#zWFzla{8 z9rO*_%_rzu_i^^y(cj~$Y1j@n96N8l6?0;l7!Jj{sGBNwG}91IOe$hs7q9(9*CriN zGel%yNA1Pqa!<3xzS(hgB6i4$W)NE(5NdO_W&pqMN808_?COqaVW($ri`eLhrqd(z zCU)HEVMoN2j2FQwHEml29}!!Yu8p^pkB>q-`C`5}S{-jetdWj}#fmvJbQ5<79X%}Z z4H0T=izfs-E+sjtsXejpJ9cgy=Oz(kg8QRo+qEo{I!|r?WUyr3q}|b%J;$-^Cxt>+ zb9!z&ubTbB*dylvZKAU9ow-RyS3U|O!ty>>A-_wj_Y%dyh|I1EX<&p88)Lnh~+=zJXZ`PknbWP>1W z>cBW~_=s&D(zbCn1oB6Vuk)itx-hW}K7p7POuE{M?_qULVCI~0ZpT!?0md^B#B$rC zrFX71&i4DlJ4bVL@_w}T4pT?79YC<&cKbJ$jRUizV%xC`pP_A*+>U0pP4o1#=B=7J z&`|^}jx=4zg~$2gq|Sd)WQBLHq$a91>hCo{NC_W8K*T=;1R*Y+;l8C4`$>FU zCgQY!hQne0t?4>$oA^~U%ad;#oraL zDFdxfOrPMVRna;(9EY4aE_4p@fw+%dgTFTa35rvLW;leNV3pi(d9 zsn9%tFtPGjaZMNogbyMl`a={37TPHmi>KKjo3s6lD-=6~#oC&qbcp5jSXAv{!yvlN zA^`f-v79RCzOs9Z83Bvs9M3T5i;#c0i3B)uiU0 z^afl}>zQ1Y_d$;w$uC;9XIv?@D%A$JHkx~-di4jehJhlN-i)F=%Jb?TcPp35FTfN# zLK5N?$uX(fY&73w6D&IIM=Sz2#Pi7_(5j$AJ5c+Cc6n=Z+y3KXG3appwt+RB`WcQw z1H^_l0-ru{a0fe>-iOrF89wlmXOT%?VdUaCnf z$+e1v%FXJ540~naQcHf(XtMdSRHRy|y3ghgnvFk8Wm#!8_t{cKdR}Vn%gXr3N~PLl znJG5Sv5%&vs4UfB8Sq=2B7Ty5C_RNH=^8WrTq|%(Qk~}zvDB+-MQYqe($h=24W_EK z(w=l1Nmm->R!yqQx516))qP2s++&HKT;Y4%FUb;O$?1;dYE5dikknKle*G3! ze$lG`ML|#w?D{CR(xK9nPTheEiy^r*_Y@j>lh*uXc{%)xh_=eSG~h0Ddm8=pV=MpXf6P0j*E4 z!!TaX1_FVrnNT2jnG)uf&LiI37w1uL=?~{gFSc?X_L5(n&wGi-=W~}~VP)$=Sn^iy zUkDj5y?!C2yv)Xhu;{Ib7ee|!VIlJ>03b`td|de!K$iZ_*PnuZ85I)uy@iKfa@$)h zdJ8!(k-b`o+?%-&HZC(ldKs2nuJ9F>A>NX=vdT%}=zQ=zdU;1!+w_)Kz09(gzH=1| zt%ffX!ty(yp5 NGxM{MqE8_o{|A2!XQBWA diff --git a/modules/__pycache__/customization_manager.cpython-312.pyc b/modules/__pycache__/customization_manager.cpython-312.pyc deleted file mode 100644 index fbcae51f484a4264275ea226663ed2b7d0c8a415..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41546 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

&X6q3^g)7a0F= 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 lsL?X&}skU=BL8OKfMo6b2i9}_B-qvXu_ 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

$CtmxIwc`GtkaGBYlY3V+`D{p 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 E1=0S0s{jB1 diff --git a/modules/__pycache__/cyberpunk_interactive.cpython-313.pyc b/modules/__pycache__/cyberpunk_interactive.cpython-313.pyc deleted file mode 100644 index cae053509dbd5d36ab6843867289d259713a6119..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51445 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 diff --git a/modules/__pycache__/cyberpunk_ui.cpython-312.pyc b/modules/__pycache__/cyberpunk_ui.cpython-312.pyc deleted file mode 100644 index 300615831c72868168dbab8c7e9b633e5f2c0a0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27762 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 diff --git a/modules/__pycache__/cyberpunk_ui.cpython-313.pyc b/modules/__pycache__/cyberpunk_ui.cpython-313.pyc deleted file mode 100644 index 84bbc77f787078279ec4be4c6283d1aba1aa30fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27702 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 HnDPGu;$Hy6 diff --git a/modules/__pycache__/defaults.cpython-312.pyc b/modules/__pycache__/defaults.cpython-312.pyc deleted file mode 100644 index 93a6f17b4b34d4b1119916092fc13204892bf06f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15058 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 Ad;kCd diff --git a/modules/__pycache__/defaults.cpython-313.pyc b/modules/__pycache__/defaults.cpython-313.pyc deleted file mode 100644 index c58d33ed6758c3d0c1009c8d18a3449a8a052778..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13822 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 diff --git a/modules/__pycache__/download_manager.cpython-313.pyc b/modules/__pycache__/download_manager.cpython-313.pyc deleted file mode 100644 index 29ddb701a9d374277ff5020eb5d23b766361f532..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12306 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 diff --git a/modules/__pycache__/error_handler.cpython-312.pyc b/modules/__pycache__/error_handler.cpython-312.pyc deleted file mode 100644 index db51c7a54d6990eebce739d24e9833193b5611de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26203 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 diff --git a/modules/__pycache__/error_handler.cpython-313.pyc b/modules/__pycache__/error_handler.cpython-313.pyc deleted file mode 100644 index 9277e736c81c33fe85af8e9751c0d71ec445b00d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26669 zcmdsgd2k$8dSB1oa{w5egTdLjF(3e5ph$p+1d`wZ5TJwxr~{BjLtqF(1ZJR~fheN( zV5B65r1gr@E+fd6EpT^ZL9R_1TV=GY<4}!M!}?Jx)xviS)eY85^(@UfBn&o4jV$aMY8q^onpwDD zsAaHKY8`Bo+6LPtpTJG}8o6DmnZR3PBPSM$MZE@u>oX}*M>rd zA_|ia^jO7)R6V;VZTdBdM)ZTqG@=KklRG9$dW_T$`t_K_CbfKegnK6WU#p(xyn1@Y z9b(I5pV&INLu{Mei&1y=@M3$axBJp*KBTK@9h4^RXDJlBC7sgAQVy_`F2r`@w>6dO z5Vx_^2WO1FolDD(fza7NXeu}@1SKgf33!>Fn+?qf@P)bX%nXGi7b4N%yl@8TVki)u zI@|4dSPDNkI~|M&k*Ksd6&9K*>ET@r&z{A z2q^raz}#Hm^juIek6l;@D%LUd;`m9_VL2}a79t4P4uwOJ@Ep}|n+-*xD1e}Ibav|O zF`Boa+^2Q0)9 z1_Jgm0`r)FbEP+b8S2lOuwpwOkV04?#ljX{;ipi37F~N6OW;&^zdsb15BmLz!|$IDPcP0< z*yZ;>yBL^Dr4;%7XJ(~H6tEHug^_IY`=`TG2v`me92`HYn2(PfIjPtl?H?UEK5|sC z42+JR9K|G$9v?e?sQ-jg?)PH?(W*ZXjY_kp7o)+5-!C;{40rJ3lm`y=O^!!`Qe^Vs zLz9n&rE{3Ug-I3uPVJaf`xTjFBk(h@4NBb$7o=(wW{!YBqz=x%<~}gjCtRf$2NKTW zi-!}1o{LA-*COwW$E0qpfd0DdL-H427tt;`MTg`Pol=45k_u-Ee1)lXIt1vP2}>6~ zYDbMr9qKwwsgbkTNwmFA2cyxTBrw39J%c477*%YcVDvm@KyjX##agJ_5#Sy^ADRmX zrWFUa2VfvVc?%FeGdr^=sYMF|i_x>e5Unn&sz@#Dmx7V-qBIp$9E+G^|7>VsF{;=W zL+3)Ml&!*uuSja5sc9ysg`8G$2wN+*k%6&CPmT^L&LhW94EV*z#j$~5g+F}q(UB7; z`wuIQLnlX04UCG%PmU-B2p>6qbbPdbj9v@-$H$Hhj1UyC_ae2he{?`RIX-%5Kyi$V z1Ec=qBM*;{DYo&Ep%GLnby3p<9O`myrOVspzzMQm7T16Ah1?Y%X zG_w$okcEZpjohSTw1TS0eMD=oL2^wxkkgjVS-@foCyP+4TctKg=P4cVR6JQSX(8%^ zI7ce3G%L=TiYv>CbFsJrseG~mr3%?wk>p`-ZuV9zRRV{UD0T*i$AK0;>OmVzHDW$O zCzK)0ryy}Y7>NKc17)P3S>ZKQ11wiG9Xu0QoQwL;1g4?@b;VBT82fyFL9wN9I3OS@ z1*U?h15@V!cR)uDbq`O4r-O<+vN$t?62WOdssKPs#8N0uDHxS5_@}~)q3A~@7Be4s z9#9O_5sWav@OkeKt|m|^1t=>J3WW*j0F49JF!*8U!ipLt8&zup{7WY&WS$1GkcKJ6 zNe(fN(g-;Pe)B0h#uJ_{6<*`dmmm-(iUwUf8+?!}_zc_N~ z*oyet@P@fPAv9kcyu`1RzE-edZcemz#LQ)v&aOmWo8K^ZBs`TDhc1=&y6Nt`9r|6n25DTy|iYKkvte99xTafj{Hd)%^5{ptj zDHGk3r6M*ZYAa^_C|6@x{a|0gG*zVXc#x-*#Z+d+fR#laZ&pk>i>bRC)PW+H3m zz}gBdzC~;x6f{XQ(8yw1#U`n3#^h^N$~2ykp@tM^^U*;p)6x+wDVtpc!8$)1J)6x6 zYMdi+kvd%9h{7WWI0&#v#k7%C3~&~V8L-9_ZE)?O?N9G_ehbcJZrrfnK`lY+NExL)p7&@xzCh{P*2v0}NuS|-#*wAs z2xE@b!9=<-LZ3~VL;>kZI7&gzAQhK}^?=eMO0hOe8Y>e~3jL8_ba4SpBjduA%GCQk zIf?0v1n16V+KSLP1woLAP7*&yY$$lMT5b8VSGHSA9zf>EaX1&bM5Pd~+#PG)y=?wk zL84*DCSRB6-nMMs=3Cz9+ZdWrtU%L? zQfMl@Fld61En8Lx+{@eqUe#wby1<7Wiwka65NTAWGILRsZYw786~^$6f+94*VlYoSq( z7RvY;kj$!E2M1#my0ZZ+Z0%z8aHKfOf+b*6OCF(}%VP9Q*B%xX0(S+8Z|UKd_CN%T6@=u7@Fk(8oymtJ)cLyhs4?tC4W3yH zO^r}mqz^fnsOOtz#Zr8rFS1nJ@_1Lvd{@h~&~mJ=Ww@_Jgm`W`GY@fsvtO8X}i+)&ekhi*PH*i>w8@rjSp><^e@|P@{U)XFFP+CU7fzcZ$S}HUA&_0 zMn&63g>TuJ;7j9tjm+1)_2}DAzWL-PzlHFAnHm@88)d$6lW#_;%KEsc+K+ zzq|k1ZrL-m>`L&+Su69kZ_T_t|K|KA-+9w3#JwFiyd4Sm=|oxEZHuYOv0RwsIeU4W zZ;<(h)$UDxJ8QL0=Id6zgfghTy7gvRb)tg()d;ukmTJdxQPRcPE91N%^TKyL@6=qW z+2p%#)-=Uyx^C2TCET^QO~zVBjQ3KHk*`_in`12xZ1TG^)qnMUek&tgIV6k76(d=9 zF^%9vIGWS^2eCQ?46)|?oE*2+gm@A?@}7w_nHtq0KyAp4a%r@bDU4VhGK5%nCXW{S z0&VM%q*U8F#0ahENV|yDAwFNAZ5>pbYFkHiKr5u?$$Jnh%H-7xe!}8@5`V*I&L~y> zsk1>Q2?Gg0&jT4Z6bdrY7do;C@)BYUv;1HN7o|BVfZnLWE9s_`;#3XOvypRtph75h zN>Wh^L1}(ALVBTyQth9TfoVocz~)e_ycp)WlY0!LBEQlqytos%YQ}+qMhJ8sQ_ry(~DC<8ramLBn3lL6iF3_ zFd!(F7nmRrkq)9Ta6Mtr2(}oP!f{hnXV+)pxO+I_^HfC~&P5JLq@XzNYL;Ei370$W z+9JEQut2NqYE9bAy^dvboF}aE)|cb;Ju?3IT}d}9)F`_eS>7hu)x-jwva1t?_U9DZ zBiHYd`QB8a2HDlX^0vvYHWp}?UF|5;ms4n$T)#`^A4nCdm0h(gZ@QlpK%ss^PN{uz z{k|LgepP%IFhGg;b!m{CVRA?#F_n!|?1*4ks|PL^ZJJp2j2kA>m`XdF(Il$?818W} zHKHM8JGpa$%BRX`%u2{Qk!H%l5F78Q0fccP-48v+JHsBI1VbINO{68TaqGBo+%#^^ zm-HaB*~TrRsn;6fvAcC7vTC}`3L*sli=d&)ggM9?EoxWM7`>fJ2w2;3^M<|YV zs$x}-F%+w+I`DZE$83ZhE#XW~8lx<>vw;X5kwBNKsZAA!if;YE=cgo6;z73wo|MQ$ zN`)d_peB|m$prQnlte2*Cq_WcOpB|YmC#&EB)c#cRw7a=b&x}#B+*<;0y&-JG{6DH zA+~saAqv#4p78mc3~j3!bx@Kz4K!{|+sib+R^rjY`#OnVPIW3mc!06Es-x;K?39CP zOq4oZQjku+jN*|YpgC~5C7i3`Qt&M??re~q4d4`)k0xpxUK;u93hzqGH=bEOdUN-I ztBcpd@!hB7-KXAqJYKu~M(y^^+MTh9z+slx(qCEi8^bG7qS}|J?YdoH zt8gqkl4VTyL7ec)6PtWHN|box#f>+L8~=P}b@w}auk2lW{%YlB)4`ZHu~9s^Y)w>D z#VfYS72DRUHY)ZlJ8wBlzxieG$g-zn!`YE=mArc5r4uXF@4H$O1?6wm#=To)@0N`M zkgSqdhh7?5alQ{arlxeu-tLWpZb}(>X=G*Z`ye-JN~i4Y+$iYOscoz5-MUe*l~PW= zbaG{A6O_ryxyq;yU9zWZ!`a2i5K+F>zD-y6ts*aYWtHB18#6nVrWtr43P7~s&cDHQ zUnWhQL60Za-Q_s>5bf=5|C3?xudq2X~k2RgTv3LA?J?q<7pIx0= zD_+~a*7R=&5%r4*4eN!9O2d-&TzM4c`h)wh*SN= z1+dgAG9z|NF+UTY4JnpcV8e)F4Ini%%`m&qtRh6(Gm2#)AVJ6L1P4r}4LJCgST6{{ zsdD@k%GUA4hyNduKk|EUE^@a@%Pu_;FK?I2+vDZka(Q>WyhkqY*(iS?RqOw<) zURqjd*(efXyr2rxx~StULmeQ+7)<^%O2{Se88_r?E?UgIM;~!8K33f$bEugOaN54!5 z#$`sI=F-_`j4=4IF8TVWHB+BxSV(aTspFg3rJ$gi-OR&cKr!@$>3x?QM+xEoU_Q`Ggu0H;rVWVyEy+`D>5fTTzGVfjSK{Et`?kZZ2#)}%{ zqJ|A;x!*ht_F4^{F`VJ{o9a1G zJbtOYU*(PUltf^{1(@TgqL!EE80t1SSqJex7aC0LI8RtGbIB z%in}JSc9M&%rH)6<;M`|vt+h0(>;+$!mQmCLoh--AY;^3LiR1HrS(4BIZtS~g}jjs zIM~ocl88rNeImWVZn{ceJ^Av5YJ_;r4!LGW zyygM9=7II4`0hb@_uzX6H)>9TWBn^n`|{DG(NgfJ;e*numA-gst6WOz;x|sbej?Vi z|LRQqz=(WcB)0!#tl{C!vPV9suD@;JNcYTD`k<9@m;d~(jVr6Y!x>P=O}FQbg4YXT z!uIvH_>P0}j)Sr7hpzShr5Jl;^go???^vvEJnlYq!+q+PNfYJ&G(vjM>sz)RY&8C$ z(Q&BN@`KK;hZ-zDY_K4l!$jMVkzoYmuZ|J0R{}vm;e8nIE?|L>F>5#Iu+-QM*uCK6 zOu!oGO8z67iMk=(vNNszfN~{`U-T#@_J5iMB^G%9{c0`%02s4qly%029n^Gueqk<1 zGzhz5Aq)e<=xkt4NNG&jj=As=A;=}yD47M(ZkP>$iG$T6Sgh%Y(4LY{1qnElQw+Yb zBM`+OK{#tW5Y#JXb`oWY%msrBIrIt!lXHPQTJPZxp-Aj1Vvf7u>qsv?! zfCe`201wC?I>bg#KBL27(Lx8`Gu8$UK#&F}J#quUvS~y>;Oe;%jL2! zuOOGQRUahotJwcvC=}TT2kL3F)$aWfX^fc^kF|v49c${l)*qwb5iIA=lSZT6OW-m5 z@^Gwb-==H-2c?ytMraGZP}jg+soZPI!6?KZFpQ!uwf?@=X^Wa2WH& za7eb`J7bzL`z%WhB0Iqlz--d~#o5XD=m}c+^pYqJHGz&cmb_|q+R-^B`ULD?v#R1= zMW56qq8*&QMAG|+$X%bWA?AL9mEPfs4M;dbfZBKJO&ZR1KOQ%;= zpwlRUokpp9SaGNp3hY?i&^?R#9$Ipr2%pc&NkVt`jx$TVaP*)+XGllJd^YGt&n`x1 z=Q4}0IM`9wA{nA)_NsIpRi+N$rEeoFDdf<+E0!qCKIarOY@MeSGu3?WQTlIE#`|zC z>Q2rauoV%METRByU?**0Z^GN8D(h5~zV5m@wc$OuJeUw#aKICvhXY3GpegUkZ~Ptvh4 zw!v7(SceQg0ygO+sc|9=33`SNU?t31I+Qea%9RTtmsvule$xyvANg5QnGN`f9exX` z!*3uR99^UizX?T*NraJ>YK}1RiHMJSTAt2$0V36rd%@&+lwz1C3lTA)DNFyyaFFyv zlhI>%YhIjw+;E#*EH{B&~IA3?J46c{ma6gdn zR3|N*yDI5m!VQ96!YhXi8f#Ir=li8sANiAtt9-1gKkhmh16eC7`(@HXnLdq_qsbR` z@8iDj=-*+wZf)%EGF|VoAe@7E%*X`-!QF|$`Lz+x7e`lVL4$PiX*2^Ne%zFP1HJ^P z8}*25hHwH|m_X>#Ae=?$Old-AUaHc>dw_^)E+M4NC5j@D&|z%h*DkM_z|-XLElOd^ z#3GebC0g0ALOWCXTR3^JatTpNi$1L6nQd$%0D)LY00JYamUvaCT-6z`+9p?Ri)}x+ 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 X26*q4vbWg8Q>s5T_c5h1M)Lmvp~_XQ diff --git a/modules/__pycache__/ffmpeg_helper.cpython-312.pyc b/modules/__pycache__/ffmpeg_helper.cpython-312.pyc deleted file mode 100644 index c503a4e6c2065e50bc4703aad9bfcd4116652124..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17064 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 TpS18BAxwr2*fKg diff --git a/modules/__pycache__/ffmpeg_helper.cpython-313.pyc b/modules/__pycache__/ffmpeg_helper.cpython-313.pyc deleted file mode 100644 index 614425b1943fb821c8a13ab3e14becce9041d79d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17182 zcmdsfd2k!onP)e;ai1i>13bXyp#u^xkrXL$tb-y&Q6xnvY(mzWv=ImdN!TPnH$WZO zB%}2>6WWtq%g(qY&rFr!-PtldRa=XxxOSLLb|Xb{tQ>y;0TUu^Zq`%d-5OWzACRRj zyPW*7-}ky3mto7E{I^ZvUH!fLz3=;d-+QeGX0w5U=O1VLmj2xUMg0>-lt(QG9{g_z zyh`yDPft*SIvI;g-|hGDOAFH&76MDj*aP4@!C4-X;yIXx;cA6I?L-x zdKIKq1C@cqYHFz#iZ|9#yy>7y>Wfgzo97I3_Bmsp3QGj~+CG-I5PIh#?Y4f1gi~%> zWY77cOK!EOJG&YUhC{w(ksS&8qargDx+=1h!AMk8&#bL32R@`Bhg&6DhSuhT;d4UR zABaT4f@mOdKI)4`M2!%Lt_dMO7Op&62r%$_-~jhkYF0_7rsc-w5+DE_p$}q3@PsH2 zwO0yKKA`nbZ7>BqGpkG(HLHY~ zpK6vY63jGh%9o>rrmadS?|W2ANlHuSp`~Zs&{|bQ#X*aW6i2zJS(}n)x>5<{edx7D zDTkvT(Tb{kJ|*;s95o7E-v1Zms8w<+EmeG8%j*u}48s#*9#L|=L|5o~7^Ng-41FUM zHQS)jOuLj&-fy91IVCpTqJ;9khv`!Bdfspt=HQQ8af_yAYPL-&Sxfm^p_gpIeC}4> z<$c_a9@awj=2izsHNo}_u|w>lN%9xy1?mXXL@m&6bF6YNRtt1x--rxQ#thOsLb^|GODG)W7Q$0;hBr=hxAmFkR*`@GGKvabzBD)IAO4I}+SeK|>4lgc3YeY5}S_q5m)8Sx9)XoQm zkPql}UN2I4y`m;?1=v^wnz?pyRpMJBBdmp>imQ;CA8k>8@`^t|_@Jl`2trr@#%Pqf z;w4p^{Na_AaEL@A0&XnPBy~9A7lNx%kq$(VJ#qMm{V?2~NI;0pog1EeJS;pDSqiVt z@gZN-zjVH5ZY4awmY*x{Qeb&CAat%?70t_JImm-3?1KW4_e9!&GhU+}YACz&M*A!6 zH?O2C_g+Fuv{L;V+11}wY;pok_ZDUi~*p#u?yf|@R4X?8Xqx#T}&iaz+ zMN_hBXiIlur^b2X^2?WReB430)N4~4lgawSw;aDRjebza zz25#;?eQz=y6*Lf-&yN2H7!Y73-rrm`{bdPGF3gGXsJo&7tP7qp2UGfYqGk3TQ`u@ z4ZLr({ywXP_n$_bFj}`C8*VsRN4-;L7}YZGv^hsr%uiKn2n)O5tzQ;05TvM_h@|9QXUXfz+j|5<}iywWSY%o$_1veTkGSamDL5o=$RyGaUyu*;^y`8M<;9x}|0g>}2Trr&w^n<@X$%~~M{;iyH`Y;G1kIpBaZu86BI zRbo!akrMOu=Vo4M5dlH0hb|T$i)yzf)^Xmq9Gou@6fzGcYk>2G<~f*o-^C!zVh~vI z-clA$NQ&|-5RN<=YZ?x(Ezfhv>|siS3s*}PTg)r{R*^1!V;lHb=nu8iZfuEI8Mw4=S6!*98pDSdCl=w|w>SE!|MY>iEFI z#p~0Sj%%lWXROS<9N5ww!k4V^JCn~%UOyV&6L%&n_HVK68Kd<96iF2=8)fJpRKtRK zm71dv>;urJ1%_7%EYHlT=QML#2|@$hW(j=O@#;A}#55#k;I(rafaw}uUr0@8bTU9U z=4gsalxYCC1JpNtA&rU9m;uylAeW`ECS)NwXm91Ma%*gJHo5!?lDC4doU5F(AvLe& z?U2Jk((OQ1+{-GG?%=D1sztlIMl_!f&IiJt)rjA>91uP{4JE|-hUPE%LVl3tm+&RG zM&2SYAb4fyG#3ahA;C%@6y+jotE*ulDr)@U&_Zz0pIiJ;RBr431|qLg7i`PmOV2EB zY4RxB*h4Mn^5!>Xo_S8^@Vk-|H1~$ra90>rjehPJW5Sa zwqAL)NV(Z5(H0>>-RB(R9!UL zol5#7v?($J&NV7i-SA!GPW|4$KDN$o>1uas8~*0Pc4POi8oSetJ?YxsWdB&Ic5I#f zt~sMKy<~pDysfKG>FVP%N%Z$+HPkNmcH3a8Z7|*T*gE@bU9-@SJw}DAyimRcZ@!FB z=4oC9LYaX-P^~{-DD#@ZF2 zFkp~X`0#u{w9H7QpS-df6aw>N#V7#ksc@9Yf|H1k3I7+hmwiGAc0X|blh`zZ1aPOy zkU<#6wljj`(%Bc!CL8!I)68$} zwOKVJ%9vu$KI-qfhZ>pN4K%o-As7O@Bq4pH1fHabMcTIkugt-aYbg(cgFl1c0}guJ z3Tp({s)w1*fe?idI4`VF#Y7WgKZgcZZ;nR&NT8xdJ(JgX)Zl7+)%n%uVR_x)1&Z>4 zWdpcXnf1L_ZkP{*Hc;d^R=&L#DnU1wx$tR<*Dpc%68$POr8WUpBDu&R_k zU!1?7Z@BqO9z}=dO}z!siC1|Tp56nr(BiLLqmG(-5`M?vrvuP!QL2R94O=RtDQHp7 zUZc5BW@I(s4=w~j zqOJs@OW}EgVMthv3>rX<1fZ|1%0UjTb&>)NX>tiDA_!r@l9eezL*S%TdA}OoFw7&b>*=W7B%mW0+YO-y@olV*gq0J5^knjg)83v0{m+^BCESWGy&6c8>4BLRb` zk-7qUIzWLKsP86%A-oGde>5z7hzufD2Zlp|m=sEo#2_cq@b8KU3`vn|Qy{{$7lZya z_zCARyUP=j(FJr&>JBzvs(6r#IopZx1k)4)irko3En!CmnItSc$c?%UA_D?f!nUwE zC}9K~u~wGe0WX4_B5_;%Mlu)(h+&B`CE;TSM1j*12KhC7HH{9B4st%>addD`Mv$Z6 zyu%}DTxMmW$QX(B#f-G*r5_7W0q^+`*=Svb-kGUt-LBe`s@k)mOSscjkFAep>fPJ* z9jW?`jnJkqU4MLi@&n+JlP`iEelW3+xUl)P&2Mam?hPfKQ(LC9psC$#NLzPpv~BMj zhJTsH=IzG8RO8_0U~=YSy3xN~<4@ZBnTncZ{eg7F0rI{-)!3hiCC@#TZuD-~c#}5o z2ez6U)>o{_mgBdoZ|Ra_z9e^X3$pF+yKcF8C1uJ~5W8JF;aux?`{XJz?>Gh

q;yHT6LO(y$FnM96_FDoz>B|%oZuP4j; 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 diff --git a/modules/__pycache__/file_organizer.cpython-312.pyc b/modules/__pycache__/file_organizer.cpython-312.pyc deleted file mode 100644 index 00e58386d7315783164dba85ff525bada0d21c26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31837 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 diff --git a/modules/__pycache__/file_organizer.cpython-313.pyc b/modules/__pycache__/file_organizer.cpython-313.pyc deleted file mode 100644 index d6e476c79591226a73e8dd019d213f78e5b6bd21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32194 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 diff --git a/modules/__pycache__/help_text.cpython-312.pyc b/modules/__pycache__/help_text.cpython-312.pyc deleted file mode 100644 index 0b9ead296a67c787388e3d46ce297af4067b46d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2152 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�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 diff --git a/modules/__pycache__/metadata.cpython-313.pyc b/modules/__pycache__/metadata.cpython-313.pyc deleted file mode 100644 index eca4bd52ba88cdfb8985574b91fe66c47fa9a372..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6353 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 diff --git a/modules/__pycache__/network.cpython-312.pyc b/modules/__pycache__/network.cpython-312.pyc deleted file mode 100644 index 5a3066223dcfa45b83c8ea95abd6efe02c14a449..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54571 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 H-|qhahw(YV diff --git a/modules/__pycache__/network.cpython-313.pyc b/modules/__pycache__/network.cpython-313.pyc deleted file mode 100644 index f84ab3a552e696332f8957f398e5cb305e614b24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52444 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 diff --git a/modules/__pycache__/network_fixed.cpython-312.pyc b/modules/__pycache__/network_fixed.cpython-312.pyc deleted file mode 100644 index aa73e83593d6115ce0a5b17c887c4a5aa6c4b8c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16127 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 diff --git a/modules/__pycache__/p2p.cpython-312.pyc b/modules/__pycache__/p2p.cpython-312.pyc deleted file mode 100644 index 1234b110519fa85932076b905e29b7affce5d1e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 136413 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�O~)}co`(f^ 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 DO-Gq1 diff --git a/modules/__pycache__/performance_monitor.cpython-312.pyc b/modules/__pycache__/performance_monitor.cpython-312.pyc deleted file mode 100644 index 1bbdf07fdb6fe52ef5040b4842702e6b10427154..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20204 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 z 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 diff --git a/modules/__pycache__/progress.cpython-312.pyc b/modules/__pycache__/progress.cpython-312.pyc deleted file mode 100644 index df8bf10cd604becddad25e8d84ad8c34a2729a2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87380 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 Ku7UQfn*Sg5N!?Ze diff --git a/modules/__pycache__/progress.cpython-313.pyc b/modules/__pycache__/progress.cpython-313.pyc deleted file mode 100644 index a09c0dc6d38beb72b9984a4d85460ee4077327db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88517 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 Vcqv_5}UAPlQIkv5D5ze=nK%2 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 diff --git a/modules/__pycache__/session.cpython-312.pyc b/modules/__pycache__/session.cpython-312.pyc deleted file mode 100644 index f3c8c49268217878a35f3ee3cc76d20d2d789a87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50586 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 diff --git a/modules/__pycache__/textual_interface.cpython-313.pyc b/modules/__pycache__/textual_interface.cpython-313.pyc deleted file mode 100644 index 6101c5709b546788aacd5c30a126c08d2e73a524..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48518 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

xo28InH!^h%SqH#BDRA>?c!fY(>`)w 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 PD~m=punk{hjX3@TE85Cs diff --git a/modules/__pycache__/url_handler.cpython-313.pyc b/modules/__pycache__/url_handler.cpython-313.pyc deleted file mode 100644 index f37d462584ee33f98e7c700529d517bd008a04b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3417 zcma)9-EZ606~7coiIU~W78~2j?1V`?$I4JDcI~8goj8Qsv~gN5HtThOwQ;mWS!`)i zyQCajK!G3yhCK9P7-rOYstXKA^X8xhnmrBv52R^>6T-s^bbH8~S7&I~^o?|iL)j?B@1WLl*^T|QBtw3rD>P@amky~L)YW^+NRF^cI^H26U*XZouhQ>O|B6twOA(_Io9Kwv;E;CtHX0zdJ zB+F*Gkq`^>$Zv#^!za+Y%)1nh%8_hrBqVdBkJ}o(sMm`(dNHrp4!xFrU`?ARKPJa< zVu?;4b7P>0H;5iI{4@&3RL=Q5TOb;0Q3}yfzVR^7nKM)45B%Y7RXaQnn!aDlLZp;9c|2nHO&*3sC1~( zecjX@9V}MSyqkNr)v!2|W^f!9;&#G__T7%)8OpM6Ah0K6YewPuM4N0b2!cC2HJ+Wf zHEd^ZPG#S*@OyUADrIF;b#le*vXw6znw9Q%N8s{^6MV=8{S~UP$ zcCM%`Yi`)o9K*`F(braUn&)@v5bl7vL^XEVaBPAULBO3v7H@!7QwTo0TTIY8kc6rB zB(U3Pk71&z-Q#^5`HzeDiuL2??q1vFyEeifx8G~uT)F@LC+}CgN9+8>YW(82yNRBC zL`73i_?|r)zTepi*yGOV%ji)|V(D#$0)DimF2cm0gRL?UwPq=>LyN^mAhv;Ha`P0A zMqwVI=lV|5m4T_EmV2*NnI%g%9b0fLK^01dx@PFMBc_>3_nK99%8Oc7%vsCg`GtYW zpOK-<2M032lI&z9Wm{!4pEIm--dmIr&rfD-&9O6;F1utodST6%2Wv719!Na)CHUG&I;%)2pVm$^Afs57pMo+ z4ESsa12k++#kryf8X^)exRH|TI2txRgftxawhxWy#FA!et0jEJO}F4ex0T>&;sgLq zHS8;5bLv^RnEgXw-#!JfRFkuRoV>a9`frCn8vD)I#ygw&`^8U+JA9_fXJFu8HhIbi z;t&OifL6`50I8k92}&e-AVz$c7;um1f0TV%XMIXR#|9fD8f##a{17U*#>@`Dl8$t`jD?O5_0FxSZ z5=?xQ+2+VuhX`gK5mAD@t|K{AgfmvCb$W)4qkhDp8Rk%o>GhxlxA94)7f3w!Xuf%? zW9X%3l+wVXOiH2(&8S3x1O9O`$j$;}E=MyRp@6OBAV!Imq6?(3FD=$OlIgcrvv>DjARdUvNN(9e!PN1l{yaPRc-a5h7^- z4B?jU6iGj@52=AFJ=Z)qkSM$atHE!*9ma*3G~0j!$e|p7UA-!VzyXVdWq=((0*Rpq zkPxi&X1)odBvsK-iF(X;@9={)esG5$s_{cx{a*||9IW%NRO7D%c9tm5&=)_q9}RuB zvQ@11PS%rGtMRLzp(W}&n*@nF{pZmAnAA=`?3Orsn`5Dwru|ZhfZ4yZ0IhTfDQir1 zS%b1BrYL^t1MRq?{IaYXjgf?+6m)DmP*rQD1;Y_V$y+%^@!w2hBPRI*6Z2t`gI#9P zvJB6caGD5-LtsxA#}&nPpd!yH5YVx{Savj9Q63;KzIg#1lQP6(#Nf6H>{sXsGxQIJ zVJ~k??IHMl+OyTaWj~tQT74+i($YVPY%d;WQyckb2tIoqQFe~nc>5V5-@Pu59p7Z0 zA^7aQz_Jpx(Z6ADPHn8-6Td;E@1IT%PPgGPa{g&xZXAjYLthlVKL}nSc3!uY(osk6=Wn#dj%u7C`CO%7rsK#zo659MFTZ7@ORYz P4f7+2b6+FEy-ofDB7FX3 diff --git a/modules/__pycache__/utils.cpython-312.pyc b/modules/__pycache__/utils.cpython-312.pyc deleted file mode 100644 index db1378590d774304f713ff46c53ce18120e83c2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8016 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 Dict[str, ConfigOption]: - """Define all available configuration options with metadata""" - options = { - # Download Settings - "download_dir": ConfigOption( - "download_dir", "Download Directory", - "Base directory for all downloads", - "path", "downloads", ConfigCategory.DOWNLOAD - ), - "video_output": ConfigOption( - "video_output", "Video Output Directory", - "Directory for video downloads", - "path", "downloads/video", ConfigCategory.VIDEO - ), - "audio_output": ConfigOption( - "audio_output", "Audio Output Directory", - "Directory for audio downloads", - "path", "downloads/audio", ConfigCategory.AUDIO - ), - "max_concurrent": ConfigOption( - "max_concurrent", "Max Concurrent Downloads", - "Maximum number of simultaneous downloads", - "integer", 3, ConfigCategory.DOWNLOAD, min_value=1, max_value=10 - ), - "concurrent_downloads": ConfigOption( - "concurrent_downloads", "Concurrent Fragment Downloads", - "Number of concurrent fragment downloads per file", - "integer", 16, ConfigCategory.DOWNLOAD, min_value=1, max_value=32 - ), - "max_retries": ConfigOption( - "max_retries", "Max Retries", - "Maximum number of retry attempts for failed downloads", - "integer", 3, ConfigCategory.DOWNLOAD, min_value=0, max_value=10 - ), - "retry_delay": ConfigOption( - "retry_delay", "Retry Delay (seconds)", - "Delay between retry attempts", - "integer", 5, ConfigCategory.DOWNLOAD, min_value=1, max_value=60 - ), - - # Network Settings - "bandwidth_limit": ConfigOption( - "bandwidth_limit", "Bandwidth Limit (MB/s)", - "Download speed limit (0 = unlimited)", - "integer", 0, ConfigCategory.NETWORK, min_value=0, max_value=1000 - ), - "chunk_size": ConfigOption( - "chunk_size", "Chunk Size (bytes)", - "Size of download chunks", - "integer", 1048576, ConfigCategory.NETWORK, min_value=1024, max_value=10485760 - ), - - # Video Settings - "preferred_video_codec": ConfigOption( - "preferred_video_codec", "Preferred Video Codec", - "Preferred video codec for downloads", - "choice", "h264", ConfigCategory.VIDEO, - choices=["h264", "h265", "vp9", "av1", "any"] - ), - "preferred_video_quality": ConfigOption( - "preferred_video_quality", "Preferred Video Quality", - "Default video quality preference", - "choice", "1080p", ConfigCategory.VIDEO, - choices=["4320p", "2160p", "1440p", "1080p", "720p", "480p", "360p", "best", "worst"] - ), - "video_format_preference": ConfigOption( - "video_format_preference", "Video Format Preference", - "Preferred video container format", - "choice", "mp4", ConfigCategory.VIDEO, - choices=["mp4", "mkv", "webm", "avi", "any"] - ), - - # Audio Settings - "preferred_audio_codec": ConfigOption( - "preferred_audio_codec", "Preferred Audio Codec", - "Preferred audio codec for downloads", - "choice", "aac", ConfigCategory.AUDIO, - choices=["aac", "mp3", "opus", "vorbis", "flac", "any"] - ), - "preferred_audio_quality": ConfigOption( - "preferred_audio_quality", "Preferred Audio Quality", - "Default audio quality preference", - "choice", "192", ConfigCategory.AUDIO, - choices=["320", "256", "192", "128", "96", "best", "worst"] - ), - "high_quality_audio": ConfigOption( - "high_quality_audio", "High Quality Audio", - "Always prefer highest quality audio", - "boolean", True, ConfigCategory.AUDIO - ), - - # Interface Settings - "theme": ConfigOption( - "theme", "Interface Theme", - "Color theme for the interface", - "choice", "default", ConfigCategory.INTERFACE, - choices=["default", "dark", "light", "cyberpunk", "matrix", "ocean"] - ), - "download_history": ConfigOption( - "download_history", "Keep Download History", - "Maintain history of completed downloads", - "boolean", True, ConfigCategory.INTERFACE - ), - "auto_update_check": ConfigOption( - "auto_update_check", "Auto Update Check", - "Automatically check for updates", - "boolean", True, ConfigCategory.INTERFACE - ), - - # Organization Settings - "auto_organize": ConfigOption( - "auto_organize", "Auto Organize Files", - "Automatically organize downloaded files", - "boolean", True, ConfigCategory.DOWNLOAD - ), - "organize": ConfigOption( - "organize", "Enable File Organization", - "Enable file organization features", - "boolean", False, ConfigCategory.DOWNLOAD - ), - - # Advanced Settings - "ffmpeg_location": ConfigOption( - "ffmpeg_location", "FFmpeg Location", - "Path to FFmpeg installation", - "path", "", ConfigCategory.ADVANCED, requires_restart=True - ), - "session_expiry": ConfigOption( - "session_expiry", "Session Expiry (seconds)", - "Time before download sessions expire", - "integer", 604800, ConfigCategory.ADVANCED, min_value=3600, max_value=2592000 - ), - "auto_save_interval": ConfigOption( - "auto_save_interval", "Auto Save Interval (seconds)", - "Interval for automatic session saves", - "integer", 30, ConfigCategory.ADVANCED, min_value=10, max_value=300 - ), - "exponential_backoff": ConfigOption( - "exponential_backoff", "Exponential Backoff", - "Use exponential backoff for retries", - "boolean", True, ConfigCategory.ADVANCED - ), - } - return options - - def load_config(self) -> None: - """Load configuration from file""" - try: - if os.path.exists(self.config_file): - with open(self.config_file, 'r') as f: - self.config = json.load(f) - logging.info(f"Configuration loaded from {self.config_file}") - else: - logging.info("No config file found, using defaults") - self.config = {} - - # Ensure all required keys exist with defaults - self._apply_defaults() - - except Exception as e: - logging.error(f"Error loading config: {e}") - self.config = {} - self._apply_defaults() - - def _apply_defaults(self) -> None: - """Apply default values for missing configuration options""" - for key, option in self.config_options.items(): - if key not in self.config: - self.config[key] = option.default_value - - def save_config(self) -> bool: - """Save configuration to file""" - try: - # Create backup of existing config - if os.path.exists(self.config_file): - backup_file = f"{self.config_file}.backup" - with open(self.config_file, 'r') as src, open(backup_file, 'w') as dst: - dst.write(src.read()) - - # Save new config - with open(self.config_file, 'w') as f: - json.dump(self.config, f, indent=4) - - logging.info(f"Configuration saved to {self.config_file}") - return True - - except Exception as e: - logging.error(f"Error saving config: {e}") - return False - - def get_value(self, key: str, default: Any = None) -> Any: - """Get configuration value with optional default""" - return self.config.get(key, default) - - def set_value(self, key: str, value: Any) -> bool: - """Set configuration value with validation""" - if key not in self.config_options: - logging.warning(f"Unknown configuration key: {key}") - return False - - option = self.config_options[key] - - # Validate the value - if not self._validate_value(option, value): - return False - - self.config[key] = value - return True - - def _validate_value(self, option: ConfigOption, value: Any) -> bool: - """Validate a configuration value""" - try: - # Type validation - if option.value_type == "boolean": - if not isinstance(value, bool): - return False - elif option.value_type == "integer": - if not isinstance(value, int): - return False - if option.min_value is not None and value < option.min_value: - return False - if option.max_value is not None and value > option.max_value: - return False - elif option.value_type == "float": - if not isinstance(value, (int, float)): - return False - if option.min_value is not None and value < option.min_value: - return False - if option.max_value is not None and value > option.max_value: - return False - elif option.value_type == "string": - if not isinstance(value, str): - return False - elif option.value_type == "path": - if not isinstance(value, str): - return False - # Additional path validation could be added here - elif option.value_type == "choice": - if option.choices and value not in option.choices: - return False - - return True - - except Exception as e: - logging.error(f"Error validating value for {option.key}: {e}") - return False - - def get_options_by_category(self, category: ConfigCategory) -> Dict[str, ConfigOption]: - """Get all configuration options for a specific category""" - return { - key: option for key, option in self.config_options.items() - if option.category == category - } - - def reset_to_defaults(self, category: Optional[ConfigCategory] = None) -> None: - """Reset configuration to defaults (optionally for a specific category)""" - if category: - options = self.get_options_by_category(category) - for key, option in options.items(): - self.config[key] = option.default_value - else: - for key, option in self.config_options.items(): - self.config[key] = option.default_value - - def export_config(self, file_path: str) -> bool: - """Export configuration to a file""" - try: - with open(file_path, 'w') as f: - json.dump(self.config, f, indent=4) - return True - except Exception as e: - logging.error(f"Error exporting config: {e}") - return False - - def import_config(self, file_path: str) -> bool: - """Import configuration from a file""" - try: - with open(file_path, 'r') as f: - imported_config = json.load(f) - - # Validate imported values - valid_config = {} - for key, value in imported_config.items(): - if key in self.config_options: - option = self.config_options[key] - if self._validate_value(option, value): - valid_config[key] = value - else: - logging.warning(f"Invalid value for {key}: {value}") - - # Update config with valid values - self.config.update(valid_config) - return True - - except Exception as e: - logging.error(f"Error importing config: {e}") - return False - - def get_config_summary(self) -> Dict[str, Any]: - """Get a summary of current configuration""" - summary = {} - for category in ConfigCategory: - options = self.get_options_by_category(category) - summary[category.value] = { - key: { - "value": self.config.get(key), - "default": option.default_value, - "description": option.description - } - for key, option in options.items() - } - return summary diff --git a/modules/config_helpers.py b/modules/config_helpers.py deleted file mode 100644 index 8f84d14..0000000 --- a/modules/config_helpers.py +++ /dev/null @@ -1,220 +0,0 @@ -""" -Helper functions for configuration management. -""" - -import logging -import os -import subprocess -import tempfile -from pathlib import Path -from typing import Optional, Tuple - -# Setup logger -logger = logging.getLogger(__name__) - -def is_windows() -> bool: - """Check if running on Windows""" - return os.name == 'nt' - -def ensure_directory_exists(path: str) -> str: - """ - Try to create directory and return either the original path or None if it fails. - - Args: - path: Directory path to create - - Returns: - The original path if directory exists or was created, None if creation failed - """ - if os.path.exists(path): - return path - - # Try to create the directory - try: - logger.info(f"Creating directory: {path}") - os.makedirs(path, exist_ok=True) - return path - except OSError as e: - logger.warning(f"Failed to create directory {path}: {str(e)}") - - -def validate_ffmpeg_path(ffmpeg_path: str) -> Tuple[bool, Optional[str]]: - """ - Validate FFmpeg path and find the executable - - Args: - ffmpeg_path: Directory or file path to FFmpeg - - Returns: - Tuple of (is_valid, executable_path) - """ - if not ffmpeg_path: - logger.warning("FFmpeg path is not specified") - return False, None - - # Handle the case when path is a directory (like C:\ffmpeg\bin) - if os.path.isdir(ffmpeg_path): - # Try to find ffmpeg executable in the directory - ffmpeg_exe = "ffmpeg.exe" if is_windows() else "ffmpeg" - possible_paths = [ - os.path.join(ffmpeg_path, ffmpeg_exe), - os.path.join(ffmpeg_path, "bin", ffmpeg_exe) - ] - - for path in possible_paths: - if os.path.isfile(path): - logger.info(f"Found FFmpeg executable at: {path}") - return True, path - - logger.warning(f"FFmpeg executable not found in directory: {ffmpeg_path}") - return False, None - - # Direct file path case - if os.path.isfile(ffmpeg_path): - return True, ffmpeg_path - - logger.warning(f"FFmpeg not found at path: {ffmpeg_path}") - return False, None - -def get_ffmpeg_version(ffmpeg_path: str) -> Optional[float]: - """ - Get FFmpeg version from executable - - Args: - ffmpeg_path: Path to FFmpeg executable - - Returns: - Version as float or None if error - """ - try: - result = subprocess.run( - [ffmpeg_path, "-version"], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - text=True, - check=False, - timeout=5 - ) - - if result.returncode != 0: - logger.warning(f"FFmpeg validation failed with return code: {result.returncode}") - return None - - version_info = result.stdout.splitlines()[0] if result.stdout else "" - import re - match = re.search(r"version\s+(\d+\.\d+)", version_info) - if match: - version = float(match.group(1)) - logger.info(f"FFmpeg version {version} found at: {ffmpeg_path}") - return version - - logger.warning(f"Could not determine FFmpeg version from: {version_info}") - except (subprocess.SubprocessError, OSError, ValueError) as e: - logger.error(f"Error validating FFmpeg: {str(e)}") - - return None - -def get_fallback_directory(key: str) -> str: - """ - Get fallback directory for a specific config key - - Args: - key: Configuration key (e.g., "video_output", "audio_output") - - Returns: - Path to fallback directory - """ - # First try user's Videos/Music folder - if key == "video_output": - fallback = str(Path.home() / "Videos" / "Snatch") - elif key == "audio_output": - fallback = str(Path.home() / "Music" / "Snatch") - else: - # For non-media directories, use temp subdirectories - fallback = os.path.join(tempfile.gettempdir(), "Snatch", key.replace("_dir", "").replace("_output", "")) - - # Try to create the fallback - try: - os.makedirs(fallback, exist_ok=True) - logger.info(f"Using fallback directory for {key}: {fallback}") - return fallback - except OSError: - # Last resort: use a directory in the current working directory - last_resort = os.path.join(os.getcwd(), "downloads", key.replace("_dir", "").replace("_output", "")) - try: - os.makedirs(last_resort, exist_ok=True) - logger.warning(f"Using last resort directory for {key}: {last_resort}") - return last_resort - except OSError: - logger.error(f"Failed to create any directory for {key}") - return os.getcwd() # Ultimate fallback - current directory - -def set_default_directories(config: dict) -> bool: - """ - Set default values for missing directory configuration keys - - Args: - config: Configuration dictionary - - Returns: - True if config was modified, False otherwise - """ - changed = False - directory_keys = ["video_output", "audio_output", "thumbnails_dir", "subtitles_dir", "sessions_dir", "cache_dir"] - - for key in directory_keys: - if key not in config or not config[key]: - # Get default directory for this key - base_dir = os.getcwd() - if key == "video_output": - default_dir = os.path.join(base_dir, "downloads", "video") - elif key == "audio_output": - default_dir = os.path.join(base_dir, "downloads", "audio") - elif key == "thumbnails_dir": - default_dir = os.path.join(base_dir, "thumbnails") - elif key == "subtitles_dir": - default_dir = os.path.join(base_dir, "subtitles") - elif key == "sessions_dir": - default_dir = os.path.join(base_dir, "sessions") - elif key == "cache_dir": - default_dir = os.path.join(base_dir, "cache") - else: - default_dir = os.path.join(base_dir, key.replace("_dir", "").replace("_output", "")) - - config[key] = default_dir - logger.info(f"Setting default directory for {key}: {default_dir}") - changed = True - - return changed - -def validate_config_paths(config: dict) -> bool: - """ - Validate and create output directories if needed - - Args: - config: Configuration dictionary - - Returns: - True if config was modified, False otherwise - """ - # First set any missing defaults - changed = set_default_directories(config) - - # Now validate each directory - directory_keys = ["video_output", "audio_output", "thumbnails_dir", "subtitles_dir", "sessions_dir", "cache_dir"] - - for key in directory_keys: - # Normalize path - path = os.path.abspath(os.path.expanduser(config[key])) - config[key] = path # Update with normalized path - - # Ensure directory exists, get fallback if not - if not os.path.exists(path): - result = ensure_directory_exists(path) - if not result: - fallback = get_fallback_directory(key) - config[key] = fallback - changed = True - logger.info(f"Updated {key} path to fallback: {fallback}") - - return changed diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..3875488 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,129 @@ +[build-system] +requires = ["setuptools>=68.0", "wheel"] +build-backend = "setuptools.backends._legacy:_Backend" + +[project] +name = "snatch-dl" +version = "2.0.0" +description = "A versatile, feature-rich media downloader with P2P support" +readme = "README.md" +license = {text = "MIT"} +requires-python = ">=3.10" +authors = [ + {name = "Rashed AL-Othman", email = "Rashed.m.alothman@gmail.com"} +] +keywords = ["download", "media", "p2p", "youtube", "video", "audio", "yt-dlp"] + +classifiers = [ + "Development Status :: 4 - Beta", + "Environment :: Console", + "Intended Audience :: End Users/Desktop", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Topic :: Multimedia :: Video", + "Topic :: Internet :: WWW/HTTP :: Downloaders", +] + +dependencies = [ + # Core download engine + "yt-dlp>=2024.1.0", + "mutagen>=1.47.0", + "psutil>=5.9.0", + + # HTTP and networking + "requests>=2.31.0", + "aiohttp>=3.9.1", + "aiofiles>=23.2.1", + + # CLI interface + "typer>=0.9.0", + "click>=8.1.0", + "rich>=13.0.0", + "textual>=0.40.0", + "colorama>=0.4.6", + "pyfiglet>=1.0.0", + "prompt-toolkit>=3.0.43", + "tqdm>=4.66.1", + + # Utilities + "python-json-logger>=2.0.4", + "typing-extensions>=4.8.0", + "pyyaml>=6.0", + "filelock>=3.13.1", + "xxhash>=3.4.1", + "backoff>=2.2.1", + "tenacity>=8.2.3", + "pydub>=0.25.1", +] + +[project.optional-dependencies] +audio = [ + "librosa", + "soundfile>=0.12.0", + "noisereduce>=3.0.0", + "pyloudnorm>=0.1.1", + "scipy>=1.11.0", + "numpy>=1.24.0", +] +p2p = [ + "cryptography>=41.0.0", + "twisted>=23.10.0", + "netifaces>=0.11.0", + "miniupnpc>=2.3.2", + "pyp2p>=0.8.3", + "storjkademlia>=0.7.4", +] +video = [ + "moviepy>=1.0.3", + "imageio>=2.31.0", + "imageio-ffmpeg>=0.4.9", + "pillow>=10.0.0", +] +dev = [ + "pytest>=7.4.0", + "pytest-cov>=4.1.0", + "pytest-asyncio>=0.21.0", + "black>=23.0.0", + "isort>=5.12.0", + "flake8>=6.1.0", + "mypy>=1.5.0", +] +all = ["snatch-dl[audio,p2p,video]"] + +[project.scripts] +snatch = "snatch.cli:main" + +[project.urls] +Homepage = "https://github.com/Rashed-alothman/Snatch" +Documentation = "https://github.com/Rashed-alothman/Snatch/wiki" +Repository = "https://github.com/Rashed-alothman/Snatch" +"Issue Tracker" = "https://github.com/Rashed-alothman/Snatch/issues" + +[tool.setuptools.packages.find] +include = ["snatch*"] + +[tool.setuptools.package-data] +snatch = ["data/*.txt"] + +[tool.black] +line-length = 120 +target-version = ["py310"] + +[tool.isort] +profile = "black" +line_length = 120 + +[tool.mypy] +python_version = "3.10" +warn_return_any = false +warn_unused_configs = true +ignore_missing_imports = true + +[tool.pytest.ini_options] +testpaths = ["tests"] +asyncio_mode = "auto" diff --git a/requirements.txt b/requirements.txt index ebf56a1..4e00fdf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,83 +1,56 @@ -# Snatch Project Dependencies -# Updated for version 1.8.0 +# Snatch v2.0.0 - Development requirements +# For production install, use: pip install -e . +# For all features: pip install -e ".[all]" +# For development: pip install -e ".[dev,all]" -# Core dependencies -yt-dlp>=2025.4.30 -ffmpeg>=1.4 +# Core +yt-dlp>=2024.1.0 mutagen>=1.47.0 -psutil>=7.0.0 +psutil>=5.9.0 +pydub>=0.25.1 -# HTTP and networking -requests>=2.32.3 -urllib3>=2.4.0 -certifi>=2025.4.26 -charset-normalizer>=3.4.2 -idna>=3.10 +# HTTP +requests>=2.31.0 aiohttp>=3.9.1 aiofiles>=23.2.1 -async-timeout>=4.0.3 -netifaces>=0.11.0 -# CLI interface and formatting -typer>=0.15.3 -click>=8.1.8 -rich>=14.0.0 -pyfiglet>=1.0.2 +# CLI & TUI +typer>=0.9.0 +click>=8.1.0 +rich>=13.0.0 +textual>=0.40.0 colorama>=0.4.6 +pyfiglet>=1.0.0 +prompt-toolkit>=3.0.43 tqdm>=4.66.1 -shellingham>=1.5.0 -prompt_toolkit>=3.0.43 -textual>=0.40.0 - -# Markdown processing -markdown-it-py>=3.0.0 -mdurl>=0.1.2 -Pygments>=2.19.1 # Utilities python-json-logger>=2.0.4 -asgiref>=3.8.1 -typing_extensions>=4.13.2 - -# P2P and DHT support -cryptography>=44.0.3 -future>=1.0.0 -pyp2p>=0.8.3 -twisted>=24.11.0 -cffi>=1.17.1 -attrs>=25.3.0 -service_identity>=24.1.0 -miniupnpc>=2.3.2 -u-msgpack-python>=2.8.0 -storjkademlia>=0.7.4 - -# Additional dependencies -hyperlink>=21.0.0 -imageio>=2.37.0 -imageio-ffmpeg>=0.6.0 -incremental>=24.7.2 -iniconfig>=2.1.0 -ipaddress>=1.0.23 -moviepy>=2.1.2 -ntplib>=0.4.0 -numpy>=2.2.5 -packaging>=25.0 -pillow>=10.4.0 -pluggy>=1.5.0 -proglog>=0.1.12 -pycparser>=2.22 -pydub>=0.25.1 -pyroute2>=0.9.2 -wcwidth>=0.2.13 -zope.interface>=7.2 - -# Cross-platform compatibility +typing-extensions>=4.8.0 +pyyaml>=6.0 filelock>=3.13.1 xxhash>=3.4.1 -cchardet>=2.1.7 -multidict>=6.0.4 -yarl>=1.9.4 - -# Retry and resilience backoff>=2.2.1 tenacity>=8.2.3 + +# Audio processing (optional) +librosa +soundfile>=0.12.0 +noisereduce>=3.0.0 +pyloudnorm>=0.1.1 +scipy>=1.11.0 +numpy>=1.24.0 + +# P2P networking (optional) +cryptography>=41.0.0 +twisted>=23.10.0 +netifaces>=0.11.0 +miniupnpc>=2.3.2 +pyp2p>=0.8.3 +storjkademlia>=0.7.4 + +# Video processing (optional) +moviepy>=1.0.3 +imageio>=2.31.0 +imageio-ffmpeg>=0.4.9 +pillow>=10.0.0 diff --git a/setup.py b/setup.py index 090d2d9..9f29ea8 100644 --- a/setup.py +++ b/setup.py @@ -1,147 +1,4 @@ -from setuptools import setup, find_packages -from pathlib import Path +"""Backward-compatible setup.py shim. All config is in pyproject.toml.""" +from setuptools import setup -# Read version from __init__.py -init_path = Path(__file__).parent / "modules" / "__init__.py" -with open(init_path) as f: - for line in f: - if line.startswith("__version__"): - version = line.split("=")[1].strip().strip('"\'') - break - -# Read README for long description -readme_path = Path(__file__).parent / "README.md" -long_description = "" -if readme_path.exists(): - with open(readme_path, encoding="utf-8") as f: - long_description = f.read() - -setup( - name="snatch-dl", - version=version, - description="A versatile media downloader with p2p support", - long_description=long_description, - long_description_content_type="text/markdown", - author="Rashed AL-Othman", - author_email="Rashed.m.alothman@gmail.com", - url="https://github.com/Rashed-alothman/Snatch", - license="MIT", - keywords=["download", "media", "p2p", "youtube", "video"], - packages=find_packages(include=["modules", "modules.*"]), - package_data={ - "modules": [ - "config/*.json", - "data/*.txt", - ], - }, # Core dependencies - install_requires=[ - "yt-dlp>=2025.4.30", - "ffmpeg>=1.4", - "mutagen>=1.47.0", - "psutil>=7.0.0", - "librosa", - "soundfile>=0.13.1", # For audio file handling - "noisereduce>=3.0.3", - "pyloudnorm>=0.1.1", # For loudness normalization - "scipy>=1.15.3", - - # HTTP and networking - "requests>=2.32.3", - "urllib3>=2.4.0", - "certifi>=2025.4.26", - "charset-normalizer>=3.4.2", - "idna>=3.10", - "aiohttp>=3.9.1", # For async HTTP requests - "aiofiles>=23.2.1", # For async file operations - "async-timeout>=4.0.3", # For async timeouts - "netifaces>=0.11.0", # For network interface detection - - # CLI interface and formatting - "typer>=0.15.3", - "click>=8.1.8", - "rich>=14.0.0", - "pyfiglet>=1.0.2", - "colorama>=0.4.6", - "tqdm>=4.66.1", - "shellingham>=1.5.0", - "prompt_toolkit>=3.0.43", - "textual>=0.40.0", # For modern TUI interface - # Markdown processing - "markdown-it-py>=3.0.0", - "mdurl>=0.1.2", - "Pygments>=2.19.1", - - # Utilities - "python-json-logger>=2.0.4", - "asgiref>=3.8.1", - "typing_extensions>=4.13.2", - - # P2P and DHT support - "cryptography>=44.0.3", - "future>=1.0.0", - "pyp2p>=0.8.3", - "twisted>=24.11.0", - "cffi>=1.17.1", - "attrs>=25.3.0", - "service_identity>=24.1.0", - "netifaces>=0.11.0", # Network interface information - "miniupnpc>=2.3.2", # UPnP support for P2P - "u-msgpack-python>=2.8.0", # Required by pyp2p - "storjkademlia>=0.7.4", # Required by pyp2p # Additional dependencies - "hyperlink>=21.0.0", - "imageio>=2.37.0", - "imageio-ffmpeg>=0.6.0", - "incremental>=24.7.2", - "iniconfig>=2.1.0", - "ipaddress>=1.0.23", - "moviepy>=2.1.2", - "ntplib>=0.4.0", # Network Time Protocol for synchronization - "numpy>=2.2.5", - "packaging>=25.0", - "pillow>=10.4.0", # Image processing - "pluggy>=1.5.0", - "proglog>=0.1.12", - "pycparser>=2.22", - "pydub>=0.25.1", # Audio processing - "pyroute2>=0.9.2", - "wcwidth>=0.2.13", - "zope.interface>=7.2", - # Cross-platform compatibility - "filelock>=3.13.1", # For safe file access - "xxhash>=3.4.1", # Fast hashing algorithm - "multidict>=6.0.4", # For aiohttp - "yarl>=1.9.4", # For URL handling - - # Retry and resilience - "backoff>=2.2.1", # For exponential backoff and retries - "tenacity>=8.2.3", # Advanced retry functionality - ], - - entry_points={ - "console_scripts": [ - "snatch=modules.cli:main", - ], - }, - - classifiers=[ - "Development Status :: 4 - Beta", - "Environment :: Console", - "Intended Audience :: End Users/Desktop", - "License :: OSI Approved :: MIT License", - "Operating System :: OS Independent", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Topic :: Internet :: File Transfer Protocol (FTP)", - "Topic :: Multimedia :: Video", - "Topic :: Internet :: WWW/HTTP :: Downloaders", - ], - - python_requires=">=3.8", - project_urls={ - "Documentation": "https://github.com/Rashed-alothman/Snatch/wiki", - "Source": "https://github.com/Rashed-alothman/Snatch", - "Issue Tracker": "https://github.com/Rashed-alothman/Snatch/issues", - }, -) \ No newline at end of file +setup() diff --git a/setup_ffmpeg.py b/setup_ffmpeg.py index 63f5672..0a9c061 100644 --- a/setup_ffmpeg.py +++ b/setup_ffmpeg.py @@ -1,64 +1,78 @@ -import os -import sys import json -import zipfile +import os import platform +import shutil import subprocess +import sys import tempfile -from pathlib import Path -import shutil import time +import zipfile from io import BytesIO +from pathlib import Path # Try importing required packages, install if needed try: - from tqdm import tqdm - from colorama import init, Fore, Style import requests + from colorama import Fore, Style, init + from tqdm import tqdm except ImportError: print("Installing required packages...") - subprocess.check_call([sys.executable, "-m", "pip", "install", "tqdm", "colorama", "requests"]) - from tqdm import tqdm - from colorama import init, Fore, Style + subprocess.check_call( + [sys.executable, "-m", "pip", "install", "tqdm", "colorama", "requests"] + ) import requests + from colorama import Fore, Style, init + from tqdm import tqdm # Initialize colorama with auto-reset init(autoreset=True) -CONFIG_FILE = 'config.json' +CONFIG_FILE = "config.json" DEFAULT_CONFIG = { - 'ffmpeg_location': '', # Will be auto-detected - 'video_output': str(Path.home() / 'Videos'), - 'audio_output': str(Path.home() / 'Music'), - 'max_concurrent': 3, - 'organize': False, - 'organization_templates': { - 'audio': '{uploader}/{album}/{title}', - 'video': '{uploader}/{year}/{title}', - 'podcast': 'Podcasts/{uploader}/{year}-{month}/{title}', - 'audiobook': 'Audiobooks/{uploader}/{title}' - } + "ffmpeg_location": "", # Will be auto-detected + "video_output": str(Path.home() / "Videos"), + "audio_output": str(Path.home() / "Music"), + "max_concurrent": 3, + "organize": False, + "organization_templates": { + "audio": "{uploader}/{album}/{title}", + "video": "{uploader}/{year}/{title}", + "podcast": "Podcasts/{uploader}/{year}-{month}/{title}", + "audiobook": "Audiobooks/{uploader}/{title}", + }, } + def print_banner(): """Display a banner for the setup script""" print(f"\n{Fore.CYAN}╔{'═' * 50}╗") - print(f"{Fore.CYAN}║{Fore.GREEN} FFmpeg Setup for Snatch {Fore.CYAN}║") + print( + f"{Fore.CYAN}║{Fore.GREEN} FFmpeg Setup for Snatch {Fore.CYAN}║" + ) print(f"{Fore.CYAN}╚{'═' * 50}╝{Style.RESET_ALL}\n") + def is_windows(): """Check if running on Windows""" return platform.system() == "Windows" + def is_ffmpeg_working(ffmpeg_path): """Test if FFmpeg works properly""" try: - cmd = [ffmpeg_path, "-version"] if os.path.isfile(ffmpeg_path) else ["ffmpeg", "-version"] - result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=5) + cmd = ( + [ffmpeg_path, "-version"] + if os.path.isfile(ffmpeg_path) + else ["ffmpeg", "-version"] + ) + result = subprocess.run( + cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=5 + ) return result.returncode == 0 and b"ffmpeg version" in result.stdout except (subprocess.SubprocessError, FileNotFoundError, PermissionError): return False + def find_existing_ffmpeg(): """Find FFmpeg in PATH or common locations""" # First check if ffmpeg is in PATH @@ -67,7 +81,7 @@ def find_existing_ffmpeg(): # Windows: Use where command result = subprocess.run(["where", "ffmpeg"], capture_output=True, text=True) if result.returncode == 0: - path = result.stdout.strip().split('\n')[0] + path = result.stdout.strip().split("\n")[0] if os.path.exists(path): return path else: @@ -79,83 +93,93 @@ def find_existing_ffmpeg(): return path except (subprocess.SubprocessError, FileNotFoundError): pass - + # Check common locations common_locations = [] - + if is_windows(): # Windows common locations common_locations = [ - r'C:\ffmpeg\bin\ffmpeg.exe', - r'C:\Program Files\ffmpeg\bin\ffmpeg.exe', - r'C:\ffmpeg\ffmpeg-master-latest-win64-gpl\bin\ffmpeg.exe', - os.path.join(os.path.dirname(os.path.abspath(__file__)), 'ffmpeg', 'bin', 'ffmpeg.exe') + r"C:\ffmpeg\bin\ffmpeg.exe", + r"C:\Program Files\ffmpeg\bin\ffmpeg.exe", + r"C:\ffmpeg\ffmpeg-master-latest-win64-gpl\bin\ffmpeg.exe", + os.path.join( + os.path.dirname(os.path.abspath(__file__)), + "ffmpeg", + "bin", + "ffmpeg.exe", + ), ] else: # Unix-like common locations common_locations = [ - '/usr/bin/ffmpeg', - '/usr/local/bin/ffmpeg', - '/opt/local/bin/ffmpeg', - '/opt/homebrew/bin/ffmpeg' + "/usr/bin/ffmpeg", + "/usr/local/bin/ffmpeg", + "/opt/local/bin/ffmpeg", + "/opt/homebrew/bin/ffmpeg", ] - + for location in common_locations: if os.path.exists(location) and is_ffmpeg_working(location): return location - + return None + def download_with_progress(url): """Download file with progress bar and return content""" try: print(f"{Fore.CYAN}Downloading from: {url}{Style.RESET_ALL}") response = requests.get(url, stream=True, timeout=60) response.raise_for_status() - - total_size = int(response.headers.get('content-length', 0)) + + total_size = int(response.headers.get("content-length", 0)) content = BytesIO() - + with tqdm( total=total_size, - unit='B', + unit="B", unit_scale=True, unit_divisor=1024, desc=f"{Fore.CYAN}Downloading FFmpeg{Style.RESET_ALL}", - bar_format="{desc}: {percentage:3.0f}%|{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}]" + bar_format="{desc}: {percentage:3.0f}%|{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}]", ) as pbar: for chunk in response.iter_content(chunk_size=8192): if chunk: content.write(chunk) pbar.update(len(chunk)) - + content.seek(0) return content except requests.RequestException as e: print(f"{Fore.RED}Download error: {str(e)}{Style.RESET_ALL}") return None + def verify_zip_archive(content): """Verify if content is a valid zip archive with FFmpeg""" try: with zipfile.ZipFile(content) as zip_file: file_list = zip_file.namelist() # Check if archive contains ffmpeg.exe or similar files - has_ffmpeg = any('ffmpeg' in f.lower() and f.endswith(('.exe', '')) for f in file_list) + has_ffmpeg = any( + "ffmpeg" in f.lower() and f.endswith((".exe", "")) for f in file_list + ) return has_ffmpeg except zipfile.BadZipFile: return False + def extract_with_progress(zip_content, extract_path): """Extract zip with progress indication""" with zipfile.ZipFile(zip_content) as zip_ref: members = zip_ref.namelist() total = len(members) - + with tqdm( total=total, desc=f"{Fore.CYAN}Extracting FFmpeg{Style.RESET_ALL}", - bar_format="{desc}: {percentage:3.0f}%|{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}]" + bar_format="{desc}: {percentage:3.0f}%|{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}]", ) as pbar: for i, member in enumerate(members): zip_ref.extract(member, extract_path) @@ -164,34 +188,44 @@ def extract_with_progress(zip_content, extract_path): if i % 50 == 0: time.sleep(0.01) + def find_ffmpeg_exe(base_path): """Find FFmpeg executable in the extracted files""" - spinner_chars = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'] + spinner_chars = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"] i = 0 - print(f"{Fore.CYAN}Locating FFmpeg executable...{Style.RESET_ALL}", end='', flush=True) - + print( + f"{Fore.CYAN}Locating FFmpeg executable...{Style.RESET_ALL}", end="", flush=True + ) + # Define the file pattern based on OS - file_pattern = 'ffmpeg.exe' if is_windows() else 'ffmpeg' - + file_pattern = "ffmpeg.exe" if is_windows() else "ffmpeg" + # Search all subdirectories for ffmpeg executable for i, (root, dirs, files) in enumerate(os.walk(base_path)): - print(f"\r{Fore.CYAN}Locating FFmpeg executable... {spinner_chars[i % len(spinner_chars)]}{Style.RESET_ALL}", end='', flush=True) - + print( + f"\r{Fore.CYAN}Locating FFmpeg executable... {spinner_chars[i % len(spinner_chars)]}{Style.RESET_ALL}", + end="", + flush=True, + ) + if file_pattern in files: ffmpeg_path = os.path.join(root, file_pattern) print(f"\r{Fore.GREEN}Found FFmpeg executable!{' ' * 20}{Style.RESET_ALL}") return ffmpeg_path - + if i % 10 == 0: time.sleep(0.01) # Prevent UI freeze - - print(f"\r{Fore.RED}FFmpeg executable not found in extracted files.{' ' * 20}{Style.RESET_ALL}") + + print( + f"\r{Fore.RED}FFmpeg executable not found in extracted files.{' ' * 20}{Style.RESET_ALL}" + ) return None + def save_config(config): """Save configuration to file""" try: - with open(CONFIG_FILE, 'w') as f: + with open(CONFIG_FILE, "w") as f: json.dump(config, f, indent=4) print(f"{Fore.GREEN}Configuration saved successfully.{Style.RESET_ALL}") return True @@ -199,53 +233,65 @@ def save_config(config): print(f"{Fore.RED}Error saving configuration: {str(e)}{Style.RESET_ALL}") return False + def load_config(): """Load existing configuration or create default""" try: if os.path.exists(CONFIG_FILE): - with open(CONFIG_FILE, 'r') as f: + with open(CONFIG_FILE, "r") as f: config = json.load(f) # Ensure all default keys exist for key, value in DEFAULT_CONFIG.items(): if key not in config: config[key] = value # Ensure organization templates are complete - if 'organization_templates' in config: - for key, value in DEFAULT_CONFIG['organization_templates'].items(): - config['organization_templates'].setdefault(key, value) + if "organization_templates" in config: + for key, value in DEFAULT_CONFIG["organization_templates"].items(): + config["organization_templates"].setdefault(key, value) else: - config['organization_templates'] = DEFAULT_CONFIG['organization_templates'].copy() + config["organization_templates"] = DEFAULT_CONFIG[ + "organization_templates" + ].copy() return config else: return DEFAULT_CONFIG.copy() except (IOError, json.JSONDecodeError): - print(f"{Fore.YELLOW}Warning: Couldn't read config file, using defaults.{Style.RESET_ALL}") + print( + f"{Fore.YELLOW}Warning: Couldn't read config file, using defaults.{Style.RESET_ALL}" + ) return DEFAULT_CONFIG.copy() + def setup_ffmpeg(): """Main function to set up FFmpeg""" print_banner() - + # Step 1: Check if FFmpeg is already available - print(f"{Fore.CYAN}Step 1: Checking for existing FFmpeg installation...{Style.RESET_ALL}") + print( + f"{Fore.CYAN}Step 1: Checking for existing FFmpeg installation...{Style.RESET_ALL}" + ) ffmpeg_path = find_existing_ffmpeg() - + if ffmpeg_path: - print(f"{Fore.GREEN}✓ FFmpeg already installed at: {ffmpeg_path}{Style.RESET_ALL}") + print( + f"{Fore.GREEN}✓ FFmpeg already installed at: {ffmpeg_path}{Style.RESET_ALL}" + ) config = load_config() - config['ffmpeg_location'] = os.path.dirname(ffmpeg_path) if os.path.isfile(ffmpeg_path) else ffmpeg_path + config["ffmpeg_location"] = ( + os.path.dirname(ffmpeg_path) if os.path.isfile(ffmpeg_path) else ffmpeg_path + ) save_config(config) return True - + # Step 2: Download FFmpeg print(f"\n{Fore.CYAN}Step 2: Downloading FFmpeg...{Style.RESET_ALL}") - + # Try multiple sources ffmpeg_sources = [ "https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip", - "https://github.com/GyanD/codexffmpeg/releases/download/5.1.2/ffmpeg-5.1.2-essentials_build.zip" + "https://github.com/GyanD/codexffmpeg/releases/download/5.1.2/ffmpeg-5.1.2-essentials_build.zip", ] - + zip_content = None for source in ffmpeg_sources: print(f"Trying source: {source}") @@ -254,156 +300,205 @@ def setup_ffmpeg(): print(f"{Fore.GREEN}✓ Valid FFmpeg archive downloaded{Style.RESET_ALL}") break elif zip_content: - print(f"{Fore.YELLOW}⚠ Downloaded file is not a valid FFmpeg archive. Trying next source...{Style.RESET_ALL}") - + print( + f"{Fore.YELLOW}⚠ Downloaded file is not a valid FFmpeg archive. Trying next source...{Style.RESET_ALL}" + ) + if not zip_content: - print(f"{Fore.RED}✗ Failed to download FFmpeg from any source.{Style.RESET_ALL}") - print(f"{Fore.YELLOW}Please download and install FFmpeg manually from: https://ffmpeg.org/download.html{Style.RESET_ALL}") + print( + f"{Fore.RED}✗ Failed to download FFmpeg from any source.{Style.RESET_ALL}" + ) + print( + f"{Fore.YELLOW}Please download and install FFmpeg manually from: https://ffmpeg.org/download.html{Style.RESET_ALL}" + ) return False - + # Step 3: Extract FFmpeg print(f"\n{Fore.CYAN}Step 3: Extracting FFmpeg...{Style.RESET_ALL}") - + # Create a permanent directory for FFmpeg - ffmpeg_dir = Path('C:/ffmpeg') if is_windows() else Path.home() / '.ffmpeg' + ffmpeg_dir = Path("C:/ffmpeg") if is_windows() else Path.home() / ".ffmpeg" try: ffmpeg_dir.mkdir(exist_ok=True) print(f"Extracting to {ffmpeg_dir}") extract_with_progress(zip_content, ffmpeg_dir) except (IOError, zipfile.BadZipFile, PermissionError) as e: print(f"{Fore.RED}✗ Extraction failed: {str(e)}{Style.RESET_ALL}") - + # Try extracting to a temporary directory as fallback - print(f"{Fore.YELLOW}Trying to extract to temporary directory...{Style.RESET_ALL}") - temp_dir = Path(tempfile.gettempdir()) / 'ffmpeg' + print( + f"{Fore.YELLOW}Trying to extract to temporary directory...{Style.RESET_ALL}" + ) + temp_dir = Path(tempfile.gettempdir()) / "ffmpeg" temp_dir.mkdir(exist_ok=True) - + try: extract_with_progress(zip_content, temp_dir) ffmpeg_dir = temp_dir except Exception as e2: - print(f"{Fore.RED}✗ Extraction to temporary directory also failed: {str(e2)}{Style.RESET_ALL}") + print( + f"{Fore.RED}✗ Extraction to temporary directory also failed: {str(e2)}{Style.RESET_ALL}" + ) return False - + # Step 4: Find FFmpeg executable in extracted files - print(f"\n{Fore.CYAN}Step 4: Locating FFmpeg in extracted files...{Style.RESET_ALL}") + print( + f"\n{Fore.CYAN}Step 4: Locating FFmpeg in extracted files...{Style.RESET_ALL}" + ) ffmpeg_path = find_ffmpeg_exe(ffmpeg_dir) - + if not ffmpeg_path: - print(f"{Fore.RED}✗ Could not locate FFmpeg executable in extracted files.{Style.RESET_ALL}") + print( + f"{Fore.RED}✗ Could not locate FFmpeg executable in extracted files.{Style.RESET_ALL}" + ) return False - + # Step 5: Verify FFmpeg works print(f"\n{Fore.CYAN}Step 5: Verifying FFmpeg installation...{Style.RESET_ALL}") if not is_ffmpeg_working(ffmpeg_path): print(f"{Fore.RED}✗ FFmpeg installation verification failed.{Style.RESET_ALL}") return False - + # Step 6: Update configuration print(f"\n{Fore.CYAN}Step 6: Updating configuration...{Style.RESET_ALL}") config = load_config() # Store either the directory containing ffmpeg.exe or the executable path based on what works ffmpeg_location = os.path.dirname(ffmpeg_path) - config['ffmpeg_location'] = ffmpeg_location - + config["ffmpeg_location"] = ffmpeg_location + if save_config(config): print(f"\n{Fore.GREEN}✓ FFmpeg setup completed successfully!{Style.RESET_ALL}") print(f"{Fore.GREEN}FFmpeg location: {ffmpeg_location}{Style.RESET_ALL}") return True else: - print(f"\n{Fore.YELLOW}⚠ FFmpeg was installed but configuration could not be saved.{Style.RESET_ALL}") + print( + f"\n{Fore.YELLOW}⚠ FFmpeg was installed but configuration could not be saved.{Style.RESET_ALL}" + ) print(f"{Fore.YELLOW}Please manually update config.json with:{Style.RESET_ALL}") - print(f"{Fore.YELLOW}\"ffmpeg_location\": \"{ffmpeg_location}\"{Style.RESET_ALL}") + print(f'{Fore.YELLOW}"ffmpeg_location": "{ffmpeg_location}"{Style.RESET_ALL}') return False + def copy_relevant_files_to_script_directory(): """Copy just the necessary FFmpeg executables to script directory for portability""" try: config = load_config() - ffmpeg_source_dir = config.get('ffmpeg_location', '') - + ffmpeg_source_dir = config.get("ffmpeg_location", "") + if not ffmpeg_source_dir or not os.path.exists(ffmpeg_source_dir): - print(f"{Fore.YELLOW}No valid FFmpeg location found in config.{Style.RESET_ALL}") + print( + f"{Fore.YELLOW}No valid FFmpeg location found in config.{Style.RESET_ALL}" + ) return False - + # Create local ffmpeg folder - local_dir = Path(os.path.dirname(os.path.abspath(__file__))) / 'ffmpeg' / 'bin' + local_dir = Path(os.path.dirname(os.path.abspath(__file__))) / "ffmpeg" / "bin" local_dir.mkdir(parents=True, exist_ok=True) - + # Copy the exe files - essential_files = ['ffmpeg.exe', 'ffprobe.exe'] if is_windows() else ['ffmpeg', 'ffprobe'] + essential_files = ( + ["ffmpeg.exe", "ffprobe.exe"] if is_windows() else ["ffmpeg", "ffprobe"] + ) files_copied = 0 - + for file in essential_files: source = os.path.join(ffmpeg_source_dir, file) target = local_dir / file - + if os.path.exists(source): print(f"Copying {file} to local directory...") shutil.copy2(source, target) files_copied += 1 - + if files_copied > 0: - print(f"{Fore.GREEN}✓ Copied {files_copied} FFmpeg file(s) to local directory.{Style.RESET_ALL}") - + print( + f"{Fore.GREEN}✓ Copied {files_copied} FFmpeg file(s) to local directory.{Style.RESET_ALL}" + ) + # Update config to use local copy - config['ffmpeg_location'] = str(local_dir) + config["ffmpeg_location"] = str(local_dir) save_config(config) return True else: print(f"{Fore.YELLOW}No FFmpeg files were found to copy.{Style.RESET_ALL}") return False - + except Exception as e: print(f"{Fore.RED}Error creating local FFmpeg copy: {str(e)}{Style.RESET_ALL}") return False + def setup_organization_preferences(config): """Setup file organization preferences""" print("\n=== File Organization Setup ===") print("Snatch can automatically organize your downloaded files based on metadata.") - - enable = input("Enable automatic file organization? (y/n): ").lower().startswith('y') - config['organize'] = enable - + + enable = ( + input("Enable automatic file organization? (y/n): ").lower().startswith("y") + ) + config["organize"] = enable + if enable: print("\nOrganization Templates:") print("These templates determine how files are organized in folders.") - print("Available variables: {title}, {uploader}, {album}, {artist}, {year}, {month}, etc.") - - templates = config['organization_templates'] - + print( + "Available variables: {title}, {uploader}, {album}, {artist}, {year}, {month}, etc." + ) + + templates = config["organization_templates"] + print("\nCurrent templates:") for key, template in templates.items(): print(f" {key}: {template}") - - customize = input("\nWould you like to customize these templates? (y/n): ").lower().startswith('y') - + + customize = ( + input("\nWould you like to customize these templates? (y/n): ") + .lower() + .startswith("y") + ) + if customize: - templates['audio'] = input(f"Audio template [{templates['audio']}]: ") or templates['audio'] - templates['video'] = input(f"Video template [{templates['video']}]: ") or templates['video'] - templates['podcast'] = input(f"Podcast template [{templates['podcast']}]: ") or templates['podcast'] - templates['audiobook'] = input(f"Audiobook template [{templates['audiobook']}]: ") or templates['audiobook'] - - config['organization_templates'] = templates + templates["audio"] = ( + input(f"Audio template [{templates['audio']}]: ") or templates["audio"] + ) + templates["video"] = ( + input(f"Video template [{templates['video']}]: ") or templates["video"] + ) + templates["podcast"] = ( + input(f"Podcast template [{templates['podcast']}]: ") + or templates["podcast"] + ) + templates["audiobook"] = ( + input(f"Audiobook template [{templates['audiobook']}]: ") + or templates["audiobook"] + ) + + config["organization_templates"] = templates print("\nTemplates updated!") - + return config + if __name__ == "__main__": try: success = setup_ffmpeg() - + if success: # Ask user if they want a local copy - response = input(f"\n{Fore.CYAN}Would you like to create a portable copy of FFmpeg in the script directory? (y/n): {Style.RESET_ALL}") - if response.lower().startswith('y'): + response = input( + f"\n{Fore.CYAN}Would you like to create a portable copy of FFmpeg in the script directory? (y/n): {Style.RESET_ALL}" + ) + if response.lower().startswith("y"): copy_relevant_files_to_script_directory() - - print(f"\n{Fore.GREEN}Setup complete! You can now use Snatch to download videos.{Style.RESET_ALL}") - print(f"{Fore.CYAN}Try running: python Snatch.py --test{Style.RESET_ALL}") + + print( + f"\n{Fore.GREEN}Setup complete! You can now use Snatch to download videos.{Style.RESET_ALL}" + ) + print(f"{Fore.CYAN}Try running: snatch --help{Style.RESET_ALL}") else: - print(f"\n{Fore.RED}Setup failed. Please try manual installation.{Style.RESET_ALL}") + print( + f"\n{Fore.RED}Setup failed. Please try manual installation.{Style.RESET_ALL}" + ) sys.exit(1) except KeyboardInterrupt: print(f"\n{Fore.YELLOW}Setup cancelled by user.{Style.RESET_ALL}") diff --git a/setupfiles/pip-install.txt b/setupfiles/pip-install.txt deleted file mode 100644 index c921a0d..0000000 --- a/setupfiles/pip-install.txt +++ /dev/null @@ -1,2 +0,0 @@ -pip install -r requirements.txt -python setup.py install diff --git a/setupfiles/pip-package.txt b/setupfiles/pip-package.txt deleted file mode 100644 index 6660033..0000000 --- a/setupfiles/pip-package.txt +++ /dev/null @@ -1,94 +0,0 @@ -asgiref -beautifulsoup4 -bidict -black -blinker -Brotli -Cerberus -certifi -charset-normalizer -click -cloudpickle -colorama -comtypes -contourpy -cycler -Django -Flask -flask-cors -Flask-SocketIO -fonttools -h11 -humanize -idna -isort -itsdangerous -Jinja2 -joblib -kiwisolver -llvmlite -lxml -MarkupSafe -matplotlib -mutagen -mypy-extensions -numba -numpy -obs-websocket-py -packaging -pandas -pathspec -pillow -pip -platformdirs -psutil -pycaw -pycryptodomex -pyparsing -pypiwin32 -PyQt6 -PyQt6-Qt6 -PyQt6_sip -python-dateutil -python-dotenv -python-engineio -python-pptx -python-socketio -pytz -pyvda -pywin32 -PyYAML -qasync -rebound-cli -requests -scikit-learn -scipy -screen_brightness_control -seaborn -setuptools -shap -simple-websocket -six -slicer -soupsieve -sqlparse -threadpoolctl -tqdm -typing_extensions -tzdata -tzlocal -urllib3 -urwid -watchdog -wcwidth -websocket-client -websockets -Werkzeug -wheel -win11toast -winsdk -winshell -WMI -wsproto -XlsxWriter -yt-dlp \ No newline at end of file diff --git a/setupfiles/requirements.txt b/setupfiles/requirements.txt deleted file mode 100644 index b42bdba..0000000 --- a/setupfiles/requirements.txt +++ /dev/null @@ -1,83 +0,0 @@ -# Snatch Project Dependencies -# Updated for version 1.7.0 - -# Core dependencies -yt-dlp>=2025.4.30 -ffmpeg>=1.4 -mutagen>=1.47.0 -psutil>=7.0.0 - -# HTTP and networking -requests>=2.32.3 -urllib3>=2.4.0 -certifi>=2025.4.26 -charset-normalizer>=3.4.2 -idna>=3.10 -aiohttp>=3.9.1 -aiofiles>=23.2.1 -async-timeout>=4.0.3 -netifaces>=0.11.0 - -# CLI interface and formatting -typer>=0.15.3 -click>=8.1.8 -rich>=14.0.0 -pyfiglet>=1.0.2 -colorama>=0.4.6 -tqdm>=4.66.1 -shellingham>=1.5.0 -prompt_toolkit>=3.0.43 -textual>=0.40.0 - -# Markdown processing -markdown-it-py>=3.0.0 -mdurl>=0.1.2 -Pygments>=2.19.1 - -# Utilities -python-json-logger>=2.0.4 -asgiref>=3.8.1 -typing_extensions>=4.13.2 - -# P2P and DHT support -cryptography>=44.0.3 -future>=1.0.0 -pyp2p>=0.8.3 -twisted>=24.11.0 -cffi>=1.17.1 -attrs>=25.3.0 -service_identity>=24.1.0 -miniupnpc>=2.3.2 -u-msgpack-python>=2.8.0 -storjkademlia>=0.7.4 - -# Additional dependencies -hyperlink>=21.0.0 -imageio>=2.37.0 -imageio-ffmpeg>=0.6.0 -incremental>=24.7.2 -iniconfig>=2.1.0 -ipaddress>=1.0.23 -moviepy>=2.1.2 -ntplib>=0.4.0 -numpy>=2.2.5 -packaging>=25.0 -pillow>=10.4.0 -pluggy>=1.5.0 -proglog>=0.1.12 -pycparser>=2.22 -pydub>=0.25.1 -pyroute2>=0.9.2 -wcwidth>=0.2.13 -zope.interface>=7.2 - -# Cross-platform compatibility -filelock>=3.13.1 -xxhash>=3.4.1 -cchardet>=2.1.7 -multidict>=6.0.4 -yarl>=1.9.4 - -# Retry and resilience -backoff>=2.2.1 -tenacity>=8.2.3 \ No newline at end of file diff --git a/setupfiles/setup_ffmpeg.py b/setupfiles/setup_ffmpeg.py deleted file mode 100644 index 71ddb4d..0000000 --- a/setupfiles/setup_ffmpeg.py +++ /dev/null @@ -1,508 +0,0 @@ -import json -import os -import platform -import shutil -import subprocess -import sys -import tempfile -import time -import zipfile -from io import BytesIO -from pathlib import Path - -# Try importing required packages, install if needed -try: - import requests - from colorama import Fore, Style, init - from tqdm import tqdm -except ImportError: - print("Installing required packages...") - subprocess.check_call( - [sys.executable, "-m", "pip", "install", "tqdm", "colorama", "requests"] - ) - import requests - from colorama import Fore, Style, init - from tqdm import tqdm - -# Initialize colorama with auto-reset -init(autoreset=True) - -CONFIG_FILE = "config.json" -DEFAULT_CONFIG = { - "ffmpeg_location": "", # Will be auto-detected - "video_output": str(Path.home() / "Videos"), - "audio_output": str(Path.home() / "Music"), - "max_concurrent": 3, - "organize": False, - "organization_templates": { - "audio": "{uploader}/{album}/{title}", - "video": "{uploader}/{year}/{title}", - "podcast": "Podcasts/{uploader}/{year}-{month}/{title}", - "audiobook": "Audiobooks/{uploader}/{title}", - }, -} - - -def print_banner(): - """Display a banner for the setup script""" - print(f"\n{Fore.CYAN}╔{'═' * 50}╗") - print( - f"{Fore.CYAN}║{Fore.GREEN} FFmpeg Setup for Snatch {Fore.CYAN}║" - ) - print(f"{Fore.CYAN}╚{'═' * 50}╝{Style.RESET_ALL}\n") - - -def is_windows(): - """Check if running on Windows""" - return platform.system() == "Windows" - - -def is_ffmpeg_working(ffmpeg_path): - """Test if FFmpeg works properly""" - try: - cmd = ( - [ffmpeg_path, "-version"] - if os.path.isfile(ffmpeg_path) - else ["ffmpeg", "-version"] - ) - result = subprocess.run( - cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=5 - ) - return result.returncode == 0 and b"ffmpeg version" in result.stdout - except (subprocess.SubprocessError, FileNotFoundError, PermissionError): - return False - - -def find_existing_ffmpeg(): - """Find FFmpeg in PATH or common locations""" - # First check if ffmpeg is in PATH - try: - if is_windows(): - # Windows: Use where command - result = subprocess.run(["where", "ffmpeg"], capture_output=True, text=True) - if result.returncode == 0: - path = result.stdout.strip().split("\n")[0] - if os.path.exists(path): - return path - else: - # Unix-like: Use which command - result = subprocess.run(["which", "ffmpeg"], capture_output=True, text=True) - if result.returncode == 0: - path = result.stdout.strip() - if os.path.exists(path): - return path - except (subprocess.SubprocessError, FileNotFoundError): - pass - - # Check common locations - common_locations = [] - - if is_windows(): - # Windows common locations - common_locations = [ - r"C:\ffmpeg\bin\ffmpeg.exe", - r"C:\Program Files\ffmpeg\bin\ffmpeg.exe", - r"C:\ffmpeg\ffmpeg-master-latest-win64-gpl\bin\ffmpeg.exe", - os.path.join( - os.path.dirname(os.path.abspath(__file__)), - "ffmpeg", - "bin", - "ffmpeg.exe", - ), - ] - else: - # Unix-like common locations - common_locations = [ - "/usr/bin/ffmpeg", - "/usr/local/bin/ffmpeg", - "/opt/local/bin/ffmpeg", - "/opt/homebrew/bin/ffmpeg", - ] - - for location in common_locations: - if os.path.exists(location) and is_ffmpeg_working(location): - return location - - return None - - -def download_with_progress(url): - """Download file with progress bar and return content""" - try: - print(f"{Fore.CYAN}Downloading from: {url}{Style.RESET_ALL}") - response = requests.get(url, stream=True, timeout=60) - response.raise_for_status() - - total_size = int(response.headers.get("content-length", 0)) - content = BytesIO() - - with tqdm( - total=total_size, - unit="B", - unit_scale=True, - unit_divisor=1024, - desc=f"{Fore.CYAN}Downloading FFmpeg{Style.RESET_ALL}", - bar_format="{desc}: {percentage:3.0f}%|{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}]", - ) as pbar: - for chunk in response.iter_content(chunk_size=8192): - if chunk: - content.write(chunk) - pbar.update(len(chunk)) - - content.seek(0) - return content - except requests.RequestException as e: - print(f"{Fore.RED}Download error: {str(e)}{Style.RESET_ALL}") - return None - - -def verify_zip_archive(content): - """Verify if content is a valid zip archive with FFmpeg""" - try: - with zipfile.ZipFile(content) as zip_file: - file_list = zip_file.namelist() - # Check if archive contains ffmpeg.exe or similar files - has_ffmpeg = any( - "ffmpeg" in f.lower() and f.endswith((".exe", "")) for f in file_list - ) - return has_ffmpeg - except zipfile.BadZipFile: - return False - - -def extract_with_progress(zip_content, extract_path): - """Extract zip with progress indication""" - with zipfile.ZipFile(zip_content) as zip_ref: - members = zip_ref.namelist() - total = len(members) - - with tqdm( - total=total, - desc=f"{Fore.CYAN}Extracting FFmpeg{Style.RESET_ALL}", - bar_format="{desc}: {percentage:3.0f}%|{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}]", - ) as pbar: - for i, member in enumerate(members): - zip_ref.extract(member, extract_path) - pbar.update(1) - # Throttle updates to avoid console flicker - if i % 50 == 0: - time.sleep(0.01) - - -def find_ffmpeg_exe(base_path): - """Find FFmpeg executable in the extracted files""" - spinner_chars = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"] - i = 0 - print( - f"{Fore.CYAN}Locating FFmpeg executable...{Style.RESET_ALL}", end="", flush=True - ) - - # Define the file pattern based on OS - file_pattern = "ffmpeg.exe" if is_windows() else "ffmpeg" - - # Search all subdirectories for ffmpeg executable - for i, (root, dirs, files) in enumerate(os.walk(base_path)): - print( - f"\r{Fore.CYAN}Locating FFmpeg executable... {spinner_chars[i % len(spinner_chars)]}{Style.RESET_ALL}", - end="", - flush=True, - ) - - if file_pattern in files: - ffmpeg_path = os.path.join(root, file_pattern) - print(f"\r{Fore.GREEN}Found FFmpeg executable!{' ' * 20}{Style.RESET_ALL}") - return ffmpeg_path - - if i % 10 == 0: - time.sleep(0.01) # Prevent UI freeze - - print( - f"\r{Fore.RED}FFmpeg executable not found in extracted files.{' ' * 20}{Style.RESET_ALL}" - ) - return None - - -def save_config(config): - """Save configuration to file""" - try: - with open(CONFIG_FILE, "w") as f: - json.dump(config, f, indent=4) - print(f"{Fore.GREEN}Configuration saved successfully.{Style.RESET_ALL}") - return True - except (IOError, PermissionError) as e: - print(f"{Fore.RED}Error saving configuration: {str(e)}{Style.RESET_ALL}") - return False - - -def load_config(): - """Load existing configuration or create default""" - try: - if os.path.exists(CONFIG_FILE): - with open(CONFIG_FILE, "r") as f: - config = json.load(f) - # Ensure all default keys exist - for key, value in DEFAULT_CONFIG.items(): - if key not in config: - config[key] = value - # Ensure organization templates are complete - if "organization_templates" in config: - for key, value in DEFAULT_CONFIG["organization_templates"].items(): - config["organization_templates"].setdefault(key, value) - else: - config["organization_templates"] = DEFAULT_CONFIG[ - "organization_templates" - ].copy() - return config - else: - return DEFAULT_CONFIG.copy() - except (IOError, json.JSONDecodeError): - print( - f"{Fore.YELLOW}Warning: Couldn't read config file, using defaults.{Style.RESET_ALL}" - ) - return DEFAULT_CONFIG.copy() - - -def setup_ffmpeg(): - """Main function to set up FFmpeg""" - print_banner() - - # Step 1: Check if FFmpeg is already available - print( - f"{Fore.CYAN}Step 1: Checking for existing FFmpeg installation...{Style.RESET_ALL}" - ) - ffmpeg_path = find_existing_ffmpeg() - - if ffmpeg_path: - print( - f"{Fore.GREEN}✓ FFmpeg already installed at: {ffmpeg_path}{Style.RESET_ALL}" - ) - config = load_config() - config["ffmpeg_location"] = ( - os.path.dirname(ffmpeg_path) if os.path.isfile(ffmpeg_path) else ffmpeg_path - ) - save_config(config) - return True - - # Step 2: Download FFmpeg - print(f"\n{Fore.CYAN}Step 2: Downloading FFmpeg...{Style.RESET_ALL}") - - # Try multiple sources - ffmpeg_sources = [ - "https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip", - "https://github.com/GyanD/codexffmpeg/releases/download/5.1.2/ffmpeg-5.1.2-essentials_build.zip", - ] - - zip_content = None - for source in ffmpeg_sources: - print(f"Trying source: {source}") - zip_content = download_with_progress(source) - if zip_content and verify_zip_archive(zip_content): - print(f"{Fore.GREEN}✓ Valid FFmpeg archive downloaded{Style.RESET_ALL}") - break - elif zip_content: - print( - f"{Fore.YELLOW}⚠ Downloaded file is not a valid FFmpeg archive. Trying next source...{Style.RESET_ALL}" - ) - - if not zip_content: - print( - f"{Fore.RED}✗ Failed to download FFmpeg from any source.{Style.RESET_ALL}" - ) - print( - f"{Fore.YELLOW}Please download and install FFmpeg manually from: https://ffmpeg.org/download.html{Style.RESET_ALL}" - ) - return False - - # Step 3: Extract FFmpeg - print(f"\n{Fore.CYAN}Step 3: Extracting FFmpeg...{Style.RESET_ALL}") - - # Create a permanent directory for FFmpeg - ffmpeg_dir = Path("C:/ffmpeg") if is_windows() else Path.home() / ".ffmpeg" - try: - ffmpeg_dir.mkdir(exist_ok=True) - print(f"Extracting to {ffmpeg_dir}") - extract_with_progress(zip_content, ffmpeg_dir) - except (IOError, zipfile.BadZipFile, PermissionError) as e: - print(f"{Fore.RED}✗ Extraction failed: {str(e)}{Style.RESET_ALL}") - - # Try extracting to a temporary directory as fallback - print( - f"{Fore.YELLOW}Trying to extract to temporary directory...{Style.RESET_ALL}" - ) - temp_dir = Path(tempfile.gettempdir()) / "ffmpeg" - temp_dir.mkdir(exist_ok=True) - - try: - extract_with_progress(zip_content, temp_dir) - ffmpeg_dir = temp_dir - except Exception as e2: - print( - f"{Fore.RED}✗ Extraction to temporary directory also failed: {str(e2)}{Style.RESET_ALL}" - ) - return False - - # Step 4: Find FFmpeg executable in extracted files - print( - f"\n{Fore.CYAN}Step 4: Locating FFmpeg in extracted files...{Style.RESET_ALL}" - ) - ffmpeg_path = find_ffmpeg_exe(ffmpeg_dir) - - if not ffmpeg_path: - print( - f"{Fore.RED}✗ Could not locate FFmpeg executable in extracted files.{Style.RESET_ALL}" - ) - return False - - # Step 5: Verify FFmpeg works - print(f"\n{Fore.CYAN}Step 5: Verifying FFmpeg installation...{Style.RESET_ALL}") - if not is_ffmpeg_working(ffmpeg_path): - print(f"{Fore.RED}✗ FFmpeg installation verification failed.{Style.RESET_ALL}") - return False - - # Step 6: Update configuration - print(f"\n{Fore.CYAN}Step 6: Updating configuration...{Style.RESET_ALL}") - config = load_config() - # Store either the directory containing ffmpeg.exe or the executable path based on what works - ffmpeg_location = os.path.dirname(ffmpeg_path) - config["ffmpeg_location"] = ffmpeg_location - - if save_config(config): - print(f"\n{Fore.GREEN}✓ FFmpeg setup completed successfully!{Style.RESET_ALL}") - print(f"{Fore.GREEN}FFmpeg location: {ffmpeg_location}{Style.RESET_ALL}") - return True - else: - print( - f"\n{Fore.YELLOW}⚠ FFmpeg was installed but configuration could not be saved.{Style.RESET_ALL}" - ) - print(f"{Fore.YELLOW}Please manually update config.json with:{Style.RESET_ALL}") - print(f'{Fore.YELLOW}"ffmpeg_location": "{ffmpeg_location}"{Style.RESET_ALL}') - return False - - -def copy_relevant_files_to_script_directory(): - """Copy just the necessary FFmpeg executables to script directory for portability""" - try: - config = load_config() - ffmpeg_source_dir = config.get("ffmpeg_location", "") - - if not ffmpeg_source_dir or not os.path.exists(ffmpeg_source_dir): - print( - f"{Fore.YELLOW}No valid FFmpeg location found in config.{Style.RESET_ALL}" - ) - return False - - # Create local ffmpeg folder - local_dir = Path(os.path.dirname(os.path.abspath(__file__))) / "ffmpeg" / "bin" - local_dir.mkdir(parents=True, exist_ok=True) - - # Copy the exe files - essential_files = ( - ["ffmpeg.exe", "ffprobe.exe"] if is_windows() else ["ffmpeg", "ffprobe"] - ) - files_copied = 0 - - for file in essential_files: - source = os.path.join(ffmpeg_source_dir, file) - target = local_dir / file - - if os.path.exists(source): - print(f"Copying {file} to local directory...") - shutil.copy2(source, target) - files_copied += 1 - - if files_copied > 0: - print( - f"{Fore.GREEN}✓ Copied {files_copied} FFmpeg file(s) to local directory.{Style.RESET_ALL}" - ) - - # Update config to use local copy - config["ffmpeg_location"] = str(local_dir) - save_config(config) - return True - else: - print(f"{Fore.YELLOW}No FFmpeg files were found to copy.{Style.RESET_ALL}") - return False - - except Exception as e: - print(f"{Fore.RED}Error creating local FFmpeg copy: {str(e)}{Style.RESET_ALL}") - return False - - -def setup_organization_preferences(config): - """Setup file organization preferences""" - print("\n=== File Organization Setup ===") - print("Snatch can automatically organize your downloaded files based on metadata.") - - enable = ( - input("Enable automatic file organization? (y/n): ").lower().startswith("y") - ) - config["organize"] = enable - - if enable: - print("\nOrganization Templates:") - print("These templates determine how files are organized in folders.") - print( - "Available variables: {title}, {uploader}, {album}, {artist}, {year}, {month}, etc." - ) - - templates = config["organization_templates"] - - print("\nCurrent templates:") - for key, template in templates.items(): - print(f" {key}: {template}") - - customize = ( - input("\nWould you like to customize these templates? (y/n): ") - .lower() - .startswith("y") - ) - - if customize: - templates["audio"] = ( - input(f"Audio template [{templates['audio']}]: ") or templates["audio"] - ) - templates["video"] = ( - input(f"Video template [{templates['video']}]: ") or templates["video"] - ) - templates["podcast"] = ( - input(f"Podcast template [{templates['podcast']}]: ") - or templates["podcast"] - ) - templates["audiobook"] = ( - input(f"Audiobook template [{templates['audiobook']}]: ") - or templates["audiobook"] - ) - - config["organization_templates"] = templates - print("\nTemplates updated!") - - return config - - -if __name__ == "__main__": - try: - success = setup_ffmpeg() - - if success: - # Ask user if they want a local copy - response = input( - f"\n{Fore.CYAN}Would you like to create a portable copy of FFmpeg in the script directory? (y/n): {Style.RESET_ALL}" - ) - if response.lower().startswith("y"): - copy_relevant_files_to_script_directory() - - print( - f"\n{Fore.GREEN}Setup complete! You can now use Snatch to download videos.{Style.RESET_ALL}" - ) - print(f"{Fore.CYAN}Try running: python Snatch.py --test{Style.RESET_ALL}") - else: - print( - f"\n{Fore.RED}Setup failed. Please try manual installation.{Style.RESET_ALL}" - ) - sys.exit(1) - except KeyboardInterrupt: - print(f"\n{Fore.YELLOW}Setup cancelled by user.{Style.RESET_ALL}") - sys.exit(1) - except Exception as e: - print(f"\n{Fore.RED}Unexpected error: {str(e)}{Style.RESET_ALL}") - sys.exit(1) diff --git a/modules/__init__.py b/snatch/__init__.py similarity index 76% rename from modules/__init__.py rename to snatch/__init__.py index ae0d96a..1bc6ea8 100644 --- a/modules/__init__.py +++ b/snatch/__init__.py @@ -1,4 +1,6 @@ -__version__ = "1.8.0" +from .constants import VERSION + +__version__ = VERSION from .cli import main as main_app from .manager import DownloadManager diff --git a/modules/advanced_scheduler.py b/snatch/advanced_scheduler.py similarity index 100% rename from modules/advanced_scheduler.py rename to snatch/advanced_scheduler.py diff --git a/modules/audio_processor.py b/snatch/audio_processor.py similarity index 100% rename from modules/audio_processor.py rename to snatch/audio_processor.py diff --git a/modules/cache.py b/snatch/cache.py similarity index 100% rename from modules/cache.py rename to snatch/cache.py diff --git a/modules/cli.py b/snatch/cli.py similarity index 99% rename from modules/cli.py rename to snatch/cli.py index 66e086f..da9eddb 100644 --- a/modules/cli.py +++ b/snatch/cli.py @@ -428,7 +428,7 @@ def interactive(): def modern(): """Run with modern beautiful interactive interface""" try: - from Theme.modern_interactive import run_modern_interactive + from .theme.modern_interactive import run_modern_interactive run_modern_interactive(self.config) except ImportError as e: console.print(f"[bold red]Modern interface not available: {str(e)}[/]") @@ -441,14 +441,14 @@ def modern(): from .interactive_mode import launch_enhanced_interactive_mode launch_enhanced_interactive_mode(self.config) return 0 - + # New textual interface command @app.command("textual", help="Run with modern Textual interface") def textual(): """Run with modern Textual interface""" try: # Import at runtime to avoid dependencies if not used - from Theme.textual_interface import start_textual_interface + from .theme.textual_interface import start_textual_interface # Pass the current CLI instance to maintain state start_textual_interface(self.config) except ImportError as e: @@ -1859,15 +1859,7 @@ def _launch_interactive_mode(self) -> None: """Launch interactive mode with fallback to available interfaces""" try: # Try modern interface first - import sys - import os - - # Add parent directory to path for Theme import - parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - if parent_dir not in sys.path: - sys.path.insert(0, parent_dir) - - from Theme.modern_interactive import run_modern_interactive + from .theme.modern_interactive import run_modern_interactive console.print("[bold green]🚀 Starting modern interactive interface...[/]") run_modern_interactive(self.config) except ImportError as import_err: diff --git a/modules/common_utils.py b/snatch/common_utils.py similarity index 100% rename from modules/common_utils.py rename to snatch/common_utils.py diff --git a/modules/config.py b/snatch/config.py similarity index 87% rename from modules/config.py rename to snatch/config.py index 17bad6b..34821dc 100644 --- a/modules/config.py +++ b/snatch/config.py @@ -124,10 +124,83 @@ def _create_directory(path: str) -> bool: logger.warning(f"Failed to create directory {path}: {str(e)}") return False +def _ensure_directory_exists(path: str) -> str: + """Try to create directory and return the path or None if it fails.""" + if os.path.exists(path): + return path + try: + logger.info(f"Creating directory: {path}") + os.makedirs(path, exist_ok=True) + return path + except OSError as e: + logger.warning(f"Failed to create directory {path}: {str(e)}") + return None + + +def _get_fallback_directory(key: str) -> str: + """Get fallback directory for a specific config key.""" + if key == "video_output": + fallback = str(Path.home() / "Videos" / "Snatch") + elif key == "audio_output": + fallback = str(Path.home() / "Music" / "Snatch") + else: + fallback = os.path.join(tempfile.gettempdir(), "Snatch", key.replace("_dir", "").replace("_output", "")) + + try: + os.makedirs(fallback, exist_ok=True) + logger.info(f"Using fallback directory for {key}: {fallback}") + return fallback + except OSError: + last_resort = os.path.join(os.getcwd(), "downloads", key.replace("_dir", "").replace("_output", "")) + try: + os.makedirs(last_resort, exist_ok=True) + logger.warning(f"Using last resort directory for {key}: {last_resort}") + return last_resort + except OSError: + logger.error(f"Failed to create any directory for {key}") + return os.getcwd() + + +def _set_default_directories(config: dict) -> bool: + """Set default values for missing directory configuration keys.""" + changed = False + directory_keys = ["video_output", "audio_output", "thumbnails_dir", "subtitles_dir", "sessions_dir", "cache_dir"] + + for key in directory_keys: + if key not in config or not config[key]: + base_dir = os.getcwd() + defaults_map = { + "video_output": os.path.join(base_dir, "downloads", "video"), + "audio_output": os.path.join(base_dir, "downloads", "audio"), + "thumbnails_dir": os.path.join(base_dir, "thumbnails"), + "subtitles_dir": os.path.join(base_dir, "subtitles"), + "sessions_dir": os.path.join(base_dir, "sessions"), + "cache_dir": os.path.join(base_dir, "cache"), + } + config[key] = defaults_map.get(key, os.path.join(base_dir, key.replace("_dir", "").replace("_output", ""))) + logger.info(f"Setting default directory for {key}: {config[key]}") + changed = True + + return changed + + def _validate_config_paths(config: dict) -> bool: - """Validate and create output directories if needed""" - from .config_helpers import validate_config_paths - return validate_config_paths(config) + """Validate and create output directories if needed.""" + changed = _set_default_directories(config) + directory_keys = ["video_output", "audio_output", "thumbnails_dir", "subtitles_dir", "sessions_dir", "cache_dir"] + + for key in directory_keys: + path = os.path.abspath(os.path.expanduser(config[key])) + config[key] = path + if not os.path.exists(path): + result = _ensure_directory_exists(path) + if not result: + fallback = _get_fallback_directory(key) + config[key] = fallback + changed = True + logger.info(f"Updated {key} path to fallback: {fallback}") + + return changed def _update_organization_templates(config: dict) -> bool: """Update organization templates with any missing defaults""" diff --git a/modules/config_manager.py b/snatch/config_manager.py similarity index 74% rename from modules/config_manager.py rename to snatch/config_manager.py index 87bb80d..5ec40a8 100644 --- a/modules/config_manager.py +++ b/snatch/config_manager.py @@ -29,7 +29,309 @@ from .cache import DownloadCache from .defaults import CACHE_DIR -from .advanced_config import AdvancedConfigManager, ConfigCategory +class ConfigCategory(Enum): + """Configuration categories for better organization""" + DOWNLOAD = "download" + AUDIO = "audio" + VIDEO = "video" + NETWORK = "network" + INTERFACE = "interface" + ADVANCED = "advanced" + + +@dataclass +class ConfigOption: + """Represents a single configuration option""" + key: str + display_name: str + description: str + value_type: str # "string", "integer", "float", "boolean", "path", "choice" + default_value: Any + category: ConfigCategory + choices: Optional[List[str]] = None + min_value: Optional[Union[int, float]] = None + max_value: Optional[Union[int, float]] = None + validation_regex: Optional[str] = None + requires_restart: bool = False + + +class AdvancedConfigManager: + """Enhanced configuration manager with validation and user-friendly editing""" + + def __init__(self, config_file: str = "config.json"): + self.config_file = config_file + self.config: Dict[str, Any] = {} + self.config_options = self._define_config_options() + self.load_config() + + def _define_config_options(self) -> Dict[str, ConfigOption]: + """Define all available configuration options with metadata""" + options = { + "download_dir": ConfigOption( + "download_dir", "Download Directory", + "Base directory for all downloads", + "path", "downloads", ConfigCategory.DOWNLOAD + ), + "video_output": ConfigOption( + "video_output", "Video Output Directory", + "Directory for video downloads", + "path", "downloads/video", ConfigCategory.VIDEO + ), + "audio_output": ConfigOption( + "audio_output", "Audio Output Directory", + "Directory for audio downloads", + "path", "downloads/audio", ConfigCategory.AUDIO + ), + "max_concurrent": ConfigOption( + "max_concurrent", "Max Concurrent Downloads", + "Maximum number of simultaneous downloads", + "integer", 3, ConfigCategory.DOWNLOAD, min_value=1, max_value=10 + ), + "concurrent_downloads": ConfigOption( + "concurrent_downloads", "Concurrent Fragment Downloads", + "Number of concurrent fragment downloads per file", + "integer", 16, ConfigCategory.DOWNLOAD, min_value=1, max_value=32 + ), + "max_retries": ConfigOption( + "max_retries", "Max Retries", + "Maximum number of retry attempts for failed downloads", + "integer", 3, ConfigCategory.DOWNLOAD, min_value=0, max_value=10 + ), + "retry_delay": ConfigOption( + "retry_delay", "Retry Delay (seconds)", + "Delay between retry attempts", + "integer", 5, ConfigCategory.DOWNLOAD, min_value=1, max_value=60 + ), + "bandwidth_limit": ConfigOption( + "bandwidth_limit", "Bandwidth Limit (MB/s)", + "Download speed limit (0 = unlimited)", + "integer", 0, ConfigCategory.NETWORK, min_value=0, max_value=1000 + ), + "chunk_size": ConfigOption( + "chunk_size", "Chunk Size (bytes)", + "Size of download chunks", + "integer", 1048576, ConfigCategory.NETWORK, min_value=1024, max_value=10485760 + ), + "preferred_video_codec": ConfigOption( + "preferred_video_codec", "Preferred Video Codec", + "Preferred video codec for downloads", + "choice", "h264", ConfigCategory.VIDEO, + choices=["h264", "h265", "vp9", "av1", "any"] + ), + "preferred_video_quality": ConfigOption( + "preferred_video_quality", "Preferred Video Quality", + "Default video quality preference", + "choice", "1080p", ConfigCategory.VIDEO, + choices=["4320p", "2160p", "1440p", "1080p", "720p", "480p", "360p", "best", "worst"] + ), + "video_format_preference": ConfigOption( + "video_format_preference", "Video Format Preference", + "Preferred video container format", + "choice", "mp4", ConfigCategory.VIDEO, + choices=["mp4", "mkv", "webm", "avi", "any"] + ), + "preferred_audio_codec": ConfigOption( + "preferred_audio_codec", "Preferred Audio Codec", + "Preferred audio codec for downloads", + "choice", "aac", ConfigCategory.AUDIO, + choices=["aac", "mp3", "opus", "vorbis", "flac", "any"] + ), + "preferred_audio_quality": ConfigOption( + "preferred_audio_quality", "Preferred Audio Quality", + "Default audio quality preference", + "choice", "192", ConfigCategory.AUDIO, + choices=["320", "256", "192", "128", "96", "best", "worst"] + ), + "high_quality_audio": ConfigOption( + "high_quality_audio", "High Quality Audio", + "Always prefer highest quality audio", + "boolean", True, ConfigCategory.AUDIO + ), + "theme": ConfigOption( + "theme", "Interface Theme", + "Color theme for the interface", + "choice", "default", ConfigCategory.INTERFACE, + choices=["default", "dark", "light", "cyberpunk", "matrix", "ocean"] + ), + "download_history": ConfigOption( + "download_history", "Keep Download History", + "Maintain history of completed downloads", + "boolean", True, ConfigCategory.INTERFACE + ), + "auto_update_check": ConfigOption( + "auto_update_check", "Auto Update Check", + "Automatically check for updates", + "boolean", True, ConfigCategory.INTERFACE + ), + "auto_organize": ConfigOption( + "auto_organize", "Auto Organize Files", + "Automatically organize downloaded files", + "boolean", True, ConfigCategory.DOWNLOAD + ), + "organize": ConfigOption( + "organize", "Enable File Organization", + "Enable file organization features", + "boolean", False, ConfigCategory.DOWNLOAD + ), + "ffmpeg_location": ConfigOption( + "ffmpeg_location", "FFmpeg Location", + "Path to FFmpeg installation", + "path", "", ConfigCategory.ADVANCED, requires_restart=True + ), + "session_expiry": ConfigOption( + "session_expiry", "Session Expiry (seconds)", + "Time before download sessions expire", + "integer", 604800, ConfigCategory.ADVANCED, min_value=3600, max_value=2592000 + ), + "auto_save_interval": ConfigOption( + "auto_save_interval", "Auto Save Interval (seconds)", + "Interval for automatic session saves", + "integer", 30, ConfigCategory.ADVANCED, min_value=10, max_value=300 + ), + "exponential_backoff": ConfigOption( + "exponential_backoff", "Exponential Backoff", + "Use exponential backoff for retries", + "boolean", True, ConfigCategory.ADVANCED + ), + } + return options + + def load_config(self) -> None: + """Load configuration from file""" + try: + if os.path.exists(self.config_file): + with open(self.config_file, 'r') as f: + self.config = json.load(f) + else: + self.config = {} + self._apply_defaults() + except Exception as e: + logging.error(f"Error loading config: {e}") + self.config = {} + self._apply_defaults() + + def _apply_defaults(self) -> None: + """Apply default values for missing configuration options""" + for key, option in self.config_options.items(): + if key not in self.config: + self.config[key] = option.default_value + + def save_config(self) -> bool: + """Save configuration to file""" + try: + if os.path.exists(self.config_file): + backup_file = f"{self.config_file}.backup" + with open(self.config_file, 'r') as src, open(backup_file, 'w') as dst: + dst.write(src.read()) + with open(self.config_file, 'w') as f: + json.dump(self.config, f, indent=4) + return True + except Exception as e: + logging.error(f"Error saving config: {e}") + return False + + def get_value(self, key: str, default: Any = None) -> Any: + """Get configuration value with optional default""" + return self.config.get(key, default) + + def set_value(self, key: str, value: Any) -> bool: + """Set configuration value with validation""" + if key not in self.config_options: + return False + option = self.config_options[key] + if not self._validate_value(option, value): + return False + self.config[key] = value + return True + + def _validate_value(self, option: ConfigOption, value: Any) -> bool: + """Validate a configuration value""" + try: + if option.value_type == "boolean": + return isinstance(value, bool) + elif option.value_type == "integer": + if not isinstance(value, int): + return False + if option.min_value is not None and value < option.min_value: + return False + if option.max_value is not None and value > option.max_value: + return False + elif option.value_type == "float": + if not isinstance(value, (int, float)): + return False + if option.min_value is not None and value < option.min_value: + return False + if option.max_value is not None and value > option.max_value: + return False + elif option.value_type == "string": + return isinstance(value, str) + elif option.value_type == "path": + return isinstance(value, str) + elif option.value_type == "choice": + if option.choices and value not in option.choices: + return False + return True + except Exception: + return False + + def get_options_by_category(self, category: ConfigCategory) -> Dict[str, ConfigOption]: + """Get all configuration options for a specific category""" + return { + key: option for key, option in self.config_options.items() + if option.category == category + } + + def reset_to_defaults(self, category: Optional[ConfigCategory] = None) -> None: + """Reset configuration to defaults (optionally for a specific category)""" + if category: + options = self.get_options_by_category(category) + for key, option in options.items(): + self.config[key] = option.default_value + else: + for key, option in self.config_options.items(): + self.config[key] = option.default_value + + def export_config(self, file_path: str) -> bool: + """Export configuration to a file""" + try: + with open(file_path, 'w') as f: + json.dump(self.config, f, indent=4) + return True + except Exception as e: + logging.error(f"Error exporting config: {e}") + return False + + def import_config(self, file_path: str) -> bool: + """Import configuration from a file""" + try: + with open(file_path, 'r') as f: + imported_config = json.load(f) + valid_config = {} + for key, value in imported_config.items(): + if key in self.config_options: + option = self.config_options[key] + if self._validate_value(option, value): + valid_config[key] = value + self.config.update(valid_config) + return True + except Exception as e: + logging.error(f"Error importing config: {e}") + return False + + def get_config_summary(self) -> Dict[str, Any]: + """Get a summary of current configuration""" + summary = {} + for category in ConfigCategory: + options = self.get_options_by_category(category) + summary[category.value] = { + key: { + "value": self.config.get(key), + "default": option.default_value, + "description": option.description + } + for key, option in options.items() + } + return summary # Initialize console and logger console = Console() diff --git a/modules/constants.py b/snatch/constants.py similarity index 98% rename from modules/constants.py rename to snatch/constants.py index ff80f58..d0699d3 100644 --- a/modules/constants.py +++ b/snatch/constants.py @@ -80,7 +80,6 @@ "audio": "[AUDIO]", "organize": "[ORGANIZE]", "metadata": "[META]", - "organize": "[ORGANIZE]", "config": "[CONFIG]", "cache": "[CACHE]", "session": "[SESSION]", diff --git a/modules/customization_manager.py b/snatch/customization_manager.py similarity index 100% rename from modules/customization_manager.py rename to snatch/customization_manager.py diff --git a/modules/Supported-sites.txt b/snatch/data/Supported-sites.txt similarity index 100% rename from modules/Supported-sites.txt rename to snatch/data/Supported-sites.txt diff --git a/modules/defaults.py b/snatch/defaults.py similarity index 98% rename from modules/defaults.py rename to snatch/defaults.py index 2ec243d..e4ed5cb 100644 --- a/modules/defaults.py +++ b/snatch/defaults.py @@ -21,7 +21,7 @@ part_ext = ".part" speedtestresult = "speedtest_result.json" bestaudio_ext = "bestaudio/best" -VERSION = "1.8.1" # Centralized version definition +from .constants import VERSION # Version defined in constants.py LOG_FILE = "download_log.txt" SPINNER_CHARS = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"] # Default throttling and retry constants @@ -29,7 +29,7 @@ MAX_RETRIES = 10 # Maximum number of retry attempts RETRY_SLEEP_BASE = 5 # Base seconds to wait before retry (used in exponential backoff) MAX_CONCURRENT_FRAGMENTS = 10 # Maximum number of parallel fragment downloads -DEFAULT_TIMEOUT = 60 # Default connection timeout in seconds +from .constants import DEFAULT_TIMEOUT # Timeout defined in constants.py DOWNLOAD_SESSIONS_FILE = "download_sessions.json" # New session data file # File organization templates @@ -251,8 +251,8 @@ def signal_handler(sig, frame): ║ exit, quit, q Exit the application ║ ║ ║ ║ 📚 BATCH OPERATIONS: ║ -║ python Snatch.py "URL1" "URL2" "URL3" ║ -║ python Snatch.py "URL1" "URL2" --audio-only --stats ║ +║ snatch "URL1" "URL2" "URL3" ║ +║ snatch "URL1" "URL2" --audio-only --stats ║ ║ ║ ╚══════════════════════════════════════════════════════════════════════════╝ """ diff --git a/modules/error_handler.py b/snatch/error_handler.py similarity index 100% rename from modules/error_handler.py rename to snatch/error_handler.py diff --git a/modules/ffmpeg_helper.py b/snatch/ffmpeg_helper.py similarity index 100% rename from modules/ffmpeg_helper.py rename to snatch/ffmpeg_helper.py diff --git a/modules/file_organizer.py b/snatch/file_organizer.py similarity index 100% rename from modules/file_organizer.py rename to snatch/file_organizer.py diff --git a/modules/help_text.py b/snatch/help_text.py similarity index 100% rename from modules/help_text.py rename to snatch/help_text.py diff --git a/modules/interactive_mode.py b/snatch/interactive_mode.py similarity index 99% rename from modules/interactive_mode.py rename to snatch/interactive_mode.py index 14e8534..d8065f2 100644 --- a/modules/interactive_mode.py +++ b/snatch/interactive_mode.py @@ -62,7 +62,7 @@ from .progress import HolographicProgress from .common_utils import sanitize_filename, format_size from .audio_processor import EnhancedAudioProcessor -from .advanced_config import AdvancedConfigManager, ConfigCategory +from .config_manager import AdvancedConfigManager, ConfigCategory from .p2p import P2PManager from .network import NetworkManager @@ -2561,19 +2561,12 @@ def launch_enhanced_interactive_mode(config: Dict[str, Any]) -> None: try: # First try to launch the modern interface logging.info("Launching modern interactive interface...") - from Theme.modern_interactive import run_modern_interactive + from .theme.modern_interactive import run_modern_interactive run_modern_interactive(config) - + except Exception as e: logging.warning(f"Modern interface failed: {e}") - logging.info("Falling back to working interface...") - try: - # Fall back to working interface - from Theme.working_interactive import run_working_interactive - run_working_interactive(config) - except Exception as fallback_error: - logging.warning(f"Working interface failed: {fallback_error}") - logging.info("Falling back to standard textual interface...") + logging.info("Falling back to standard textual interface...") try: # Fall back to standard textual interface launch_textual_interface(config) diff --git a/modules/logging_config.py b/snatch/logging_config.py similarity index 100% rename from modules/logging_config.py rename to snatch/logging_config.py diff --git a/modules/manager.py b/snatch/manager.py similarity index 100% rename from modules/manager.py rename to snatch/manager.py diff --git a/modules/metadata.py b/snatch/metadata.py similarity index 100% rename from modules/metadata.py rename to snatch/metadata.py diff --git a/modules/network.py b/snatch/network.py similarity index 100% rename from modules/network.py rename to snatch/network.py diff --git a/modules/p2p.py b/snatch/p2p.py similarity index 100% rename from modules/p2p.py rename to snatch/p2p.py diff --git a/modules/performance_monitor.py b/snatch/performance_monitor.py similarity index 100% rename from modules/performance_monitor.py rename to snatch/performance_monitor.py diff --git a/modules/progress.py b/snatch/progress.py similarity index 100% rename from modules/progress.py rename to snatch/progress.py diff --git a/modules/session.py b/snatch/session.py similarity index 100% rename from modules/session.py rename to snatch/session.py diff --git a/modules/standalone_audio.py b/snatch/standalone_audio.py similarity index 100% rename from modules/standalone_audio.py rename to snatch/standalone_audio.py diff --git a/Theme/__init__.py b/snatch/theme/__init__.py similarity index 51% rename from Theme/__init__.py rename to snatch/theme/__init__.py index 2984411..82dcb00 100644 --- a/Theme/__init__.py +++ b/snatch/theme/__init__.py @@ -1,10 +1,9 @@ """ -Theme package for SnatchV2 interactive interfaces. +Theme sub-package for Snatch interactive interfaces. -This package contains modern and enhanced interactive interfaces for SnatchV2. +Contains modern and enhanced interactive interfaces using Textual framework. """ -# Import main interface functions try: from .modern_interactive import run_modern_interactive, ModernSnatchApp except ImportError: @@ -16,14 +15,8 @@ except ImportError: start_textual_interface = None -try: - from .cyberpunk_interactive import start_cyberpunk_interface -except ImportError: - start_cyberpunk_interface = None - __all__ = [ 'run_modern_interactive', - 'ModernSnatchApp', + 'ModernSnatchApp', 'start_textual_interface', - 'start_cyberpunk_interface' -] \ No newline at end of file +] diff --git a/Theme/modern_interactive.py b/snatch/theme/modern_interactive.py similarity index 99% rename from Theme/modern_interactive.py rename to snatch/theme/modern_interactive.py index b240ef7..1bc45fd 100644 --- a/Theme/modern_interactive.py +++ b/snatch/theme/modern_interactive.py @@ -34,10 +34,10 @@ import yt_dlp # Import the actual working download manager -from .manager import DownloadManager, AsyncDownloadManager -from .session import SessionManager -from .cache import DownloadCache -from .common_utils import sanitize_filename, format_size +from ..manager import DownloadManager, AsyncDownloadManager +from ..session import SessionManager +from ..cache import DownloadCache +from ..common_utils import sanitize_filename, format_size # Constants DEFAULT_DOWNLOAD_DIR = "~/Downloads/Snatch" diff --git a/Theme/textual_interface.py b/snatch/theme/textual_interface.py similarity index 99% rename from Theme/textual_interface.py rename to snatch/theme/textual_interface.py index 421f291..02db8b9 100644 --- a/Theme/textual_interface.py +++ b/snatch/theme/textual_interface.py @@ -49,11 +49,11 @@ from textual.widget import Widget from textual.reactive import reactive -from .constants import APP_VERSION -from .defaults import BANNER_ART, HELP_CONTENT -from .audio_processor import EnhancedAudioProcessor -from .common_utils import sanitize_filename, format_size, ensure_dir -from .network import NetworkManager, SpeedTestResult +from ..constants import VERSION as APP_VERSION +from ..defaults import BANNER_ART, HELP_CONTENT +from ..audio_processor import EnhancedAudioProcessor +from ..common_utils import sanitize_filename, format_size, ensure_dir +from ..network import NetworkManager, SpeedTestResult # Import conditionally to handle non-interactive environments diff --git a/Documentation/IMPROVEMENTS.md b/tests/__init__.py similarity index 100% rename from Documentation/IMPROVEMENTS.md rename to tests/__init__.py diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..7dbaa67 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,32 @@ +"""Shared test fixtures for Snatch test suite.""" +import os +import tempfile + +import pytest + + +@pytest.fixture +def temp_dir(): + """Provide a temporary directory that's cleaned up after the test.""" + with tempfile.TemporaryDirectory() as d: + yield d + + +@pytest.fixture +def mock_config(temp_dir): + """Provide a mock configuration dictionary with temp directories.""" + return { + "video_output": os.path.join(temp_dir, "video"), + "audio_output": os.path.join(temp_dir, "audio"), + "sessions_dir": os.path.join(temp_dir, "sessions"), + "cache_dir": os.path.join(temp_dir, "cache"), + "ffmpeg_location": "", + "max_concurrent": 3, + "organize": False, + "organization_templates": { + "audio": "{uploader}/{album}/{title}", + "video": "{uploader}/{year}/{title}", + }, + "upscaling": {"enabled": False}, + "audio_enhancement": {"enabled": False}, + } diff --git a/tests/test_cache.py b/tests/test_cache.py new file mode 100644 index 0000000..ffae02b --- /dev/null +++ b/tests/test_cache.py @@ -0,0 +1,70 @@ +"""Tests for the DownloadCache module.""" +import os +import tempfile +from unittest.mock import patch + +import pytest + + +@pytest.fixture +def cache_dir(): + """Provide a temporary cache directory.""" + with tempfile.TemporaryDirectory() as d: + yield d + + +@pytest.fixture +def cache(cache_dir): + """Provide a DownloadCache instance with a temp directory.""" + with patch("snatch.cache.CACHE_DIR", cache_dir): + from snatch.cache import DownloadCache + + return DownloadCache(max_memory_entries=10, cache_ttl=3600) + + +class TestDownloadCache: + def test_set_and_get(self, cache): + cache.set("key1", {"url": "http://example.com", "title": "Test"}) + result = cache.get("key1") + assert result is not None + assert result["url"] == "http://example.com" + assert result["title"] == "Test" + + def test_get_nonexistent_key(self, cache): + assert cache.get("nonexistent") is None + + def test_get_empty_key(self, cache): + assert cache.get("") is None + + def test_set_empty_key(self, cache): + assert cache.set("", {"data": "test"}) is False + + def test_set_empty_value(self, cache): + assert cache.set("key", {}) is False + + def test_invalidate(self, cache): + cache.set("key1", {"data": "test"}) + cache.invalidate("key1") + assert cache.get("key1") is None + + def test_clear(self, cache): + cache.set("key1", {"data": "test1"}) + cache.set("key2", {"data": "test2"}) + cache.clear() + assert cache.get("key1") is None + assert cache.get("key2") is None + + def test_get_returns_copy(self, cache): + original = {"data": "test"} + cache.set("key1", original) + result = cache.get("key1") + result["data"] = "modified" + # Original cached value should be unchanged + assert cache.get("key1")["data"] == "test" + + def test_get_stats(self, cache): + cache.set("key1", {"data": "test"}) + stats = cache.get_stats() + assert stats["memory_entries"] == 1 + assert stats["max_memory_entries"] == 10 + assert stats["cache_ttl"] == 3600 diff --git a/tests/test_cli.py b/tests/test_cli.py new file mode 100644 index 0000000..98e75d7 --- /dev/null +++ b/tests/test_cli.py @@ -0,0 +1,28 @@ +"""Tests for CLI entry point and version.""" +import subprocess +import sys + + +def test_module_runnable(): + """snatch.cli should be runnable as a module with --help.""" + result = subprocess.run( + [sys.executable, "-m", "snatch.cli", "--help"], + capture_output=True, + text=True, + timeout=30, + ) + # --help should succeed (exit code 0) + assert result.returncode == 0 + assert "snatch" in result.stdout.lower() or "usage" in result.stdout.lower() + + +def test_version_flag(): + """snatch.cli --version should print the version.""" + result = subprocess.run( + [sys.executable, "-m", "snatch.cli", "version"], + capture_output=True, + text=True, + timeout=30, + ) + # Should contain version string somewhere in output + assert "2.0.0" in result.stdout or "2.0.0" in result.stderr or result.returncode == 0 diff --git a/tests/test_common_utils.py b/tests/test_common_utils.py new file mode 100644 index 0000000..7df653f --- /dev/null +++ b/tests/test_common_utils.py @@ -0,0 +1,72 @@ +"""Tests for common utility functions.""" +import os +import platform + +from snatch.common_utils import sanitize_filename, format_size, is_windows + + +class TestSanitizeFilename: + def test_removes_invalid_chars(self): + assert sanitize_filename('file<>:"/\\|?*name') == "filename" + + def test_strips_leading_trailing_dots(self): + assert sanitize_filename("...test...") == "test" + + def test_strips_leading_trailing_spaces(self): + assert sanitize_filename(" test ") == "test" + + def test_replaces_tabs_and_newlines(self): + result = sanitize_filename("hello\tworld\ntest") + assert "\t" not in result + assert "\n" not in result + + def test_empty_string_returns_download(self): + assert sanitize_filename("") == "download" + + def test_reserved_windows_names(self): + assert sanitize_filename("CON") == "download" + assert sanitize_filename("PRN") == "download" + assert sanitize_filename("NUL") == "download" + assert sanitize_filename("COM1") == "download" + assert sanitize_filename("LPT1") == "download" + + def test_truncates_long_filenames(self): + long_name = "a" * 300 + result = sanitize_filename(long_name) + assert len(result) <= 240 + + def test_normal_filename_unchanged(self): + assert sanitize_filename("my_video.mp4") == "my_video.mp4" + + +class TestFormatSize: + def test_zero_bytes(self): + assert format_size(0) == "0 B" + + def test_negative_bytes(self): + assert format_size(-1) == "0 B" + + def test_bytes(self): + assert format_size(500) == "500.00 B" + + def test_kilobytes(self): + assert format_size(1024) == "1.00 KB" + + def test_megabytes(self): + assert format_size(1024 * 1024) == "1.00 MB" + + def test_gigabytes(self): + assert format_size(1024**3) == "1.00 GB" + + def test_custom_precision(self): + assert format_size(1500, precision=1) == "1.5 KB" + + +class TestIsWindows: + def test_returns_bool(self): + result = is_windows() + assert isinstance(result, bool) + + def test_matches_platform(self): + expected = platform.system().lower() == "windows" + assert is_windows() == expected diff --git a/tests/test_constants.py b/tests/test_constants.py new file mode 100644 index 0000000..bd1e05f --- /dev/null +++ b/tests/test_constants.py @@ -0,0 +1,42 @@ +"""Tests for version consistency and constants module.""" + + +def test_version_is_2_0_0(): + """Version should be 2.0.0 across all locations.""" + from snatch.constants import VERSION + + assert VERSION == "2.0.0" + + +def test_init_version_matches_constants(): + """__init__.py version should match constants.py.""" + import snatch + from snatch.constants import VERSION + + assert snatch.__version__ == VERSION + + +def test_defaults_version_matches_constants(): + """defaults.py VERSION should be imported from constants.""" + from snatch.constants import VERSION + from snatch.defaults import VERSION as DEFAULTS_VERSION + + assert DEFAULTS_VERSION == VERSION + + +def test_no_duplicate_process_prefix_keys(): + """PROCESS_PREFIXES should have no duplicate keys.""" + from snatch.constants import PROCESS_PREFIXES + + # Python dicts can't have actual duplicate keys, but the source file + # originally had duplicate "organize" keys. Verify the dict is well-formed. + assert "organize" in PROCESS_PREFIXES + assert len(PROCESS_PREFIXES) >= 10 + + +def test_default_timeout_consistency(): + """DEFAULT_TIMEOUT should be consistent between modules.""" + from snatch.constants import DEFAULT_TIMEOUT + from snatch.defaults import DEFAULT_TIMEOUT as DEFAULTS_TIMEOUT + + assert DEFAULT_TIMEOUT == DEFAULTS_TIMEOUT