Compare commits

..

No commits in common. "rawhide" and "f27" have entirely different histories.

5 changed files with 947 additions and 1 deletions

4
.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
*~
*.rpm
*.tar*
results_*/

View file

@ -1 +0,0 @@
Orphaned for 6+ weeks

693
port_loader_py3.patch Normal file
View file

@ -0,0 +1,693 @@
From 5a4827ec34892ec99448233202fadec32448c7d7 Mon Sep 17 00:00:00 2001
From: leigh123linux <leigh123linux@googlemail.com>
Date: Sat, 12 May 2018 10:16:27 +0100
Subject: [PATCH 1/9] Load python3 loader
---
src/plugins/xplayer-plugins-engine.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/plugins/xplayer-plugins-engine.c b/src/plugins/xplayer-plugins-engine.c
index 0b0c827..42345a0 100644
--- a/src/plugins/xplayer-plugins-engine.c
+++ b/src/plugins/xplayer-plugins-engine.c
@@ -121,7 +121,7 @@ xplayer_plugins_engine_get_default (XplayerObject *xplayer)
}
g_strfreev (paths);
- peas_engine_enable_loader (PEAS_ENGINE (engine), "python");
+ peas_engine_enable_loader (PEAS_ENGINE (engine), "python3");
g_object_add_weak_pointer (G_OBJECT (engine),
(gpointer) &engine);
From 76b87191a3e885e1c5170ce5a461f18b44e6be13 Mon Sep 17 00:00:00 2001
From: leigh123linux <leigh123linux@googlemail.com>
Date: Sat, 12 May 2018 10:19:28 +0100
Subject: [PATCH 2/9] Port dbusservice to python3
---
src/plugins/dbusservice/dbusservice.plugin.in | 2 +-
src/plugins/dbusservice/dbusservice.py | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/plugins/dbusservice/dbusservice.plugin.in b/src/plugins/dbusservice/dbusservice.plugin.in
index 68e5fc1..30d9ca7 100644
--- a/src/plugins/dbusservice/dbusservice.plugin.in
+++ b/src/plugins/dbusservice/dbusservice.plugin.in
@@ -1,5 +1,5 @@
[Plugin]
-Loader=python
+Loader=python3
Module=dbusservice
IAge=1
_Name=D-Bus Service
diff --git a/src/plugins/dbusservice/dbusservice.py b/src/plugins/dbusservice/dbusservice.py
index 552212c..24fc5c2 100644
--- a/src/plugins/dbusservice/dbusservice.py
+++ b/src/plugins/dbusservice/dbusservice.py
@@ -94,7 +94,7 @@ def __calculate_metadata (self):
'mpris:trackid': dbus.String (self.xplayer.props.current_mrl,
variant_level = 1),
'mpris:length': dbus.Int64 (
- self.xplayer.props.stream_length * 1000L,
+ self.xplayer.props.stream_length * 1000,
variant_level = 1),
}
@@ -152,7 +152,7 @@ def __do_notify_seekable (self, xplayer, prop):
def __do_notify_current_time (self, xplayer, prop):
# Only notify of seeks if we've skipped more than 3 seconds
if abs (xplayer.props.current_time - self.current_position) > 3:
- self.Seeked (xplayer.props.current_time * 1000L)
+ self.Seeked (xplayer.props.current_time * 1000)
self.current_position = xplayer.props.current_time
@@ -198,7 +198,7 @@ def GetAll (self, interface_name):
'Shuffle': shuffle, # TODO: Notifications
'Metadata': self.__calculate_metadata (),
'Volume': self.xplayer.get_volume (), # TODO: Notifications
- 'Position': self.xplayer.props.current_time * 1000L,
+ 'Position': self.xplayer.props.current_time * 1000,
'CanGoNext': True, # TODO
'CanGoPrevious': True, # TODO
'CanPlay': (self.xplayer.props.current_mrl != None),
@@ -315,13 +315,13 @@ def Play (self):
in_signature = 'x', # pylint: disable-msg=C0103
out_signature = '')
def Seek (self, offset):
- self.xplayer.action_seek_relative (offset / 1000L, False)
+ self.xplayer.action_seek_relative (offset / 1000, False)
@dbus.service.method (dbus_interface = 'org.mpris.MediaPlayer2.Player',
in_signature = 'ox', # pylint: disable-msg=C0103
out_signature = '')
def SetPosition (self, track_id, position):
- position = position / 1000L
+ position = position / 1000
# Bail if the position is not in the permitted range
if position < 0 or position > self.xplayer.props.stream_length:
From 8028cb2f2808a9dcc09e37afed06e8c38b7befc7 Mon Sep 17 00:00:00 2001
From: leigh123linux <leigh123linux@googlemail.com>
Date: Sat, 12 May 2018 10:29:01 +0100
Subject: [PATCH 3/9] Port opensubtitles to python3
---
src/plugins/opensubtitles/hash.py | 6 ++---
.../opensubtitles/opensubtitles.plugin.in | 2 +-
src/plugins/opensubtitles/opensubtitles.py | 22 +++++++++----------
3 files changed, 14 insertions(+), 16 deletions(-)
diff --git a/src/plugins/opensubtitles/hash.py b/src/plugins/opensubtitles/hash.py
index 26aa0d9..aac056a 100644
--- a/src/plugins/opensubtitles/hash.py
+++ b/src/plugins/opensubtitles/hash.py
@@ -21,9 +21,9 @@ def hash_file (name):
if filesize < 65536 * 2:
return SIZE_ERROR, 0
- file_handle = file (file_to_hash.get_path (), "rb")
+ file_handle = open (file_to_hash.get_path (), "rb")
- for _ in range (65536 / bytesize):
+ for _ in range(int(65536 / bytesize)):
buf = file_handle.read (bytesize)
(l_value,) = struct.unpack (longlongformat, buf)
file_hash += l_value
@@ -34,7 +34,7 @@ def hash_file (name):
if file_handle.tell() != max (0, filesize - 65536):
return SEEK_ERROR, 0
- for _ in range (65536/bytesize):
+ for _ in range(int(65536/bytesize)):
buf = file_handle.read (bytesize)
(l_value,) = struct.unpack (longlongformat, buf)
file_hash += l_value
diff --git a/src/plugins/opensubtitles/opensubtitles.plugin.in b/src/plugins/opensubtitles/opensubtitles.plugin.in
index c348a94..4df9c33 100644
--- a/src/plugins/opensubtitles/opensubtitles.plugin.in
+++ b/src/plugins/opensubtitles/opensubtitles.plugin.in
@@ -1,5 +1,5 @@
[Plugin]
-Loader=python
+Loader=python3
Module=opensubtitles
IAge=1
_Name=Subtitle Downloader
diff --git a/src/plugins/opensubtitles/opensubtitles.py b/src/plugins/opensubtitles/opensubtitles.py
index b81aa80..44e56c4 100644
--- a/src/plugins/opensubtitles/opensubtitles.py
+++ b/src/plugins/opensubtitles/opensubtitles.py
@@ -1,9 +1,9 @@
# -*- coding: utf-8 -*-
-from gi.repository import GObject, Peas, Gtk, Gdk # pylint: disable-msg=E0611
-from gi.repository import GLib, Gio, Pango, Xplayer # pylint: disable-msg=E0611
+from gi.repository import GLib, GObject, Peas, Gtk, Gdk # pylint: disable-msg=E0611
+from gi.repository import Gio, Pango, Xplayer # pylint: disable-msg=E0611
-import xmlrpclib
+import xmlrpc.client
import threading
import xdg.BaseDirectory
from os import sep, path, mkdir
@@ -16,8 +16,6 @@
D_ = gettext.dgettext
_ = gettext.gettext
-GObject.threads_init ()
-
USER_AGENT = 'Xplayer'
OK200 = '200 OK'
XPLAYER_REMOTE_COMMAND_REPLACE = 14
@@ -273,7 +271,7 @@ def _log_in (self, username='', password=''):
# We have already logged-in before, check the connection
try:
result = self._server.NoOperation (self._token)
- except (xmlrpclib.Fault, xmlrpclib.ProtocolError):
+ except (xmlrpc.client.Fault, xmlrpc.client.ProtocolError):
pass
if result and result['status'] != OK200:
return (True, '')
@@ -281,7 +279,7 @@ def _log_in (self, username='', password=''):
try:
result = self._server.LogIn (username, password, self.lang,
USER_AGENT)
- except (xmlrpclib.Fault, xmlrpclib.ProtocolError):
+ except (xmlrpc.client.Fault, xmlrpc.client.ProtocolError):
pass
if result and result.get ('status') == OK200:
@@ -321,7 +319,7 @@ def search_subtitles (self, movie_hash, movie_size):
try:
result = self._server.SearchSubtitles (self._token,
[searchdata])
- except xmlrpclib.ProtocolError:
+ except xmlrpc.client.ProtocolError:
message = _(u'Could not contact the OpenSubtitles website.')
if result.get ('data'):
@@ -348,7 +346,7 @@ def download_subtitles (self, subtitle_id):
try:
result = self._server.DownloadSubtitles (self._token,
[subtitle_id])
- except xmlrpclib.ProtocolError:
+ except xmlrpc.client.ProtocolError:
message = error_message
if result and result.get ('status') == OK200:
@@ -424,7 +422,7 @@ def do_activate (self):
self._xplayer.connect ('file-closed', self.__on_xplayer__file_closed)
# Obtain the ServerProxy and init the model
- server = xmlrpclib.Server ('http://api.opensubtitles.org/xml-rpc')
+ server = xmlrpc.client.Server ('http://api.opensubtitles.org/xml-rpc')
self._model = OpenSubtitlesModel (server)
def do_deactivate (self):
@@ -586,10 +584,10 @@ def _get_results (self, movie_hash, movie_size):
thread = SearchThread (self._model, movie_hash, movie_size)
thread.start ()
- GObject.idle_add (self._populate_treeview, thread)
+ GLib.idle_add (self._populate_treeview, thread)
self._progress.set_text (_(u'Searching subtitles…'))
- GObject.timeout_add (350, self._progress_bar_increment, thread)
+ GLib.timeout_add (350, self._progress_bar_increment, thread)
def _populate_treeview (self, search_thread):
if not search_thread.done:
From ac41711f4e228709146e7c6d63273158b676f90a Mon Sep 17 00:00:00 2001
From: leigh123linux <leigh123linux@googlemail.com>
Date: Sat, 12 May 2018 10:42:34 +0100
Subject: [PATCH 4/9] Port python console to python 3
---
src/plugins/pythonconsole/console.py | 48 +++++++++----------
.../pythonconsole/pythonconsole.plugin.in | 2 +-
src/plugins/pythonconsole/pythonconsole.py | 38 +++++++--------
3 files changed, 41 insertions(+), 47 deletions(-)
diff --git a/src/plugins/pythonconsole/console.py b/src/plugins/pythonconsole/console.py
index f7d22ca..d5cc281 100644
--- a/src/plugins/pythonconsole/console.py
+++ b/src/plugins/pythonconsole/console.py
@@ -36,7 +36,7 @@
import sys
import re
import traceback
-from gi.repository import GObject, Pango, Gtk, Gdk # pylint: disable-msg=E0611
+from gi.repository import GLib, Pango, Gtk, Gdk # pylint: disable-msg=E0611
class PythonConsole(Gtk.ScrolledWindow):
def __init__(self, namespace = {}, destroy_cb = None):
@@ -59,7 +59,7 @@ def __init__(self, namespace = {}, destroy_cb = None):
self.command = buffer.create_tag("command")
self.command.set_property("foreground", "blue")
- self.__spaces_pattern = re.compile(r'^\s+')
+ self.__spaces_pattern = re.compile(r'^\s+')
self.namespace = namespace
self.block_command = False
@@ -82,8 +82,8 @@ def __init__(self, namespace = {}, destroy_cb = None):
# Signals
self.view.connect("key-press-event", self.__key_press_event_cb)
buffer.connect("mark-set", self.__mark_set_cb)
-
-
+
+
def __key_press_event_cb(self, view, event):
modifier_mask = Gtk.accelerator_get_default_mod_mask()
event_state = event.state & modifier_mask
@@ -114,7 +114,7 @@ def __key_press_event_cb(self, view, event):
cur = buffer.get_end_iter()
buffer.place_cursor(cur)
- GObject.idle_add(self.scroll_to_end)
+ GLib.idle_add(self.scroll_to_end)
return True
elif event.keyval == Gdk.KEY_Return:
@@ -158,21 +158,21 @@ def __key_press_event_cb(self, view, event):
cur = buffer.get_end_iter()
buffer.move_mark(inp_mark, cur)
buffer.place_cursor(cur)
- GObject.idle_add(self.scroll_to_end)
+ GLib.idle_add(self.scroll_to_end)
return True
elif event.keyval == Gdk.KEY_KP_Down or event.keyval == Gdk.KEY_Down:
# Next entry from history
view.emit_stop_by_name("key_press_event")
self.history_down()
- GObject.idle_add(self.scroll_to_end)
+ GLib.idle_add(self.scroll_to_end)
return True
elif event.keyval == Gdk.KEY_KP_Up or event.keyval == Gdk.KEY_Up:
# Previous entry from history
view.emit_stop_by_name("key_press_event")
self.history_up()
- GObject.idle_add(self.scroll_to_end)
+ GLib.idle_add(self.scroll_to_end)
return True
elif event.keyval == Gdk.KEY_KP_Left or event.keyval == Gdk.KEY_Left or \
@@ -243,22 +243,22 @@ def write(self, text, tag = None):
else:
buf.insert_with_tags(buf.get_end_iter(), text, tag)
- GObject.idle_add(self.scroll_to_end)
-
- def eval(self, command, display_command = False):
+ GLib.idle_add(self.scroll_to_end)
+
+ def eval(self, command, display_command = False):
buffer = self.view.get_buffer()
lin = buffer.get_mark("input-line")
buffer.delete(buffer.get_iter_at_mark(lin),
buffer.get_end_iter())
-
+
if isinstance(command, list) or isinstance(command, tuple):
- for c in command:
- if display_command:
- self.write(">>> " + c + "\n", self.command)
- self.__run(c)
+ for c in command:
+ if display_command:
+ self.write(">>> " + c + "\n", self.command)
+ self.__run(c)
else:
- if display_command:
- self.write(">>> " + c + "\n", self.command)
+ if display_command:
+ self.write(">>> " + c + "\n", self.command)
self.__run(command)
cur = buffer.get_end_iter()
@@ -268,17 +268,17 @@ def eval(self, command, display_command = False):
buffer.move_mark_by_name("input", cur)
self.view.scroll_to_iter(buffer.get_end_iter(), 0.0, False, 0.5, 0.5)
- def __run(self, command):
+ def __run(self, command):
sys.stdout, self.stdout = self.stdout, sys.stdout
sys.stderr, self.stderr = self.stderr, sys.stderr
-
+
try:
try:
r = eval(command, self.namespace, self.namespace)
if r is not None:
- print `r`
+ print(r)
except SyntaxError:
- exec command in self.namespace
+ exec(command, self.namespace)
except:
if hasattr(sys, 'last_type') and sys.last_type == SystemExit:
self.destroy()
@@ -308,6 +308,6 @@ def readline(self): return ''
def readlines(self): return []
def write(self, s): self.console.write(s, self.tag)
def writelines(self, l): self.console.write(l, self.tag)
- def seek(self, a): raise IOError, (29, 'Illegal seek')
- def tell(self): raise IOError, (29, 'Illegal seek')
+ def seek(self, a): raise IOError((29, 'Illegal seek'))
+ def tell(self): raise IOError((29, 'Illegal seek'))
truncate = tell
diff --git a/src/plugins/pythonconsole/pythonconsole.plugin.in b/src/plugins/pythonconsole/pythonconsole.plugin.in
index 7061cc8..37d4d5a 100644
--- a/src/plugins/pythonconsole/pythonconsole.plugin.in
+++ b/src/plugins/pythonconsole/pythonconsole.plugin.in
@@ -1,5 +1,5 @@
[Plugin]
-Loader=python
+Loader=python3
Module=pythonconsole
IAge=1
_Name=Python Console
diff --git a/src/plugins/pythonconsole/pythonconsole.py b/src/plugins/pythonconsole/pythonconsole.py
index 177fafb..07136fc 100644
--- a/src/plugins/pythonconsole/pythonconsole.py
+++ b/src/plugins/pythonconsole/pythonconsole.py
@@ -82,37 +82,35 @@ def do_activate (self):
data = dict ()
manager = self.xplayer.get_ui_manager ()
- data['action_group'] = Gtk.ActionGroup (name = 'Python')
+ self.action_group = Gtk.ActionGroup (name = 'Python')
action = Gtk.Action (name = 'Python', label = 'Python',
- tooltip = _(u'Python Console Menu'),
+ tooltip = _('Python Console Menu'),
stock_id = None)
- data['action_group'].add_action (action)
+ self.action_group.add_action (action)
action = Gtk.Action (name = 'PythonConsole',
- label = _(u'_Python Console'),
- tooltip = _(u"Show Xplayer's Python console"),
+ label = _('_Python Console'),
+ tooltip = _("Show Xplayer's Python console"),
stock_id = 'gnome-mime-text-x-python')
action.connect ('activate', self._show_console)
- data['action_group'].add_action (action)
+ self.action_group.add_action (action)
action = Gtk.Action (name = 'PythonDebugger',
- label = _(u'Python Debugger'),
- tooltip = _(u"Enable remote Python debugging "\
+ label = _('Python Debugger'),
+ tooltip = _("Enable remote Python debugging "\
"with rpdb2"),
stock_id = None)
if HAVE_RPDB2:
action.connect ('activate', self._enable_debugging)
else:
action.set_visible (False)
- data['action_group'].add_action (action)
+ self.action_group.add_action (action)
- manager.insert_action_group (data['action_group'], 0)
- data['ui_id'] = manager.add_ui_from_string (UI_STR)
+ manager.insert_action_group (self.action_group, 0)
+ self.ui_id = manager.add_ui_from_string (UI_STR)
manager.ensure_update ()
- self.xplayer.PythonConsolePluginInfo = data
-
def _show_console (self, _action):
if not self.window:
console = PythonConsole (namespace = {
@@ -122,11 +120,11 @@ def _show_console (self, _action):
}, destroy_cb = self._destroy_console)
console.set_size_request (600, 400) # pylint: disable-msg=E1101
- console.eval ('print "%s" %% xplayer_object' % _(u"You can access "\
+ console.eval ('print("%s" %% xplayer_object)' % _("You can access "\
"the Xplayer.Object through \'xplayer_object\' :\\n%s"), False)
self.window = Gtk.Window ()
- self.window.set_title (_(u'Xplayer Python Console'))
+ self.window.set_title (_('Xplayer Python Console'))
self.window.add (console)
self.window.connect ('destroy', self._destroy_console)
self.window.show_all ()
@@ -136,7 +134,7 @@ def _show_console (self, _action):
@classmethod
def _enable_debugging (cls, _action):
- msg = _(u"After you press OK, Xplayer will wait until you connect to it "\
+ msg = _("After you press OK, Xplayer will wait until you connect to it "\
"with winpdb or rpdb2. If you have not set a debugger "\
"password in DConf, it will use the default password "\
"('xplayer').")
@@ -158,14 +156,10 @@ def _destroy_console (self, *_args):
self.window = None
def do_deactivate (self):
- data = self.xplayer.PythonConsolePluginInfo
-
manager = self.xplayer.get_ui_manager ()
- manager.remove_ui (data['ui_id'])
- manager.remove_action_group (data['action_group'])
+ manager.remove_ui (self.ui_id)
+ manager.remove_action_group (self.action_group)
manager.ensure_update ()
- self.xplayer.PythonConsolePluginInfo = None
-
if self.window is not None:
self.window.destroy ()
From 83f2c1cf2d79b065b1769e161ec48c6c0c46ec4e Mon Sep 17 00:00:00 2001
From: leigh123linux <leigh123linux@googlemail.com>
Date: Sat, 12 May 2018 10:45:47 +0100
Subject: [PATCH 5/9] dbusservice: do not use unicode which does not exists in
python 3
---
src/plugins/dbusservice/dbusservice.py | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/src/plugins/dbusservice/dbusservice.py b/src/plugins/dbusservice/dbusservice.py
index 24fc5c2..54d8b80 100644
--- a/src/plugins/dbusservice/dbusservice.py
+++ b/src/plugins/dbusservice/dbusservice.py
@@ -57,9 +57,9 @@ def __init__ (self, name, xplayer):
self.xplayer = xplayer
self.null_metadata = {
- 'year' : u'', 'tracknumber' : '', 'location' : '',
- 'title' : u'', 'album' : u'', 'time' : u'', 'genre' : u'',
- 'artist' : u''
+ 'year' : '', 'tracknumber' : '', 'location' : '',
+ 'title' : '', 'album' : '', 'time' : '', 'genre' : '',
+ 'artist' : ''
}
self.current_metadata = self.null_metadata.copy ()
self.current_position = 0
@@ -120,11 +120,11 @@ def __do_update_metadata (self, xplayer, artist, # pylint: disable-msg=R0913
title, album, num):
self.current_metadata = self.null_metadata.copy ()
if title:
- self.current_metadata['title'] = unicode (title, 'utf-8')
+ self.current_metadata['title'] = title
if artist:
- self.current_metadata['artist'] = unicode (artist, 'utf-8')
+ self.current_metadata['artist'] = artist
if album:
- self.current_metadata['album'] = unicode (album, 'utf-8')
+ self.current_metadata['album'] = album
if num:
self.current_metadata['tracknumber'] = num
@@ -210,7 +210,7 @@ def GetAll (self, interface_name):
raise dbus.exceptions.DBusException (
'org.mpris.MediaPlayer2.UnknownInterface',
- _(u'The MediaPlayer2 object does not implement the %s interface')
+ _('The MediaPlayer2 object does not implement the %s interface')
% interface_name)
@dbus.service.method (dbus_interface = dbus.PROPERTIES_IFACE,
@@ -219,7 +219,7 @@ def Set (self, interface_name, property_name, new_value):
if interface_name == 'org.mpris.MediaPlayer2':
raise dbus.exceptions.DBusException (
'org.mpris.MediaPlayer2.ReadOnlyProperty',
- _(u'The property %s is not writeable.'))
+ _('The property %s is not writeable.'))
elif interface_name == 'org.mpris.MediaPlayer2.Player':
if property_name == 'LoopStatus':
self.xplayer.action_remote_set_setting (
@@ -235,12 +235,12 @@ def Set (self, interface_name, property_name, new_value):
raise dbus.exceptions.DBusException (
'org.mpris.MediaPlayer2.ReadOnlyProperty',
- _(u'Unknown property %s requested of a MediaPlayer 2 object')
+ _('Unknown property %s requested of a MediaPlayer 2 object')
% interface_name)
raise dbus.exceptions.DBusException (
'org.mpris.MediaPlayer2.UnknownInterface',
- _(u'The MediaPlayer2 object does not implement the %s interface')
+ _('The MediaPlayer2 object does not implement the %s interface')
% interface_name)
@dbus.service.signal (dbus_interface = dbus.PROPERTIES_IFACE,
From 1e83806ae109818c0d2b47438ef377f44d99e444 Mon Sep 17 00:00:00 2001
From: leigh123linux <leigh123linux@googlemail.com>
Date: Sat, 12 May 2018 14:41:09 +0100
Subject: [PATCH 6/9] Switch peas loader depends
---
debian/control | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/debian/control b/debian/control
index 3913a16..83b7018 100644
--- a/debian/control
+++ b/debian/control
@@ -135,7 +135,7 @@ Depends: ${misc:Depends},
gir1.2-xplayer-1.0 (= ${binary:Version}),
python-gi (>= 2.90.3),
python-xdg,
- libpeas-1.0-0-python2loader | libpeas-common( << 1.16 )
+ libpeas-1.0-0-python3loader | libpeas-common( << 1.16 )
Suggests: gromit
Description: Plugins for the Xplayer media player
Xplayer is a simple yet featureful media player which can read
From 77cf4b624c85e0372e35c7e8473868bbf7c57fef Mon Sep 17 00:00:00 2001
From: leigh123linux <leigh123linux@googlemail.com>
Date: Sun, 13 May 2018 08:43:56 +0100
Subject: [PATCH 7/9] opensubtitles: Stop using PyXDG
---
debian/control | 6 +++---
src/plugins/opensubtitles/opensubtitles.py | 12 ++----------
2 files changed, 5 insertions(+), 13 deletions(-)
diff --git a/debian/control b/debian/control
index 83b7018..3d2a2a8 100644
--- a/debian/control
+++ b/debian/control
@@ -133,9 +133,9 @@ Depends: ${misc:Depends},
gir1.2-pango-1.0,
gir1.2-peas-1.0,
gir1.2-xplayer-1.0 (= ${binary:Version}),
- python-gi (>= 2.90.3),
- python-xdg,
- libpeas-1.0-0-python3loader | libpeas-common( << 1.16 )
+ python3,
+ python3-gi,
+ libpeas-1.0-0-python3loader | debian-system-adjustments,
Suggests: gromit
Description: Plugins for the Xplayer media player
Xplayer is a simple yet featureful media player which can read
diff --git a/src/plugins/opensubtitles/opensubtitles.py b/src/plugins/opensubtitles/opensubtitles.py
index 44e56c4..8e7f408 100644
--- a/src/plugins/opensubtitles/opensubtitles.py
+++ b/src/plugins/opensubtitles/opensubtitles.py
@@ -5,7 +5,6 @@
import xmlrpc.client
import threading
-import xdg.BaseDirectory
from os import sep, path, mkdir
import gettext
@@ -618,19 +617,12 @@ def _save_selected_subtitle (self, filename=None):
subtitle_format = model.get_value (subtitle_iter, 1)
if not filename:
- bpath = xdg.BaseDirectory.xdg_cache_home + sep
+ bpath = GLib.get_user_cache_dir() + sep
bpath += 'xplayer' + sep
directory = Gio.file_new_for_path (bpath + 'subtitles' + sep)
-
if not directory.query_exists (None):
- if not path.exists (bpath):
- mkdir (bpath)
- if not path.exists (bpath + 'subtitles' + sep):
- mkdir (bpath + 'subtitles' + sep)
- # FIXME: We can't use this function until we depend on
- # GLib (PyGObject) 2.18
- # directory.make_directory_with_parents ()
+ directory.make_directory_with_parents (None);
subtitle_file = Gio.file_new_for_path (self._filename)
movie_name = subtitle_file.get_basename ().rpartition ('.')[0]
From 9eeb6eb3de50f1b682f64a7e7f6c64a87a6882a1 Mon Sep 17 00:00:00 2001
From: leigh123linux <leigh123linux@googlemail.com>
Date: Sun, 13 May 2018 08:50:58 +0100
Subject: [PATCH 8/9] opensubtitles: Fix downloading subtitles with newer
Python
---
src/plugins/opensubtitles/opensubtitles.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/plugins/opensubtitles/opensubtitles.py b/src/plugins/opensubtitles/opensubtitles.py
index 8e7f408..1a7d12f 100644
--- a/src/plugins/opensubtitles/opensubtitles.py
+++ b/src/plugins/opensubtitles/opensubtitles.py
@@ -342,6 +342,7 @@ def download_subtitles (self, subtitle_id):
(log_in_success, log_in_message) = self._log_in ()
if log_in_success:
+ result = None
try:
result = self._server.DownloadSubtitles (self._token,
[subtitle_id])
From c85414eb962fa524760adb779662a6c86b8b0d30 Mon Sep 17 00:00:00 2001
From: leigh123linux <leigh123linux@googlemail.com>
Date: Mon, 27 Aug 2018 17:02:22 +0100
Subject: [PATCH 9/9] opensubtitles: Make decoding download items work
---
src/plugins/opensubtitles/opensubtitles.py | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/src/plugins/opensubtitles/opensubtitles.py b/src/plugins/opensubtitles/opensubtitles.py
index 1a7d12f..7b6cc02 100644
--- a/src/plugins/opensubtitles/opensubtitles.py
+++ b/src/plugins/opensubtitles/opensubtitles.py
@@ -5,6 +5,7 @@
import xmlrpc.client
import threading
+import zlib
from os import sep, path, mkdir
import gettext
@@ -356,14 +357,11 @@ def download_subtitles (self, subtitle_id):
self._lock.release ()
return (None, error_message)
- import StringIO, gzip, base64
- subtitle_decoded = base64.decodestring (subtitle64)
- subtitle_gzipped = StringIO.StringIO (subtitle_decoded)
- subtitle_gzipped_file = gzip.GzipFile (fileobj=subtitle_gzipped)
+ subtitle_unzipped = zlib.decompress(GLib.base64_decode (subtitle64), 47)
self._lock.release ()
- return (subtitle_gzipped_file.read (), message)
+ return (subtitle_unzipped, message)
else:
message = log_in_message

1
sources Normal file
View file

@ -0,0 +1 @@
SHA512 (xplayer-1.8.3.tar.gz) = 8dca49522bbc9832567077d82831ea8183d734b237f451aa5d7e0c5766be44b39be5e15ca2faf9e22309316b61cca439ef29ea7f6896306b6592e992683766f5

249
xplayer.spec Normal file
View file

@ -0,0 +1,249 @@
# Filter provides from plugins.
%global __provides_exclude_from ^(%{_libdir}/%{name}/.*\\.so|%{_libdir}/mozilla/.*\\.so)$
Name: xplayer
Version: 1.8.3
Release: 2%{?dist}
Summary: A generic Media Player
License: GPLv2+ and LGPLv2+
URL: https://github.com/linuxmint/%{name}
Source0: %{url}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz
Patch0: %{url}/pull/104.patch#/port_loader_py3.patch
BuildRequires: gcc-c++
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: desktop-file-utils
BuildRequires: gnome-common
BuildRequires: gstreamer1-plugins-good
BuildRequires: intltool
BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(clutter-1.0)
BuildRequires: pkgconfig(clutter-gst-3.0)
BuildRequires: pkgconfig(clutter-gtk-1.0)
BuildRequires: pkgconfig(dbus-glib-1)
BuildRequires: pkgconfig(gdk-x11-3.0)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gmodule-2.0)
BuildRequires: pkgconfig(gio-2.0)
BuildRequires: pkgconfig(grilo-0.3)
BuildRequires: pkgconfig(gsettings-desktop-schemas)
BuildRequires: pkgconfig(gstreamer-1.0)
BuildRequires: pkgconfig(gstreamer-audio-1.0)
BuildRequires: pkgconfig(gstreamer-base-1.0)
BuildRequires: pkgconfig(gstreamer-pbutils-1.0)
BuildRequires: pkgconfig(gstreamer-plugins-base-1.0)
BuildRequires: pkgconfig(gstreamer-tag-1.0)
BuildRequires: pkgconfig(gstreamer-video-1.0)
BuildRequires: pkgconfig(gtk+-3.0)
BuildRequires: pkgconfig(ice)
BuildRequires: pkgconfig(libpeas-1.0)
BuildRequires: pkgconfig(libpeas-gtk-1.0)
BuildRequires: pkgconfig(lirc)
BuildRequires: pkgconfig(pygobject-3.0)
BuildRequires: pkgconfig(sm)
BuildRequires: pkgconfig(xapp)
BuildRequires: pkgconfig(xkbfile)
BuildRequires: pkgconfig(xplayer-plparser)
%if 0%{?fedora}
BuildRequires: pkgconfig(zeitgeist-2.0)
%endif
BuildRequires: pylint
BuildRequires: python%{python3_pkgversion}-devel
BuildRequires: python%{python3_pkgversion}-pylint
BuildRequires: vala-devel
Requires: python%{python3_pkgversion}-xapps-overrides%{?_isa}
Requires: libpeas-loader-python3%{?_isa}
%if (0%{?rhel} && 0%{?rhel <= 7})
Requires(post): desktop-file-utils
Requires(postun): desktop-file-utils
%endif
Obsoletes: xplayer-browser-plugin <= %{version}-%{release}
%description
Xplayer is a generic media player.
%package devel
Summary: Files needed to develop plugins for %{name}
Requires: %{name}%{?_isa} == %{version}-%{release}
%description devel
This package contains files needed to develop plugins for %{name}.
%package doc
Summary: Documentation files for %{name}
BuildArch: noarch
BuildRequires: gtk-doc
%description doc
This package contains the documentation files for %{name}.
%package plugin-grilo
Summary: Plugin for integrating grillo into %{name}
Requires: %{name}%{?_isa} == %{version}-%{release}
%description plugin-grilo
Xplayer is a generic media player.
This package contains the plugin for integrating grillo into %{name}.
%prep
%autosetup -p1
# Fix shebang to python3.
f="data/%{name}-bugreport.py"
%{__sed} -e 's~^#!%{_bindir}/python$~#!%{__python3}~' \
< ${f} > ${f}.new
/bin/touch -r ${f} ${f}.new
%{__mv} -f ${f}.new ${f}
NOCONFIGURE=1 %{_bindir}/gnome-autogen.sh
%build
export PYTHON=%{__python3}
%configure \
--disable-silent-rules \
--disable-static \
--enable-gtk-doc \
--enable-introspection \
--disable-Werror
%make_build
%install
%make_install
%{_bindir}/find %{buildroot} -name '*.la' -or -name '*.a' | xargs rm -f
%{_bindir}/find %{buildroot}%{_datadir}/icons -type f -print | \
%{__sed} -e 's!%{buildroot}!!g' > %{name}.icons
%find_lang %{name}
%check
# Validate desktop-files.
%{_bindir}/desktop-file-validate \
%{buildroot}%{_datadir}/applications/*.desktop
%if (0%{?rhel} && 0%{?rhel <= 7})
%post
/sbin/ldconfig
/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
%{_bindir}/update-desktop-database &> /dev/null || :
%postun
/sbin/ldconfig
if [ $1 -eq 0 ] ; then
/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null
%{_bindir}/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_bindir}/glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
fi
%{_bindir}/update-desktop-database &> /dev/null || :
%posttrans
%{_bindir}/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_bindir}/glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
%else
%ldconfig_scriptlets
%endif
%files -f %{name}.lang -f %{name}.icons
%license AUTHORS COPYING debian/copyright
%doc ChangeLog NEWS README debian/changelog
%exclude %{_libdir}/%{name}/plugins/grilo/
%{_bindir}/%{name}*
%{_datadir}/applications/%{name}.desktop
%{_datadir}/glib-2.0/schemas/org.x.player*.xml
%{_datadir}/help/*/%{name}/
%{_datadir}/thumbnailers/%{name}.thumbnailer
%{_datadir}/%{name}/
%{_libdir}/girepository-1.0/*.typelib
%{_libdir}/lib%{name}*.so.*
%{_libdir}/%{name}/
%{_libexecdir}/%{name}*
%{_mandir}/man1/%{name}*
%files devel
%{_datadir}/gir-1.0/*.gir
%{_includedir}/%{name}/
%{_libdir}/lib%{name}*.so
%{_libdir}/pkgconfig/%{name}*.pc
%files doc
%license %{_datadir}/licenses/%{name}*
%doc %{_datadir}/doc/%{name}*
%doc %{_datadir}/gtk-doc
%files plugin-grilo
%{_libdir}/%{name}/plugins/grilo/
%changelog
* Mon Aug 27 2018 Leigh Scott <leigh123linux@googlemail.com> - 1.8.3-2
- Update python3 porting patch
* Wed Aug 15 2018 Leigh Scott <leigh123linux@googlemail.com> - 1.8.3-1
- Update to 1.8.3 release
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.8.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Tue Jun 19 2018 Miro Hrončok <mhroncok@redhat.com> - 1.8.0-3
- Rebuilt for Python 3.7
* Sat May 12 2018 Leigh Scott <leigh123linux@googlemail.com> - 1.8.0-2
- Port loader to python3
- Add requires libpeas-loader-python3
- Clean up scriptlets
* Sun May 06 2018 Leigh Scott <leigh123linux@googlemail.com> - 1.8.0-1
- Update to 1.8.0 release
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Fri Nov 17 2017 Björn Esser <besser82@fedoraproject.org> - 1.6.0-4
- Add required scriptlets for EPEL7
* Fri Nov 17 2017 Björn Esser <besser82@fedoraproject.org> - 1.6.0-3
- Fix Requires
* Fri Nov 17 2017 Björn Esser <besser82@fedoraproject.org> - 1.6.0-2
- Adaptions for EPEL7
* Sat Nov 04 2017 Leigh Scott <leigh123linux@googlemail.com> - 1.6.0-1
- Update to 1.6.0 release
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.3-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Sat Jul 01 2017 Björn Esser <besser82@fedoraproject.org> - 1.4.3-1
- New upstream release (rhbz#1467001)
* Wed May 24 2017 Björn Esser <besser82@fedoraproject.org> - 1.4.2-1
- New upstream release (rhbz#1454985)
* Mon May 08 2017 Björn Esser <besser82@fedoraproject.org> - 1.4.1-1
- New upstream release
* Mon May 08 2017 Björn Esser <besser82@fedoraproject.org> - 1.4.0-1
- Initial import (#1424871)
* Sat May 06 2017 Björn Esser <besser82@fedoraproject.org> - 1.4.0-0.1
- Initial rpm-release (#1424871)