Hi,
I've modified bookmarker.py and xine.py for freevo work with xine and
bookmark.
You need to have in you localconf.py :
VIDEO_PREFERED_PLAYER = 'xine'
I have tested only in file mode not on DVD mode
The patchs are below :
patch for bookmarker.py :
-- bookmarker.py.orig 2007-05-03 17:15:23.000000000 +0200
+++ bookmarker.py.new 2007-05-04 10:46:42.079220963 +0200
@@ -48,6 +48,7 @@
import util
import menu
import rc
+import glob
from event import *
@@ -58,6 +59,7 @@
def actions(self, item):
self.item = item
items = []
+
if item['autobookmark_resume']:
items.append((self.resume, _('Resume playback')))
if item.type == 'dir' or item.type == 'playlist':
@@ -68,22 +70,38 @@
return items
-
def resume(self, arg=None, menuw=None):
"""
resume playback
"""
t = max(0, self.item['autobookmark_resume'] - 10)
info = mmpython.parse(self.item.filename)
- if hasattr(info, 'seek') and t:
- arg='-sb %s' % info.seek(t)
- else:
- arg='-ss %s' % t
- if menuw:
- menuw.back_one_menu()
- self.item.play(menuw=menuw, arg=arg)
-
-
+ #Modif
+ if (config.VIDEO_PREFERED_PLAYER == 'xine'):
+ self.write_playlist(t)
+ arg = ("--playlist %s/playlist_xine_%s.tox" %
(config.FREEVO_CACHEDIR, t))
+ else:
+ if hasattr(info, 'seek') and t:
+ arg='-sb %s' % info.seek(t)
+ else:
+ arg='-ss %s' % t
+ if menuw:
+ menuw.back_one_menu()
+ self.item.play(menuw=menuw, arg=arg)
+
+ def write_playlist(self,time):
+ t = time
+ name = '%s/playlist_xine_%s.tox' % (config.FREEVO_CACHEDIR,t)
+ playlist = open(name,'w')
+ playlist.write ("# toxine playlist\n")
+ playlist.write ("entry {\n")
+ playlist.write (" identifier = %s;\n" % self.item.filename)
+ playlist.write (" mrl = %s;\n" % self.item.filename)
+ playlist.write (" start = %s\n" % t)
+ playlist.write ("};\n")
+ playlist.write ("# END\n")
+ playlist.close()
+
def bookmark_menu(self,arg=None, menuw=None):
"""
Bookmark list
@@ -106,22 +124,32 @@
if not self.item.mplayer_options:
self.item.mplayer_options = ''
- file.mplayer_options = str(self.item.mplayer_options) + '
-ss %s' % time
- items.append(file)
+ if (config.VIDEO_PREFERED_PLAYER == 'xine'):
+ self.write_playlist(int(line))
+ cmd = ' --playlist %s/playlist_xine_%s.tox' %
(config.FREEVO_CACHEDIR,int(line))
+ file.mplayer_options = (cmd)
+ else:
+ file.mplayer_options = str(self.item.mplayer_options) + ' -ss
%s' % time
+ items.append(file)
if items:
moviemenu = menu.Menu(self.item.name, items,
fxd_file=self.item.skin_fxd)
menuw.pushmenu(moviemenu)
- return
+ return
def eventhandler(self, item, event, menuw):
if event in (STOP, USER_END):
- if item.mode == 'file' and not item.variants and \
+ # effacer tous les fichiers repondant a la condition
+ playlist_remove = ("%s/playlist_xine*.tox" %
config.FREEVO_CACHEDIR)
+ for filename in glob.glob(playlist_remove):
+ os.remove(filename)
+
+ if item.mode == 'file' and not item.variants and \
not item.subitems and item.elapsed:
- item.store_info('autobookmark_resume', item.elapsed)
- else:
- _debug_('auto-bookmark not supported for this item')
+ item.store_info('autobookmark_resume', item.elapsed)
+ else:
+ _debug_('auto-bookmark not supported for this item')
if event == PLAY_END:
item.delete_info('autobookmark_resume')
@@ -129,14 +157,23 @@
# Bookmark the current time into a file
if event == STORE_BOOKMARK:
- bookmarkfile = util.get_bookmarkfile(item.filename)
+ #Get time elapsed for xine video
+ videoplayer = config.VIDEO_PREFERED_PLAYER
+ if (videoplayer == 'xine'):
+ command = ("%s -S get_time" % config.CONF.xine)
+ handle = os.popen(command,'r')
+ position = handle.read();
+ handle.close()
+ item.elapsed = int(position)
+
+ bookmarkfile = util.get_bookmarkfile(item.filename)
- handle = open(bookmarkfile,'a+')
- handle.write(str(item.elapsed))
- handle.write('\n')
- handle.close()
- rc.post_event(Event(OSD_MESSAGE, arg='Added Bookmark'))
- return True
+ handle = open(bookmarkfile,'a+')
+ handle.write(str(item.elapsed))
+ handle.write('\n')
+ handle.close()
+ rc.post_event(Event(OSD_MESSAGE, arg='Added Bookmark'))
+ return True
return False
and for xine.py :
--- xine.py.orig 2007-05-03 17:26:58.000000000 +0200
+++ xine.py.new 2007-05-04 10:46:49.929813279 +0200
@@ -86,7 +86,7 @@
self.app_mode = ''
self.xine_type = type
self.app = None
-
+
self.command = [ '--prio=%s' % config.MPLAYER_NICE ] + \
config.XINE_COMMAND.split(' ') + \
[ '--stdctl', '-V', config.XINE_VO_DEV,
@@ -120,6 +120,9 @@
play a dvd with xine
"""
self.item = item
+ self.options = options
+ #Modif for autobookmark
+ self.item.elapsed = 0
if config.EVENTS.has_key(item.mode):
self.app_mode = item.mode
else:
@@ -169,10 +172,16 @@
self.app_mode = 'vcd'
else:
- command.append(item.url)
+ if (len(options) > 1):
+ if (options[1] == '--playlist'):
+ #command.append('%s %s' % (options[1],options[2]))
+ command.append(options[1])
+ command.append(options[2])
+ else:
+ command.append(item.url)
- _debug_('Xine.play(): Starting cmd=%s' % command)
-
+ _debug_('Xine.play(): Starting cmd=>%s' % command)
+
rc.app(self)
self.app = childapp.ChildApp2(command)
return None
@@ -183,6 +192,15 @@
Stop xine
"""
if self.app:
+ #Modif for autobookmark
+ command = "%s -S get_time" % config.CONF.xine
+
+ handle = os.popen(command,'r')
+ position = handle.read();
+ handle.close()
+ print "Elapsed =", position
+ self.item.elapsed = int(position)
+ #######
self.app.stop('quit\n')
rc.app(None)
Regards
Senufo
|