{"id":30380533,"url":"https://github.com/oop7/YTSage","last_synced_at":"2025-08-20T21:03:40.269Z","repository":{"id":274624848,"uuid":"896163475","full_name":"oop7/YTSage","owner":"oop7","description":"Modern YouTube downloader with a clean PySide6 interface. Download videos in any quality, extract audio, fetch subtitles, sponserBlock, and view video metadata. Built with yt-dlp for reliable performance.","archived":false,"fork":false,"pushed_at":"2025-08-16T12:32:52.000Z","size":354,"stargazers_count":1950,"open_issues_count":7,"forks_count":120,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-08-16T14:01:31.072Z","etag":null,"topics":["pyside6","python","youtube-dl","youtube-downloader","yt-dlp","yt-dlp-gui"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oop7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-29T17:15:45.000Z","updated_at":"2025-08-16T13:54:32.000Z","dependencies_parsed_at":"2025-05-22T13:16:21.790Z","dependency_job_id":null,"html_url":"https://github.com/oop7/YTSage","commit_stats":null,"previous_names":["oop7/ytsage"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/oop7/YTSage","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oop7%2FYTSage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oop7%2FYTSage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oop7%2FYTSage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oop7%2FYTSage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oop7","download_url":"https://codeload.github.com/oop7/YTSage/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oop7%2FYTSage/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271385622,"owners_count":24750506,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-20T02:00:09.606Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["pyside6","python","youtube-dl","youtube-downloader","yt-dlp","yt-dlp-gui"],"created_at":"2025-08-20T21:01:19.153Z","updated_at":"2025-08-20T21:03:40.244Z","avatar_url":"https://github.com/oop7.png","language":"Python","readme":"\u003cdiv align=\"center\"\u003e\n\n# 🎥 YTSage\n\n\u003cimg src=\"https://github.com/user-attachments/assets/f95f7bfb-8591-4d32-b795-68e61efd670c\" width=\"800\" alt=\"YTSage Interface\"/\u003e\n\n[![PyPI version](https://img.shields.io/pypi/v/ytsage?color=dc2626\u0026style=for-the-badge\u0026logo=pypi\u0026logoColor=white)](https://badge.fury.io/py/ytsage)\n[![License: MIT](https://img.shields.io/badge/License-MIT-374151?style=for-the-badge\u0026logo=opensource\u0026logoColor=white)](https://opensource.org/licenses/MIT)\n[![Python 3.7+](https://img.shields.io/badge/python-3.7+-1f2937?style=for-the-badge\u0026logo=python\u0026logoColor=white)](https://www.python.org/downloads/)\n[![Downloads](https://img.shields.io/pepy/dt/ytsage?color=4b5563\u0026style=for-the-badge\u0026label=downloads\u0026logo=download\u0026logoColor=white)](https://pepy.tech/project/ytsage)\n[![GitHub Stars](https://img.shields.io/github/stars/oop7/YTSage?color=dc2626\u0026style=for-the-badge\u0026logo=github\u0026logoColor=white)](https://github.com/oop7/YTSage/stargazers)\n\n**A modern YouTube downloader with a clean PySide6 interface.**  \nDownload videos in any quality, extract audio, fetch subtitles, and more.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e •\n  \u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e •\n  \u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e •\n  \u003ca href=\"#screenshots\"\u003eScreenshots\u003c/a\u003e •\n  \u003ca href=\"#troubleshooting\"\u003eTroubleshooting\u003c/a\u003e •\n  \u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\n\u003c/p\u003e\n\n\u003c/div\u003e\n\n---\n\n\u003ca id=\"why-ytsage\"\u003e\u003c/a\u003e\n## ❓ Why YTSage?\n\nYTSage is designed for users who want a **simple yet powerful YouTube downloader**. Unlike other tools, it offers:\n\n- A clean, modern PySide6 interface\n- One-click downloads for video, audio, and subtitles\n- Advanced features like SponsorBlock, subtitle merging, and playlist selection\n- Cross-platform support and easy installation\n\n\u003ca id=\"features\"\u003e\u003c/a\u003e\n## ✨ Features\n\n\u003cdiv align=\"center\"\u003e\n\n| Core Features                     | Advanced Features                       | Extra Features                     |\n|-----------------------------------|-----------------------------------------|------------------------------------|\n| 🎥 Format Table                   | 🚫 SponsorBlock Integration             | 💾 Save Download Path             |\n| 🎵 Audio Extraction               | 📝 Multi-Subtitle Select \u0026 Merge        | 🔄 Auto-Update yt-dlp                  |\n| ✨ Simple UI                      |  💾 Save Description                    | 🛠️ FFmpeg/yt-dlp Detection         |\n| 📋 Playlist Support              |  🖼️ Save thumbnail                       | ⚙️ Custom Commands                 |\n| 🖼️ Playlist Selector             | 🚀 Speed Limiter                        | 🍪 Login with Cookies              |\n| 📑 Embed Chapters                | ✂️ Trim Video Sections                   |                                    |\n\n\u003c/div\u003e\n\n\u003ca id=\"installation\"\u003e\u003c/a\u003e\n## 🚀 Installation\n\n### ⚡ Quick Install (Recommended)\n\nInstall YTSage from PyPI:\n\n```bash\npip install ytsage\n```\n\nThen launch the app:\n\n```bash\nytsage\n```\n\n### 📦 Pre-built Executables\n\n- 🪟 **Windows:** \u003ccode style=\"background-color: #333842; color: #C9D1D9; padding: 3px 6px; border-radius: 6px; font-family: monospace;\"\u003eYTSage-v\u0026lt;version\u0026gt;.exe\u003c/code\u003e / \u003ccode style=\"background-color: #333842; color: #C9D1D9; padding: 3px 6px; border-radius: 6px; font-family: monospace;\"\u003eYTSage-v\u0026lt;version\u0026gt;-ffmpeg.exe\u003c/code\u003e (with FFmpeg)\n- 🐧 **Linux:** \u003ccode style=\"background-color: #333842; color: #C9D1D9; padding: 3px 6px; border-radius: 6px; font-family: monospace;\"\u003eYTSage-v\u0026lt;version\u0026gt;-amd64.deb\u003c/code\u003e / \u003ccode style=\"background-color: #333842; color: #C9D1D9; padding: 3px 6px; border-radius: 6px; font-family: monospace;\"\u003eYTSage-v\u0026lt;version\u0026gt;-x86_64.AppImage\u003c/code\u003e\n- 🍎 **macOS:** \u003ccode style=\"background-color: #333842; color: #C9D1D9; padding: 3px 6px; border-radius: 6px; font-family: monospace;\"\u003eYTSage-v\u0026lt;version\u0026gt;-macOS.zip\u003c/code\u003e / \u003ccode style=\"background-color: #333842; color: #C9D1D9; padding: 3px 6px; border-radius: 6px; font-family: monospace;\"\u003eYTSage-v\u0026lt;version\u0026gt;.dmg\u003c/code\u003e\n\n\u003e [👉 Download Latest Release](https://github.com/oop7/YTSage/releases/latest)\n\n\u003cdetails\u003e\n\u003csummary\u003e🛠️ Manual Installation from Source\u003c/summary\u003e\n\n### 1. Clone the Repository\n\n```bash\ngit clone https://github.com/oop7/YTSage.git\ncd YTSage\n```\n\n### 2. Install Dependencies\n\n#### ⚡ With uv\n\n```bash\nuv pip install -r requirements.txt\n```\n\n#### 📦 Or with standard pip\n\n```bash\npip install -r requirements.txt\n```\n\n### 3. Run the Application\n\n```bash\npython main.py\n```\n\n\u003c/details\u003e\n\n\u003ca id=\"screenshots\"\u003e\u003c/a\u003e\n## 📸 Screenshots\n\n\u003cdiv align=\"center\"\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"https://github.com/user-attachments/assets/f95f7bfb-8591-4d32-b795-68e61efd670c\" alt=\"Main Interface\" width=\"400\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"https://github.com/user-attachments/assets/f7b3ebab-3054-4c77-8109-c899a8b10047\" alt=\"Playlist Download\" width=\"400\"/\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cem\u003eMain Interface\u003c/em\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cem\u003ePlaylist Download\u003c/em\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"https://github.com/user-attachments/assets/a80d2ae2-0031-4ed0-bee4-93293634c62a\" alt=\"Audio Format Selection with Save Thumbnail\" width=\"400\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"https://github.com/user-attachments/assets/5236e3cc-8a8d-4d85-a660-782a740ef9af\" alt=\"Subtitle Options merged with Remove Sponsor Segments\" width=\"400\"/\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cem\u003eAudio Format\u003c/em\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cem\u003eSubtitle Options\u003c/em\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\u003ca id=\"usage\"\u003e\u003c/a\u003e\n## 📖 Usage\n\n\u003cdetails\u003e\n\u003csummary\u003e🎯 Basic Usage\u003c/summary\u003e\n\n1. **Launch YTSage**\n2. **Paste YouTube URL** (or use \"Paste URL\" button)\n3. **Click \"Analyze\"**\n4. **Select Format:**\n   - `Video` for video downloads\n   - `Audio Only` for audio extraction\n5. **Choose Options:**\n   - Enable subtitles \u0026 select language\n   - Enable subtitle merge\n   - Save thumbnail\n   - Remove sponsor segments\n   - Save description\n   - Embed chapters\n6. **Select Output Directory**\n7. **Click \"Download\"**\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e📋 Playlist Download\u003c/summary\u003e\n\n1. **Paste Playlist URL**\n2. **Click \"Analyze\"**\n3. **Select videos from the playlist selector (optional, defaults to all)**\n4. **Choose desired format/quality**\n5. **Click \"Download\"**\n\n\u003e 💡 The application automatically handles the download queue\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e🧰 Advanced Options\u003c/summary\u003e\n\n- **Quality Selection:** Choose the highest resolution for best quality\n- **Subtitle Options:** Filter languages and embed into video\n- **Custom Commands:** Access advanced yt-dlp features\n- **Save Description:** Save the description of the video\n- **Save Thumbnail:** Save the thumbnail of the video\n- **Embed Chapters:** Embed chapter markers as metadata in the downloaded video file for compatible video players\n- **Remove Sponsor Segments:** Remove sponsor segments from the video\n- **Speed Limiter:** Limit the download speed\n- **Login with Cookies:** Login to YouTube using cookies to access private content  \n  How to use it:\n  1. Extract cookies from your browser using an extension like [cookie-editor](https://github.com/moustachauve/cookie-editor?tab=readme-ov-file)\n  2. Copy the cookies in Netscape format\n  3. Create a file named `cookies.txt` and paste the cookies into it\n  4. Select the `cookies.txt` file in the app\n- **Save Download Path:** Save the download path\n- **Update yt-dlp:** Update yt-dlp\n- **FFmpeg/yt-dlp Detection:** Automatically detect FFmpeg/yt-dlp\n- **Trim Video:** Download only specific parts of a video by specifying time ranges (HH:MM:SS format)\n\n\u003c/details\u003e\n\n\u003ca id=\"troubleshooting\"\u003e\u003c/a\u003e\n## 🛠️ Troubleshooting\n\n\u003cdetails\u003e\n\u003csummary\u003eClick to view common issues and solutions\u003c/summary\u003e\n\n- **Format table not displaying:** Update yt-dlp to the latest version.\n- **Download fails:** Check your internet connection and ensure the video is available.\n- **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.\n  - **Solution:** Ensure FFmpeg is installed and accessible in your system's PATH. For Windows users, the easiest option is to download the `YTSage-v\u003cversion\u003e-ffmpeg.exe` file, which comes bundled with FFmpeg.\n\n---\n\n#### 🛡️ Windows Defender / Antivirus Warning\n\nSome antivirus software may flag the `.exe` files as false positives. This is a **known limitation** of PyInstaller-packaged applications.\n\n**Why this happens:**\n- PyInstaller bundles Python runtime and libraries together\n- Antivirus heuristics can misidentify packed executables as suspicious\n- This affects many legitimate Python applications built with PyInstaller\n\n**Safe alternatives:**\n- ✅ **Use pip installation:** `pip install ytsage` (recommended)\n- ✅ **Build from source**\n- ✅ **Whitelist the application** in your antivirus software\n\n\u003e 📋 **Related Issues:** [#33](https://github.com/oop7/YTSage/issues/33) - This is a known PyInstaller limitation, not a security issue with YTSage itself.\n\n---\n\n#### 🍎 macOS: \"App is damaged and can’t be opened\"\nIf you see this error on macOS Sonoma or newer, you need to remove the quarantine attribute.\n\n1.  **Open Terminal** (you can find it using Spotlight).\n2.  **Type the following command** but **do not** press Enter yet. Make sure to include the space at the end:\n    ```bash\n    xattr -d com.apple.quarantine \n    ```\n3.  **Drag the `YTSage.app` file** from your Finder window and drop it directly into the Terminal window. This will automatically paste the correct file path.\n4.  **Press Enter** to run the command.\n5.  **Try opening YTSage.app again.** It should now launch correctly.\n\n---\n\n#### **Configuration Locations (Advanced)**\n- **Windows:** `%LOCALAPPDATA%\\YTSage`\n- **macOS:** `~/Library/Application Support/YTSage`\n- **Linux:** `~/.local/share/YTSage`\n\n\u003c/details\u003e\n\n\u003ca id=\"contributing\"\u003e\u003c/a\u003e\n## 👥 Contributing\n\nWe welcome contributions! Here's how you can help:\n\n1. 🍴 Fork the repository\n2. 🌿 Create your feature branch:\n  ```bash\n  git checkout -b feature/AmazingFeature\n  ```\n3. 💾 Commit your changes:\n  ```bash\n  git commit -m 'Add some AmazingFeature'\n  ```\n4. 📤 Push to the branch:\n  ```bash\n  git push origin feature/AmazingFeature\n  ```\n5. 🔄 Open a Pull Request\n\n\u003cdetails\u003e\n\u003csummary\u003e📂 Project Structure\u003c/summary\u003e\n\n## YTSage - Project Structure\n\nThis document describes the organized folder structure of YTSage.\n\n### 📁 Project Structure\n\n```\nYTSage-main/\n├── 📁 assets/                    # Static assets and resources\n│   ├── 📁 Icon/                  # Application icons\n│   │   └── icon.png\n│   └── 📁 sound/                 # Audio files\n│       └── notification.mp3\n│\n├── 📁 src/                       # Source code\n│   ├── 📁 core/                  # Core business logic\n│   │   ├── __init__.py           # Core package init\n│   │   ├── ytsage_downloader.py  # Download functionality\n│   │   ├── ytsage_ffmpeg.py      # FFmpeg integration\n│   │   ├── ytsage_style.py       # UI styling\n│   │   ├── ytsage_utils.py       # Utility functions\n│   │   └── ytsage_yt_dlp.py      # yt-dlp integration\n│   │\n│   ├── 📁 gui/                   # User interface components\n│   │   ├── 📁 dialogs/           # Dialog classes\n│   │   │   ├── __init__.py       # Dialogs package init (re-exports all)\n│   │   │   ├── ytsage_dialogs_base.py     # Basic dialogs (Log, About)\n│   │   │   ├── ytsage_dialogs_custom.py   # Custom functionality dialogs\n│   │   │   ├── ytsage_dialogs_ffmpeg.py   # FFmpeg-related dialogs\n│   │   │   ├── ytsage_dialogs_selection.py # Selection dialogs\n│   │   │   ├── ytsage_dialogs_settings.py  # Settings dialogs\n│   │   │   └── ytsage_dialogs_update.py    # Update dialogs\n│   │   │\n│   │   ├── __init__.py           # GUI package init\n│   │   ├── ytsage_gui_dialogs.py # Dialog aggregator (backward compatibility)\n│   │   ├── ytsage_gui_format_table.py # Format table functionality\n│   │   ├── ytsage_gui_main.py    # Main application window\n│   │   └── ytsage_gui_video_info.py # Video information display\n│   │\n│   └── __init__.py               # Main package init\n│\n├── 📄 main.py                    # Application entry point\n├── 📄 requirements.txt           # Python dependencies\n├── 📄 README.md                  # Project documentation\n├── 📄 LICENSE                    # License file\n└── 📄 .gitignore                 # Git ignore rules\n```\n\n\u003c/details\u003e\n\n## ⭐️ Star History\n\n\u003cdiv align=\"center\"\u003e\n\n\u003ca href=\"https://next.ossinsight.io/widgets/official/analyze-repo-stars-history?repo_id=896163475\" target=\"_blank\" style=\"display: block\" align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://next.ossinsight.io/widgets/official/analyze-repo-stars-history/thumbnail.png?repo_id=896163475\u0026image_size=auto\u0026color_scheme=dark\" width=\"721\" height=\"auto\"\u003e\n    \u003cimg alt=\"Star History of oop7/YTSage\" src=\"https://next.ossinsight.io/widgets/official/analyze-repo-stars-history/thumbnail.png?repo_id=896163475\u0026image_size=auto\u0026color_scheme=light\" width=\"721\" height=\"auto\"\u003e\n  \u003c/picture\u003e\n\u003c/a\u003e\n\n\u003c/div\u003e\n\n## 📜 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n\u003cdetails\u003e\n\u003csummary\u003eShow Acknowledgments\u003c/summary\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cp\u003eA heartfelt thank you to everyone who has contributed to this project by opening an issue to suggest an improvement or report a bug.\u003c/p\u003e\n\n\u003ctable\u003e\n    \u003ctr class=\"section\"\u003e\u003cth colspan=\"2\"\u003eCore Components\u003c/th\u003e\u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd width=\"35%\"\u003e\u003ca href=\"https://github.com/yt-dlp/yt-dlp\"\u003eyt-dlp\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eDownload Engine\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003ca href=\"https://ffmpeg.org/\"\u003eFFmpeg\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eMedia Processing\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"section\"\u003e\u003cth colspan=\"2\"\u003eLibraries \u0026 Frameworks\u003c/th\u003e\u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003ca href=\"https://wiki.qt.io/Qt_for_Python\"\u003ePySide6\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eGUI Framework\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003ca href=\"https://python-pillow.org/\"\u003ePillow\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eImage Processing\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003ca href=\"https://requests.readthedocs.io/\"\u003erequests\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eHTTP Requests\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003ca href=\"https://packaging.python.org/\"\u003epackaging\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eVersion \u0026 Package Handling\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003ca href=\"https://python-markdown.github.io/\"\u003emarkdown\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eMarkdown Rendering\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003ca href=\"https://www.pygame.org/\"\u003epygame\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eAudio Playback\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003ca href=\"https://github.com/Delgan/loguru\"\u003eloguru\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eLogging\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr class=\"section\"\u003e\u003cth colspan=\"2\"\u003eAssets \u0026 Contributors\u003c/th\u003e\u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003ca href=\"https://pixabay.com/sound-effects/new-notification-09-352705/\"\u003eNew Notification 09 by Universfield\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eNotification Sound\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003ca href=\"https://github.com/viru185\"\u003eviru185\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eCode Contributor\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c/div\u003e\n\n\u003c/details\u003e\n\n## ⚠️ Disclaimer\n\nThis tool is for personal use only. Please respect YouTube's terms of service and content creators' rights.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\nMade with ❤️ by [oop7](https://github.com/oop7)\n\n\u003c/div\u003e\n","funding_links":[],"categories":["Python","下载(m3u8)"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foop7%2FYTSage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foop7%2FYTSage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foop7%2FYTSage/lists"}