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 ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ Freevo-users mailing list Freevo-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freevo-users