Files
guru/net-misc/ytdl-sub/ytdl-sub-2026.06.12.ebuild
Devrin Talen 6705dee63b net-misc/ytdl-sub: new package, add 2026.06.12
Signed-off-by: Devrin Talen <devrin@fastmail.com>
2026-06-17 21:02:12 -04:00

76 lines
3.3 KiB
Bash

# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{12..15} )
inherit distutils-r1
DESCRIPTION="Automate downloading and metadata generation with YoutubeDL"
HOMEPAGE="https://github.com/jmbannon/ytdl-sub"
SRC_URI="
https://github.com/jmbannon/ytdl-sub/archive/refs/tags/${PV}.tar.gz
-> ${P}.gh.tar.gz
"
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64"
RDEPEND="
>=net-misc/yt-dlp-2026.06.09[${PYTHON_USEDEP}]
media-video/ffmpeg
dev-python/colorama[${PYTHON_USEDEP}]
dev-python/mergedeep[${PYTHON_USEDEP}]
dev-python/mediafile[${PYTHON_USEDEP}]
dev-python/pyyaml[${PYTHON_USEDEP}]
"
src_prepare() {
distutils-r1_src_prepare
# upstream has hard-coded version strings in src/ytdl_sub/__init__.py
# that get overwritten by the Makefile for releases. So we need to
# recreate the same edits.
sed -E -e "/^__(pypi|local)_version__/ s/= .*/= \"${PV}\"/" \
-i src/ytdl_sub/__init__.py || die
}
# These deselected tests rely on the local ffmpeg producing
# byte-for-byte identical output as the ffmpeg version in upstream's CI
# running on ubuntu. We just skip these ones.
EPYTEST_DESELECT=(
# from tests/integration (sans prebuilt_presets)
"tests/integration/cli/test_dl.py::TestCliDl::test_cli_dl_command[False-True]"
"tests/integration/plugins/test_chapters.py::TestChapters::test_chapters_from_comments[False]"
"tests/integration/plugins/test_file_convert.py::TestFileConvert::test_file_convert_custom_args[False]"
"tests/integration/plugins/test_output_options.py::TestOutputOptions::test_download_archive_migration"
"tests/integration/plugins/test_output_options.py::TestOutputOptions::test_empty_info_json_and_thumb[False]"
"tests/integration/plugins/test_output_options.py::TestOutputOptions::test_missing_thumbnail"
"tests/integration/plugins/test_thumbnail_plugins.py::TestThumbnailPlugins::test_thumbnail[False-False]"
"tests/integration/plugins/test_thumbnail_plugins.py::TestThumbnailPlugins::test_thumbnail[True-False]"
# from tests/integration/prebuilt_presets
"tests/integration/prebuilt_presets/test_music.py::TestPrebuiltMusicPresets::test_presets_run[YouTube Full Albums]"
"tests/integration/prebuilt_presets/test_music_videos.py::TestPrebuiltMusicVideoPresets::test_presets_run"
"tests/integration/prebuilt_presets/test_music_videos.py::TestPrebuiltMusicVideoPresetsWithCategories::test_presets_run"
"tests/integration/prebuilt_presets/test_tv_show_by_date.py::TestPrebuiltTVShowPresets::test_tv_show_presets"
"tests/integration/prebuilt_presets/test_tv_show_by_date.py::TestPrebuiltTVShowPresets::test_episode_ordering_presets"
"tests/integration/prebuilt_presets/test_tv_show_collection.py::TestPrebuiltTvShowCollectionPresets::test_tv_show_collection_presets"
"tests/integration/prebuilt_presets/test_tv_show_collection.py::TestPrebuiltTvShowCollectionPresets::test_episode_ordering_presets"
)
EPYTEST_PLUGINS=( pytest-rerunfailures )
distutils_enable_tests pytest
python_test() {
# mimics upstream CI testing
epytest --reruns 3 --reruns-delay 5 tests/unit
epytest --reruns 3 --reruns-delay 5 tests/integration --ignore tests/integration/prebuilt_presets
epytest --reruns 3 --reruns-delay 5 tests/integration/prebuilt_presets
# skip tests/e2e - accesses the network
}