From a4bd9f0033575b1314cce0576a639be4a17eb870 Mon Sep 17 00:00:00 2001 From: Louis Sautier Date: Sun, 24 May 2020 17:08:35 +0200 Subject: media-video/gaupol: mention required GST plugins in postinst Also backport a patch to fix audio tracks order. Closes: https://bugs.gentoo.org/638052 Package-Manager: Portage-2.3.99, Repoman-2.3.22 Signed-off-by: Louis Sautier --- .../files/gaupol-1.8-fix-audio-tracks-order.patch | 174 +++++++++++++++++++++ media-video/gaupol/gaupol-1.8-r1.ebuild | 67 ++++++++ media-video/gaupol/gaupol-1.8.ebuild | 63 -------- 3 files changed, 241 insertions(+), 63 deletions(-) create mode 100644 media-video/gaupol/files/gaupol-1.8-fix-audio-tracks-order.patch create mode 100644 media-video/gaupol/gaupol-1.8-r1.ebuild delete mode 100644 media-video/gaupol/gaupol-1.8.ebuild (limited to 'media-video/gaupol') diff --git a/media-video/gaupol/files/gaupol-1.8-fix-audio-tracks-order.patch b/media-video/gaupol/files/gaupol-1.8-fix-audio-tracks-order.patch new file mode 100644 index 000000000000..3f554c4ef335 --- /dev/null +++ b/media-video/gaupol/files/gaupol-1.8-fix-audio-tracks-order.patch @@ -0,0 +1,174 @@ +From e26cfcfe002c87a39eac63bbaa5ad0d4d69c95a4 Mon Sep 17 00:00:00 2001 +From: Quentin Gliosca +Date: Tue, 12 May 2020 16:48:31 +0200 +Subject: [PATCH 1/3] Fix the order of languages in audio track selection + +Fix #129 +--- + gaupol/player.py | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/gaupol/player.py b/gaupol/player.py +index 836abea2..c266e0b9 100644 +--- a/gaupol/player.py ++++ b/gaupol/player.py +@@ -118,7 +118,8 @@ def _ensure_default_segment(self): + + def get_audio_languages(self): + """Return a sequence of audio languages or ``None``.""" +- return tuple(x.get_language() for x in self._info.get_audio_streams()) ++ return tuple(self._playbin.emit("get-audio-tags", i).get_string("language-code")[1] ++ for i in range(self._playbin.props.n_audio)) + + def get_duration(self, mode=None): + """Return duration of video stream or ``None``.""" +@@ -356,6 +357,10 @@ def set_uri(self, uri): + dialog.add_button(_("_OK"), Gtk.ResponseType.OK) + dialog.set_default_response(Gtk.ResponseType.OK) + gaupol.util.flash_dialog(dialog) ++ else: ++ # Make stream tags available from _playbin ++ self._playbin.set_state(Gst.State.PAUSED) ++ self._playbin.get_state(Gst.CLOCK_TIME_NONE) + + def stop(self): + """Stop.""" + +From 9ace4fefe5d246c5588538a715a185c796e218ef Mon Sep 17 00:00:00 2001 +From: Quentin Gliosca +Date: Tue, 12 May 2020 17:27:35 +0200 +Subject: [PATCH 2/3] Improve names of audio tracks in menu + +--- + gaupol/agents/video.py | 18 ++++++++++++++---- + gaupol/player.py | 20 ++++++++++++++++---- + 2 files changed, 30 insertions(+), 8 deletions(-) + +diff --git a/gaupol/agents/video.py b/gaupol/agents/video.py +index d434255a..0f6b935c 100644 +--- a/gaupol/agents/video.py ++++ b/gaupol/agents/video.py +@@ -27,7 +27,11 @@ + from gi.repository import Gtk + + with aeidon.util.silent(Exception): ++ from gi import require_version ++ require_version('GstTag', '1.0') + from gi.repository import Gst ++ from gi.repository import GstTag ++ + + + class VideoAgent(aeidon.Delegate): +@@ -348,11 +352,17 @@ def _update_languages_menu(self): + """Update the audio language selection menu.""" + menu = self.get_menubar_section("audio-languages-placeholder") + menu.remove_all() +- languages = self.player.get_audio_languages() +- for i, language in enumerate(languages): +- language = language or _("Undefined") ++ tracks = self.player.get_audio_infos() ++ for i, track in enumerate(tracks): ++ title = track.title or "{} {}".format(_("Track"), i + 1) ++ lang = None ++ if track.language_code is not None: ++ lang = GstTag.tag_get_language_name(track.language_code) ++ if lang is None: ++ lang = track.language_name ++ name = title if lang is None else "{} - [{}]".format(title, lang.title()) + action = "win.set-audio-language::{:d}".format(i) +- menu.append(language, action) ++ menu.append(name, action) + if i == self.player.audio_track: + action = self.get_action("set-audio-language") + action.set_state(str(i)) +diff --git a/gaupol/player.py b/gaupol/player.py +index c266e0b9..ee1e96dc 100644 +--- a/gaupol/player.py ++++ b/gaupol/player.py +@@ -21,6 +21,7 @@ + import gaupol + import time + ++from collections import namedtuple + from aeidon.i18n import _ + from gi.repository import GLib + from gi.repository import Gtk +@@ -56,6 +57,8 @@ class VideoPlayer(aeidon.Observable): + + signals = ("state-changed",) + ++ TrackInfo = namedtuple("TrackInfo", ["title", "language_code", "language_name"]) ++ + def __init__(self): + """Initialize a :class:`VideoPlayer` instance.""" + aeidon.Observable.__init__(self) +@@ -116,10 +119,19 @@ def _ensure_default_segment(self): + self._playbin.seek_simple(Gst.Format.TIME, seek_flags, pos) + self._in_default_segment = True + +- def get_audio_languages(self): +- """Return a sequence of audio languages or ``None``.""" +- return tuple(self._playbin.emit("get-audio-tags", i).get_string("language-code")[1] +- for i in range(self._playbin.props.n_audio)) ++ def get_audio_infos(self): ++ """Return a sequence of audio track infos.""" ++ return tuple( ++ self._make_track_infos(self._playbin.emit("get-audio-tags", i)) ++ for i in range(self._playbin.props.n_audio) ++ ) ++ ++ def _make_track_infos(self, tags): ++ return self.TrackInfo( ++ tags.get_string("title")[1], ++ tags.get_string("language-code")[1], ++ tags.get_string("language-name")[1] ++ ) + + def get_duration(self, mode=None): + """Return duration of video stream or ``None``.""" + +From f50b4e54dc9aa84fc1b3eb403d680b8a0be77dc3 Mon Sep 17 00:00:00 2001 +From: Quentin Gliosca +Date: Wed, 13 May 2020 07:29:27 +0200 +Subject: [PATCH 3/3] Cosmetic changes + +--- + gaupol/__init__.py | 1 + + gaupol/agents/video.py | 4 +--- + 2 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/gaupol/__init__.py b/gaupol/__init__.py +index f7a9663d..fc02287b 100644 +--- a/gaupol/__init__.py ++++ b/gaupol/__init__.py +@@ -44,6 +44,7 @@ + "Gst": "1.0", + "GstPbutils": "1.0", + "GstVideo": "1.0", ++ "GstTag": "1.0", + }.items(): + with aeidon.util.silent(Exception): + gi.require_version(module, version) +diff --git a/gaupol/agents/video.py b/gaupol/agents/video.py +index 0f6b935c..3c9e3113 100644 +--- a/gaupol/agents/video.py ++++ b/gaupol/agents/video.py +@@ -27,8 +27,6 @@ + from gi.repository import Gtk + + with aeidon.util.silent(Exception): +- from gi import require_version +- require_version('GstTag', '1.0') + from gi.repository import Gst + from gi.repository import GstTag + +@@ -354,7 +352,7 @@ def _update_languages_menu(self): + menu.remove_all() + tracks = self.player.get_audio_infos() + for i, track in enumerate(tracks): +- title = track.title or "{} {}".format(_("Track"), i + 1) ++ title = track.title or _("Track {:d}").format(i + 1) + lang = None + if track.language_code is not None: + lang = GstTag.tag_get_language_name(track.language_code) diff --git a/media-video/gaupol/gaupol-1.8-r1.ebuild b/media-video/gaupol/gaupol-1.8-r1.ebuild new file mode 100644 index 000000000000..33dec788257c --- /dev/null +++ b/media-video/gaupol/gaupol-1.8-r1.ebuild @@ -0,0 +1,67 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{6,7,8} ) + +inherit distutils-r1 virtualx xdg-utils + +DESCRIPTION="A subtitle editor for text-based subtitles" +HOMEPAGE="https://otsaloma.io/gaupol/" +SRC_URI="https://github.com/otsaloma/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="spell test" +RESTRICT="!test? ( test )" + +RDEPEND=" + app-text/iso-codes + dev-python/chardet[${PYTHON_USEDEP}] + dev-python/pygobject:3[${PYTHON_USEDEP}] + x11-libs/gtk+:3[introspection] + spell? ( app-text/gspell[introspection] ) +" +DEPEND=" + sys-devel/gettext + test? ( + ${RDEPEND} + app-dicts/myspell-en + app-text/enchant[hunspell] + app-text/gspell[introspection] + dev-python/pytest[${PYTHON_USEDEP}] + ) +" + +DOCS=( AUTHORS.md NEWS.md TODO.md README.md README.aeidon.md ) + +PATCHES=( "${FILESDIR}/${P}-fix-audio-tracks-order.patch" ) + +python_test() { + virtx pytest -vv +} + +pkg_postinst() { + xdg_desktop_database_update + xdg_icon_cache_update + if [[ -z ${REPLACING_VERSIONS} ]]; then + elog "The integrated video player requires media-plugins/gst-plugins-gtk." + elog "" + elog "External video previewing support requires MPV, MPlayer or VLC." + if use spell; then + elog "" + elog "Spell-checking requires a dictionary, any of app-dicts/myspell-*" + elog "or app-text/aspell with the appropriate L10N variable." + elog "" + elog "Additionally, make sure that app-text/enchant has the correct flags enabled:" + elog "USE=hunspell for myspell dictionaries and USE=aspell for aspell dictionaries." + fi + fi +} + +pkg_postrm() { + xdg_desktop_database_update + xdg_icon_cache_update +} diff --git a/media-video/gaupol/gaupol-1.8.ebuild b/media-video/gaupol/gaupol-1.8.ebuild deleted file mode 100644 index 9fa5bf5a0ca1..000000000000 --- a/media-video/gaupol/gaupol-1.8.ebuild +++ /dev/null @@ -1,63 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -PYTHON_COMPAT=( python3_{6,7,8} ) - -inherit distutils-r1 virtualx xdg-utils - -DESCRIPTION="A subtitle editor for text-based subtitles" -HOMEPAGE="https://otsaloma.io/gaupol/" -SRC_URI="https://github.com/otsaloma/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" - -LICENSE="GPL-2+" -SLOT="0" -KEYWORDS="~amd64 ~arm64 ~x86" -IUSE="spell test" -RESTRICT="!test? ( test )" - -RDEPEND=" - app-text/iso-codes - dev-python/chardet[${PYTHON_USEDEP}] - dev-python/pygobject:3[${PYTHON_USEDEP}] - x11-libs/gtk+:3[introspection] - spell? ( app-text/gspell[introspection] ) -" -DEPEND=" - sys-devel/gettext - test? ( - ${RDEPEND} - app-dicts/myspell-en - app-text/enchant[hunspell] - app-text/gspell[introspection] - dev-python/pytest[${PYTHON_USEDEP}] - ) -" - -DOCS=( AUTHORS.md NEWS.md TODO.md README.md README.aeidon.md ) - -python_test() { - virtx pytest -vv -} - -pkg_postinst() { - xdg_desktop_database_update - xdg_icon_cache_update - if [[ -z ${REPLACING_VERSIONS} ]]; then - elog "Previewing support requires MPV, MPlayer or VLC." - if use spell; then - elog "" - elog "Spell-checking requires a dictionary, any of app-dicts/myspell-*" - elog "or app-text/aspell with the appropriate L10N variable." - elog "" - elog "Additionally, make sure that app-text/enchant has the correct flags enabled:" - elog "USE=hunspell for myspell dictionaries and USE=aspell for aspell dictionaries." - fi - fi -} - -pkg_postrm() { - xdg_desktop_database_update - xdg_icon_cache_update -} -- cgit v1.2.3-65-gdbad