diff --git a/README.md b/README.md index d780b97..87db5fe 100644 --- a/README.md +++ b/README.md @@ -71,17 +71,31 @@ ytsage ### πŸ“¦ Pre-built Executables -- πŸͺŸ **Windows:** - - YTSage-v<version>.exe (Standard installer) - - YTSage-v<version>-ffmpeg.exe (With FFmpeg bundled) - - YTSage-v<version>-portable (Portable version, no installation required) - - YTSage-v<version>-ffmpeg-portable.zip (Portable with FFmpeg, zipped) -- 🐧 **Linux:** - - YTSage-v<version>-amd64.deb (Debian package) - - YTSage-v<version>-x86_64.AppImage (AppImage, portable) -- 🍎 **macOS:** - - YTSage-v<version>-macOS.zip (Zipped application) - - YTSage-v<version>.dmg (Disk image installer) +#### πŸͺŸ Windows + +| Format | Description | +|--------|-------------| +| `YTSage-v.exe` | Standard installer | +| `YTSage-v-ffmpeg.exe` | With FFmpeg bundled | +| `YTSage-v-portable` | Portable version, no installation required | +| `YTSage-v-ffmpeg-portable.zip` | Portable with FFmpeg, zipped | + +#### 🐧 Linux + +| Format | Description | +|--------|-------------| +| `YTSage-v-amd64.deb` | Debian package | +| `YTSage-v-x86_64.AppImage` | AppImage, portable | +| `YTSage-v-x86_64.rpm` | RPM package | + +#### 🍎 macOS + +| Format | Description | +|--------|-------------| +| `YTSage-v-arm64.app.zip` | Zipped application for ARM64 | +| `YTSage-v-arm64.dmg` | Disk image installer for ARM64 | +| `YTSage-v-x64.app.zip` | Zipped application for x64 | +| `YTSage-v-x64.dmg` | Disk image installer for x64 | > [πŸ‘‰ Download Latest Release](https://github.com/oop7/YTSage/releases/latest) @@ -212,6 +226,16 @@ python main.py - **Format table not displaying:** Update yt-dlp to the latest version. - **Download fails:** Check your internet connection and ensure the video is available. +- **Specific download errors:** + - **Private videos:** Use cookie authentication to access private content. + - **Age-restricted content:** Login to YouTube account to view age-restricted videos. + - **Geo-blocked videos:** Consider using a VPN to bypass regional restrictions. + - **Removed/deleted videos:** Video is no longer available on YouTube. + - **Live streams:** Live streams cannot be downloaded; wait for the stream to end. + - **Network errors:** Check your internet connection and try again. + - **Invalid URLs:** Ensure the URL is correct and from a supported platform. + - **Premium content:** Requires YouTube Premium membership. + - **Copyright blocks:** Content is blocked due to copyright restrictions. - **Separate video and audio files after download:** This happens when FFmpeg is missing or not detected. YTSage requires FFmpeg to merge high-quality video and audio streams. - **Solution:** Ensure FFmpeg is installed and accessible in your system's PATH. For Windows users, the easiest option is to download the `YTSage-v-ffmpeg.exe` file, which comes bundled with FFmpeg. @@ -226,7 +250,7 @@ Some antivirus software may flag the `.exe` files as false positives. This is a **Safe alternatives:** - βœ… **Use pip installation:** `pip install ytsage` (recommended) -- βœ… **Build from source** +- βœ… **Build from source**: by following this [guide](.github/CI_CD_README.md) - βœ… **Whitelist the application** in your antivirus software #### 🍎 macOS: "App is damaged and can’t be opened" @@ -280,45 +304,61 @@ This document describes the organized folder structure of YTSage. ### πŸ“ Project Structure ``` -YTSage-main/ -β”œβ”€β”€ πŸ“ assets/ # Static assets and resources -β”‚ β”œβ”€β”€ πŸ“ Icon/ # Application icons +YTSage/ +β”œβ”€β”€ πŸ“ .github/ # GitHub configuration +β”‚ β”œβ”€β”€ πŸ“„ CI_CD_README.md # CI/CD documentation +β”‚ β”œβ”€β”€ πŸ“ ISSUE_TEMPLATE/ # Issue templates +β”‚ β”‚ └── πŸ›-bug-report.md # Bug report template +β”‚ └── πŸ“ workflows/ # GitHub Actions workflows +β”‚ β”œβ”€β”€ build-linux.yml # Linux build workflow +β”‚ β”œβ”€β”€ build-macos.yml # macOS build workflow +β”‚ └── build-windows.yml # Windows build workflow +β”œβ”€β”€ .gitignore # Git ignore rules +β”œβ”€β”€ πŸ“ assets/ # Static assets and resources +β”‚ β”œβ”€β”€ πŸ“ branding/ # Branding assets +β”‚ β”‚ β”œβ”€β”€ πŸ“ icons/ # Application icons +β”‚ β”‚ β”‚ β”œβ”€β”€ icon.icns # macOS icon +β”‚ β”‚ β”‚ β”œβ”€β”€ icon.png # PNG icon +β”‚ β”‚ β”‚ └── YTSage.ico # Windows icon +β”‚ β”‚ └── πŸ“ screenshots/ # Screenshots for documentation +β”‚ β”‚ β”œβ”€β”€ audio_format.png +β”‚ β”‚ β”œβ”€β”€ main.png +β”‚ β”‚ β”œβ”€β”€ playlist.png +β”‚ β”‚ └── subtitle_options.png +β”‚ β”œβ”€β”€ πŸ“ Icon/ # Legacy icon directory β”‚ β”‚ └── icon.png β”‚ └── πŸ“ sound/ # Audio files β”‚ └── notification.mp3 -β”‚ -β”œβ”€β”€ πŸ“ src/ # Source code -β”‚ β”œβ”€β”€ πŸ“ core/ # Core business logic -β”‚ β”‚ β”œβ”€β”€ __init__.py # Core package init -β”‚ β”‚ β”œβ”€β”€ ytsage_downloader.py # Download functionality -β”‚ β”‚ β”œβ”€β”€ ytsage_ffmpeg.py # FFmpeg integration -β”‚ β”‚ β”œβ”€β”€ ytsage_style.py # UI styling -β”‚ β”‚ β”œβ”€β”€ ytsage_utils.py # Utility functions -β”‚ β”‚ └── ytsage_yt_dlp.py # yt-dlp integration -β”‚ β”‚ -β”‚ β”œβ”€β”€ πŸ“ gui/ # User interface components -β”‚ β”‚ β”œβ”€β”€ πŸ“ dialogs/ # Dialog classes -β”‚ β”‚ β”‚ β”œβ”€β”€ __init__.py # Dialogs package init (re-exports all) -β”‚ β”‚ β”‚ β”œβ”€β”€ ytsage_dialogs_base.py # Basic dialogs (Log, About) -β”‚ β”‚ β”‚ β”œβ”€β”€ ytsage_dialogs_custom.py # Custom functionality dialogs -β”‚ β”‚ β”‚ β”œβ”€β”€ ytsage_dialogs_ffmpeg.py # FFmpeg-related dialogs -β”‚ β”‚ β”‚ β”œβ”€β”€ ytsage_dialogs_selection.py # Selection dialogs -β”‚ β”‚ β”‚ β”œβ”€β”€ ytsage_dialogs_settings.py # Settings dialogs -β”‚ β”‚ β”‚ └── ytsage_dialogs_update.py # Update dialogs -β”‚ β”‚ β”‚ -β”‚ β”‚ β”œβ”€β”€ __init__.py # GUI package init -β”‚ β”‚ β”œβ”€β”€ ytsage_gui_dialogs.py # Dialog aggregator (backward compatibility) -β”‚ β”‚ β”œβ”€β”€ ytsage_gui_format_table.py # Format table functionality -β”‚ β”‚ β”œβ”€β”€ ytsage_gui_main.py # Main application window -β”‚ β”‚ └── ytsage_gui_video_info.py # Video information display -β”‚ β”‚ -β”‚ └── __init__.py # Main package init -β”‚ -β”œβ”€β”€ πŸ“„ main.py # Application entry point -β”œβ”€β”€ πŸ“„ requirements.txt # Python dependencies -β”œβ”€β”€ πŸ“„ README.md # Project documentation β”œβ”€β”€ πŸ“„ LICENSE # License file -└── πŸ“„ .gitignore # Git ignore rules +β”œβ”€β”€ πŸ“„ main.py # Application entry point +β”œβ”€β”€ πŸ“„ README.md # Project documentation +β”œβ”€β”€ πŸ“„ requirements.txt # Python dependencies +└── πŸ“ src/ # Source code + β”œβ”€β”€ πŸ“„ __init__.py # Main package init + β”œβ”€β”€ πŸ“ core/ # Core business logic + β”‚ β”œβ”€β”€ πŸ“„ __init__.py # Core package init + β”‚ β”œβ”€β”€ πŸ“„ ytsage_downloader.py # Download functionality + β”‚ β”œβ”€β”€ πŸ“„ ytsage_ffmpeg.py # FFmpeg integration + β”‚ β”œβ”€β”€ πŸ“„ ytsage_logging.py # Logging utilities + β”‚ β”œβ”€β”€ πŸ“„ ytsage_style.py # UI styling + β”‚ β”œβ”€β”€ πŸ“„ ytsage_utils.py # Utility functions + β”‚ └── πŸ“„ ytsage_yt_dlp.py # yt-dlp integration + β”œβ”€β”€ πŸ“ gui/ # User interface components + β”‚ β”œβ”€β”€ πŸ“„ __init__.py # GUI package init + β”‚ β”œβ”€β”€ πŸ“„ ytsage_gui_format_table.py # Format table functionality + β”‚ β”œβ”€β”€ πŸ“„ ytsage_gui_main.py # Main application window + β”‚ β”œβ”€β”€ πŸ“„ ytsage_gui_video_info.py # Video information display + β”‚ └── πŸ“ ytsage_gui_dialogs/ # Dialog classes + β”‚ β”œβ”€β”€ πŸ“„ __init__.py # Dialogs package init + β”‚ β”œβ”€β”€ πŸ“„ ytsage_dialogs_base.py # Basic dialogs + β”‚ β”œβ”€β”€ πŸ“„ ytsage_dialogs_custom.py # Custom functionality dialogs + β”‚ β”œβ”€β”€ πŸ“„ ytsage_dialogs_ffmpeg.py # FFmpeg-related dialogs + β”‚ β”œβ”€β”€ πŸ“„ ytsage_dialogs_selection.py # Selection dialogs + β”‚ β”œβ”€β”€ πŸ“„ ytsage_dialogs_settings.py # Settings dialogs + β”‚ └── πŸ“„ ytsage_dialogs_update.py # Update dialogs + └── πŸ“ utils/ # Utility modules + β”œβ”€β”€ πŸ“„ __init__.py # Utils package init + └── πŸ“„ ytsage_constants.py # Application constants ``` @@ -327,11 +367,14 @@ YTSage-main/