Расширение
Кнопки на YouTube, настройки и уведомления. Устанавливается распакованным.
Скачать расширение ZIP · Небольшой архивdiff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9c4aaa2..d692dfd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,7 +24,7 @@ npm run check python tools/build.py ``` -`tools/build.py` собирает небольшой `dist/YouTubeDL-1.4.6.zip` без EXE. +`tools/build.py` собирает небольшой `dist/YouTubeDL-1.4.7.zip` без EXE. Для сборки расширения не требуется предварительно собирать помощник. ## Браузерные проверки diff --git a/INSTALL.md b/INSTALL.md index 9480251..bc14700 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -6,7 +6,7 @@ Firefox, macOS, Linux и Windows ARM не входят в эту сборку. Скачивания доступны в [релизах проекта](https://git.lonarpgproxy.space/DepressedCat/YouTubeDL/releases/latest). Помощник распространяется **отдельно**: внутри архива расширения EXE нет. -1. Скачайте **YouTubeDL-1.4.6.zip** и распакуйте его в постоянную папку. Не удаляйте и не перемещайте её после установки. +1. Скачайте **YouTubeDL-1.4.7.zip** и распакуйте его в постоянную папку. Не удаляйте и не перемещайте её после установки. 2. Откройте `edge://extensions` или `chrome://extensions`. Включите **Режим разработчика**, нажмите **Загрузить распакованное расширение** и выберите папку **extension** внутри распакованного архива. 3. На странице релиза отдельно скачайте **YouTubeDL-Helper-Setup.exe**. Это автономный комплект: Python, yt-dlp, EJS, Node.js, FFmpeg и FFprobe уже внутри. 4. Запустите EXE вручную и дождитесь окончания установки. Администратор и интернет для установки комплекта не требуются. Программы устанавливаются для текущего пользователя в `%LOCALAPPDATA%\YouTubeDL\Helper`. @@ -59,7 +59,7 @@ Get-FileHash -Algorithm SHA256 -LiteralPath '.\YouTubeDL-Helper-Setup.exe' При разных дисках результат сначала копируется во временную папку на диске сохранения, затем публикуется под итоговым именем. Прогресс копирования виден в уведомлении; частичный файл не появляется под готовым именем. При отмене помощник завершает группу процессов данной задачи и удаляет её временные папки. -Для отдельной рабочей папки, подробного прогресса слияния и исправленной отмены установите помощник 1.3.2 и расширение 1.4.6. Обновление компонентов не заменяет программный код помощника; для этой версии запустите новый установщик помощника. +Для отдельной рабочей папки, подробного прогресса слияния и исправленной отмены установите помощник 1.3.3 и расширение 1.4.7. Обновление компонентов не заменяет программный код помощника; для этой версии запустите новый установщик помощника. ## История и ошибки @@ -69,7 +69,7 @@ Get-FileHash -Algorithm SHA256 -LiteralPath '.\YouTubeDL-Helper-Setup.exe' ## Совместимость версий -В настройках и мастере первого запуска отображаются версии расширения и помощника. Расширение 1.4.6 поддерживает помощник 1.3.2. При старом помощнике появится кнопка «Обновить помощник», при более новом помощнике или устаревшем расширении — «Обновить расширение». Пока совместимость не подтверждена, новая загрузка не запускается. +В настройках и мастере первого запуска отображаются версии расширения и помощника. Расширение 1.4.7 поддерживает помощник 1.3.3. При старом помощнике появится кнопка «Обновить помощник», при более новом помощнике или устаревшем расширении — «Обновить расширение». Пока совместимость не подтверждена, новая загрузка не запускается. После установки помощника нажмите «Проверить»: статус изменится без перезагрузки страницы. После замены файлов расширения нажмите «Обновить» на странице расширений браузера и перезагрузите вкладку YouTube. Обновление компонентов обновляет инструменты внутри комплекта и не заменяет само расширение или код помощника. diff --git a/LICENSE b/LICENSE index 1998fc6..4cce92b 100644 --- a/LICENSE +++ b/LICENSE @@ -1,9 +1,12 @@ -ОГРАНИЧЕННАЯ ПОЛЬЗОВАТЕЛЬСКАЯ ЛИЦЕНЗИЯ YOUTUBEDL -Версия 1.0, 8 октября 2026 года +ЛИЦЕНЗИЯ SOURCE AVAILABLE — YouTubeDL +Версия 1.1, 11 октября 2026 года Copyright (c) 2026 DepressedCat. Все права сохранены. Правообладатель: DepressedCat (https://git.lonarpgproxy.space/DepressedCat). +Исходный код доступен для ознакомления (Source Available). Права на использование, +изменение и распространение определяются условиями этой лицензии. + 1. ОБЛАСТЬ ДЕЙСТВИЯ Эта лицензия относится к собственным файлам проекта YouTubeDL, предоставляемым @@ -22,7 +25,8 @@ Copyright (c) 2026 DepressedCat. Все права сохранены. выбирать дорожки и параметры, объединять, конвертировать и сохранять файлы при наличии права сохранять соответствующий контент. -Разрешены необходимые для этого установочные и резервные копии, сборка +Разрешены просмотр и изучение опубликованных исходников, их локальная копия +для ознакомления и сборки, необходимые установочные и резервные копии, сборка неизменённой официальной поставки для собственного использования, настройка через штатные средства, установка официальных обновлений и удаление Программы. Это не предоставляет права изменять собственные файлы кода и дизайна. @@ -46,11 +50,21 @@ Copyright (c) 2026 DepressedCat. Все права сохранены. 4. ИСКЛЮЧЕНИЯ -4.1. Python, Node.js, yt-dlp, EJS, FFmpeg, FFprobe и другие сторонние компоненты, -их исходники и лицензионные тексты регулируются лицензиями их правообладателей. -Эта лицензия не ограничивает предоставленные ими права, в том числе права -на изменение, форки и распространение по GPL, MIT и другим лицензиям. -Состав и сведения о лицензиях приведены в THIRD_PARTY.md и материалах релиза. +4.1. Python, Node.js, yt-dlp, EJS, FFmpeg, FFprobe и другие сторонние компоненты +регулируются условиями собственных лицензий, установленными их правообладателями. + +Настоящая лицензия не ограничивает права, предоставленные пользователям лицензиями +указанных сторонних компонентов, включая права на изменение, создание производных +работ и распространение, если такие действия разрешены соответствующими лицензиями. + +Указанные права относятся к соответствующим сторонним компонентам и не предоставляют +пользователю дополнительных прав на авторские части Программы. Их изменение, создание +производных версий, форков и распространение запрещены без разрешения правообладателя, +за исключением случаев, предусмотренных настоящей лицензией, обязательными нормами +законодательства или применимыми лицензиями сторонних компонентов. + +Перечень сторонних компонентов и сведения об их лицензиях приведены в файле +THIRD_PARTY.md и материалах релиза. 4.2. Права, которые применимое законодательство не позволяет ограничивать договором, сохраняются. Эта лицензия не предоставляет прав на чужой контент diff --git a/PRIVACY.md b/PRIVACY.md index 3989e01..f6f72e6 100644 --- a/PRIVACY.md +++ b/PRIVACY.md @@ -1,6 +1,6 @@ # Обработка данных -Актуально для расширения **1.4.5** и помощника **1.3.2**. Исходники доступны для просмотра, +Актуально для расширения **1.4.7** и помощника **1.3.3**. Исходники доступны для просмотра, условия использования собственного кода ограничены [лицензией](LICENSE). У проекта нет собственного сервера обработки видео, аккаунтов, телеметрии, рекламы или аналитики. Это не означает отсутствие обработки данных: необходимые сведения используются на вашем компьютере, diff --git a/README.md b/README.md index 6447492..e180763 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ **[Инструкция](INSTALL.md)** · **[Обработка данных](PRIVACY.md)** · **[Сообщить об ошибке](https://git.lonarpgproxy.space/DepressedCat/YouTubeDL/issues)** -Windows 10/11 x64 · Microsoft Edge / Google Chrome 120+ · расширение **1.4.6** · помощник **1.3.2**. +Windows 10/11 x64 · Microsoft Edge / Google Chrome 120+ · расширение **1.4.7** · помощник **1.3.3**. Расширение устанавливается распакованным, через режим разработчика. Прямая поставка через Gitea выбрана из-за ограничений на скачивание контента в [правилах Chrome Web Store](https://developer.chrome.com/docs/webstore/program-policies/malicious-and-prohibited) и [условиях YouTube](https://www.youtube.com/static?template=terms). ## Что умеет @@ -38,7 +38,7 @@ DRM-контент и гарантированный обход ограниче ## Установка: два отдельных скачивания -1. Откройте [последний релиз](https://git.lonarpgproxy.space/DepressedCat/YouTubeDL/releases/latest), скачайте **YouTubeDL-1.4.6.zip** и распакуйте в постоянную папку. +1. Откройте [последний релиз](https://git.lonarpgproxy.space/DepressedCat/YouTubeDL/releases/latest), скачайте **YouTubeDL-1.4.7.zip** и распакуйте в постоянную папку. 2. В `edge://extensions` или `chrome://extensions` включите **Режим разработчика**, нажмите **Загрузить распакованное расширение** и выберите папку **extension**. 3. **Отдельно скачайте YouTubeDL-Helper-Setup.exe из того же релиза** и запустите его вручную. EXE не встроен в расширение: кнопка установки открывает страницу релизов. 4. Обновите YouTube, откройте **⚙** и пройдите мастер. Выберите папку и параметры; зелёный статус подтверждает связь с помощником. @@ -102,8 +102,8 @@ Python остаётся в ветке 3.13, Node.js — в 24 LTS. ## Лицензии и разработка -Новые поставки собственного кода — по **[ограниченной пользовательской лицензии](LICENSE)**: -разрешены установка и использование по назначению. Изменение, самостоятельные форки, +Новые поставки собственного кода — по **[лицензии Source Available](LICENSE)**: +разрешены просмотр исходников, сборка неизменённой версии, установка и использование по назначению. Изменение, самостоятельные форки, производные версии и распространение без письменного разрешения правообладателя запрещены, с учётом исключений лицензии. Это распространяется и на само расширение. diff --git a/THIRD_PARTY.md b/THIRD_PARTY.md index 3056248..1448aea 100644 --- a/THIRD_PARTY.md +++ b/THIRD_PARTY.md @@ -5,8 +5,9 @@ Встроенные компоненты помощника имеют **свои** лицензии; ограничения YouTubeDL не заменяют и не ограничивают их, в том числе права по GPL и MIT. Помощник вызывает FFmpeg отдельным процессом. +Mutagen не входит в комплект 1.3.3 и не устанавливается при обновлении его компонентов. -Автономный комплект помощника 1.3.2: +Автономный комплект помощника 1.3.3: | Компонент | Версия | Проект / лицензия | | --- | --- | --- | @@ -17,7 +18,7 @@ | FFmpeg / FFprobe | N-127236-g17ec998942-20261007, shared win64 GPL | [FFmpeg](https://github.com/FFmpeg/FFmpeg/tree/17ec998942), GPL v3 or later для этой сборки; [сценарии FFmpeg-Builds](https://github.com/yt-dlp/FFmpeg-Builds) | Python-пакеты комплекта: brotli 1.2.0, certifi 2026.7.22, charset-normalizer 3.5.2, -idna 3.20, mutagen 1.48.1, pycryptodomex 3.24.0, requests 2.34.2, urllib3 2.8.0, +idna 3.20, pycryptodomex 3.24.0, requests 2.34.2, urllib3 2.8.0, websockets 17.2. Их `METADATA` и лицензии находятся рядом с библиотеками в `runtime/python/Lib/site-packages/*.dist-info` установленного помощника. Тексты Python/Node.js/FFmpeg также входят в установленный комплект. diff --git a/docs/RELEASE-1.4.7.md b/docs/RELEASE-1.4.7.md new file mode 100644 index 0000000..d91d65c --- /dev/null +++ b/docs/RELEASE-1.4.7.md @@ -0,0 +1,16 @@ +# YouTubeDL 1.4.7 + +Расширение **1.4.7** для Edge и Chrome 120+. Локальный помощник — **1.3.3**. + +- Собственный код, документация и оформление распространяются по лицензии **Source Available**: разрешены просмотр исходников, сборка неизменённой версии и использование по назначению. Изменения, форки и распространение требуют письменного согласия DepressedCat с учётом исключений лицензии. +- Неиспользуемый Mutagen исключён из автономного помощника и списка обновляемых Python-пакетов. Объединение дорожек, конвертация, аудио и аппаратное ускорение продолжают выполняться через FFmpeg. +- Проверка состава Python-пакетов выполняется при сборке, проверке комплекта и обновлении. Пакеты, требующие отдельной проверки совместимости лицензии, отклоняются до активации; рабочий комплект сохраняется. +- Лицензии и исходные материалы сторонних компонентов доступны отдельно в служебном разделе загрузок. + +## Установка и обновление + +1. Скачайте **YouTubeDL-1.4.7.zip**, распакуйте в постоянную папку и загрузите папку `extension` через режим разработчика в `edge://extensions` или `chrome://extensions`. +2. Скачайте **YouTubeDL-Helper-Setup.exe** из этого релиза и обновите помощник до **1.3.3**. Обычное обновление компонентов не заменяет код самого помощника. +3. Перезагрузите расширение и открытые страницы YouTube, затем проверьте подключение помощника. + +Если расширение уже установлено, замените файлы прежней папки `extension` и нажмите «Перезагрузить» на странице расширений браузера. diff --git a/extension/manifest.json b/extension/manifest.json index f11733f..73c826f 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "YouTubeDL", "description": "Скачать видео и аудио с YouTube: качество, формат, папка, NVIDIA NVENC и AMD AMF.", - "version": "1.4.6", + "version": "1.4.7", "minimum_chrome_version": "120", "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6bCUFVUmC9OqpL0+/vrQDKEesuiylybHxRWJXfMV7VfctMbDjAQzActxImzMGIviC8PJrCHT86v/erppUhIgqFrSftHVPPWmYbVJ/g6KBu1bRNIG5J1WDUnMO2E4hGNEJQe+6ezqGuGdk659qQOqP5khGbnog9wUs+1nPpolaXbXsUudn5leaxJ0SrdFT9oWjq59bAc7raEKjR1chU9pB9g9alEA8lqpcKUU8j7f/KJC9YvkOlTNEsLXhuLLzcC7Aw/eI3lgBqBLFWIcrEYrBPVFeIlNaVLdl6b8YqAD+eBaT1xdpT6VbGh/d3lf/Vq/TBzTzCplcMO2vIFGDKTNhQIDAQAB", "permissions": [ diff --git a/extension/shared.js b/extension/shared.js index d0e53c6..9279db4 100644 --- a/extension/shared.js +++ b/extension/shared.js @@ -12,7 +12,7 @@ export function stabilizeDownloadSpeed(job, previous, now = Date.now()) { && now >= previous.speedUpdatedAt && now - previous.speedUpdatedAt < 1500; return { ...job, speed: recent ? previous.speed : null, speedUpdatedAt: recent ? previous.speedUpdatedAt : null }; } -export const SUPPORTED_HELPER_VERSION = "1.3.2"; +export const SUPPORTED_HELPER_VERSION = "1.3.3"; const MINIMUM_EXTENSION_VERSION = "1.4.5"; function compareVersions(left, right) { if (![left, right].every(value => typeof value === "string" && /^\d+(?:\.\d+){1,3}$/.test(value))) return null; diff --git a/host/bootstrap.py b/host/bootstrap.py index 9353982..8c2f08d 100644 --- a/host/bootstrap.py +++ b/host/bootstrap.py @@ -7,6 +7,7 @@ from pathlib import Path from host.bundle import ROOT, executable, manifest from host.common import EXTENSION_ID, HOST_NAME from host.dependencies import status +from host.python_packages import validate_installed def verify(): @@ -14,6 +15,7 @@ def verify(): raise ValueError("Autonomous bundle metadata is missing.") if Path(sys.executable).resolve() != Path(executable("python")): raise ValueError("The helper must use its embedded Python.") + validate_installed(ROOT / "runtime/python/Lib/site-packages") measured = status() if any(item["status"] != "installed" for item in measured): raise ValueError("Bundled components failed verification: " + json.dumps(measured)) diff --git a/host/common.py b/host/common.py index 9631978..99ccd56 100644 --- a/host/common.py +++ b/host/common.py @@ -6,7 +6,7 @@ from pathlib import Path from urllib.parse import parse_qs, urlsplit HOST_NAME = "com.youtubedl.native" -VERSION = "1.3.2" +VERSION = "1.3.3" EXTENSION_ID = "ndnoeiaecgmjnjneekaeapeecmmjheli" VIDEO_CONTAINERS = {"mp4", "mkv", "webm"} AUDIO_CONTAINERS = {"m4a", "mp3", "opus", "flac", "wav"} diff --git a/host/dependencies.py b/host/dependencies.py index f7d0ee0..da322a2 100644 --- a/host/dependencies.py +++ b/host/dependencies.py @@ -64,6 +64,7 @@ def install(key, progress, workspace=None): raise ValueError("Нажмите «Обновить компоненты» для установки новых версий из интернета или «Восстановить» для переустановки встроенного комплекта.") if key not in {"node", "ffmpeg", "yt_dlp", "ejs"}: raise ValueError("Неизвестный компонент.") + from host.python_packages import requirements runtime = ROOT / ".runtime" runtime.mkdir(exist_ok=True) cfg = config() @@ -73,8 +74,8 @@ def install(key, progress, workspace=None): workspace(str(scratch)) if key in {"yt_dlp", "ejs"}: progress(None, "Устанавливаю Python-пакет") - package = "yt-dlp[default]>=2026.8.19" if key == "yt_dlp" else "yt-dlp-ejs" - measured = subprocess.run([sys.executable, "-m", "pip", "install", "--disable-pip-version-check", "--upgrade", package], + packages = requirements() if key == "yt_dlp" else ["yt-dlp-ejs"] + measured = subprocess.run([sys.executable, "-m", "pip", "install", "--disable-pip-version-check", "--upgrade", *packages], stdin=subprocess.DEVNULL, capture_output=True, text=True, encoding="utf-8", errors="replace", creationflags=NO_WINDOW, timeout=600) if measured.returncode: raise ValueError("Не удалось установить компонент. " + measured.stderr[-1200:]) diff --git a/host/python_packages.py b/host/python_packages.py new file mode 100644 index 0000000..e7e5b06 --- /dev/null +++ b/host/python_packages.py @@ -0,0 +1,41 @@ +"""Python dependencies used by the helper; optional cover tagging is excluded.""" +from __future__ import annotations + +import importlib.metadata +import re +from pathlib import Path + + +def requirements(yt_dlp="yt-dlp>=2026.8.19", ejs="yt-dlp-ejs"): + return [yt_dlp, ejs, "brotli", "certifi", "pycryptodomex", + "requests>=2.32.2,<3", "urllib3>=2,<3", "websockets>=13"] + + +def validate_metadata(records): + """Reject strong copyleft Python libraries before activating a bundle. + + FFmpeg is a separately executed program, so this policy concerns Python + libraries loaded into the helper process, not the FFmpeg distribution. + """ + for metadata in records: + name = re.sub(r"[-_.]+", "-", metadata.get("name", "").lower()) + licenses = [metadata.get("license_expression") or "", metadata.get("license") or "", + *metadata.get("classifier", [])] + incompatible = name == "mutagen" or any( + re.search(r"(?=2026.8.19 +yt-dlp>=2026.8.19 +yt-dlp-ejs +brotli +certifi +pycryptodomex +requests>=2.32.2,<3 +urllib3>=2,<3 +websockets>=13 diff --git a/site/index.html b/site/index.html index 3981e04..e0b9bd0 100644 --- a/site/index.html +++ b/site/index.html @@ -40,7 +40,7 @@
Бесплатно · Для Windows · Обработка на вашем компьютере
-Один ролик.
Ваш формат.
04 / НАЧНЁМ
Windows 10/11 x64
Edge или Chrome 120+
Без прав администратора
Кнопки на YouTube, настройки и уведомления. Устанавливается распакованным.
Скачать расширение ZIP · Небольшой архивСкачивает, соединяет и конвертирует. Все необходимые компоненты уже внутри.
Скачать помощник EXE · 124,3 МиБ · устанавливается отдельноКнопки на YouTube, настройки и уведомления. Устанавливается распакованным.
Скачать расширение ZIP · Небольшой архивСкачивает, соединяет и конвертирует. Все необходимые компоненты уже внутри.
Скачать помощник EXE · 124,1 МиБ · устанавливается отдельноОба файла размещены в релизах Gitea ↗. Помощник не встроен в ZIP. Проверка SHA256 и подробности.
Удалите помощник кнопкой в меню или через приложения Windows, затем расширение из браузера. Скачанные файлы и история помощника сохраняются. Для удаления истории после удаления помощника удалите %LOCALAPPDATA%\YouTubeDL\Helper\data. Настройки расширения удаляются вместе с расширением.
YouTubeDL распространяется через релизы Gitea из-за ограничений на скачивание контента. Правила Chrome Web Store запрещают инструменты для неразрешённого скачивания защищённого контента, а условия YouTube ограничивают скачивание разрешёнными сервисом способами или письменным разрешением YouTube и соответствующих правообладателей. Поэтому для YouTubeDL выбрана ручная установка распакованного расширения из официального релиза.
Сейчас опубликована сборка для Windows 10/11 x64 и Edge/Chrome 120+. Firefox, macOS, Linux и Windows ARM не входят в неё. Плейлисты, скачивание каналов и DRM-контент не заявляются.
Лицензия разрешает использование по назначению и запрещает изменения, самостоятельные форки и распространение собственного кода без письменного разрешения, с учётом исключений в её тексте. Сторонние компоненты сохраняют свои лицензии.
Лицензия Source Available разрешает просмотр исходников, сборку неизменённой версии и использование по назначению и запрещает изменения, самостоятельные форки и распространение собственного кода без письменного разрешения, с учётом исключений в её тексте. Сторонние компоненты сохраняют свои лицензии.