f886125857
New ytsage/gui/ytsage_gui_player.py: - MpvRenderWidget hosts libmpv through MpvRenderContext in a QOpenGLWidget - works on native Wayland where wid-embedding cannot - with all mpv-thread callbacks marshalled to the GUI thread via queued signals only. - PlayerPanel adds transport controls: play/pause, seek slider, time display, quality selector (caps ytdl-format height and reloads in place), speed, volume (persisted), subtitle toggle, fullscreen (reparent to top-level window), and Space/F/Escape keys. - Playback resolves watch URLs through mpv's ytdl_hook pointed at the app-managed SHA256-verified yt-dlp binary (script-opts ytdl_hook-ytdl_path), inheriting cookies and proxy settings via ytdl-raw-options - stream freshness, DASH muxing and nsig handling stay in yt-dlp's hands. New ytsage/core/ytsage_mpv.py probes libmpv availability; without it the Watch UI shows a per-OS install hint and everything else works. python-mpv added to dependencies (libmpv itself is a system package). Config gains player.* and feed.* defaults. Verified on Wayland: real YouTube video streams with position/duration signals flowing and no thread-safety errors. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
69 lines
1.8 KiB
TOML
69 lines
1.8 KiB
TOML
[build-system]
|
|
requires = ["setuptools"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "ytsage"
|
|
version = "5.2.0"
|
|
description = "Modern YouTube downloader with a clean PySide6 interface."
|
|
authors = [
|
|
{ name = "oop7", email = "oop7_support@proton.me" },
|
|
]
|
|
dependencies = [
|
|
"PySide6>=6.10.1",
|
|
"requests>=2.32.5",
|
|
"pillow>=12.0.0",
|
|
"packaging>=25.0",
|
|
"markdown>=3.10",
|
|
"loguru>=0.7.3",
|
|
"setuptools>=80.9.0",
|
|
"python-mpv>=1.0.7",
|
|
]
|
|
requires-python = ">=3.10,<3.15"
|
|
readme = "README.md"
|
|
license = "MIT"
|
|
classifiers = [
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Programming Language :: Python :: 3.13",
|
|
'Programming Language :: Python :: 3.14',
|
|
"Intended Audience :: End Users/Desktop",
|
|
"Operating System :: OS Independent",
|
|
"Operating System :: Microsoft :: Windows",
|
|
"Operating System :: POSIX :: Linux",
|
|
"Operating System :: MacOS",
|
|
"Topic :: Internet :: WWW/HTTP",
|
|
"Topic :: Multimedia :: Video",
|
|
"Topic :: Multimedia :: Sound/Audio",
|
|
"Topic :: Desktop Environment",
|
|
"Environment :: X11 Applications :: Qt",
|
|
"Environment :: Win32 (MS Windows)",
|
|
"Environment :: MacOS X"
|
|
]
|
|
|
|
keywords = ["youtube", "downloader", "video", "audio", "PySide6", "yt-dlp", "GUI"]
|
|
|
|
|
|
[project.scripts]
|
|
ytsage = "ytsage.main:main"
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/oop7/YTSage"
|
|
Bug-Tracker = "https://github.com/oop7/YTSage/issues"
|
|
Reddit = "https://www.reddit.com/r/NO-N_A_M_E/"
|
|
|
|
[tool.setuptools]
|
|
include-package-data = true
|
|
|
|
[tool.setuptools.packages.find]
|
|
include = ["ytsage*"]
|
|
|
|
[tool.setuptools.package-data]
|
|
ytsage = [
|
|
"assets/Icon/icon.png",
|
|
"assets/sound/notification.mp3",
|
|
"languages/*.json",
|
|
] |