Gentoo Archives: gentoo-commits

From: Louis Sautier <sbraz@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: media-video/gaupol/, media-video/gaupol/files/
Date: Sun, 24 May 2020 15:44:53
Message-Id: 1590335064.a4bd9f0033575b1314cce0576a639be4a17eb870.sbraz@gentoo
1 commit: a4bd9f0033575b1314cce0576a639be4a17eb870
2 Author: Louis Sautier <sbraz <AT> gentoo <DOT> org>
3 AuthorDate: Sun May 24 15:08:35 2020 +0000
4 Commit: Louis Sautier <sbraz <AT> gentoo <DOT> org>
5 CommitDate: Sun May 24 15:44:24 2020 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a4bd9f00
7
8 media-video/gaupol: mention required GST plugins in postinst
9
10 Also backport a patch to fix audio tracks order.
11
12 Closes: https://bugs.gentoo.org/638052
13 Package-Manager: Portage-2.3.99, Repoman-2.3.22
14 Signed-off-by: Louis Sautier <sbraz <AT> gentoo.org>
15
16 .../files/gaupol-1.8-fix-audio-tracks-order.patch | 174 +++++++++++++++++++++
17 .../{gaupol-1.8.ebuild => gaupol-1.8-r1.ebuild} | 6 +-
18 2 files changed, 179 insertions(+), 1 deletion(-)
19
20 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
21 new file mode 100644
22 index 00000000000..3f554c4ef33
23 --- /dev/null
24 +++ b/media-video/gaupol/files/gaupol-1.8-fix-audio-tracks-order.patch
25 @@ -0,0 +1,174 @@
26 +From e26cfcfe002c87a39eac63bbaa5ad0d4d69c95a4 Mon Sep 17 00:00:00 2001
27 +From: Quentin Gliosca <quentin.gliosca@×××××.com>
28 +Date: Tue, 12 May 2020 16:48:31 +0200
29 +Subject: [PATCH 1/3] Fix the order of languages in audio track selection
30 +
31 +Fix #129
32 +---
33 + gaupol/player.py | 7 ++++++-
34 + 1 file changed, 6 insertions(+), 1 deletion(-)
35 +
36 +diff --git a/gaupol/player.py b/gaupol/player.py
37 +index 836abea2..c266e0b9 100644
38 +--- a/gaupol/player.py
39 ++++ b/gaupol/player.py
40 +@@ -118,7 +118,8 @@ def _ensure_default_segment(self):
41 +
42 + def get_audio_languages(self):
43 + """Return a sequence of audio languages or ``None``."""
44 +- return tuple(x.get_language() for x in self._info.get_audio_streams())
45 ++ return tuple(self._playbin.emit("get-audio-tags", i).get_string("language-code")[1]
46 ++ for i in range(self._playbin.props.n_audio))
47 +
48 + def get_duration(self, mode=None):
49 + """Return duration of video stream or ``None``."""
50 +@@ -356,6 +357,10 @@ def set_uri(self, uri):
51 + dialog.add_button(_("_OK"), Gtk.ResponseType.OK)
52 + dialog.set_default_response(Gtk.ResponseType.OK)
53 + gaupol.util.flash_dialog(dialog)
54 ++ else:
55 ++ # Make stream tags available from _playbin
56 ++ self._playbin.set_state(Gst.State.PAUSED)
57 ++ self._playbin.get_state(Gst.CLOCK_TIME_NONE)
58 +
59 + def stop(self):
60 + """Stop."""
61 +
62 +From 9ace4fefe5d246c5588538a715a185c796e218ef Mon Sep 17 00:00:00 2001
63 +From: Quentin Gliosca <quentin.gliosca@×××××.com>
64 +Date: Tue, 12 May 2020 17:27:35 +0200
65 +Subject: [PATCH 2/3] Improve names of audio tracks in menu
66 +
67 +---
68 + gaupol/agents/video.py | 18 ++++++++++++++----
69 + gaupol/player.py | 20 ++++++++++++++++----
70 + 2 files changed, 30 insertions(+), 8 deletions(-)
71 +
72 +diff --git a/gaupol/agents/video.py b/gaupol/agents/video.py
73 +index d434255a..0f6b935c 100644
74 +--- a/gaupol/agents/video.py
75 ++++ b/gaupol/agents/video.py
76 +@@ -27,7 +27,11 @@
77 + from gi.repository import Gtk
78 +
79 + with aeidon.util.silent(Exception):
80 ++ from gi import require_version
81 ++ require_version('GstTag', '1.0')
82 + from gi.repository import Gst
83 ++ from gi.repository import GstTag
84 ++
85 +
86 +
87 + class VideoAgent(aeidon.Delegate):
88 +@@ -348,11 +352,17 @@ def _update_languages_menu(self):
89 + """Update the audio language selection menu."""
90 + menu = self.get_menubar_section("audio-languages-placeholder")
91 + menu.remove_all()
92 +- languages = self.player.get_audio_languages()
93 +- for i, language in enumerate(languages):
94 +- language = language or _("Undefined")
95 ++ tracks = self.player.get_audio_infos()
96 ++ for i, track in enumerate(tracks):
97 ++ title = track.title or "{} {}".format(_("Track"), i + 1)
98 ++ lang = None
99 ++ if track.language_code is not None:
100 ++ lang = GstTag.tag_get_language_name(track.language_code)
101 ++ if lang is None:
102 ++ lang = track.language_name
103 ++ name = title if lang is None else "{} - [{}]".format(title, lang.title())
104 + action = "win.set-audio-language::{:d}".format(i)
105 +- menu.append(language, action)
106 ++ menu.append(name, action)
107 + if i == self.player.audio_track:
108 + action = self.get_action("set-audio-language")
109 + action.set_state(str(i))
110 +diff --git a/gaupol/player.py b/gaupol/player.py
111 +index c266e0b9..ee1e96dc 100644
112 +--- a/gaupol/player.py
113 ++++ b/gaupol/player.py
114 +@@ -21,6 +21,7 @@
115 + import gaupol
116 + import time
117 +
118 ++from collections import namedtuple
119 + from aeidon.i18n import _
120 + from gi.repository import GLib
121 + from gi.repository import Gtk
122 +@@ -56,6 +57,8 @@ class VideoPlayer(aeidon.Observable):
123 +
124 + signals = ("state-changed",)
125 +
126 ++ TrackInfo = namedtuple("TrackInfo", ["title", "language_code", "language_name"])
127 ++
128 + def __init__(self):
129 + """Initialize a :class:`VideoPlayer` instance."""
130 + aeidon.Observable.__init__(self)
131 +@@ -116,10 +119,19 @@ def _ensure_default_segment(self):
132 + self._playbin.seek_simple(Gst.Format.TIME, seek_flags, pos)
133 + self._in_default_segment = True
134 +
135 +- def get_audio_languages(self):
136 +- """Return a sequence of audio languages or ``None``."""
137 +- return tuple(self._playbin.emit("get-audio-tags", i).get_string("language-code")[1]
138 +- for i in range(self._playbin.props.n_audio))
139 ++ def get_audio_infos(self):
140 ++ """Return a sequence of audio track infos."""
141 ++ return tuple(
142 ++ self._make_track_infos(self._playbin.emit("get-audio-tags", i))
143 ++ for i in range(self._playbin.props.n_audio)
144 ++ )
145 ++
146 ++ def _make_track_infos(self, tags):
147 ++ return self.TrackInfo(
148 ++ tags.get_string("title")[1],
149 ++ tags.get_string("language-code")[1],
150 ++ tags.get_string("language-name")[1]
151 ++ )
152 +
153 + def get_duration(self, mode=None):
154 + """Return duration of video stream or ``None``."""
155 +
156 +From f50b4e54dc9aa84fc1b3eb403d680b8a0be77dc3 Mon Sep 17 00:00:00 2001
157 +From: Quentin Gliosca <quentin.gliosca@×××××.com>
158 +Date: Wed, 13 May 2020 07:29:27 +0200
159 +Subject: [PATCH 3/3] Cosmetic changes
160 +
161 +---
162 + gaupol/__init__.py | 1 +
163 + gaupol/agents/video.py | 4 +---
164 + 2 files changed, 2 insertions(+), 3 deletions(-)
165 +
166 +diff --git a/gaupol/__init__.py b/gaupol/__init__.py
167 +index f7a9663d..fc02287b 100644
168 +--- a/gaupol/__init__.py
169 ++++ b/gaupol/__init__.py
170 +@@ -44,6 +44,7 @@
171 + "Gst": "1.0",
172 + "GstPbutils": "1.0",
173 + "GstVideo": "1.0",
174 ++ "GstTag": "1.0",
175 + }.items():
176 + with aeidon.util.silent(Exception):
177 + gi.require_version(module, version)
178 +diff --git a/gaupol/agents/video.py b/gaupol/agents/video.py
179 +index 0f6b935c..3c9e3113 100644
180 +--- a/gaupol/agents/video.py
181 ++++ b/gaupol/agents/video.py
182 +@@ -27,8 +27,6 @@
183 + from gi.repository import Gtk
184 +
185 + with aeidon.util.silent(Exception):
186 +- from gi import require_version
187 +- require_version('GstTag', '1.0')
188 + from gi.repository import Gst
189 + from gi.repository import GstTag
190 +
191 +@@ -354,7 +352,7 @@ def _update_languages_menu(self):
192 + menu.remove_all()
193 + tracks = self.player.get_audio_infos()
194 + for i, track in enumerate(tracks):
195 +- title = track.title or "{} {}".format(_("Track"), i + 1)
196 ++ title = track.title or _("Track {:d}").format(i + 1)
197 + lang = None
198 + if track.language_code is not None:
199 + lang = GstTag.tag_get_language_name(track.language_code)
200
201 diff --git a/media-video/gaupol/gaupol-1.8.ebuild b/media-video/gaupol/gaupol-1.8-r1.ebuild
202 similarity index 87%
203 rename from media-video/gaupol/gaupol-1.8.ebuild
204 rename to media-video/gaupol/gaupol-1.8-r1.ebuild
205 index 9fa5bf5a0ca..33dec788257 100644
206 --- a/media-video/gaupol/gaupol-1.8.ebuild
207 +++ b/media-video/gaupol/gaupol-1.8-r1.ebuild
208 @@ -37,6 +37,8 @@ DEPEND="
209
210 DOCS=( AUTHORS.md NEWS.md TODO.md README.md README.aeidon.md )
211
212 +PATCHES=( "${FILESDIR}/${P}-fix-audio-tracks-order.patch" )
213 +
214 python_test() {
215 virtx pytest -vv
216 }
217 @@ -45,7 +47,9 @@ pkg_postinst() {
218 xdg_desktop_database_update
219 xdg_icon_cache_update
220 if [[ -z ${REPLACING_VERSIONS} ]]; then
221 - elog "Previewing support requires MPV, MPlayer or VLC."
222 + elog "The integrated video player requires media-plugins/gst-plugins-gtk."
223 + elog ""
224 + elog "External video previewing support requires MPV, MPlayer or VLC."
225 if use spell; then
226 elog ""
227 elog "Spell-checking requires a dictionary, any of app-dicts/myspell-*"