debian/0000755000000000000000000000000012104027553007165 5ustar debian/python-freevo.preinst0000644000000000000000000000113411506342360013400 0ustar #!/bin/sh -e # TODO: remove this file after releasing Squeeze if [ "$1" = upgrade ] && dpkg --compare-versions "$2" lt 1.9.0-4 then pycentral pkgremove freevo || true #fix bug #606782 pycentral pkgremove python-freevo || true #fix bug #606782 for i in 2.4 2.5 2.6 ; do if test -r /usr/lib/python$i/site-packages/freevo ; then find /usr/lib/python$i/site-packages/freevo \ \( -type l -a -name '*.py' \) -o \( -type f -a -name '*.pyc' \) \ -o \( -type f -a -name '*.pyo' \) | xargs -r rm || true fi done fi #DEBHELPER# debian/freevo.freevo_rssserver.init0000644000000000000000000000405211250226030014734 0ustar #! /bin/sh ### BEGIN INIT INFO # Provides: freevo-rssserver # Required-Start: $remote_fs $time # Required-Stop: $remote_fs $time # Should-Start: # Should-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Starts the Freevo Home Theatre PC Platform rssserver # Description: ### END INIT INFO PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/bin/freevo.real test -x $DAEMON || exit if [ `id -u` = 0 ] ; then #echo switching to freevo user exec su --shell /bin/sh freevo -c "$0 $@" fi . /lib/lsb/init-functions #These variables affect how freevo works, if you want to really set # those, put them in /etc/default/freevo . See also /etc/freevo/debconf.sh unset OS_LOGDIR FREEVO_LOGDIR OS_STATICDIR FREEVO_STATICDIR OS_CACHEDIR FREEVO_CACHEDIR FREEVO_SHARE FREEVO_CONTRIB FREEVO_SCRIPT FREEVO_CONFIG DISPLAY LD_PRELOAD SDL_VIDEODRIVER FREEVO_LOCALE FREEVO_PYTHON # Default is to start nothing START_FREEVO_RSSSERVER=0 test -r /etc/freevo/debconf.sh && . /etc/freevo/debconf.sh test -r /etc/default/freevo && . /etc/default/freevo test "$START_FREEVO_RSSSERVER" = 1 || exit 0 test -x $DAEMON || exit 0 test "${NOMOUSE}" = "true" && export SDL_NOMOUSE=true start_freevo_rssserver() { log_action_msg "Starting Freevo Home Theatre PC Platform (rssserver)" $DAEMON --daemon rssserver log_action_end_msg $? } stop_freevo_rssserver() { log_action_msg "Stopping Freevo Home Theatre PC Platform (rssserver)" $DAEMON --stop rssserver log_action_end_msg $? } restart_freevo() { log_action_msg "Restarting Freevo Home Theatre PC Platform (rssserver)" $DAEMON --stop rssserver sleep 5 $DAEMON --daemon rssserver log_action_end_msg $? } case "$1" in start) start_freevo_rssserver ;; stop) stop_freevo_rssserver ;; restart|force-reload) restart_freevo_rssserver ;; reload) #FIXME doing nothing ;; *) echo "Usage: $0 {start|stop|restart|reload|force-reload}" >&2 exit 1 ;; esac exit 0 debian/patches/0000755000000000000000000000000012002731244010610 5ustar debian/patches/encodingserver.py.diff0000644000000000000000000001756210773425122015131 0ustar --- freevo/src/helpers/encodingserver.py 2008/03/24 21:51:48 10586 +++ freevo/src/helpers/encodingserver.py 2008/03/26 11:48:29 10587 @@ -68,7 +68,6 @@ class EncodingServer(xmlrpc.XMLRPC): - def __init__(self, debug=False, allowNone=False): """ Initialise the EncodingServer class """ _debug_('EncodingServer.__init__(debug=%r, allowNone=%r)' % (debug, allowNone), 2) @@ -80,14 +79,16 @@ self.jobs = {} self.encodingopts = EncodingOptions() self.queue = EncodingQueue() - _debug_("EncodingServer started...", DINFO) + _debug_('EncodingServer started...', DINFO) + def xmlrpc_echotest(self, blah): """ Using Twisted check the connection """ _debug_('xmlrpc_echotest(blah=%r)' % (blah), 2) return (True, 'EncodingServer::echotest: %s' % blah) - def xmlrpc_initEncodeJob(self, source, output, friendlyname="", chapter=None): + + def xmlrpc_initEncodeJob(self, source, output, friendlyname='', chapter=None): """ Using Twisted initialise an encoding job """ _debug_('xmlrpc_initEncodeJob(source=%r, output=%r, friendlyname=%r, chapter=%r)' % \ (source, output, friendlyname, chapter), 1) @@ -95,11 +96,11 @@ if not (source or output): return (False, 'EncodingServer::initEncodeJob: no source or output given') - # generate a "random" idnr based on the time in p2.3, int() can return long + # generate a 'random' idnr based on the time in p2.3, int() can return long # int's, which is fine, except it makes XMLRPC fail somewhere along the way so we # devide or random number by 100 :) idnr = int((time.time() / random.random()) / 100) - _debug_("idnr=%s" % (idnr), 2) + _debug_('idnr=%s' % (idnr), 2) self.jobs[idnr] = EncodingJob(source, output, friendlyname, idnr, chapter) #wait for the analyzing to end @@ -109,30 +110,43 @@ _debug_('Analysis failed') return (False,10) - _debug_("Initialized job %s (idnr : %s)" % (friendlyname, idnr), DINFO) + _debug_('Initialized job %s (idnr: %s)' % (friendlyname, idnr), DINFO) return (True, idnr) + def xmlrpc_getContainerCAP(self): """ Using Twisted get the container capabilities """ _debug_('xmlrpc_getContainerCAP()' , 2) return EncodingOptions.getContainerList( self.encodingopts) + def xmlrpc_setContainer(self, idnr, container): """ Using Twisted set the container """ _debug_('xmlrpc_setContainer(idnr=%r, container=%r)' % (idnr, container), 2) status = self.jobs[idnr].setContainer(container) if not status: - return (True, "EncodingServer::setContainer: OK") + return (True, 'EncodingServer::setContainer: OK') + else: + return (False, 'EncodingServer::setContainer: %s' % status) + + + def xmlrpc_setTimeslice(self,idnr,timeslice): + _debug_('xmlrpc_setTimeslice(self, %s, %s)' % (idnr, timeslice), 3) + status = self.jobs[idnr].setTimeslice(timeslice) + if not status: + return (True, 'EncodingServer::setTimeslice: OK') else: - return (False, "EncodingServer::setContainer: %s" % status) + return (False, 'EncodingServer::setTimeslice: %s' % status) + def xmlrpc_getVideoCodecCAP(self): """ Using Twisted get the video capabilities """ _debug_('xmlrpc_getVideoCodecCAP()', 2) return EncodingOptions.getVideoCodecList(self.encodingopts) + def xmlrpc_setVideoCodec(self, idnr, vcodec, tgtsize, multipass=False, vbitrate=0, altprofile=None): """ Using Twisted set the video codec """ _debug_('xmlrpc_setVideoCodec(idnr=%r, vcodec=%r, tgtsize=%r, multipass=%r, vbitrate==%r)' % \ @@ -144,15 +158,17 @@ status = self.jobs[idnr].setVideoCodec(vcodec, tgtsize, multipass, vbitrate, altprofile) if not status: - return (True, "EncodingServer::setVideoCodec: OK") + return (True, 'EncodingServer::setVideoCodec: OK') else: - return (False, "EncodingServer::setVideoCodec: %s" % status) + return (False, 'EncodingServer::setVideoCodec: %s' % status) + def xmlrpc_getAudioCodecCAP(self): """ Using Twisted get the audio capabilities """ _debug_('xmlrpc_getAudioCodecCAP()', 2) return EncodingOptions.getAudioCodecList(self.encodingopts) + def xmlrpc_setAudioCodec(self, idnr, acodec, abrate): """ Using Twisted set the audio codec """ _debug_('xmlrpc_setAudioCodec(idnr=%r, acodec=%r, abrate=%r)' % (idnr, acodec, abrate), 2) @@ -163,9 +179,9 @@ status = self.jobs[idnr].setAudioCodec(acodec, abrate) if not status: - return (True, "EncodingServer::setAudioCodec: OK") + return (True, 'EncodingServer::setAudioCodec: OK') else: - return (False, "EncodingServer::setAudioCodec: %s" % status) + return (False, 'EncodingServer::setAudioCodec: %s' % status) def xmlrpc_setVideoRes(self, idnr, videores ): @@ -178,9 +194,9 @@ status = self.jobs[idnr].setVideoRes( videores) if not status: - return (True, "EncodingServer::setVideoRes: OK") + return (True, 'EncodingServer::setVideoRes: OK') else: - return (False, "EncodingServer::setVideoRes: %s" % status) + return (False, 'EncodingServer::setVideoRes: %s' % status) def xmlrpc_setNumThreads(self, idnr, numthreads ): @@ -193,9 +209,9 @@ status = self.jobs[idnr].setNumThreads( numthreads) if not status: - return (True, "EncodingServer::setNumThreads: OK") + return (True, 'EncodingServer::setNumThreads: OK') else: - return (False, "EncodingServer::setNumThreads: %s" % status) + return (False, 'EncodingServer::setNumThreads: %s' % status) def xmlrpc_getVideoFiltersCAP(self): @@ -214,33 +230,37 @@ status = self.jobs[idnr].setVideoFilters(unjam(filters)) if not status: - return (True, "EncodingServer::setVideoFilters: OK") + return (True, 'EncodingServer::setVideoFilters: OK') else: - return (False, "EncodingServer::setVideoFilters: %s" % status) + return (False, 'EncodingServer::setVideoFilters: %s' % status) + def xmlrpc_queueIt(self, idnr, now=False): """ Using Twisted queue a job to run """ _debug_('xmlrpc_queueIt(idnr=%r, now=%r)' % (idnr, now), 2) self.queue.addEncodingJob(self.jobs[idnr]) del self.jobs[idnr] - _debug_("Added job %s to the queue" % idnr, DINFO) + _debug_('Added job %s to the queue' % idnr, DINFO) if now: self.queue.startQueue() - return (True, "EncodingServer::queueIt: OK") + return (True, 'EncodingServer::queueIt: OK') + def xmlrpc_getProgress(self): """ Using Twisted get the progress status of the current job """ _debug_('xmlrpc_getProgress()', 2) prog = self.queue.getProgress() if type(prog) is str: - return (False, "EncodingServer::getProgress: %s" % prog) + return (False, 'EncodingServer::getProgress: %s' % prog) return (True, jam(prog)) + def xmlrpc_startQueue(self): """ Using Twisted start the job queue """ _debug_('xmlrpc_startQueue()', 2) self.queue.startQueue() - return (True, "EncodingServer::startqueue: OK") + return (True, 'EncodingServer::startqueue: OK') + def xmlrpc_listJobs(self): """ List the current jobs """ @@ -257,7 +277,7 @@ os.chdir(tmppath) debug = False - if len(sys.argv) >= 2 and sys.argv[1] == "debug": + if len(sys.argv) >= 2 and sys.argv[1] == 'debug': debug = True import encodingcore encodingcore.DEBUG = debug debian/patches/encodingclient.py.diff0000644000000000000000000001655610773425122015103 0ustar --- freevo/src/video/encodingclient.py 2008/03/24 21:51:48 10586 +++ freevo/src/video/encodingclient.py 2008/03/26 11:48:29 10587 @@ -81,8 +81,6 @@ """ - - def returnFromJelly(status, response): """Un-serialize EncodingServer responses""" if status: @@ -90,11 +88,11 @@ else: return (status, response) + def connectionTest(teststr='testing'): """Test connectivity Returns false if the EncodingServer cannot be reached""" - try: (status, response) = server.echotest(teststr) except: @@ -102,6 +100,7 @@ return (status, response) + def initEncodeJob(source, output, friendlyname="", title=None): """Initialize the encodingjob. @@ -116,7 +115,6 @@ @param title: is obligatory if you have a dvd/dvd-on-disc, in wich case you need to specify a title (integer) """ - _debug_('initEncodeJob(%s, %s, %s, %s)' % (source, output, friendlyname, title), DINFO) if not (source or output): return (False, "EncodingClient: no source and/or output") @@ -130,27 +128,36 @@ return (status, response) + def getContainerCAP(): """Get a list of possible container formats This returns a list with plain strings, each identifiyng a container format, like Avi, MPEG or OGG. Currently only Avi is available. The strings are user-readable. """ - try: response = server.getContainerCAP() except: - return (False ,'EncodingClient: connection error') + return (False, 'EncodingClient: connection error') return (True, response ) + +def setTimeslice(idnr, timeslice): + """Set """ + try: + (status, response) = server.setTimeslice(idnr, timeslice) + except: + return (False, 'EncodingClient: connection error') + return (status, response) + + def setContainer(idnr, container): """Set a container format container is one of the possible container formats. It should be one of the strings returned by getContainerCAP. """ - if not (idnr or container): return (False, "EncodingClient: no idnr and/or container") @@ -161,19 +168,20 @@ return (status, response) + def getVideoCodecCAP(): """Get a list of possible video codecs (depending on the input and container format) This returns a list with plain strings, each identifiyng a video codec, like MPEG4(divx), Xvid etc. Currently only MPEG4 is available. The strings are user-readable. """ - try: response = server.getVideoCodecCAP() except: - return (False,'EncodingClient: connection error') + return (False, 'EncodingClient: connection error') + + return (True, response) - return (True,response) def setVideoCodec(idnr, vcodec, tgtsize, multipass=False, vbitrate=0, altprofile=None): """Set a video codec @@ -187,7 +195,6 @@ @param vbitrate: is the video bitrate, if it is not 0 then this value is used instead of using the tgtsize. """ - if not (idnr or vcodec or tgtsize or vbitrate): return (False, "EncodingClient: no idnr and/or videocodec and/or targetsize") @@ -198,13 +205,13 @@ return (status, response) + def getAudioCodecCAP(): """Get a list of possible audio codecs (depending on the input and container format) This returns a list with plain strings, each identifiyng a audio codec, like MP3, Ogg, etc. Currently only MP3 is available. The strings are user-readable. """ - try: response = server.getAudioCodecCAP() except: @@ -212,6 +219,7 @@ return (True, response ) + def setAudioCodec(idnr, acodec, abrate): """Set a audio codec @@ -222,7 +230,6 @@ between 0 and 320 is valid, it is advisable to take standard encoding bitrates like 32, 64, 128, 160, 192, 256 and 320. """ - if not (idnr or acodec or abrate): return (False, "EncodingClient: no idnr and/or audiocodec and/or audiobitrate") @@ -233,13 +240,13 @@ return (status, response) + def setVideoRes(idnr, videores): """Set the video resolution @param vidoeres: is a string in the form of x:y """ - if not (idnr or videores): return (False, "EncodingClient: no idnr or no videores") @@ -250,13 +257,13 @@ return (status, response) + def setNumThreads(idnr, numthreads): """Set the number of encoder threads @param numthreads: is a string value from 1-8 """ - if not (idnr or numthreads): return (False, "EncodingClient: no idnr or no numthreads") @@ -267,6 +274,7 @@ return (status, response) + def getVideoFiltersCAP(): """Get a dict of possible video filters & processing operations @@ -274,13 +282,13 @@ a list of options (also human-readable strings) as possible settings for each filter. The first option in the list is the default. """ - try: response = server.getVideoFiltersCAP() except: return (False, 'EncodingClient: connection error') - return (True ,response) + return (True, response) + def setVideoFilters(idnr, filters): """Set a number of possible video filters & processing operations @@ -291,7 +299,6 @@ to each keyword is thus a string (wich means you cannot choose more then 1 option/setting) per video filter. """ - if not (idnr or filters): return (False, "EncodingClient: no idnr or filter dictionary") @@ -302,11 +309,11 @@ return (status, response) + def queueIt(idnr, now=False): """Insert the current job in the encodingqueue If now is true, the encoding queue is automatically started """ - if not idnr: return (False, "EncodingClient: no idnr") @@ -317,6 +324,7 @@ return (status, response) + def getProgress(): """Get the progress & pass information of the job currently encoding. @@ -336,7 +344,6 @@ @returns: When the queue is active, this call returns a tuple of 4 values: (friendlyname, status, perc, timerem) """ - try: (status, response) = server.getProgress() except: @@ -344,9 +351,9 @@ return returnFromJelly(status, response) + def startQueue(): """Start the encoding queue""" - try: (status, response) = server.startQueue() except: @@ -354,6 +361,7 @@ return (status, response) + def listJobs(): """Get a list with all jobs in the encoding queue and their current state @@ -362,7 +370,6 @@ containing 3 values (idnr, friendlyname, status) These values have the same meaning as the corresponding values returned by the getProgress call """ - try: (status, response) = server.listJobs() except: @@ -389,14 +396,14 @@ if function == "runtest": #(status, idnr) = initEncodeJob('/storage/video/dvd/BRUCE_ALMIGHTY/', 'bam.avi', 'lala', 17) (status, idnr) = initEncodeJob('/dev/cdrom', '/home/rdc/fogu.avi', 'lala', 1) - print "Job has idnr nr : %s" % idnr + print "Job has idnr num: %s" % idnr print idnr #sleep(5) (status, codec) = getVideoCodecCAP(idnr) print codec[0] print codec[1] print setVideoCodec(idnr, codec[1], 1400, True, 0) - #print setVideoFilters(idnr, {'Denoise' : 'HQ denoise'}) + #print setVideoFilters(idnr, {'Denoise': 'HQ denoise'}) #sleep(5) print queueIt(idnr, True) sleep(5) debian/patches/bashims0000644000000000000000000000434211063255572012177 0ustar Index: freevo-1.8.1/contrib/fbcon/mgafb =================================================================== --- freevo-1.8.1.orig/contrib/fbcon/mgafb 2008-08-24 11:19:56.000000000 +0000 +++ freevo-1.8.1/contrib/fbcon/mgafb 2008-08-24 11:20:56.000000000 +0000 @@ -28,7 +28,7 @@ exit 1 fi -if [ "$1" == "restore" ]; then +if [ "$1" = "restore" ]; then if [ -c /dev/fb0 ]; then HEAD0=/dev/fb0 HEAD1=/dev/fb1 @@ -51,8 +51,8 @@ exit 0 fi -if ! [ "$1" == "pal" ] && ! [ "$1" == "PAL" ] && \ - ! [ "$1" == "ntsc" ] && ! [ "$1" == "NTSC" ]; then +if ! [ "$1" = "pal" ] && ! [ "$1" = "PAL" ] && \ + ! [ "$1" = "ntsc" ] && ! [ "$1" = "NTSC" ]; then echo "usage: mgafb [ pal | ntsc ] resolution" echo " mgafb restore" exit 1 @@ -66,11 +66,11 @@ $freevo runapp matroxset -f /dev/fb0 -m 3 # set the correct fbset mode -if [ "$1" == "pal" ] || [ "$1" == "PAL" ]; then +if [ "$1" = "pal" ] || [ "$1" = "PAL" ]; then # switch to PAL $freevo runapp matroxset 1 - if [ "$2" == "768x576" ]; then + if [ "$2" = "768x576" ]; then $freevo runapp fbset -fb /dev/fb0 -depth 32 -left 20 -right 10 -hslen 34 \ -upper 30 -lower 10 -vslen 10 -xres 768 -yres 576 \ -vxres 768 -vyres 576 -depth 32 -laced false -bcast true -pixclock 38400 \ @@ -80,7 +80,7 @@ # -upper 39 -lower 10 -hslen 46 -vslen 4 -xres 768 -yres 576 \ # -vxres 768 -vyres 576 -depth 32 -laced false -bcast true - elif [ "$2" == "800x600" ]; then + elif [ "$2" = "800x600" ]; then $freevo runapp fbset -fb /dev/fb0 -depth 32 -left 48 -right 24 \ -upper 70 -lower 32 -hslen 40 -vslen 2 -xres 800 -yres 600 \ -vxres 800 -vyres 600 -depth 32 -laced false -bcast true @@ -93,11 +93,11 @@ else $freevo runapp matroxset -f /dev/fb0 2 2 db=`dirname $0`/fbset.db - if [ "$2" == "640x480" ]; then + if [ "$2" = "640x480" ]; then $freevo runapp fbset -db $db -fb /dev/fb0 "ntsc-640x480_60" - elif [ "$2" == "768x576" ]; then + elif [ "$2" = "768x576" ]; then $freevo runapp fbset -db $db -fb /dev/fb0 "ntsc-768x576" - elif [ "$2" == "800x600" ]; then + elif [ "$2" = "800x600" ]; then $freevo runapp fbset -db $db -fb /dev/fb0 "ntsc-800x600" else echo unsupported mode $2 for ntsc debian/patches/rc.py.diff0000644000000000000000000000257411653227223012515 0ustar #Author: A Mennucc #Descrition: if lirc is not used , then the inputhelper exits immediatly, and in this case this class must ack that diff -u x/src/rc.py x/src/rc.py --- x/src/rc.py 2011-10-23 15:52:44.031558233 +0200 +++ x/src/rc.py 2011-10-30 11:53:16.042293119 +0100 @@ -193,21 +193,30 @@ self.monitor = kaa.IOMonitor(self._handle_input) self.monitor.register(self.input.stderr) + self.inputhelper_is_running=True def _handle_input(self): """ Handle input events from input helper over stderr """ data = self.input.stderr.read(self.wire_format.size) - t, key = self.wire_format.unpack(data) - if time.time() - t < 0.5: - self.rc.post_key(key) + if data: + t, key = self.wire_format.unpack(data) + if time.time() - t < 0.5: + self.rc.post_key(key) + else: + #NO DATA, probably the helper exited! + self.input.poll() + if self.input.returncode != None: + self.monitor.unregister() + self.inputhelper_is_running=False def __send_cmd(self, cmd): """ Send a command to the input helper """ - self.input.stdin.write(cmd + '\n') + if self.inputhelper_is_running: + self.input.stdin.write(cmd + '\n') def suspend(self): """ debian/patches/encodingcore_video_copy_noargs.diff0000644000000000000000000000200711333116365017700 0ustar #Bug: https://sourceforge.net/tracker/?func=detail&aid=2943184&group_id=46652&atid=446895 #Author: A Mennucc Index: freevo-1.9.0/src/encodingcore.py =================================================================== --- freevo-1.9.0.orig/src/encodingcore.py 2009-05-26 18:15:08.000000000 +0200 +++ freevo-1.9.0/src/encodingcore.py 2010-02-05 23:13:06.000000000 +0100 @@ -805,8 +805,9 @@ # set video encoder options if self.altprofile is None: - args = [ - '-ovc', mappings['vcodec'][self.vcodec][0], mappings['vcodec'][self.vcodec][1], + args = [ '-ovc', mappings['vcodec'][self.vcodec][0] ,] + if self.vcodec != 'copy': + args += [ mappings['vcodec'][self.vcodec][1], mappings['vcodec'][self.vcodec][2] % (self.vbrate, self.threads, vpass, aspect ) ] else: # Allow encoder options from client aprofile = '%s:vbitrate=%s:threads=%s%s%s' % (self.altprofile, self.vbrate, self.threads, vpass, aspect) debian/patches/series0000644000000000000000000000074711731046732012046 0ustar svn_11905.diff bashims nocheck source_etc_freevo_debconf_py.diff freevo_config_py_remarks.diff umask.diff config_py.diff local_conf_py_example_remarks.diff exit_0_if_running.diff mplayer_use_default_vo_ao.diff applelib.py.diff #cdrom.patch #weather.diff #dvbstreamer_spaces_in_service.diff #encodingcore_video_copy_noargs.diff #encodingcore_no_print.diff #encodingcore_report_failures.diff #imdb-html5lib.patch #twisted-web-9.diff #force-python2.5.diff #svn11693-py2.6-exceptions.diff debian/patches/local_conf_py_example_remarks.diff0000644000000000000000000000406611651072132017521 0ustar Index: freevo-1.9.2b2/local_conf.py.example =================================================================== --- freevo-1.9.2b2.orig/local_conf.py.example 2010-11-12 18:54:09.000000000 +0100 +++ freevo-1.9.2b2/local_conf.py.example 2011-10-23 17:43:18.785374946 +0200 @@ -11,6 +11,13 @@ # /usr/share/freevo, contains all the core settings. To change the settings copy # this file to ~/.freevo/local_conf.py or /etc/freevo/local_conf.py # +# Debian specific note: +# the file /etc/freevo/debconf.py is loaded after freevo_config.py +# and before local_conf.py . It imports the variables +# VIDEO_ITEMS AUDIO_ITEMS IMAGE_ITEMS TV_RECORD_DIR +# as are set using the debconf. +# Those variables may then be augmented here, by using the += operator. +# # It does not contain all the possible settings that you can change, see # freevo_config.py for all the possible settings. Also it does not contain # settings for the plug-ins, plug-ins contain their configuration information and @@ -574,6 +581,8 @@ # This is a list of items (e.g. directories, fxd files). The items themselves # can also be a list of (title, file) # +# WARNING: see Debian specific note at beginning of this file +# # VIDEO_ITEMS = [ # ('action movies', '/freevo/movies/action'), # ('funny stuff', '/freevo/movies/comedy'), @@ -662,6 +671,8 @@ # # To add webradio support, add fxd/webradio.fxd to this list # +# WARNING: see Debian specific note at beginning of this file +# # AUDIO_ITEMS = [ # ('Music Collection', '/freevo/audio/mp3'), # 'fxd/webradio.fxd', @@ -710,6 +721,8 @@ # This is a list of items (e.g. directories, fxd files). The items itself # can also be a list of (title, file) # +# WARNING: see Debian specific note at beginning of this file +# # IMAGE_ITEMS = [ # ('My Photos', '/freevo/images'), # ] @@ -1139,6 +1152,9 @@ # This is where recorded video is written. # # XXX the path doesn't work from the www cgi scripts! +# +# WARNING: see Debian specific note at beginning of this file +# # TV_RECORD_DIR = None # This will enable duplicate recording detection debian/patches/dvbstreamer_spaces_in_service.diff0000644000000000000000000000111211331267450017526 0ustar #Bug: https://sourceforge.net/tracker/?func=detail&aid=2943178&group_id=46652&atid=446895 #Author: A Mennucc --- a/src/tv/plugins/dvbstreamer/comms.py~ 2008-05-03 14:21:08.000000000 +0200 +++ b/src/tv/plugins/dvbstreamer/comms.py 2009-09-02 09:02:22.000000000 +0200 @@ -85,7 +85,7 @@ """ Select the primary service. """ - (errcode, errmsg, msg) = self.execute_command('select ' + service, True) + (errcode, errmsg, msg) = self.execute_command('select "' + service + '"', True) if errcode != 0: raise RuntimeError, errmsg debian/patches/cdrom.patch0000644000000000000000000001153111331267450012745 0ustar #Bug: http://sourceforge.net/tracker/?func=detail&aid=2822462&group_id=46652&atid=446895 #Author: A Mennucc diff -ur freevo.orig/util/fileops.py freevo/util/fileops.py --- freevo/src/util/fileops.py 2009-04-11 16:58:01.000000000 +0200 +++ freevo/src/util/fileops.py 2009-06-26 23:44:06.000000000 +0200 @@ -382,8 +382,6 @@ so, se = p.communicate() if rc in (1,32,): _debug_('mounting %r: %s' % (dir, se), DWARNING) - from util.misc import print_upper_execution_stack - print_upper_execution_stack() if os.path.ismount(dir) and not dir in mounted_dirs: mounted_dirs.append(dir) if force and not dir in mounted_dirs: @@ -427,9 +425,9 @@ def resolve_media_mountdir(*arg): """ - get the mount point of the media with media_id + get the media with given media_id , and add its mountpoint to the filename """ - _debug_('resolve_media_mountdir(arg=%r)' % (arg,), 2) + _debug_('resolve_media(arg=%r)' % (arg,), 2) if len(arg) == 1 and isinstance(arg[0], dict): media_id = arg[0]['media_id'] file = arg[0]['file'] @@ -439,16 +437,15 @@ else: raise KeyError - mountdir = '' + media = None # Find on what media it is located for media in config.REMOVABLE_MEDIA: if media_id == media.id: # Then set the filename - mountdir = media.mountdir file = vfs.join(media.mountdir, file) break - return mountdir, file + return media, file def check_media(media_id): diff -ur freevo.orig/video/plugins/mplayer.py freevo/video/plugins/mplayer.py --- freevo/src/video/plugins/mplayer.py 2009-05-07 19:34:38.000000000 +0200 +++ freevo/src/video/plugins/mplayer.py 2009-06-26 23:57:09.000000000 +0200 @@ -76,6 +76,8 @@ self.plugins = [] self.paused = False self.stored_time_info = None + self.audio_media = None + self.subtitle_media = None def rate(self, item): @@ -297,13 +299,15 @@ _debug_('crop=%s:%s:%s:%s' % (x2-x1, y2-y1, x1, y1)) if item.subtitle_file: - d, f = util.resolve_media_mountdir(item.subtitle_file) - util.mount(d) + self.subtitle_media, f = util.resolve_media_mountdir(item.subtitle_file) + if self.subtitle_media: + self.subtitle_media.mount() args['sub'] = '-sub %s' % f if item.audio_file: - d, f = util.resolve_media_mountdir(item.audio_file) - util.mount(d) + self.audio_media, f = util.resolve_media_mountdir(item.audio_file) + if self.audio_media: + self.audio_media.mount() args['audiofile'] = '-audiofile %s' % f self.plugins = plugin.get('mplayer_video') @@ -389,6 +393,14 @@ rc.app(None) dialog.disable_overlay_display() self.app = None + + if self.subtitle_media: + self.subtitle_media.mount() + self.subtitle_media = None + + if self.audio_media: + self.audio_media.mount() + self.audio_media = None def eventhandler(self, event, menuw=None): diff -ur freevo.orig/video/videoitem.py freevo/video/videoitem.py --- freevo/src/video/videoitem.py 2009-05-16 20:10:55.000000000 +0200 +++ freevo/src/video/videoitem.py 2009-06-27 00:20:03.000000000 +0200 @@ -98,6 +98,7 @@ self.subitems = [] self.current_subitem = None self.media_id = '' + self.mounted_media = None self.subtitle_file = {} self.audio_file = {} @@ -641,9 +642,10 @@ if self.url.startswith('file://'): file = self.filename if self.media_id: - mountdir, file = util.resolve_media_mountdir(self.media_id,file) - if mountdir: - util.mount(mountdir) + media = util.check_media(self.media_id) + if media: + media.mount() + self.mounted_media = media else: self.menuw.show() ConfirmBox(text=(_('No media found for "%(file)s".\nPlease insert the media "%(media_id)s".')) % \ @@ -651,7 +653,8 @@ return elif self.media: - util.mount(os.path.dirname(self.filename)) + self.media.mount() + self.mounted_media = self.media # dvd and vcd elif self.mode in ('dvd', 'vcd') and not self.filename and not self.media: @@ -707,7 +710,10 @@ if self.player: self.player.stop() - + + if self.mounted_media: + self.mounted_media.umount() + self.mounted_media = None def dvd_vcd_title_menu(self, arg=None, menuw=None): """ debian/patches/encodingcore_no_print.diff0000644000000000000000000000504311333116365016022 0ustar #Bug: https://sourceforge.net/tracker/?func=detail&aid=2943181&group_id=46652&atid=446895 #Author: A Mennucc Index: freevo-1.9.0/src/encodingcore.py =================================================================== --- freevo-1.9.0.orig/src/encodingcore.py 2010-02-05 23:13:06.000000000 +0100 +++ freevo-1.9.0/src/encodingcore.py 2010-02-05 23:13:21.000000000 +0100 @@ -37,7 +37,7 @@ from time import sleep import sys, os, re #, ConfigParser, copy from subprocess import Popen, PIPE -from pprint import pprint +from pprint import pformat from copy import copy from string import split, join from util.misc import uniquify_filename @@ -447,8 +447,8 @@ if id_match: id_info[id_match.groups()[0]] = id_match.groups()[1] - if config.DEBUG >= 2: - print 'id_info:',; pprint(id_info) + + _debug_('id_info:'+pformat(id_info)) self.id_info = id_info @@ -500,7 +500,6 @@ shutil.copy(capture, vfs.getoverlay(self.output)) _debug_('copied %r to %r' % (capture, vfs.getoverlay(self.output))) except Exception, why: - print why _debug_('%s' % why, DINFO) _debug_('unable to write file %r' % self.output, DWARNING) else: @@ -557,7 +556,6 @@ Parses Mplayer output to obtain ideal cropping parameters, and do PAL/NTSC detection from QuickRip, heavily adapted, new algo. """ - #print '_cropdetect_parse(self, lines=%r, data=%r)' % (lines, data) re_crop = re.compile('.*-vf crop=(\d*:\d*:\d*:\d*).*') re_ntscprog = re.compile('24fps progressive NTSC content detected') @@ -1065,12 +1063,10 @@ #get the first queued object self.currentjob = self.qlist[0] - if config.DEBUG >= 2: - #print 'self.currentjob:',; pprint(self.currentjob.__dict__) - #print 'self.currentjob.thread:',; pprint(self.currentjob.thread.__dict__) - print 'self.currentjob.idnr:', self.currentjob.idnr - print 'self.currentjob.status:', self.currentjob.status - print 'self.currentjob.thread.returncode:', self.currentjob.thread.returncode + _debug_('self.currentjob.idnr: '+repr(self.currentjob.idnr)) + _debug_('self.currentjob.status: '+repr(self.currentjob.status)) + if hasattr(self.currentjob,'thread'): + _debug_('self.currentjob.thread.returncode: '+repr(self.currentjob.thread.returncode)) _debug_('PID %s' % self.currentjob.pid) debian/patches/weather.diff0000644000000000000000000000164511331267450013116 0ustar #Bug: https://sourceforge.net/tracker/?func=detail&aid=2943186&group_id=46652&atid=446895 #Author: A Mennucc --- x/src/plugins/idlebar/weather.py.orig 2009-05-25 21:04:41.000000000 +0200 +++ x/src/plugins/idlebar/weather.py 2010-01-30 11:57:20.442851457 +0100 @@ -162,16 +162,16 @@ to cache the date somewhere. """ _debug_('checkweather()', 2) + temperature, icon = '?', 'na.png' try: - temperature, icon = '?', 'na.png' if os.path.isfile(self.cachefile): cachefd = open(self.cachefile, 'r') newlist = map(string.rstrip, cachefd.readlines()) temperature, icon = newlist cachefd.close() - return temperature, icon except Exception, why: _debug_(why, DERROR) + return temperature, icon def calc_positions(self, osd, image_w, image_h, text_w, text_h): debian/patches/svn_11892.diff0000644000000000000000000024063311655577530013047 0ustar # update from freevo 1.9.2b2 to SVN 11892 # (but skipping a small mistake) # Solo in freevo-1.9.2b2: debian diff -x .svn -ur freevo-1.9.2b2/freevo svn/freevo --- freevo-1.9.2b2/freevo 2011-11-06 22:31:50.257675315 +0100 +++ svn/freevo 2011-11-04 20:40:11.581954346 +0100 @@ -4,7 +4,7 @@ # ----------------------------------------------------------------------- # The main entry point to the whole suite of applications # ----------------------------------------------------------------------- -# $Id: freevo 11759 2010-12-05 20:41:53Z adam $ +# $Id: freevo 11871 2011-09-01 13:42:08Z adam $ # # Notes: This is a rewrite of the old shell script in Python # Todo: @@ -179,15 +179,18 @@ get the newest version of python [ with freevo installed ] """ _debug_('version=%r' % (sys.version)) - if sys.hexversion >= 0x02060000: + if sys.hexversion >= 0x02070000: + # python seems to be ok + search = ('python2.7', 'python2', 'python') + elif sys.hexversion >= 0x02060000: # python seems to be ok search = ('python2.6', 'python2', 'python') elif sys.hexversion >= 0x02050000: # try python2.5, else take python search = ('python2.5', 'python2', 'python') else: - # python is too old, try to find python2.6, python2.5 or python2 - search = ('python2.6', 'python2.5', 'python2') + # python is too old, try to find python2.7, python2.6, python2.5 or python2 + search = ('python2.7', 'python2.6', 'python2.5', 'python2') for python in search: for path in os.environ['PATH'].split(':'): diff -x .svn -ur freevo-1.9.2b2/freevo_config.py svn/freevo_config.py --- freevo-1.9.2b2/freevo_config.py 2011-11-06 22:31:50.249680634 +0100 +++ svn/freevo_config.py 2011-11-04 20:40:11.581954346 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # System configuration # ----------------------------------------------------------------------- -# $Id: freevo_config.py 11842 2011-02-27 22:28:53Z adam $ +# $Id: freevo_config.py 11892 2011-11-02 22:20:21Z adam $ # # Notes: # This file contains the freevo settings. To change the settings @@ -784,6 +784,9 @@ # 1 = autoaccept IMDB_AUTOACCEPT_SINGLE_HIT = True +# Use the local file lenght or runtime value from IMDB? +IMDB_USE_IMDB_RUNTIME = False + # delete file in menu plugin.activate('file_ops', level=20) @@ -1359,6 +1362,23 @@ SKIN_GUIDE_SHOW_NOW_LINE = True # ====================================================================== +# Freevo LCD Plugin settings: +# ====================================================================== +# +# This will remap all non-ASCII chars to plain ASCII. Some international, non-ASCII +# characters confuse some VFDs and LCDs, notably 16x2 iMON VFD will crash. +# Some attemt to remap such chars is done badly in pylcd, but it does so only with +# some western chars, like nordic or german umlauts. +# you will neen unidecode python package. Download it from: +# http://pypi.python.org/pypi/Unidecode/0.04.1 (get latest version) +# +# Another thing that this will do is to remap double quotes to single ones. +# These too seem to confuse iMON VFD. +# +LCD_REMAP_TO_ASCII = False + + +# ====================================================================== # Freevo OSD settings: # ====================================================================== Solo in freevo-1.9.2b2: .pc diff -x .svn -ur freevo-1.9.2b2/share/html/ipc.js svn/share/html/ipc.js --- freevo-1.9.2b2/share/html/ipc.js 1970-01-01 01:00:00.000000000 +0100 +++ svn/share/html/ipc.js 2011-11-04 20:40:06.945956118 +0100 @@ -0,0 +1,57 @@ +/* +# ----------------------------------------------------------------------- +# Module for communication between web browser and freevo +# ----------------------------------------------------------------------- +# $Id: youtube.py 11862 2011-08-07 11:56:13Z adam $ +# ----------------------------------------------------------------------- +# +# +# Freevo - A Home Theater PC framework +# Copyright (C) 2002 Krister Lagerstrom, et al. +# Please see the file freevo/Docs/CREDITS for a complete list of authors. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MER- +# CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# ----------------------------------------------------------------------- +*/ + +function sendEvent(event, data){ + send('event', {'event':event, 'data':data}); +} + +function send(cmd, data){ + var args = { 'cmd': cmd, 'data': data}; + var xhr = new XMLHttpRequest(); + xhr.open('POST', '/freevo/ipc', true); + xhr.send(JSON.stringify(args)); +} + +function poll(){ + var xhr = new XMLHttpRequest(); + xhr.open('GET', '/freevo/ipc', true); + xhr.timeout = 50000; + xhr.onreadystatechange = function () { + if ((this.readyState == 3 || this.readyState == 4) && this.status == 200) { + var args = JSON.parse(this.responseText); + var r = eval(args['cmd']); + send('return', r); + poll(); + } + }; + xhr.ontimeout = poll; + xhr.send(); +} + +window.onload = poll; diff -x .svn -ur freevo-1.9.2b2/share/html/wbinitial.html svn/share/html/wbinitial.html --- freevo-1.9.2b2/share/html/wbinitial.html 1970-01-01 01:00:00.000000000 +0100 +++ svn/share/html/wbinitial.html 2011-11-04 20:40:06.945956118 +0100 @@ -0,0 +1,16 @@ + + + +Freevo + + + + + \ Manca newline alla fine del file diff -x .svn -ur freevo-1.9.2b2/share/html/ytflashplayer.html svn/share/html/ytflashplayer.html --- freevo-1.9.2b2/share/html/ytflashplayer.html 1970-01-01 01:00:00.000000000 +0100 +++ svn/share/html/ytflashplayer.html 2011-11-04 20:40:06.945956118 +0100 @@ -0,0 +1,55 @@ + + + + + $META$ + YouTube Flash Player + + + + + $EMBED$ + + diff -x .svn -ur freevo-1.9.2b2/src/audio/plugins/apodcast.py svn/src/audio/plugins/apodcast.py --- freevo-1.9.2b2/src/audio/plugins/apodcast.py 2011-11-06 22:31:50.209674899 +0100 +++ svn/src/audio/plugins/apodcast.py 2011-11-04 20:40:05.125955670 +0100 @@ -189,7 +189,7 @@ popup.destroy() if (len(podcast_items) == 0): - podcast_items += [ menu.MenuItem(_('No Podcast locations found'), menwu.goto_prev_page, 0) ] + podcast_items += [ menu.MenuItem(_('No Podcast locations found'), menwu.back_one_menu, 0) ] podcast_sub_menu = menu.Menu(_('AUDIO PODCAST'), podcast_items) menuw.pushmenu(podcast_sub_menu) menuw.refresh() @@ -212,7 +212,7 @@ self.download(image_url, image_path) if (len(config.APODCAST_DIR) == 0): - podcast_items += [ menu.MenuItem(_('Set APODCAST_DIR in local_conf.py'), menwu.goto_prev_page, 0) ] + podcast_items += [ menu.MenuItem(_('Set APODCAST_DIR in local_conf.py'), menwu.back_one_menu, 0) ] podcast_menu_items += [ menu.MenuItem(_(location[0]), action=self.create_podcast_submenu, arg=location, image=image_path) ] diff -x .svn -ur freevo-1.9.2b2/src/audio/plugins/lastfm.py svn/src/audio/plugins/lastfm.py --- freevo-1.9.2b2/src/audio/plugins/lastfm.py 2011-11-06 22:31:50.193681560 +0100 +++ svn/src/audio/plugins/lastfm.py 2011-11-04 20:40:05.133954425 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # LastFM radio player plug-in (http://www.last.fm/listen) # ----------------------------------------------------------------------- -# $Id: lastfm.py 11599 2009-06-21 13:25:18Z duncan $ +# $Id: lastfm.py 11873 2011-09-07 21:33:56Z adam $ # # Notes: For the API 1.2 # http://code.google.com/p/thelastripper/wiki/LastFM12UnofficialDocumentation @@ -888,7 +888,7 @@ name, station = lfm_location lfm_stations += [ LastFMStation(self, name, station) ] if not lfm_stations: - lfm_stations += [MenuItem(_('No LastFM Stations'), menuw.goto_prev_page, 0)] + lfm_stations += [MenuItem(_('No LastFM Stations'), menuw.back_one_menu, 0)] lfm_menu = Menu(_('Last FM'), lfm_stations) menuw.pushmenu(lfm_menu) menuw.refresh() diff -x .svn -ur freevo-1.9.2b2/src/audio/plugins/radio.py svn/src/audio/plugins/radio.py --- freevo-1.9.2b2/src/audio/plugins/radio.py 2011-11-06 22:31:50.221675299 +0100 +++ svn/src/audio/plugins/radio.py 2011-11-04 20:40:05.125955670 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Simple plug-in to listen to radio # ----------------------------------------------------------------------- -# $Id: radio.py 11461 2009-05-02 07:59:05Z duncan $ +# $Id: radio.py 11873 2011-09-07 21:33:56Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2003 Krister Lagerstrom, et al. @@ -131,7 +131,7 @@ radio_item.info = {'album':'', 'artist':'', 'trackno': '', 'title':''} station_items += [ radio_item ] if (len(station_items) == 0): - station_items += [menu.MenuItem(_('No Radio Stations found'), menwu.goto_prev_page, 0)] + station_items += [menu.MenuItem(_('No Radio Stations found'), menwu.back_one_menu, 0)] station_menu = menu.Menu(_('Radio Stations'), station_items) menuw.pushmenu(station_menu) menuw.refresh() diff -x .svn -ur freevo-1.9.2b2/src/audio/plugins/shoutcast.py svn/src/audio/plugins/shoutcast.py --- freevo-1.9.2b2/src/audio/plugins/shoutcast.py 2011-11-06 22:31:50.201681338 +0100 +++ svn/src/audio/plugins/shoutcast.py 2011-11-04 20:40:05.129954838 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Browse and play shoutcast radio stations # ----------------------------------------------------------------------- -# $Id: shoutcast.py 11791 2011-01-12 21:48:39Z adam $ +# $Id: shoutcast.py 11873 2011-09-07 21:33:56Z adam $ # ----------------------------------------------------------------------- # # Description: @@ -165,7 +165,7 @@ xmlfile = self.retrievexml() pop.tick() if xmlfile == None: - genrelist = [ menu.MenuItem( _('Error retrieving genres'), action = menuw.goto_prev_page, arg = None) ] + genrelist = [ menu.MenuItem( _('Error retrieving genres'), action = menuw.back_one_menu, arg = None) ] else: parser = make_parser() parseGenreXML = GenreParser() @@ -175,7 +175,7 @@ for genre in parseGenreXML.genrelist: genrelist.append( menu.MenuItem(genre, action = self.generate_station_list, arg = genre ) ) except: - genrelist = [ menu.MenuItem( _('Error retrieving genres'), action = menuw.goto_prev_page, arg = None) ] + genrelist = [ menu.MenuItem( _('Error retrieving genres'), action = menuw.back_one_menu, arg = None) ] genremenu = menu.Menu( _("Genres"), genrelist, item_types = 'audio' ) menuw.pushmenu(genremenu) @@ -198,7 +198,7 @@ pop.tick() if xmlfile == None: - stationlist = [ menu.MenuItem( _('Error retrieving stations'), action = menuw.goto_prev_page, arg = None) ] + stationlist = [ menu.MenuItem( _('Error retrieving stations'), action = menuw.back_one_menu, arg = None) ] else: try: parser = make_parser() @@ -223,7 +223,7 @@ stationlist.append(stationitem) stationlist.sort(key = self.stationsortkey) except: - stationlist = [ menu.MenuItem( _('Error retrieving stationlist'), action = menuw.goto_prev_page, arg = None) ] + stationlist = [ menu.MenuItem( _('Error retrieving stationlist'), action = menuw.back_one_menu, arg = None) ] stationmenu = menu.Menu( arg, stationlist, item_types = 'audio' ) menuw.pushmenu(stationmenu) diff -x .svn -ur freevo-1.9.2b2/src/audio/plugins/xmradio.py svn/src/audio/plugins/xmradio.py --- freevo-1.9.2b2/src/audio/plugins/xmradio.py 2011-11-06 22:31:50.185679617 +0100 +++ svn/src/audio/plugins/xmradio.py 2011-11-04 20:40:05.129954838 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # xmradio.py - a simple plugin to listen to xmradio online # ----------------------------------------------------------------------- -# $Id: xmradio.py 11541 2009-05-23 12:48:47Z duncan $ +# $Id: xmradio.py 11873 2011-09-07 21:33:56Z adam $ # # Notes: # need to have an XM Radio account with a username and password @@ -135,7 +135,7 @@ radio_item = XmRadioItem(url,self,str(rchannel[0])) channel_items += [ radio_item ] if (len(channel_items) == 0): - channel_items += [menu.MenuItem( _( 'No XM channels found' ), menwu.goto_prev_page, 0)] + channel_items += [menu.MenuItem( _( 'No XM channels found' ), menwu.back_one_menu, 0)] channel_menu = menu.Menu( _( 'XM channels' ), channel_items) menuw.pushmenu(channel_menu) menuw.refresh() diff -x .svn -ur freevo-1.9.2b2/src/dialog/dialogs.py svn/src/dialog/dialogs.py --- freevo-1.9.2b2/src/dialog/dialogs.py 2011-11-06 22:31:50.021674834 +0100 +++ svn/src/dialog/dialogs.py 2011-11-04 20:40:06.109990896 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # dialogs module for livepause osd # ----------------------------------------------------------------------- -# $Id: dialogs.py 11838 2011-02-20 08:23:30Z adam $ +# $Id: dialogs.py 11870 2011-08-25 21:48:41Z adam $ # # Notes: # Todo: @@ -328,7 +329,7 @@ will return a tuple of elapsed time, total time and percent through the file. Both total time and percent position are optional. """ - super(PlayStateDialog, self).__init__('play_state', 3.0) + super(PlayStateDialog, self).__init__('play_state', 10.0) self.priority = Dialog.LOW_PRIORITY self.state = state self.item = item @@ -356,14 +357,14 @@ time_info = self.get_time_info() if time_info: - current_time = time_info[0] + current_time = int(time_info[0]) current_time_hours = current_time / (60 * 60) current_time_minutes = (current_time / 60) - (current_time_hours * 60) current_time_seconds = current_time - (((current_time_hours * 60) + current_time_minutes) * 60) current_time_str = '%02d:%02d:%02d' % (current_time_hours, current_time_minutes, current_time_seconds) if len(time_info) > 1: - total_time = time_info[1] + total_time = int(time_info[1]) total_time_hours = total_time / (60 * 60) total_time_minutes = (total_time / 60) - (total_time_hours * 60) total_time_seconds = total_time - (((total_time_hours * 60) + total_time_minutes) * 60) @@ -395,12 +396,12 @@ attr['tagline'] = None attr['image'] = self.item.image - # Skip thumbnails - if attr['image'] and attr['image'].endswith('.raw'): - attr['image'] = None + # Skip thumbnails + if attr['image'] and attr['image'].endswith('.raw'): + attr['image'] = None + if not attr['image']: + attr['image'] = self.item.parent.image if not attr['image']: - attr['image'] = self.item.parent.image - if not attr['image']: attr['image'] = "nocover.png" _debug_('Cover image for %s is %s' % (self.item.filename, attr['image'])) diff -x .svn -ur freevo-1.9.2b2/src/directory.py svn/src/directory.py --- freevo-1.9.2b2/src/directory.py 2011-11-06 22:31:50.177674810 +0100 +++ svn/src/directory.py 2011-11-04 20:40:06.705954927 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Directory handling # ----------------------------------------------------------------------- -# $Id: directory.py 11849 2011-03-05 21:41:24Z adam $ +# $Id: directory.py 11856 2011-08-07 10:55:57Z adam $ # # Notes: # Todo: @@ -495,7 +495,6 @@ browse directory """ _debug_('cwd(arg=%r, menuw=%r)' % (arg, menuw), 2) - print('cwd(arg=%r, menuw=%r)' % (arg, menuw)) self.check_password_and_build(arg=None, menuw=menuw) diff -x .svn -ur freevo-1.9.2b2/src/gui/Border.py svn/src/gui/Border.py --- freevo-1.9.2b2/src/gui/Border.py 2011-11-06 22:31:50.001680729 +0100 +++ svn/src/gui/Border.py 2010-01-23 20:06:11.769759620 +0100 @@ -37,7 +37,7 @@ All suggestions on improvement are welcome """ -__date__ = "$Date: 2008-05-11 11:50:48 +0100 (Sun, 11 May 2008) $" +__date__ = "$Date: 2008-05-11 12:50:48 +0200(dom, 11 mag 2008) $" __version__ = "$Revision: 10716 $" __author__ = """Thomas Malt """ diff -x .svn -ur freevo-1.9.2b2/src/gui/Color.py svn/src/gui/Color.py --- freevo-1.9.2b2/src/gui/Color.py 2011-11-06 22:31:49.985674605 +0100 +++ svn/src/gui/Color.py 2010-01-23 20:06:11.769759620 +0100 @@ -29,7 +29,7 @@ """ A color handling object. """ -__date__ = "$Date: 2007-05-11 19:22:36 +0100 (Fri, 11 May 2007) $" +__date__ = "$Date: 2007-05-11 20:22:36 +0200(ven, 11 mag 2007) $" __version__ = "$Revision: 9561 $" __author__ = """Thomas Malt """ diff -x .svn -ur freevo-1.9.2b2/src/gui/GUIObject.py svn/src/gui/GUIObject.py --- freevo-1.9.2b2/src/gui/GUIObject.py 2011-11-06 22:31:49.993680879 +0100 +++ svn/src/gui/GUIObject.py 2010-01-23 20:06:11.765759950 +0100 @@ -41,7 +41,7 @@ Currently not many classes are in place, but hopefully we will add more in time. """ -__date__ = "$Date: 2009-05-02 08:59:05 +0100 (Sat, 02 May 2009) $" +__date__ = "$Date: 2009-05-02 09:59:05 +0200(sab, 02 mag 2009) $" __version__ = "$Revision: 11461 $".split()[1] __author__ = "Thomas Malt " diff -x .svn -ur freevo-1.9.2b2/src/helpers/imdbpy.py svn/src/helpers/imdbpy.py --- freevo-1.9.2b2/src/helpers/imdbpy.py 2011-11-06 22:31:50.029675381 +0100 +++ svn/src/helpers/imdbpy.py 2011-11-04 20:40:05.405954967 +0100 @@ -39,9 +39,10 @@ import os from optparse import OptionParser import util +import logging try: - import imdbpy + import imdb except ImportError: print 'It seems that you do not have imdbpy installed!' print 'Check out http://imdbpy.sourceforge.net/?page=download for imdbpy package for your distribution' diff -x .svn -ur freevo-1.9.2b2/src/helpers/inputhelper.py svn/src/helpers/inputhelper.py --- freevo-1.9.2b2/src/helpers/inputhelper.py 2011-11-06 22:31:50.037675370 +0100 +++ svn/src/helpers/inputhelper.py 2011-11-04 20:40:05.401954822 +0100 @@ -42,16 +42,12 @@ wire_format = struct.Struct('d30p') -# Put stdout in non-blocking mode -flag = fcntl.fcntl(sys.__stderr__, fcntl.F_GETFL) -fcntl.fcntl(sys.__stderr__, fcntl.F_SETFL, flag | os.O_NDELAY) def post_key(key): """ Send key to main process. """ - sys.__stderr__.write(wire_format.pack(time.time(), key)) - sys.__stderr__.flush() + os.write(fd, wire_format.pack(time.time(), key)) class Lirc: @@ -229,10 +225,22 @@ if hasattr(i, 'resume'): i.resume() - elif cmd == 'quit': + elif cmd == 'quit' or cmd == '': sys.exit(0) +if len(sys.argv) < 2: + sys.stderr.write('No fd specified!') + sys.exit(1) + +fd = int(sys.argv[1]) +_debug_('Using pipe fd %d' % fd) + +# Put fd in non-blocking mode +flag = fcntl.fcntl(fd, fcntl.F_GETFL) +fcntl.fcntl(fd, fcntl.F_SETFL, flag | os.O_NDELAY) + + inputs = [Lirc()] if config.EVENT_DEVS: diff -x .svn -ur freevo-1.9.2b2/src/plugins/buttonbar.py svn/src/plugins/buttonbar.py --- freevo-1.9.2b2/src/plugins/buttonbar.py 2011-11-06 22:31:50.061680364 +0100 +++ svn/src/plugins/buttonbar.py 2011-11-04 20:40:05.685954916 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # ButtonBar plug-in # ----------------------------------------------------------------------- -# $Id: buttonbar.py 11841 2011-02-27 22:22:20Z adam $ +# $Id: buttonbar.py 11873 2011-09-07 21:33:56Z adam $ # # ----------------------------------------------------------------------- # Freevo-A Home Theater PC framework @@ -368,6 +368,9 @@ if hasattr(menu, 'is_submenu') or (not hasattr(menu, 'selected')): return result + if menu.selected is None: + return None + # Determine the available actions actions = menu.selected.actions() if not actions: diff -x .svn -ur freevo-1.9.2b2/src/plugins/headlines.py svn/src/plugins/headlines.py --- freevo-1.9.2b2/src/plugins/headlines.py 2011-11-06 22:31:50.113679308 +0100 +++ svn/src/plugins/headlines.py 2011-11-04 20:40:05.685954916 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # headlines.py - a simple plugin to listen to headlines # ----------------------------------------------------------------------- -# $Id: headlines.py 11461 2009-05-02 07:59:05Z duncan $ +# $Id: headlines.py 11873 2011-09-07 21:33:56Z adam $ # # Notes: # Todo: @@ -185,7 +185,7 @@ description = description.replace('

', '\n').replace('
', '\n') description = description + '\n \n \nLink: ' + link description = unicode(BeautifulStoneSoup(description, convertEntities=BeautifulStoneSoup.HTML_ENTITIES)) - description = util.htmlenties2txt(description) + description = util.htmlenties2txt(description, 'unicode') mi.description = re.sub('<.*?>', '', description) @@ -193,7 +193,7 @@ if (len(headlines) == 0): - headlines += [menu.MenuItem(_('No Headlines found'), menuw.goto_prev_page, 0)] + headlines += [menu.MenuItem(_('No Headlines found'), menuw.back_one_menu, 0)] headlines_menu = menu.Menu(_('Headlines'), headlines) menuw.pushmenu(headlines_menu) @@ -226,7 +226,7 @@ headlines_sites += [ headlines_site_item ] if (len(headlines_sites) == 0): headlines_sites += [menu.MenuItem(_('No Headlines Sites found'), - menuw.goto_prev_page, 0)] + menuw.back_one_menu, 0)] headlines_site_menu = menu.Menu(_('Headlines Sites'), headlines_sites) menuw.pushmenu(headlines_site_menu) menuw.refresh() diff -x .svn -ur freevo-1.9.2b2/src/plugins/home_automation.py svn/src/plugins/home_automation.py --- freevo-1.9.2b2/src/plugins/home_automation.py 2011-11-06 22:31:50.097679892 +0100 +++ svn/src/plugins/home_automation.py 2011-11-04 20:40:05.689955202 +0100 @@ -142,7 +142,7 @@ automation_item.room_items = room[1] automation_items += [ automation_item ] if (len(automation_items) == 0): - automation_items += [menu.MenuItem(_('No Home Automation items found'), menuw.goto_prev_page, 0)] + automation_items += [menu.MenuItem(_('No Home Automation items found'), menuw.back_one_menu, 0)] automation_items_menu = menu.Menu(_('Home Automation'), automation_items) menuw.pushmenu(automation_items_menu) menuw.refresh() diff -x .svn -ur freevo-1.9.2b2/src/plugins/idlebar/remindicon.py svn/src/plugins/idlebar/remindicon.py --- freevo-1.9.2b2/src/plugins/idlebar/remindicon.py 2011-11-06 22:31:50.089679764 +0100 +++ svn/src/plugins/idlebar/remindicon.py 2010-01-23 20:06:11.573259705 +0100 @@ -31,7 +31,7 @@ __author__ = "Christian Lyra" __version__ = "0.1" __svnversion__ = "$Revision: 9999 $"[11:-2] -__date__ = "$Date: 2007-10-18 16:31:31 +0100 (Thu, 18 Oct 2007) $"[7:-2] +__date__ = "$Date: 2007-10-18 17:31:31 +0200(gio, 18 ott 2007) $"[7:-2] __copyright__ = "Copyright (c) 2007 Christian Lyra" __license__ = "GPL" diff -x .svn -ur freevo-1.9.2b2/src/plugins/itv.py svn/src/plugins/itv.py --- freevo-1.9.2b2/src/plugins/itv.py 2011-11-06 22:31:50.069674555 +0100 +++ svn/src/plugins/itv.py 2011-11-04 20:40:05.685954916 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Plugin to view RSS Video # ----------------------------------------------------------------------- -# $Id: itv.py 11710 2010-11-02 13:38:17Z adam $ +# $Id: itv.py 11873 2011-09-07 21:33:56Z adam $ # # Notes: # Todo: @@ -235,7 +235,7 @@ # create the menu if (len(headlines) == 0): - headlines += [menu.MenuItem(_('No Headlines found'), menuw.goto_prev_page, 0)] + headlines += [menu.MenuItem(_('No Headlines found'), menuw.back_one_menu, 0)] headlines_menu = menu.Menu(_('Headlines'), headlines) menuw.pushmenu(headlines_menu) @@ -268,7 +268,7 @@ headlines_site_item.location_index = config.ITV_LOCATIONS.index(location) headlines_sites += [ headlines_site_item ] if (len(headlines_sites) == 0): - headlines_sites += [menu.MenuItem(_('No Headlines Sites found'), menuw.goto_prev_page, 0)] + headlines_sites += [menu.MenuItem(_('No Headlines Sites found'), menuw.back_one_menu, 0)] headlines_site_menu = menu.Menu(_('Headlines Sites'), headlines_sites) menuw.pushmenu(headlines_site_menu) menuw.refresh() diff -x .svn -ur freevo-1.9.2b2/src/plugins/lcd.py svn/src/plugins/lcd.py --- freevo-1.9.2b2/src/plugins/lcd.py 2011-11-06 22:31:50.105680369 +0100 +++ svn/src/plugins/lcd.py 2011-11-04 20:40:05.685954916 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Use PyLCD to display menus and players # ----------------------------------------------------------------------- -# $Id: lcd.py 11821 2011-02-08 22:51:11Z adam $ +# $Id: lcd.py 11860 2011-08-07 11:02:39Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -37,6 +37,8 @@ 3. Better (and more) LCD screens. """ +import string + from menu import MenuItem import copy import time @@ -46,6 +48,12 @@ import util from util.tv_util import get_chan_displayname +if config.LCD_REMAP_TO_ASCII: + try: + from unidecode import unidecode + except: + _debug_(String(_('ERROR')+': '+_('You need unidecode to run "lcd" plugin.')), 2) + try: import pylcd except: @@ -423,33 +431,33 @@ 'title' : ('title', '1 1 Freevo', None) }, 'menu' : { - 'title_v' : ('scroller', '1 1 %d 1 m 8 "%s%s"', - '(self.width, menu.heading, self.get_sepstrmscroll(menu.heading))'), - 'item_v' : ('scroller', '1 2 %d 2 m 8 "%s%s"', - '(self.width, title, self.get_sepstrmscroll(title))') + 'title_v' : ('scroller', '1 1 %d 1 m 2 "%s%s"', + '(self.width, remap(menu.heading), self.get_sepstrmscroll(menu.heading))'), + 'item_v' : ('scroller', '1 2 %d 2 m 2 "%s%s"', + '(self.width, remap(title), self.get_sepstrmscroll(title))') }, 'audio_player' : { - 'music_v' : ('scroller', '1 1 %d 1 m 8 "%s%s"', - '(self.width, title, self.get_sepstrmscroll(title))'), + 'music_v' : ('scroller', '1 1 %d 1 m 2 "%s%s"', + '(self.width, remap(title), self.get_sepstrmscroll(title))'), 'time_v1' : ('string', '2 2 "% 2d:%02d/"', '(int(player.length / 60), int(player.length % 60))'), 'time_v2' : ('string', '8 2 "% 2d:%02d"', '(int(player.elapsed / 60), int(player.elapsed % 60))'), 'animation_v': ('string', '1 2 "%s"', 'self.animation_audioplayer_chars[player.elapsed % len(self.animation_audioplayer_chars)]') }, 'video_player' : { - 'video_v' : ('scroller', '1 1 %d 1 m 8 "%s%s"', - '(self.width, title, self.get_sepstrmscroll(title))'), + 'video_v' : ('scroller', '1 1 %d 1 m 2 "%s%s"', + '(self.width, remap(title), self.get_sepstrmscroll(title))'), 'time_v2' : ('string', '2 2 "%s"', '(elapsed)'), 'time_v3' : ('string', '11 2 "(%2d%%)"', '(int(percentage * 100))'), 'animation_v': ('string', '1 2 "%s"', 'self.animation_audioplayer_chars[player.elapsed % len(self.animation_audioplayer_chars)]') }, 'tv' : { - 'chan_v' : ('scroller', '1 1 %d 1 m 8 "%s%s"', - '(self.width, get_chan_displayname(tv.channel_id), '+ + 'chan_v' : ('scroller', '1 1 %d 1 m 2 "%s%s"', + '(self.width, remap(get_chan_displayname(tv.channel_id)), '+ 'self.get_sepstrmscroll(get_chan_displayname(tv.channel_id)))'), - 'prog_v' : ('scroller', '1 2 %d 2 m 8 "%s%s"', - '(self.width, tv.title, self.get_sepstrmscroll(tv.title))') + 'prog_v' : ('scroller', '1 2 %d 2 m 2 "%s%s"', + '(self.width, remap(tv.title), self.get_sepstrmscroll(tv.title))') } }, # 2 lines, 16 chars per line @@ -501,6 +509,23 @@ }, } +def remap(data): + _debug_('remap(data=%r)' % (data), 2) + + try: + # first we remap all non-ASCII chars to ASCII + if config.LCD_REMAP_TO_ASCII: + data = unidecode(data) + + # now we replace double quotes with single ones, + # double quotes confuse LCDd + data = data.replace('\"', '\'').strip() + + except UnicodeDecodeError, error: + _debug_('%s' % error, DWARNING) + + return data + def get_lengthsecs(slen): _debug_('get_lengthsecs(slen=%r)' % (slen,), 2) @@ -556,7 +581,7 @@ __author_email__ = 'barbieri@gmail.com' __maintainer__ = __author__ __maintainer_email__ = __author_email__ - __version__ = '$Revision: 11821 $' + __version__ = '$Revision: 11860 $' def __init__(self, height=None, width=None): """ diff -x .svn -ur freevo-1.9.2b2/src/plugins/oneclick.py svn/src/plugins/oneclick.py --- freevo-1.9.2b2/src/plugins/oneclick.py 2011-11-06 22:31:50.053674997 +0100 +++ svn/src/plugins/oneclick.py 2011-11-04 20:40:05.693954998 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # A plugin to obtain detailed weather forecast information # ----------------------------------------------------------------------- -# $Id: oneclick.py 11823 2011-02-10 22:45:16Z adam $ +# $Id: oneclick.py 11873 2011-09-07 21:33:56Z adam $ # # Notes: # There are two ways to get the radar map: @@ -791,7 +791,7 @@ # if no locations were found, add a menu entry indicating that if not locations: - nolocation = menu.MenuItem(_('No locations specified'), menuw.goto_prev_page, 0) + nolocation = menu.MenuItem(_('No locations specified'), menuw.back_one_menu, 0) locations.append(nolocation) # if only 1 valid menu entry present, autoselect it diff -x .svn -ur freevo-1.9.2b2/src/plugins/remind.py svn/src/plugins/remind.py --- freevo-1.9.2b2/src/plugins/remind.py 2011-11-06 22:31:50.081674677 +0100 +++ svn/src/plugins/remind.py 2011-11-04 20:40:05.685954916 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # A simple plugin show reminders, or the output of a command # ----------------------------------------------------------------------- -# $Id: remind.py 11461 2009-05-02 07:59:05Z duncan $ +# $Id: remind.py 11873 2011-09-07 21:33:56Z adam $ # # Notes: # Todo: @@ -31,8 +31,8 @@ __author__ = "Christian Lyra" __version__ = "0.1" -__svnversion__ = "$Revision: 11461 $".split()[1] -__date__ = "$Date: 2009-05-02 08:59:05 +0100 (Sat, 02 May 2009) $".split()[1] +__svnversion__ = "$Revision: 11873 $".split()[1] +__date__ = "$Date: 2011-09-07 23:33:56 +0200(mer, 07 set 2011) $".split()[1] __copyright__ = "Copyright (c) 2007 Christian Lyra" __license__ = "GPL" __doc__ = """A plugin to list reminders, but can be used to @@ -113,7 +113,7 @@ lines.append(mi) if (len(lines) == 0): - lines += [menu.MenuItem(_('No Reminders Found'), menuw.goto_prev_page, 0)] + lines += [menu.MenuItem(_('No Reminders Found'), menuw.back_one_menu, 0)] lines_menu = menu.Menu(_('Reminders'), lines) menuw.pushmenu(lines_menu) diff -x .svn -ur freevo-1.9.2b2/src/rc.py svn/src/rc.py --- freevo-1.9.2b2/src/rc.py 2011-11-06 22:31:50.009677714 +0100 +++ svn/src/rc.py 2011-11-04 20:40:06.705954927 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Remote control / Event and Callback handling # ----------------------------------------------------------------------- -# $Id: rc.py 11845 2011-03-04 09:51:55Z adam $ +# $Id: rc.py 11890 2011-11-01 22:02:17Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -184,30 +184,40 @@ import struct import subprocess import sys - + self.pipe = os.pipe() self.wire_format = struct.Struct('d30p') - self.input = subprocess.Popen([sys.executable, os.path.join(os.environ['FREEVO_HELPERS'],'inputhelper.py')], - stdin=subprocess.PIPE, stderr=subprocess.PIPE) + self.input = subprocess.Popen([sys.executable, os.path.join(os.environ['FREEVO_HELPERS'],'inputhelper.py'), + str(self.pipe[1])], + stdin=subprocess.PIPE) self.monitor = kaa.IOMonitor(self._handle_input) - self.monitor.register(self.input.stderr) + self.monitor.register(self.pipe[0]) def _handle_input(self): """ Handle input events from input helper over stderr """ - data = self.input.stderr.read(self.wire_format.size) - t, key = self.wire_format.unpack(data) - if time.time() - t < 0.5: - self.rc.post_key(key) + data = os.read(self.pipe[0], self.wire_format.size) + if data: + t, key = self.wire_format.unpack(data) + if time.time() - t < 0.5: + self.rc.post_key(key) + else: + self.input = None + def __send_cmd(self, cmd): """ Send a command to the input helper """ - self.input.stdin.write(cmd + '\n') + try: + if self.input: + self.input.stdin.write(cmd + '\n') + except: + pass + def suspend(self): """ @@ -228,6 +238,7 @@ Shutdown the helper """ self.__send_cmd('quit') + self.input.wait() # -------------------------------------------------------------------------------- diff -x .svn -ur freevo-1.9.2b2/src/skins/osd/skin.py svn/src/skins/osd/skin.py --- freevo-1.9.2b2/src/skins/osd/skin.py 2011-11-06 22:31:50.125675030 +0100 +++ svn/src/skins/osd/skin.py 2011-11-04 20:40:04.978455499 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # dialog definition and rendering module for livepause osd # ----------------------------------------------------------------------- -# $Id: skin.py 11709 2010-11-02 13:19:20Z adam $ +# $Id: skin.py 11868 2011-08-25 21:41:33Z adam $ # # Notes: # @@ -40,7 +40,7 @@ from time import strftime from kaa import imlib2 -from util import vfs, objectcache +from util import vfs, objectcache, webcache widget_styles = {} definitions = {} @@ -638,7 +638,12 @@ # Finally load the image and scale it as required. if not image: - image = imlib2.open(filename) + if filename.startswith('http://') or filename.startswith('https://'): + fp = webcache.get_default_cache().get(filename) + image = imlib2.open_from_memory(fp.read()) + fp.close() + else: + image = imlib2.open(filename) w = image.width h = image.height src_size = (image.width, image.height) @@ -690,6 +695,10 @@ def find_image(filename): _debug_('Looking for %s (icontheme %s)' % (filename, icontheme), 2) + + if filename.startswith('http://') or filename.startswith('https://'): + return filename + if icontheme: dirs = [os.path.join(config.IMAGE_DIR, 'osd', icontheme), os.path.join(config.ICON_DIR, 'osd', icontheme)] diff -x .svn -ur freevo-1.9.2b2/src/tv/plugins/freeboxtv.py svn/src/tv/plugins/freeboxtv.py --- freevo-1.9.2b2/src/tv/plugins/freeboxtv.py 2011-11-06 22:31:49.973676507 +0100 +++ svn/src/tv/plugins/freeboxtv.py 2011-11-04 20:40:06.005955881 +0100 @@ -111,7 +111,7 @@ # if no locations were found, add a menu entry indicating that if not chaines_items: - nolocation = menu.MenuItem(_('No locations specified'), menuw.goto_prev_page, 0) + nolocation = menu.MenuItem(_('No locations specified'), menuw.back_one_menu, 0) chaines_items.append( nolocation ) # create menu diff -x .svn -ur freevo-1.9.2b2/src/tv/plugins/iplayer.py svn/src/tv/plugins/iplayer.py --- freevo-1.9.2b2/src/tv/plugins/iplayer.py 2011-11-06 22:31:49.977678247 +0100 +++ svn/src/tv/plugins/iplayer.py 2011-11-04 20:40:06.005955881 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Plug-in to browse and view content using get_iplayer # ----------------------------------------------------------------------- -# $Id: iplayer.py 11852 2011-03-06 12:16:48Z adam $ +# $Id: iplayer.py 11891 2011-11-02 22:16:27Z adam $ # # Notes: # Todo: @@ -60,7 +60,7 @@ import kaa GIP_MAPPINGS = { - 'bbc tv': ('tv', _('BBC IPlayer')), + 'bbc tv': ('tv', _('BBC IPlayer ')), 'bbc radio': ('radio', _('BBC Radio listen again')), 'bbc podcast': ('podcast', _('BBC Podcasts')), } @@ -696,7 +696,7 @@ gip_type = elements[0] pid = elements[1] - cmd = (config.CONF.get_iplayer, + cmd = (GET_IPLAYER, '--pid', pid, '--type', gip_type, '--file-prefix', 'tmp_stream', @@ -960,7 +960,8 @@ else: line_cb(arg, line[:-1]) - process = kaa.Process('%s %s --type %s' % (GET_IPLAYER, cmd, gip_type)) + print 'CMD: %r' % cmd + process = kaa.Process('%s %s --type %s' % (GET_IPLAYER, cmd.encode('utf-8', 'ignore'), gip_type)) process.signals['readline'].connect(line_callback) ip = process.start() process.stdin.write('n\n') diff -x .svn -ur freevo-1.9.2b2/src/util/fxdimdb.py svn/src/util/fxdimdb.py --- freevo-1.9.2b2/src/util/fxdimdb.py 2011-11-06 22:31:50.241679460 +0100 +++ svn/src/util/fxdimdb.py 2011-11-04 20:40:06.697955683 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # class and helpers for fxd/imdb generation # ----------------------------------------------------------------------- -# $Id: fxdimdb.py 11835 2011-02-17 20:55:07Z adam $ +# $Id: fxdimdb.py 11892 2011-11-02 22:20:21Z adam $ # # Notes: see http://pintje.servebeer.com/fxdimdb.html for documentation, # Todo: @@ -217,7 +217,7 @@ # We try to reduce the search result by filtering initial result for tv (mini) series only. results = self.imdb.search_movie(title) - print 'Found %s items' % len(results) + _debug_('Searched IMDB for %s, found %s items' % (title, len(results))) # if series we remove all non series objects to narrow down the search results if season and episode: @@ -486,9 +486,10 @@ self.info['year'] = self.get_year(movie, episode) self.info['rating'] = self.get_rating(movie, episode) self.info['plot'] = self.get_plot(movie, episode) - self.info['runtime'] = self.get_runtimes(movie, episode) self.info['mpaa'] = self.get_mpaa(movie) - #self.info['runtime'] = self.item['length:min'] + + if config.IMDB_USE_IMDB_RUNTIME: + self.info['runtime'] = self.get_runtimes(movie, episode) # try to retrieve movie poster urls, first from impawards.com, then from IMDB self.impawardsimages(movie['title'], self.info['year'], episode) diff -x .svn -ur freevo-1.9.2b2/src/util/httpserver.py svn/src/util/httpserver.py --- freevo-1.9.2b2/src/util/httpserver.py 1970-01-01 01:00:00.000000000 +0100 +++ svn/src/util/httpserver.py 2011-11-04 20:40:06.697955683 +0100 @@ -0,0 +1,329 @@ +# -*- coding: iso-8859-1 -*- +# ----------------------------------------------------------------------- +# Local HTTP Server +# ----------------------------------------------------------------------- +# $Id: youtube.py 11862 2011-08-07 11:56:13Z adam $ +# +# ----------------------------------------------------------------------- +# +# Freevo - A Home Theater PC framework +# Copyright (C) 2002 Krister Lagerstrom, et al. +# Please see the file freevo/Docs/CREDITS for a complete list of authors. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MER- +# CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# ----------------------------------------------------------------------- + +from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer +from SocketServer import ThreadingMixIn + +import Queue +import re +import select +import socket +import threading +import traceback +import urlparse + +_local_server_singleton = None + +def get_local_server(): + global _local_server_singleton + if _local_server_singleton is None: + _local_server_singleton = LocalServer() + return _local_server_singleton + +class LocalServer(ThreadingMixIn, HTTPServer): + """ + Class to server files/data over http the to localhost only. + """ + def __init__(self): + HTTPServer.__init__(self, ('localhost', 0), RegExRequestHandler) + self.base_url = 'http://localhost:%d' % self.server_port + self.handlers = [] + self.register_handler('^http://.*$', proxy_handler) + self.stop = False + thread = threading.Thread(target=self.serve_forever) + thread.setDaemon(True) + thread.start() + + + def serve_forever(self): + """ + Start HTTP server and wait for connections. + """ + while not self.stop: + try: + self.handle_request() + except: + traceback.print_exc() + + + def shutdown(self): + """Shutdown the local HTTP server. + """ + self.stop = True + self.socket.close() + + + def register_handler(self, regex, handler): + """Register a handler callback for the specifed regular expression object. + The handler will be called with the BaseHTTPRequestHandler object and the match object from the regular + expression. + """ + self.handlers.insert(0, (re.compile(regex), handler)) + + + def unregister_handler(self, regex): + """Unregister the specified regular expression handler. + """ + for i in range(0,self.handlers): + if self.handers[i][0].pattern == regex: + del self.handlers[i] + break + + + def get_url(self, path): + """Returns the URL on the local server for the specified path. + """ + return self.base_url + path + +# +# Following code copied from TinyHTTPProxy +# +def proxy_handler(request): + (scm, netloc, path, params, query, fragment) = urlparse.urlparse( + request.path, 'http') + if scm!='http' or fragment or not netloc: + request.send_error(400, "bad url %s" % request.path) + return + soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + try: + if request.connect_to(netloc, soc): + soc.send("%s %s %s\r\n" % (request.command, + urlparse.urlunparse(('', '', path, + params, query, + '')), + request.request_version)) + request.headers['Connection'] = 'close' + del request.headers['Proxy-Connection'] + for key_val in request.headers.items(): + soc.send("%s: %s\r\n" % key_val) + soc.send("\r\n") + request.read_write(soc) + finally: + soc.close() + request.connection.close() + + + +class RegExRequestHandler(BaseHTTPRequestHandler): + """HTTP Request handler that matches regular expressions to handler callbacks. + """ + def do_GET(self): + if self.path.startswith(self.server.base_url): + self.path = self.path[len(self.server.base_url):] + handled = False + for regex, handler in self.server.handlers: + m = regex.match(self.path) + if m: + handled = True + try: + handler(self, *m.groups()) + except: + traceback.print_exc() + break + + if not handled: + self.send_error(404) + + do_HEAD = do_GET + do_POST = do_GET + do_PUT = do_GET + do_DELETE = do_GET + + + def connect_to(self, netloc, soc): + i = netloc.find(':') + if i >= 0: + host_port = netloc[:i], int(netloc[i+1:]) + else: + host_port = netloc, 80 + + try: + soc.connect(host_port) + except socket.error, arg: + try: + msg = arg[1] + except: + msg = arg + self.send_error(404, msg) + return 0 + return 1 + + def read_write(self, soc, max_idling=20, local=False): + iw = [self.connection, soc] + local_data = "" + ow = [] + count = 0 + while True: + count += 1 + (ins, _, exs) = select.select(iw, ow, iw, 1) + if exs: + break + if ins: + for i in ins: + if i is soc: + out = self.connection + else: + out = soc + data = i.recv(8192) + if data: + if local: + local_data += data + else: + out.send(data) + count = 0 + if count == max_idling: + break + if local: + return local_data + return None + + + def do_CONNECT(self): + soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + try: + if self.connect_to(self.path, soc): + self.log_request(200) + self.wfile.write(self.protocol_version + + " 200 Connection established\r\n") + self.wfile.write("Proxy-agent: %s\r\n" % self.version_string()) + self.wfile.write("\r\n") + self.read_write(soc, 300) + finally: + soc.close() + self.connection.close() + + def log_message(self, format, *args): + _debug_(format % args, 2) + + +class LongPollHandler(object): + """Class to make long polling handlers easier. + Simply creating a LongPollHandler object specifying the content type that will be returned by the handler then + register it with the local server instance. + + lphandler = QueuedLongPollHandler() + get_local_server().register_handler('^/longpolldemo$', lphandler) + + To send data to be picked up by the next request to the registered url simply append it to the lphandler. + + lphandler.append('Example data') + """ + def __init__(self, content_type='text/plain'): + self.queue = Queue.PriorityQueue() + self.lock = threading.Lock() + self.waiting_count = 0 + self.content_type = content_type + + + def __call__(self, request): + request.send_response(200) + request.send_header('mime-type', self.content_type) + request.end_headers() + request.request.settimeout(None) + self.lock.acquire() + self.waiting_count += 1 + data = self.queue.get()[1] + try: + request.wfile.write(data) + except: + queue.put((0,data)) + self.waiting_count -= 1 + self.lock.release() + + + def append(self, data): + self.queue.put((100, data)) + + + def shutdown(self): + for i in range(0, self.waiting_count): + self.queue.put((0,'')) + + +if __name__ == '__main__': + import sys + long_poll_html=""" + + +Long Poll Test + + + +

Unset
+ + +""" + def _debug_(text, l=0): + print text + + def html_handler(request): + request.send_response(200) + request.send_header('mime-type', 'text/html' ) + request.end_headers() + request.wfile.write(long_poll_html) + + + def handler(request, arg): + request.send_response(200) + request.send_header('mime-type', 'text/plain' ) + request.end_headers() + request.wfile.write('Got arg %s' % arg) + + s = get_local_server() + lphandler = LongPollHandler() + s.register_handler('^/(.*)$', handler) + s.register_handler('^/longpoll.html$', html_handler) + s.register_handler('^/longpollcmd', lphandler) + + print s.get_url('/') + + while True: + cmd = sys.stdin.readline() + if cmd.strip(): + lphandler.append(cmd) + else: + break + + lphandler.shutdown() + s.shutdown() diff -x .svn -ur freevo-1.9.2b2/src/util/udisks.py svn/src/util/udisks.py --- freevo-1.9.2b2/src/util/udisks.py 2011-11-06 22:31:50.229679478 +0100 +++ svn/src/util/udisks.py 2011-11-04 20:40:06.697955683 +0100 @@ -51,7 +51,6 @@ """ optical = [] for device_path in self.disks_iface.EnumerateDevices(): - device_proxy = bus.get_object(self.BUS, device_path) device = self.DEVICE_CLASS(device_path) if device.is_optical(): optical.append(device) @@ -64,7 +63,6 @@ """ removable = [] for device_path in self.disks_iface.EnumerateDevices(): - device_proxy = bus.get_object(self.BUS, device_path) device = self.DEVICE_CLASS(device_path) if device.is_removable() and not device.is_optical(): removable.append(device) diff -x .svn -ur freevo-1.9.2b2/src/util/webbrowser.py svn/src/util/webbrowser.py --- freevo-1.9.2b2/src/util/webbrowser.py 1970-01-01 01:00:00.000000000 +0100 +++ svn/src/util/webbrowser.py 2011-11-04 20:40:06.701954641 +0100 @@ -0,0 +1,169 @@ +# -*- coding: iso-8859-1 -*- +# ----------------------------------------------------------------------- +# Module for controlling a simple undecorated web browser. +# ----------------------------------------------------------------------- +# $Id: youtube.py 11862 2011-08-07 11:56:13Z adam $ +# +# ----------------------------------------------------------------------- +# +# Freevo - A Home Theater PC framework +# Copyright (C) 2002 Krister Lagerstrom, et al. +# Please see the file freevo/Docs/CREDITS for a complete list of authors. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MER- +# CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# ----------------------------------------------------------------------- +''' +Module for controlling a simple undecorated web browser. +''' +import config + +import json +import threading +import os.path + +from kaa.process import Process + +import event +from util.httpserver import get_local_server, LongPollHandler + +JSON_MIMETYPE= 'application/json' +JS_MIMETYPE = 'application/javascript' + +HTML_DIR = os.path.join(config.SHARE_DIR, 'html') + +_initial_url = None + +def start_web_browser(initial_url, exit_handler=None): + """ + Create a new instance of a web browser. + @param initial_url: Optional initial URL to be displayed. + """ + global _initial_url + _initial_url = initial_url + local_server = get_local_server() + proxy = 'localhost:%d' % local_server.server_port + start_url = 'http://freevo/wbinitial.html' + browser_process = Process([config.CHROME_PATH, '--app='+start_url, '--proxy-server=' + proxy]) + if exit_handler: + browser_process.signals['exited'].connect(exit_handler) + browser_process.start() + return browser_process + + +class WebIPC(object): + def __init__(self, server): + self.return_pending = False + self.return_event = threading.Event() + self.lphandler = LongPollHandler(JSON_MIMETYPE) + self.server = server + server.register_handler('^.*/freevo/ipc$', self.__ipc_handler) + server.register_handler('^.*/freevo/ipc.js$', self.__js_handler) + + + def __ipc_handler(self, request): + if request.command == 'POST': + self.__send_handler(request) + if request.command == 'GET': + self.lphandler(request) + else: + request.send_error(405) + + + def __js_handler(self, request): + request.send_response(200) + request.send_header('content-type', JS_MIMETYPE) + request.end_headers() + f = open(os.path.join(HTML_DIR, 'ipc.js')) + request.wfile.write(f.read()) + f.close() + + + def __send_handler(self, request): + l = int(request.headers.getheader('Content-Length')) + s = request.rfile.read(l) + try: + result = None + args = json.loads(s) + if args['cmd'] == 'return': + if self.return_pending: + self.return_pending = False + self.return_result = args.get('data') + self.return_event.set() + else: + _debug_('Unexpected return!') + elif args['cmd'] == 'event': + event.Event('WEB_IPC', args['data']).post() + else: + _debug_('Unexpected ') + + if result is None: + result = {} + + request.send_response(200) + request.send_header('content-type', JSON_MIMETYPE) + request.end_headers() + json.dump(result, request.wfile) + except: + request.send_error(500) + + + def __calljs(self, js): + self.return_pending = True + self.lphandler.append(json.dumps({'cmd':js})) + self.return_event.wait(10.0) + self.return_event.clear() + return self.return_result + + + def __getattr__(self, item): + return JSObject(self.__calljs, None, item) + + +class JSObject(object): + def __init__(self, ipc, parent, name): + self.ipc = ipc + self.parent = parent + self.name = name + + + def __getattr__(self, item): + return JSObject(self.ipc, self, item) + + + def __call__(self, *args, **kwargs): + n = self.name + p = self.parent + while p is not None: + n = p.name + '.' + n + p = p.parent + return self.ipc('%s(%s)' % (n, json.dumps(args)[1:-1])) + + +def _get_initial_HTML(request): + f = open(os.path.join(HTML_DIR, 'wbinitial.html')) + initial_html = f.read() + f.close() + html = initial_html % (config.CONF.width, config.CONF.height, config.CONF.x, config.CONF.y, _initial_url) + request.send_response(200) + request.send_header('content-type', 'text/html') + request.send_header('content-length', str(len(html))) + request.end_headers() + request.wfile.write(html) + + +get_local_server().register_handler('^http://freevo/wbinitial.html$', _get_initial_HTML) + +ipc = WebIPC(get_local_server()) \ Manca newline alla fine del file diff -x .svn -ur freevo-1.9.2b2/src/version.py svn/src/version.py --- freevo-1.9.2b2/src/version.py 2011-11-06 22:31:50.045674869 +0100 +++ svn/src/version.py 2010-01-23 20:06:12.393259675 +0100 @@ -1,7 +1,7 @@ """ Freevo Version number """ -__version__ = '1.9.2b2' +__version__ = '1.9.2-svn' runtime = '0.3.1' mmpython = '0.4.10' diff -x .svn -ur freevo-1.9.2b2/src/video/plugins/applelib.py svn/src/video/plugins/applelib.py --- freevo-1.9.2b2/src/video/plugins/applelib.py 2011-11-06 22:31:50.133680815 +0100 +++ svn/src/video/plugins/applelib.py 2011-11-04 20:40:05.513954855 +0100 @@ -35,6 +35,7 @@ import time import datetime import urllib +import config class Trailer: def __init__(self, element): @@ -85,12 +86,36 @@ elif ch.tag == 'releasedate': if ch.text is not None: - t = time.strptime(ch.text, '%Y-%m-%d') + + t = None + date = config.APPLETRAILERS_DATE_FORMAT + try: + t = time.strptime(ch.text, date) + except ValueError: + date = config.APPLETRAILERS_ALT_DATE_FORMAT + try: + t = time.strptime(ch.text, date) + except ValueError: + traceback.print_exc() + return + self.release_date = datetime.date(t.tm_year, t.tm_mon, t.tm_mday) elif ch.tag == 'postdate': if ch.text is not None: - t = time.strptime(ch.text, '%Y-%m-%d') + + t = None + date = config.APPLETRAILERS_DATE_FORMAT + try: + t = time.strptime(ch.text, date) + except ValueError: + date = config.APPLETRAILERS_ALT_DATE_FORMAT + try: + t = time.strptime(ch.text, date) + except ValueError: + traceback.print_exc() + return + self.post_date = datetime.date(t.tm_year, t.tm_mon, t.tm_mday) def __parse_cast(self, element): @@ -195,7 +220,7 @@ return False if __name__ == '__main__': - a = Trailers('720p') + a = Trailers(config.APPLETRAILERS_RESOLUTION) for studio,trailers in a.studios.items(): print '[Studio] %s' % studio for t in trailers: @@ -224,4 +249,5 @@ for date,trailers in a.release_dates.items(): print '[Date] %s' % date.isoformat() for t in trailers: - print '\t%s' % t.title \ Manca newline alla fine del file + print '\t%s' % t.title + \ Manca newline alla fine del file diff -x .svn -ur freevo-1.9.2b2/src/video/plugins/appletrailers.py svn/src/video/plugins/appletrailers.py --- freevo-1.9.2b2/src/video/plugins/appletrailers.py 2011-11-06 22:31:50.169680759 +0100 +++ svn/src/video/plugins/appletrailers.py 2011-11-04 20:40:05.517955839 +0100 @@ -91,8 +91,11 @@ '', 'Selects the resolution of the trailers, options are \'\'(Default) for 640p, \'480p\' and \'720p\'' ), ('APPLETRAILERS_DATE_FORMAT', + '%Y-%m-%d', + 'How to format the release date of a film'), + ('APPLETRAILERS_ALT_DATE_FORMAT', '%y-%m-%d', - 'How to format the release date of a film')] + 'Alternate date format, some trailes have this format date')] def items(self, parent): return [ BrowseMainMenu(parent) ] @@ -201,19 +204,23 @@ def download_trailers(self): pfile = os.path.join(cachedir, 'trailers.pickle') + if os.path.isfile(pfile): self.trailers = util.fileops.read_pickle(pfile) + _debug_('Cache file present %s' % pfile, 2) s = os.stat(pfile) if self.trailers.resolution == config.APPLETRAILERS_RESOLUTION or \ (time.time() - s.st_mtime) > (60*60): # Over an hour ago + _debug_('Resolution changed or cache expired, updating feed ...', 2) self.trailers.update_feed() else: + _debug_('Cache invalid, updating ...', 2) self.trailers = None else: old_posters = set() - if self.trailers is None: + _debug_('Downloading trailers ...', 2) self.trailers = applelib.Trailers(config.APPLETRAILERS_RESOLUTION) util.fileops.save_pickle(self.trailers, pfile) diff -x .svn -ur freevo-1.9.2b2/src/video/plugins/imdb.py svn/src/video/plugins/imdb.py --- freevo-1.9.2b2/src/video/plugins/imdb.py 2011-11-06 22:31:50.149680162 +0100 +++ svn/src/video/plugins/imdb.py 2011-11-04 20:40:05.513954855 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Plug-in for IMDB support # ----------------------------------------------------------------------- -# $Id: imdb.py 11759 2010-12-05 20:41:53Z adam $ +# $Id: imdb.py 11892 2011-11-02 22:20:21Z adam $ # # Notes: IMDB plugin. You can add IMDB information for video items # with the plugin @@ -220,7 +220,7 @@ box.show() try: - self.fxd.retrieveImdbData(arg[0]) + self.fxd.retrieveImdbData(arg[0], self.fxd.ctitle[1], self.fxd.ctitle[2]) except FxdImdb_Error, error: _debug_('%s' % (error,), DWARNING) diff -x .svn -ur freevo-1.9.2b2/src/video/plugins/vpodcast.py svn/src/video/plugins/vpodcast.py --- freevo-1.9.2b2/src/video/plugins/vpodcast.py 2011-11-06 22:31:50.141674796 +0100 +++ svn/src/video/plugins/vpodcast.py 2011-11-04 20:40:05.513954855 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Video Podcast Player Plug-in # ----------------------------------------------------------------------- -# $Id: vpodcast.py 11555 2009-05-24 14:09:04Z duncan $ +# $Id: vpodcast.py 11873 2011-09-07 21:33:56Z adam $ # # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework @@ -75,7 +75,7 @@ | ('CNN - Now in the news', 'http://rss.cnn.com/services/podcasting/nitn/rss.xml'), | ('CNN - The Larry King', 'http://rss.cnn.com/services/podcasting/lkl/rss?format=xml'), | ('Discovery Channel', 'http://www.discovery.com/radio/xml/discovery_video.xml') - | (u'TV Markíza - Spravodajstvo', 'http://www.markiza.sk/xml/video/feed.rss?section=spravodajstvo', 'mrss'), + | (u'TV Markza - Spravodajstvo', 'http://www.markiza.sk/xml/video/feed.rss?section=spravodajstvo', 'mrss'), | ] | | VPODCAST_DIR = '/path/to/vpodcasts' @@ -243,7 +243,7 @@ except PodcastException: pass if not podcast_items: - podcast_items += [menu.MenuItem(_('No Podcast locations found'), menuw.goto_prev_page, 0)] + podcast_items += [menu.MenuItem(_('No Podcast locations found'), menuw.back_one_menu, 0)] finally: popup.destroy() diff -x .svn -ur freevo-1.9.2b2/src/video/plugins/youtube.py svn/src/video/plugins/youtube.py --- freevo-1.9.2b2/src/video/plugins/youtube.py 2011-11-06 22:31:50.157680219 +0100 +++ svn/src/video/plugins/youtube.py 2011-11-04 20:40:05.513954855 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Plugin for download and watch videos of youtube # ----------------------------------------------------------------------- -# $Id: youtube.py 11852 2011-03-06 12:16:48Z adam $ +# $Id: youtube.py 11863 2011-08-22 20:24:56Z adam $ # # Notes: # You need to install: @@ -72,6 +72,7 @@ from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer import threading +import util.httpserver from skin.widgets import TextEntryScreen from video.videoitem import VideoItem @@ -81,6 +82,7 @@ import osd osd = osd.get_singleton() +local_server = util.httpserver.get_local_server() standardfeeds = [ 'top_rated', 'top_favorites', 'most_viewed', 'most_popular', @@ -112,7 +114,7 @@ except ImportError: from elementtree import ElementTree -YOUTUBE_WEB_PORT=0 +RE_VIDEO_ID=re.compile('.+watch\?v=([^&]+)') class PluginInterface(plugin.MainMenuPlugin): @@ -156,33 +158,7 @@ if not os.path.isdir(config.YOUTUBE_DIR): os.mkdir(config.YOUTUBE_DIR, S_IMODE(os.stat(config.FREEVO_CACHEDIR)[ST_MODE])) - self.http_server = HTTPServer(('', 0), YoutubeRequestHandler) - - global YOUTUBE_WEB_PORT - YOUTUBE_WEB_PORT = self.http_server.server_address[1] - - self.stop = False - thread = threading.Thread(target=self.serve_forever) - thread.setDaemon(True) - thread.start() - - - - def serve_forever(self): - """ - Start HTTP server and wait for connections. - """ - while not self.stop: - try: - self.http_server.handle_request() - except: - traceback.print_exc() - - - def shutdown(self): - self.stop = True - self.http_server.socket.close() - + local_server.register_handler(r'/youtube/(.+)$', get_youtube_handler) def config(self): """returns the config variables used by this plugin""" @@ -214,12 +190,12 @@ """Create a VideoItem for play""" def __init__(self, video, id, parent): - VideoItem.__init__(self, 'http://localhost:%d/%s' % (YOUTUBE_WEB_PORT, id), parent) - self.name = video.title.text + VideoItem.__init__(self, local_server.get_url('/youtube/%s' % id), parent) + self.name = unicode(video.title.text) if video.content.type == "text" and video.content.text: - self.description = video.content.text + self.description = unicode(video.content.text) elif video.content.type == "html": - text = util.htmlenties2txt(video.content.text) + text = util.htmlenties2txt(unicode(video.content.text), 'unicode') match = re.search('([^\<]*)<', text) if match: self.description = decodeAcute(match.group(1)) @@ -267,13 +243,15 @@ def append_items(self, gfeed): for video in gfeed.entry: - if video.link[1].href.find('watch?v=') >= 0: - id = video.link[1].href.split('watch?v='); - elif video.link[0].href.find('watch?v=') >= 0: - id = video.link[0].href.split('watch?v='); - else: + id = None + for link in (video.link[1], video.link[0]): + m = RE_VIDEO_ID.match(link.href) + if m is not None: + id = m.group(1) + + if id is None: continue - mi = YoutubeVideoItem(video, id[1], self.parent) + mi = YoutubeVideoItem(video, id, self.parent) self.choices.append(mi) @@ -362,45 +340,42 @@ #------------------------------------------------------------------------------- # HTTP Server #------------------------------------------------------------------------------- -class YoutubeRequestHandler(BaseHTTPRequestHandler): - def do_GET(self): - id = self.path[1:] - cmd = [config.YOUTUBE_DL, '-o', '-', "http://www.youtube.com/watch?v=%s" % id] - if config.YOUTUBE_FORMAT: - cmd += ['-f', config.YOUTUBE_FORMAT] - process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - if process: - thread = threading.Thread(target=self.output, args=(process.stderr,)) - thread.setName('youtube-dl-stderr') - thread.start() - self.send_response(200) - self.send_header('Content-type', 'application/octet-stream') - self.end_headers() - self.request.settimeout(None) - more_data = True - try: - while more_data: - data = process.stdout.read(2048) - if data: - self.wfile.write(data) - else: - more_data = False - except: - os.kill(process.pid, 15) - else: - self.send_error(500, 'Failed to start youtube-dl') +def get_youtube_handler(request, ytid): + cmd = [config.YOUTUBE_DL, '-o', '-', "http://www.youtube.com/watch?v=%s" % ytid] + if config.YOUTUBE_FORMAT: + cmd += ['-f', config.YOUTUBE_FORMAT] + process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + if process: + def output(out): + buf = 'a' + line = '' + while buf: + buf = out.read(1) + if buf =='\n' or buf == '\r': + _debug_('DOWNLOAD: %r' % line) + line = '' + else: + line += buf + + thread = threading.Thread(target=output, args=(process.stderr,)) + thread.setName('youtube-dl-stderr') + thread.start() + request.send_response(200) + request.send_header('Content-type', 'application/octet-stream') + request.end_headers() + request.request.settimeout(None) + more_data = True + try: + while more_data: + data = process.stdout.read(2048) + if data: + request.wfile.write(data) + else: + more_data = False + except: + os.kill(process.pid, 15) + else: + request.send_error(500, 'Failed to start youtube-dl') - def log_message(self, format, *args): - _debug_(format % args, 2) - def output(self, out): - buf = 'a' - line = '' - while buf: - buf = out.read(1) - if buf =='\n' or buf == '\r': - _debug_('DOWNLOAD: %r' % line) - line = '' - else: - line += buf diff -x .svn -ur freevo-1.9.2b2/src/video/plugins/ytflashplayer.py svn/src/video/plugins/ytflashplayer.py --- freevo-1.9.2b2/src/video/plugins/ytflashplayer.py 1970-01-01 01:00:00.000000000 +0100 +++ svn/src/video/plugins/ytflashplayer.py 2011-11-04 20:40:05.517955839 +0100 @@ -0,0 +1,230 @@ +# -*- coding: iso-8859-1 -*- +# ----------------------------------------------------------------------- +# Plugin for watching youtube videos +# ----------------------------------------------------------------------- +# $Id: youtube.py 11862 2011-08-07 11:56:13Z adam $ +# +# ----------------------------------------------------------------------- +# +# Freevo - A Home Theater PC framework +# Copyright (C) 2002 Krister Lagerstrom, et al. +# Please see the file freevo/Docs/CREDITS for a complete list of authors. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MER- +# CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# ----------------------------------------------------------------------- +import os +import re +import socket +import urllib2 + +from BeautifulSoup import BeautifulSoup +import urlparse + +import childapp +import config # Configuration handler. reads config file. +import util # Various utilities +import rc # The RemoteControl class. +import plugin +import dialog + +import util.httpserver +import util.webbrowser as webbrowser + +from event import * + +local_server = None + +RE_YOUTUBE_URL = m = re.compile('^http://localhost:[0-9]+/youtube/(.+)$') + +class PluginInterface(plugin.Plugin): + """ + Youtube flash player plugin. + + This plugin requires either Chromium or Chrome to work and the Adobe flash plugin. + + To activate this plugin: + | CHROME_PATH='/path/to/chrome' + | plugin.activate('video.ytflashplayer') + + """ + def __init__(self): + plugin.Plugin.__init__(self) + if hasattr(config, 'CHROME_PATH') and config.CHROME_PATH: + plugin.register(YTFlashPlayer(), plugin.VIDEO_PLAYER, True) + else: + print 'Youtube Flash Player disabled, CHROME_PATH is not set!' + + + +class YTFlashPlayer: + """ + the main class to control mplayer + """ + def __init__(self): + """ + init the mplayer object + """ + self.name = 'ytflashplayer' + + self.event_context = 'video' + self.local_server = util.httpserver.get_local_server() + self.local_server.register_handler('^(http://www.youtube.com/watch\?v=.+)$', self.__html_handler) + print 'PROXY:', self.local_server.get_url('/') + + + def rate(self, item): + """ + How good can this player play the file: + 2 = good + 1 = possible, but not good + 0 = unplayable + """ + if not item.url: + return 0 + + if RE_YOUTUBE_URL.match(item.url): + return 1000 + return 0 + + + def play(self, options, item): + """ + play a videoitem + """ + m = RE_YOUTUBE_URL.match(item.url) + if not m: + return + + url = 'http://www.youtube.com/watch?v=%s' % m.group(1) + + self.options = options + self.item = item + self.item_info = None + self.item_length = -1 + self.item.elapsed = 0 + + self.paused = False + self.app = webbrowser.start_web_browser(url, self.__exited) + rc.add_app(self) + Event(PLAY_START, item).post() + + + def stop(self): + """ + Stop mplayer + """ + if not self.app: + return + + self.app.stop() + + + def __exited(self, code): + rc.remove_app(self) + Event(PLAY_END).post() + + + + def eventhandler(self, event, menuw=None): + """ + eventhandler for mplayer control. If an event is not bound in this + function it will be passed over to the items eventhandler + """ + _debug_('%s.eventhandler(event=%s)' % (self.__class__, event)) + + if not self.app: + return self.item.eventhandler(event) + + if event in (STOP, PLAY_END, USER_END): + self.stop() + return self.item.eventhandler(event) + + if event == TOGGLE_OSD: + dialog.show_play_state(dialog.PLAY_STATE_INFO, self.item, self.get_time_info) + return True + + if event == PAUSE or event == PLAY: + self.paused = not self.paused + + if self.paused: + dialog.show_play_state(dialog.PLAY_STATE_PAUSE, self.item, self.get_time_info) + webbrowser.ipc.pauseVideo() + else: + dialog.show_play_state(dialog.PLAY_STATE_PLAY, self.item, self.get_time_info) + webbrowser.ipc.playVideo() + return True + + if event == SEEK: + self.paused = False + webbrowser.ipc.seekVideo(event.arg) + return True + + if event == 'WEB_IPC': + if event.arg['event'] == 'error': + self.stop() + return True + if event.arg['event'] == 'state': + if event.arg['data'] == 0: + self.stop() + return True + return True + + # nothing found? Try the eventhandler of the object who called us + return self.item.eventhandler(event) + + + def get_html(self, url): + u = urllib2.urlopen(url+'&has_verified=1') + yt_page = u.read() + u.close() + + soup = BeautifulSoup(yt_page) + embed = soup.find(id='movie_player') + if embed is None: + print '%s: failed to movie_player element' + filename = url.replace('http://www.youtube.com/watch?v=', '') + f = open('/tmp/youtube-' + filename,'w') + f.write(yt_page) + f.close() + embed = str(embed) + + embed = re.sub('width="[0-9]+"', 'width="%d"' % (config.CONF.width-2), embed) + embed = re.sub('height="[0-9]+"', 'height="%d"' % (config.CONF.height-2), embed) + + f = open(os.path.join(webbrowser.HTML_DIR, 'ytflashplayer.html')) + html = f.read() + f.close() + + return html.replace('$EMBED$', embed) + + + + def __html_handler(self, request, url): + html = self.get_html(url) + + request.send_response(200) + request.send_header('mime-type', 'text/html') + request.send_header('content-length', '%d' % len(html)) + request.end_headers() + + request.wfile.write(html) + request.wfile.flush() + + + def get_time_info(self): + return webbrowser.ipc.getTimes() + + debian/patches/reencode.py.diff0000644000000000000000000001531510773425122013672 0ustar --- freevo/src/video/plugins/reencode.py 2008/03/24 21:51:48 10586 +++ freevo/src/video/plugins/reencode.py 2008/03/26 11:48:29 10587 @@ -29,11 +29,12 @@ # ----------------------------------------------------------------------- +import os from os.path import join, split +import config import plugin import menu -import os -import config +import util from video.encodingclient import * from gui.AlertBox import AlertBox from gui.PopupBox import PopupBox @@ -57,9 +58,11 @@ self.source = '' self.output = '' self.resetprofile() + self.timeslice = [ None, None ] def resetprofile(self): self.profile = {} + self.timeslice = [ None, None ] self.profile['container'] = config.REENCODE_CONTAINER self.profile['resolution'] = config.REENCODE_RESOLUTION self.profile['videocodec'] = config.REENCODE_VIDEOCODEC @@ -148,6 +151,8 @@ menu_items += [ menu.MenuItem(_('Start Encoding'), self.create_job, self.profile) ] menu_items += [ menu.MenuItem(_('Select Encoding Profile'), action=self.select_profile) ] menu_items += [ menu.MenuItem(_('Modify Container'), action=self.mod_container) ] + menu_items += [ menu.MenuItem(_('Modify Start Time'), action=self.mod_start_time) ] + menu_items += [ menu.MenuItem(_('Modify End Time'), action=self.mod_end_time) ] menu_items += [ menu.MenuItem(_('Modify Resolution'), action=self.mod_resolution) ] menu_items += [ menu.MenuItem(_('Modify Video Codec'), action=self.mod_videocodec) ] menu_items += [ menu.MenuItem(_('Modify Video Bitrate'), action=self.mod_videobitrate) ] @@ -161,6 +166,7 @@ menuw.pushmenu(encoding_menu) menuw.refresh() + def select_profile(self, arg=None, menuw=None): _debug_('select_profile(self, arg=None, menuw=None)', 2) menu_items = [] @@ -173,6 +179,46 @@ menuw.pushmenu(encoding_menu) menuw.refresh() + + def set_start_time(self, arg=None, menuw=None): + self.timeslice[0] = arg + if menuw: + menuw.back_one_menu(arg='reload') + + + def set_end_time(self, arg=None, menuw=None): + self.timeslice[1] = arg + if menuw: + menuw.back_one_menu(arg='reload') + + + def _select_time(self, arg=None, menuw=None, which=None): + bookmarkfile = util.get_bookmarkfile(self.item.filename) + if not os.path.exists(bookmarkfile): + self.error(_('No bookmarks are set for this video')) + return + menu_items = [] + menu_items = [ menu.MenuItem(_('Do not set'), action=which, arg=None),] + for line in util.readfile(bookmarkfile): + sec = int(line) + hour = int(sec/3600) + min = int((sec-(hour*3600))/60) + time = '%0.2d:%0.2d:%0.2d' % (hour,min,sec % 60) + menu_items.append(menu.MenuItem(time, action=which, arg=sec)) + encoding_menu = menu.Menu(_('Select Time'), menu_items, item_types = 'video encoding menu') + encoding_menu.infoitem = self + menuw.pushmenu(encoding_menu) + menuw.refresh() + + + def mod_start_time(self, arg=None, menuw=None): + self._select_time(arg, menuw, self.set_start_time) + + + def mod_end_time(self, arg=None, menuw=None): + self._select_time(arg, menuw, self.set_end_time) + + def mod_container(self, arg=None, menuw=None): _debug_('mod_container(self, arg=%r, menuw=%r)' % (arg, menuw), 2) items = [] @@ -183,6 +229,7 @@ menuw.pushmenu(container_menu) menuw.refresh() + def mod_resolution(self, arg=None, menuw=None): _debug_('mod_resolution(self, arg=%r, menuw=%r)' % (arg, menuw), 2) items = [] @@ -193,6 +240,7 @@ menuw.pushmenu(resolution_menu) menuw.refresh() + def mod_videocodec(self, arg=None, menuw=None): _debug_('mod_videocodec(self, arg=%r, menuw=%r)' % (arg, menuw), 2) items = [] @@ -203,6 +251,7 @@ menuw.pushmenu(videocodec_menu) menuw.refresh() + def mod_videobitrate(self, arg=None, menuw=None): _debug_('mod_videobitrate(self, arg=%r, menuw=%r)' % (arg, menuw), 2) items = [] @@ -213,6 +262,7 @@ menuw.pushmenu(videobitrate_menu) menuw.refresh() + def mod_audiocodec(self, arg=None, menuw=None): _debug_('mod_audiocodec(self, arg=%r, menuw=%r)' % (arg, menuw), 2) items = [] @@ -223,6 +273,7 @@ menuw.pushmenu(audiocodec_menu) menuw.refresh() + def mod_audiobitrate(self, arg=None, menuw=None): _debug_('mod_audiobitrate(self, arg=%r, menuw=%r)' % (arg, menuw), 2) items = [] @@ -233,6 +284,7 @@ menuw.pushmenu(audiobitrate_menu) menuw.refresh() + def mod_numpasses(self, arg=None, menuw=None): _debug_('mod_numpasses(self, arg=%r, menuw=%r)' % (arg, menuw), 2) items = [] @@ -243,6 +295,7 @@ menuw.pushmenu(numpasses_menu) menuw.refresh() + def mod_numthreads(self, arg=None, menuw=None): _debug_('mod_numthreads(self, arg=%r, menuw=%r)' % (arg, menuw), 2) items = [] @@ -253,6 +306,7 @@ menuw.pushmenu(numthreads_menu) menuw.refresh() + def mod_videofilter(self, arg=None, menuw=None): _debug_('mod_videofilter(self, arg=%r, menuw=%r)' % (arg, menuw), 2) items = [] @@ -263,6 +317,7 @@ menuw.pushmenu(videofilter_menu) menuw.refresh() + def select_encoding_profile(self, arg=None, menuw=None): _debug_('select_encoding_profile(self, arg=%r, menuw=%r)' % (arg, menuw), 2) @@ -314,6 +369,7 @@ if menuw: menuw.back_one_menu(arg='reload') + def alter_prop(self, arg=(None, None), menuw=None): _debug_('alter_prop(self, arg=%r, menuw=%r)' % (arg, menuw), 2) (prop, val) = arg @@ -371,6 +427,12 @@ idnr = resp + (status, resp) = setTimeslice(idnr, self.timeslice) + _debug_('setTimeslice:status:%s resp:%s' % (status, resp)) + if not status: + self.error(resp) + return + (status, resp) = setContainer(idnr, profile['container']) _debug_('setContainer:status:%s resp:%s' % (status, resp)) if not status: @@ -378,7 +440,8 @@ return multipass = profile['numpasses'] > 1 - (status, resp) = setVideoCodec(idnr, profile['videocodec'], 0, multipass, profile['videobitrate'], profile['altprofile']) + (status, resp) = setVideoCodec(idnr, profile['videocodec'], 0, multipass, + profile['videobitrate'], profile['altprofile']) _debug_('setVideoCodec:status:%s resp:%s' % (status, resp)) if not status: self.error(resp) debian/patches/applelib.py.diff0000644000000000000000000000214311731046732013672 0ustar --- x/src/video/plugins/applelib.py (revisione 11905) +++ x/src/video/plugins/applelib.py (copia locale) @@ -37,6 +37,9 @@ import urllib import config +import logging +logger = logging.getLogger("freevo.video.plugins.applelib") + class Trailer: def __init__(self, element): self.cast = [] @@ -77,12 +80,14 @@ if rt is not None: colon_pos = rt.find(':') try: - if colon_pos != -1: + if colon_pos > 0: self.runtime = (int(rt[:colon_pos]) * 60 ) + int(rt[colon_pos+1:]) + elif colon_pos == 0: + self.runtime = int(rt[1:]) else: - self.runtime = int(colon_pos) + self.runtime = int(rt) except: - traceback.print_exc() + _debug_('applelib: problem while parsing runtime %r' % (rt,), DWARNING) elif ch.tag == 'releasedate': if ch.text is not None: debian/patches/source_etc_freevo_debconf_py.diff0000644000000000000000000000122611651072132017337 0ustar Index: freevo-1.9.2b2/src/config.py =================================================================== --- freevo-1.9.2b2.orig/src/config.py 2010-11-11 11:30:23.000000000 +0100 +++ freevo-1.9.2b2/src/config.py 2011-10-23 17:38:26.945039874 +0200 @@ -631,6 +631,12 @@ print sys.exit(1) +#Debian specific /etc/freevo/debconf.py file, to read configurations +# as entered at install time using the debconf interface +overridefile = '/etc/freevo/debconf.py' +if os.path.isfile(overridefile): + _debug_('Loading debconf configuration file "%s"' % overridefile, DINFO) + execfile(overridefile, globals(), locals()) # # Search for local_conf.py: debian/patches/nocheck0000644000000000000000000000074511651072132012156 0ustar Index: freevo-1.9.2b2/setup.py =================================================================== --- freevo-1.9.2b2.orig/setup.py 2011-02-17 21:49:16.000000000 +0100 +++ freevo-1.9.2b2/setup.py 2011-10-23 17:34:47.789797503 +0200 @@ -45,7 +45,7 @@ if sys.hexversion < 0x2050000: libs_to_check.append(('elementtree', 'http://effbot.org/zone/elementtree.htm')) -check_libs(libs_to_check) +#check_libs(libs_to_check) class CustomInstall(install.install): def run(self): debian/patches/config_py.diff0000644000000000000000000000300511651072132013420 0ustar Index: freevo-1.9.2b2/src/config.py =================================================================== --- freevo-1.9.2b2.orig/src/config.py 2011-10-23 17:38:26.945039874 +0200 +++ freevo-1.9.2b2/src/config.py 2011-10-23 17:42:50.530504424 +0200 @@ -277,6 +277,7 @@ guess some settings for your system. This takes place in a file called 'freevo_config.py'. Since this file may change from time to time, you should not edit this file. After freevo_config.py is loaded, Freevo will + load the Debian specific '/etc/freevo/debconf.py', and then it will look for a file called 'local_conf.py'. You can overwrite the variables from 'freevo_config.py' in here. There is an example for 'local_conf.py' called 'local_conf.py.example' in the Freevo distribution. @@ -501,7 +502,10 @@ # # Config file handling # -cfgfilepath = ['.', os.path.expanduser('~/.freevo'), '/etc/freevo', '/usr/local/etc/freevo'] +# Debian change : '.' may lead to unpredictable behaviours, +# '/usr/local/etc/freevo' is redundant +cfgfilepath = [ os.path.expanduser('~/.freevo'), '/etc/freevo'] + # @@ -576,6 +580,12 @@ print_help() sys.exit(1) +#Debian specific /etc/freevo/debconf.py file, to read configurations +# as entered at install time using the debconf interface +overridefile = '/etc/freevo/debconf.py' +if os.path.isfile(overridefile): + _debug_('Loading debconf configuration file "%s"' % overridefile, DINFO) + execfile(overridefile, globals(), locals()) # # search missing programs at runtime debian/patches/umask.diff0000644000000000000000000000104211651072132012562 0ustar Index: freevo-1.9.2b2/freevo_config.py =================================================================== --- freevo-1.9.2b2.orig/freevo_config.py 2011-10-23 17:38:57.911802302 +0200 +++ freevo-1.9.2b2/freevo_config.py 2011-10-23 17:39:31.554457722 +0200 @@ -672,7 +672,9 @@ # 022 means only the user has write access. If you share your Freevo # installation with different users, set this to 002 # -UMASK = 022 +# In Debian, there is a 'freevo' group, and all users can access shared stuff. +# +UMASK = 002 # # Suffix for playlist files debian/patches/freevo_config_py_remarks.diff0000644000000000000000000000336611333116365016530 0ustar Index: freevo-1.9.0/freevo_config.py =================================================================== --- freevo-1.9.0.orig/freevo_config.py 2010-02-05 23:10:25.000000000 +0100 +++ freevo-1.9.0/freevo_config.py 2010-02-05 23:11:34.000000000 +0100 @@ -31,6 +31,13 @@ # the format "MAJOR.MINOR", e.g. "2.3". The version number reflects the # config file format, *not* the Freevo version number. # + +# Debian specific note: +# the file /etc/freevo/debconf.py is loaded after freevo_config.py +# and before local_conf.py . It imports the variables +# VIDEO_ITEMS AUDIO_ITEMS IMAGE_ITEMS TV_RECORD_DIR +# overriding the values here (that are 'None') + # 4) local_conf.py is searched for in ['$cwd/', '~/.freevo', # '/etc/freevo/', $freevo-bindir/]. The first one found is loaded. It is # not a required file. The search is independent of where freevo.conf was @@ -1098,6 +1105,7 @@ # Directory myserver:/files/server-stuff will show the item for the # directory /files/server-stuff if the computer myserver is alive. # +# WARNING: see Debian specific note at beginning of this file VIDEO_ITEMS = None # @@ -1181,6 +1189,7 @@ # # To add webradio support, add fxd/webradio.fxd to this list # +#WARNING: see Debian specific note at beginning of this file AUDIO_ITEMS = None # @@ -1226,6 +1235,7 @@ # This is a list of items (e.g. directories, fxd files). The items itself # can also be a list of (title, file) # +#WARNING: see Debian specific note at beginning of this file IMAGE_ITEMS = None # @@ -1774,6 +1784,8 @@ # This is where recorded video is written. # # XXX the path doesn't work from the www cgi scripts! +# +#WARNING: see Debian specific note at beginning of this file TV_RECORD_DIR = None # This will enable duplicate recording detection debian/patches/exit_0_if_running.diff0000644000000000000000000000105011651072132015047 0ustar Index: freevo-1.9.2b2/freevo =================================================================== --- freevo-1.9.2b2.orig/freevo 2010-12-05 21:41:53.000000000 +0100 +++ freevo-1.9.2b2/freevo 2011-10-23 17:51:05.782598410 +0200 @@ -654,7 +654,8 @@ sys.exit("Can't find helper %s" % name) if check and getpid(name, python + proc)[1]: - sys.exit("%s still running, run '%s --stop' to stop" % (name, name)) + sys.stderr.write("%s is already running.\n" % name) + sys.exit(0) if opts.profile: if sys.hexversion > 0x02050000: debian/patches/encodingcore.py.diff0000644000000000000000000002522010773425122014541 0ustar --- freevo/src/encodingcore.py 2008/03/24 21:51:48 10586 +++ freevo/src/encodingcore.py 2008/03/26 11:48:29 10587 @@ -96,42 +96,45 @@ -#from pytvgrab enum.py, see http://pytvgrab.sourceforge.net class Enum(dict): """Enum + from pytvgrab enum.py, see http://pytvgrab.sourceforge.net Enum(names, x=0)""" - def __init__(self, names, x=0): for i in range(x, x+len(names)): self.__dict__[names[i-x]]=i self[i]=names[i-x] # __init__() - status = Enum(['notset', 'apass', 'vpass1', 'vpassfinal', 'postmerge']) + + class EncodingOptions: def getContainerList(self): """Return a list of possible containers""" return mappings['lists']['containers'] + def getVideoCodecList(self): """Return a list of possible video codecs""" return mappings['lists']['videocodecs'] + def getAudioCodecList(self): """Return a possible audio codec list""" return mappings['lists']['audiocodecs'] + def getVideoFiltersList(self): """Return a list of possible video filters""" return mappings['filtertype'] + class EncodingJob: """Class for creation & configuration of EncodingJobs. This generates the mencoder commands""" - def __init__(self, source, output, friendlyname, idnr, chapter=None): """Initialize class instance""" _debug_('encodingcore.EncodingJob.__init__(%s, %s, %s, %s, %s)' % \ @@ -157,6 +160,11 @@ self.crop = None self.cropres = None + # list of initial and end point of slice to encode + self.timeslice = [ None , None ] + # corresponding arguments for mencoder + self.timeslice_mencoder = [] + self.acodec = mappings['lists']['audiocodecs'][0] self.abrate = 128 self.afilters = {} # Not used atm, might be used in the future @@ -195,6 +203,24 @@ self.finishedanalyze = True + def setTimeslice(self, timeslice): + "Set the encoding timeslice" + self.timeslice = timeslice + assert(type(timeslice) == type([])) + assert(len(timeslice) == 2) + self.timeslice_mencoder = [] + start=0 + if timeslice[0]: + self.timeslice_mencoder += [ '-ss', str(timeslice[0])] + start = timeslice[0] + if timeslice[1]: + self.timeslice_mencoder += ['-endpos', str(timeslice[1]-start)] + if timeslice[1] < start: + self.timeslice_mencoder = [] + self.timeslice = [ None , None ] + return 'Invalid slice of times: end is before start ??' + + def setContainer(self, container): """Set a container to hold the audio & video streams""" #safety checks @@ -210,6 +236,7 @@ else: self.output = ('%s.%s' % (self.output, self.container)) + def setVideoCodec(self, vcodec, tgtsize, multipass=False, vbitrate=0, altprofile=None): """Set video codec and target filesize (in MB) or bit rate (in kbits/sec)""" _debug_('setVideoCodec(self, vcodec=%s, tgtsize=%s, multipass=%s, vbitrate=%s)' % \ @@ -237,21 +264,25 @@ self.acodec = acodec self.abrate = abrate + def setVideoFilters(self, videofilters): """Set video filters""" for vfilter, option in videofilters: if mappings['filter'].has_key(option): self.vfilters += [ mappings['filter'][option]] + def setVideoRes(self, videores): if videores == 'Optimal': (self.resx, self.resy) = (0, 0) else: (self.resx, self.resy) = videores.split(':') + def setNumThreads(self, numthreads): self.threads = numthreads + def _CalcVideoBR(self): """Calculates the video bitrate""" @@ -296,18 +327,25 @@ self._CropDetect() - def _CropDetect(self): #contains pieces of QuickRip - """Detect cropping + def _CropDetect(self): + """Detect cropping, contains pieces of QuickRip Function is always called because cropping is a good thing, and we can pass our ideal values back to the client wich can verify them visually if needed.""" #not true atm #build mplayer parameters - if hasattr(self, 'length'): - sstep = int(self.length / 27) + start = 0 + if self.timeslice[0]: + start = self.timeslice[0] + if self.timeslice[1]: + sstep = int( (self.timeslice[1] - start) / 27) + elif hasattr(self, "length"): + sstep = int( (self.length - start) / 27) else: sstep = 60 - arguments = [ '-vf', 'cropdetect=30', '-nosound', '-vo', 'null', '-frames', '10','-fps=540', '-sstep', str(sstep)] + arguments = self.timeslice_mencoder + [ "-vf", "cropdetect=30", "-nosound", "-vo", "null", "-fps", "540"] + if sstep > 0: + arguments += [ "-sstep", str(sstep)] if self.info.mime == 'video/dvd': arguments += [ '-dvd-device', self.source, 'dvd://%s' % self.chapter ] @@ -319,6 +357,7 @@ #print (' '.join([mplayer]+arguments)) self._run(mplayer, arguments, self._CropDetectParse, None, 0, None) + def _GenerateCLMencoder(self): """Generate the command line(s) to be executed, using MEncoder for encoding""" #calculate the videobitrate @@ -344,6 +383,7 @@ self.cls = [ videopass1, videopass2 ] + def _GCLMSource(self): """Returns source part of mencoder""" if self.info.mime == 'video/dvd': @@ -355,6 +395,7 @@ else: return [ self.source ] + def _GCLMVideopass(self, passnr): """Returns video pass specefic part of mencoder cl""" vf = copy(self.vfilters) @@ -478,13 +519,16 @@ if yscaled: args += ['-sws', '1'] + args = self.timeslice_mencoder + args + return args - #from QuickRip, heavily adapted, new algo - #TODO give this another name, it does more then crop detection only def _CropDetectParse(self, lines, data): #seek to remove data - """Parses Mplayer output to obtain ideal cropping parameters, and do PAL/NTSC detection""" + """Parses Mplayer output to obtain ideal cropping parameters, and do PAL/NTSC detection + from QuickRip, heavily adapted, new algo + TODO give this another name, it does more then crop detection only + """ #print '_CropDetectParse(self, lines=%r, data=%r)' % (lines, data) re_crop = re.compile('.*-vf crop=(\d*:\d*:\d*:\d*).*') @@ -613,12 +657,14 @@ #end analyzing self.finishedanalyze = True + def _CalcBPP(self, x, y): """Perform a BPP (Bits per Pixel calculation)""" bpp = (self.vbrate * 1000) / (x * y * self.fps) _debug_('_CalcBPP() = %s, fps=%s' % (bpp, self.fps)) return bpp + def _OptimalRes(self, x, y): """Using BPP calculations, try to find out the ideal resolution for this movie""" nonoptimal = True @@ -639,9 +685,12 @@ return ( int(optx), int (opty) ) - #from Quickrip, adapted - def _MencoderParse(self, line, data): #seek to remove data - """Parses mencoder stdout to get progress and trem""" + + def _MencoderParse(self, line, data): + """Parses mencoder stdout to get progress and them + from Quickrip, adapted + seek to remove data + """ #(passtype, title) = data re_progress = re.compile('(\d+)\%\) .*Trem:\s*(\d+\w+)\s+') @@ -650,22 +699,23 @@ self.trem = re_progress.search(line).group(2) #self.ui_updateProgress(perc, trem, passtype) - #from QuickRip, adapted - def _run(self, program, arguments, finalfunc, updatefunc=None, - flushbuffer=0, data=None, lock=None): # seek to remove data and/or crop (not really used) - """Runs a program; supply program name (string) and arguments (list)""" + + def _run(self, program, arguments, finalfunc, updatefunc=None, flushbuffer=0, data=None, lock=None): + """Runs a program; supply program name (string) and arguments (list) + seek to remove data and/or crop (not really used) + """ command = [program] command += arguments - self.thread = CommandThread(self, command, updatefunc, finalfunc, - flushbuffer, data, None) #self.lock) + self.thread = CommandThread(self, command, updatefunc, finalfunc, flushbuffer, data, None) self.thread.start() -#command executing class - Taken from Quickrip & adapted. class CommandThread(threading.Thread): # seek to remove data andor crop (not really used) - """Handle threading of external commands""" + """Handle threading of external commands + command executing class - Taken from Quickrip & adapted. + """ def __init__(self, parent, command, updatefunc, finalfunc, flushbuffer, data, lock): threading.Thread.__init__(self) self.parent = parent @@ -677,6 +727,7 @@ self.lock = lock _debug_('command=\"%s\"' % ' '.join(command)) + def run(self): #self.lock.acquire() self.pipe = popen2.Popen4(self.command) @@ -736,7 +787,6 @@ class EncodingQueue: """Class for generating an encoding queue""" - def __init__(self): #we keep a list and a dict because a dict doesn't store an order self.qlist = [] @@ -746,12 +796,14 @@ #remove old files self._removeTmp() + def addEncodingJob(self, encjob): """Adds an encodingjob to the queue""" self.qlist += [encjob] self.qdict[encjob.idnr] = encjob + def getProgress(self): """Gets progress on the current job""" if hasattr(self, 'currentjob'): @@ -760,6 +812,7 @@ else: return 'No job currently running' + def startQueue(self): """Start the queue""" if not self.running: @@ -767,6 +820,7 @@ _debug_('queue started', DINFO) self._runQueue() + def listJobs(self): """Returns a list of queue'ed jobs""" if self.qdict == {}: @@ -777,6 +831,7 @@ jlist += [ (idnr, job.name, job.status) ] return jlist + def _removeTmp(self): """Removes possible temporary files created during encoding""" tmpfiles = ['frameno.avi', 'divx2pass.log', 'xvid-twopass.stats', 'x264_2pass.log' ] @@ -785,6 +840,7 @@ if os.path.exists(tmpfile): os.remove(tmpfile) + def _runQueue(self, line='', data=''): """Executes the jobs in the queue, and gets called after every mencoder run is completed""" if self.qlist == []: debian/patches/force-python2.5.diff0000644000000000000000000000141111506342360014306 0ustar Index: freevo-1.9.0/freevo =================================================================== --- freevo-1.9.0.orig/freevo 2010-12-28 10:22:28.000000000 +0100 +++ freevo-1.9.0/freevo 2010-12-28 10:22:37.000000000 +0100 @@ -177,6 +177,15 @@ """ get the newest version of python [ with freevo installed ] """ + #A.M.: this version of Freevo does not work with "the newest version" e.g. 2.7, + #it needs python2.5 or 2.6 + p='2.5' + if os.path.exists('/usr/bin/python2.6'): + p='2.6' + if check_freevo: + return '/usr/bin/python'+p, '/usr/lib/pymodules/python'+p+'/freevo' + else: + return '/usr/bin/python'+p _debug_('version=%r' % (sys.version)) if sys.hexversion >= 0x02040000: # python seems to be ok debian/patches/twisted-web-9.diff0000644000000000000000000000543011507651164014063 0ustar #Bug: http://sourceforge.net/tracker/?func=detail&aid=2936634&group_id=46652&atid=446895 #Author: A Mennucc #Comment: from upstream SVN 11648 and then 11664 --- x/src/www/htdocs/vlcwin.rpy (revision 11647) +++ x/src/www/htdocs/vlcwin.rpy (revision 11648) @@ -33,9 +33,9 @@ import time from www.web_types import HTMLResource, FreevoResource -from twisted.web.woven import page + +import config import util -import config import kaa.metadata as metadata from twisted.web import static Index: x/src/www/htdocs/proginfo.rpy =================================================================== --- x/src/www/htdocs/proginfo.rpy (revision 11647) +++ x/src/www/htdocs/proginfo.rpy (revision 11648) @@ -33,7 +33,6 @@ import time from www.web_types import HTMLResource, FreevoResource -from twisted.web.woven import page import util.tv_util as tv_util import util Index: x/src/www/htdocs/guidechannel.rpy =================================================================== --- x/src/www/htdocs/guidechannel.rpy (revision 11647) +++ x/src/www/htdocs/guidechannel.rpy (revision 11648) @@ -33,7 +33,6 @@ import time import datetime -from twisted.web.woven import page from twisted.web import static import util.tv_util as tv_util Index: x/src/www/htdocs/fileinfo.rpy =================================================================== --- x/src/www/htdocs/fileinfo.rpy (revision 11647) +++ x/src/www/htdocs/fileinfo.rpy (revision 11648) @@ -33,7 +33,6 @@ import time from www.web_types import HTMLResource, FreevoResource -from twisted.web.woven import page import util import config import kaa.metadata as metadata --- x/src/www/web_types.py.orig 2010-01-21 23:11:54.930969214 +0100 +++ x/src/www/web_types.py 2010-01-21 23:23:34.342726782 +0100 @@ -36,7 +36,6 @@ import config import socket -from twisted.web.woven import page from twisted.web.resource import Resource from tv.record_client import RecordClient @@ -71,23 +70,6 @@ -class FreevoPage(page.Page): - """ - """ - def __init__(self, model=None, template=None): - #print 'FreevoPage.__init__(model=%r, template=%r)' % (model, template) - - if not model: - model = {'foo': 'bar'} - if not template: - template = 'ERROR' + \ - 'ERROR: no template' - - page.Page.__init__(self, model, template=template) - - self.addSlash = 0 - - class FreevoResource(Resource): """ Base class of webpages which handels the authentication. --- x/src/www/htdocs/guide.rpy~ 2009-02-19 18:59:44.000000000 +0100 +++ x/src/www/htdocs/guide.rpy 2010-01-21 23:29:00.274594734 +0100 @@ -32,7 +32,6 @@ import sys, string import time -from twisted.web.woven import page import config import util.tv_util as tv_util debian/patches/local_conf.py.example0000644000000000000000000000066610664354035014736 0ustar Index: freevo-1.7.3/local_conf.py.example =================================================================== --- freevo-1.7.3.orig/local_conf.py.example 2007-08-26 21:02:19.706738194 +0200 +++ freevo-1.7.3/local_conf.py.example 2007-08-26 21:02:33.023070799 +0200 @@ -41,7 +41,7 @@ -CONFIG_VERSION = 5.17 +CONFIG_VERSION = 5.2 # ====================================================================== # General freevo settings: debian/patches/svn_11905.diff0000644000000000000000000101550111661772050013024 0ustar diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/ChangeLog svn/ChangeLog --- freevo-1.9.2b2~upstream/ChangeLog 2011-02-07 15:34:37.000000000 +0100 +++ svn/ChangeLog 2011-11-09 09:03:15.852290987 +0100 @@ -1,7 +1,7 @@ Freevo Changelog ================ -$Id: ChangeLog 11817 2011-02-07 14:34:37Z adam $ +$Id: ChangeLog 11903 2011-11-08 22:59:59Z adam $ * Updated mplayer tv plug-in to CSEND_MPLAYER_CMD Note @@ -86,6 +86,10 @@ * Fixed convert_favorites_txt failing when program title contained an appostrophe (B#2951250) * Fixed dvbstreamer spaces in services (B#2943178) * Fixed escaping of backslash in lcd plugin (B#3131266) + * Bug fixes and features for lcd2 plugin (B#3430755) + * Fixed autoshutdown configuration not propagate in local_conf.py (B#3431982) + * Fixed iPlayer plugin can't search/start get_iplayer (B#3430721) + * Fixed imdb plugin does not retrieve series episode info (B#3389197) == Release 1.9.0 (2009-05-26) == -------------------------------- diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/freevo svn/freevo --- freevo-1.9.2b2~upstream/freevo 2010-12-05 21:41:53.000000000 +0100 +++ svn/freevo 2011-11-04 20:40:11.581954346 +0100 @@ -4,7 +4,7 @@ # ----------------------------------------------------------------------- # The main entry point to the whole suite of applications # ----------------------------------------------------------------------- -# $Id: freevo 11759 2010-12-05 20:41:53Z adam $ +# $Id: freevo 11871 2011-09-01 13:42:08Z adam $ # # Notes: This is a rewrite of the old shell script in Python # Todo: @@ -179,15 +179,18 @@ get the newest version of python [ with freevo installed ] """ _debug_('version=%r' % (sys.version)) - if sys.hexversion >= 0x02060000: + if sys.hexversion >= 0x02070000: + # python seems to be ok + search = ('python2.7', 'python2', 'python') + elif sys.hexversion >= 0x02060000: # python seems to be ok search = ('python2.6', 'python2', 'python') elif sys.hexversion >= 0x02050000: # try python2.5, else take python search = ('python2.5', 'python2', 'python') else: - # python is too old, try to find python2.6, python2.5 or python2 - search = ('python2.6', 'python2.5', 'python2') + # python is too old, try to find python2.7, python2.6, python2.5 or python2 + search = ('python2.7', 'python2.6', 'python2.5', 'python2') for python in search: for path in os.environ['PATH'].split(':'): diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/freevo_config.py svn/freevo_config.py --- freevo-1.9.2b2~upstream/freevo_config.py 2011-02-27 23:28:53.000000000 +0100 +++ svn/freevo_config.py 2011-11-19 18:31:29.185815330 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # System configuration # ----------------------------------------------------------------------- -# $Id: freevo_config.py 11842 2011-02-27 22:28:53Z adam $ +# $Id: freevo_config.py 11904 2011-11-12 22:26:54Z adam $ # # Notes: # This file contains the freevo settings. To change the settings @@ -751,6 +751,8 @@ # Use udisks to find removable storage plugin.activate('udisks') +AUTOSHUTDOWN_PROCESS_LIST = ['mencoder','transcode','cdrecord','emerge','tvgids.sh','tv_grab','sshd:'] + # Set to true to allow destination to be clobbered SHOPPINGCART_CLOBBER = False @@ -784,6 +786,9 @@ # 1 = autoaccept IMDB_AUTOACCEPT_SINGLE_HIT = True +# Use the local file lenght or runtime value from IMDB? +IMDB_USE_IMDB_RUNTIME = False + # delete file in menu plugin.activate('file_ops', level=20) @@ -1359,6 +1364,23 @@ SKIN_GUIDE_SHOW_NOW_LINE = True # ====================================================================== +# Freevo LCD Plugin settings: +# ====================================================================== +# +# This will remap all non-ASCII chars to plain ASCII. Some international, non-ASCII +# characters confuse some VFDs and LCDs, notably 16x2 iMON VFD will crash. +# Some attemt to remap such chars is done badly in pylcd, but it does so only with +# some western chars, like nordic or german umlauts. +# you will neen unidecode python package. Download it from: +# http://pypi.python.org/pypi/Unidecode/0.04.1 (get latest version) +# +# Another thing that this will do is to remap double quotes to single ones. +# These too seem to confuse iMON VFD. +# +LCD_REMAP_TO_ASCII = False + + +# ====================================================================== # Freevo OSD settings: # ====================================================================== @@ -2283,6 +2305,9 @@ LOGGING_ENCODINGSERVER = logging.INFO LOGGING_RSSSERVER = logging.INFO +# Used to specify the logging at a more granular level than the global logging level. +LOGGERS = {} + # When logging is DEBUG or NOTSET then DEBUG level logs messages DEBUG = 0 diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/share/html/ipc.js svn/share/html/ipc.js --- freevo-1.9.2b2~upstream/share/html/ipc.js 1970-01-01 01:00:00.000000000 +0100 +++ svn/share/html/ipc.js 2011-11-04 20:40:06.945956118 +0100 @@ -0,0 +1,57 @@ +/* +# ----------------------------------------------------------------------- +# Module for communication between web browser and freevo +# ----------------------------------------------------------------------- +# $Id: youtube.py 11862 2011-08-07 11:56:13Z adam $ +# ----------------------------------------------------------------------- +# +# +# Freevo - A Home Theater PC framework +# Copyright (C) 2002 Krister Lagerstrom, et al. +# Please see the file freevo/Docs/CREDITS for a complete list of authors. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MER- +# CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# ----------------------------------------------------------------------- +*/ + +function sendEvent(event, data){ + send('event', {'event':event, 'data':data}); +} + +function send(cmd, data){ + var args = { 'cmd': cmd, 'data': data}; + var xhr = new XMLHttpRequest(); + xhr.open('POST', '/freevo/ipc', true); + xhr.send(JSON.stringify(args)); +} + +function poll(){ + var xhr = new XMLHttpRequest(); + xhr.open('GET', '/freevo/ipc', true); + xhr.timeout = 50000; + xhr.onreadystatechange = function () { + if ((this.readyState == 3 || this.readyState == 4) && this.status == 200) { + var args = JSON.parse(this.responseText); + var r = eval(args['cmd']); + send('return', r); + poll(); + } + }; + xhr.ontimeout = poll; + xhr.send(); +} + +window.onload = poll; diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/share/html/wbinitial.html svn/share/html/wbinitial.html --- freevo-1.9.2b2~upstream/share/html/wbinitial.html 1970-01-01 01:00:00.000000000 +0100 +++ svn/share/html/wbinitial.html 2011-11-04 20:40:06.945956118 +0100 @@ -0,0 +1,16 @@ + + + +Freevo + + + + + \ No newline at end of file diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/share/html/ytflashplayer.html svn/share/html/ytflashplayer.html --- freevo-1.9.2b2~upstream/share/html/ytflashplayer.html 1970-01-01 01:00:00.000000000 +0100 +++ svn/share/html/ytflashplayer.html 2011-11-04 20:40:06.945956118 +0100 @@ -0,0 +1,55 @@ + + + + + $META$ + YouTube Flash Player + + + + + $EMBED$ + + diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/animation/base.py svn/src/animation/base.py --- freevo-1.9.2b2~upstream/src/animation/base.py 2008-05-11 12:50:48.000000000 +0200 +++ svn/src/animation/base.py 2011-11-19 18:31:26.881815513 +0100 @@ -3,7 +3,7 @@ # base.py - The basic animation class for freevo # Author: Viggo Fredriksen # ----------------------------------------------------------------------- -# $Id: base.py 10716 2008-05-11 10:50:48Z duncan $ +# $Id: base.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -28,6 +28,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.animation.base") from pygame import Rect, Surface, constants diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/animation/transition.py svn/src/animation/transition.py --- freevo-1.9.2b2~upstream/src/animation/transition.py 2011-03-04 23:53:28.000000000 +0100 +++ svn/src/animation/transition.py 2011-11-19 18:31:26.881815513 +0100 @@ -3,7 +3,7 @@ # transition.py - A transition animation, intended use: imageviewer # Author: Viggo Fredriksen # ----------------------------------------------------------------------- -# $Id: transition.py 11848 2011-03-04 22:53:28Z adam $ +# $Id: transition.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -28,6 +28,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.animation.transition") import config from base import BaseAnimation diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/__init__.py svn/src/audio/__init__.py --- freevo-1.9.2b2~upstream/src/audio/__init__.py 2008-05-31 18:14:43.000000000 +0200 +++ svn/src/audio/__init__.py 2011-11-19 18:31:27.549311696 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # interface between mediamenu and audio # ----------------------------------------------------------------------- -# $Id: __init__.py 10790 2008-05-31 16:14:43Z duncan $ +# $Id: __init__.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -31,6 +31,8 @@ """ Interface between mediamenu and audio """ +import logging +logger = logging.getLogger("freevo.audio") import os import re diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/audiodiskitem.py svn/src/audio/audiodiskitem.py --- freevo-1.9.2b2~upstream/src/audio/audiodiskitem.py 2007-12-10 20:10:52.000000000 +0100 +++ svn/src/audio/audiodiskitem.py 2011-11-19 18:31:27.549311696 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # audiodiskitem.py - Item for CD Audio Disks # ----------------------------------------------------------------------- -# $Id: audiodiskitem.py 10197 2007-12-10 19:10:52Z duncan $ +# $Id: audiodiskitem.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.audio.audiodiskitem") import config diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/audioitem.py svn/src/audio/audioitem.py --- freevo-1.9.2b2~upstream/src/audio/audioitem.py 2009-06-16 19:51:49.000000000 +0200 +++ svn/src/audio/audioitem.py 2011-11-19 18:31:27.549311696 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # audioitem - Item for mp3 and ogg files # ----------------------------------------------------------------------- -# $Id: audioitem.py 11594 2009-06-16 17:51:49Z duncan $ +# $Id: audioitem.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.audio.audioitem") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/player.py svn/src/audio/player.py --- freevo-1.9.2b2~upstream/src/audio/player.py 2011-01-20 23:21:00.000000000 +0100 +++ svn/src/audio/player.py 2011-11-19 18:31:27.549311696 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Freevo audio player GUI # ----------------------------------------------------------------------- -# $Id: player.py 11798 2011-01-20 22:21:00Z adam $ +# $Id: player.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -27,6 +27,8 @@ """ Freevo audio player GUI """ +import logging +logger = logging.getLogger("freevo.audio.player") from gui.GUIObject import GUIObject diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/album_tree.py svn/src/audio/plugins/album_tree.py --- freevo-1.9.2b2~upstream/src/audio/plugins/album_tree.py 2009-05-14 18:58:26.000000000 +0200 +++ svn/src/audio/plugins/album_tree.py 2011-11-19 18:31:27.501316576 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Represents audio items as different views # ----------------------------------------------------------------------- -# $Id: album_tree.py 11502 2009-05-14 16:58:26Z duncan $ +# $Id: album_tree.py 11905 2011-11-14 21:54:46Z adam $ # Author: Martijn Voncken(2005) # Todo: need more(all) tags in the database(mmpython->extendedmeta) # gui:the bar on the left is gone? @@ -31,6 +31,8 @@ """ Represents audio items as different views """ +import logging +logger = logging.getLogger("freevo.audio.plugins.album_tree") from pprint import pprint import config diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/apodcast.py svn/src/audio/plugins/apodcast.py --- freevo-1.9.2b2~upstream/src/audio/plugins/apodcast.py 2009-05-12 21:26:06.000000000 +0200 +++ svn/src/audio/plugins/apodcast.py 2011-11-19 18:31:27.493316667 +0100 @@ -5,6 +5,8 @@ # $id: apodcast.py 2007-10-04 $ # -Krasimir Atanasov- # +import logging +logger = logging.getLogger("freevo.audio.plugins.apodcast") import urllib2, os, threading import config, menu, rc, plugin, util, time, os.path, re @@ -189,7 +191,7 @@ popup.destroy() if (len(podcast_items) == 0): - podcast_items += [ menu.MenuItem(_('No Podcast locations found'), menwu.goto_prev_page, 0) ] + podcast_items += [ menu.MenuItem(_('No Podcast locations found'), menwu.back_one_menu, 0) ] podcast_sub_menu = menu.Menu(_('AUDIO PODCAST'), podcast_items) menuw.pushmenu(podcast_sub_menu) menuw.refresh() @@ -212,7 +214,7 @@ self.download(image_url, image_path) if (len(config.APODCAST_DIR) == 0): - podcast_items += [ menu.MenuItem(_('Set APODCAST_DIR in local_conf.py'), menwu.goto_prev_page, 0) ] + podcast_items += [ menu.MenuItem(_('Set APODCAST_DIR in local_conf.py'), menwu.back_one_menu, 0) ] podcast_menu_items += [ menu.MenuItem(_(location[0]), action=self.create_podcast_submenu, arg=location, image=image_path) ] diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/audioscrobbler.py svn/src/audio/plugins/audioscrobbler.py --- freevo-1.9.2b2~upstream/src/audio/plugins/audioscrobbler.py 2011-02-08 23:51:11.000000000 +0100 +++ svn/src/audio/plugins/audioscrobbler.py 2011-11-19 18:31:27.493316667 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Audio scrobbler plug-in # ----------------------------------------------------------------------- -# $Id: audioscrobbler.py 11821 2011-02-08 22:51:11Z adam $ +# $Id: audioscrobbler.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.audio.plugins.audioscrobbler") import string import copy diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/cdbackup.py svn/src/audio/plugins/cdbackup.py --- freevo-1.9.2b2~upstream/src/audio/plugins/cdbackup.py 2009-05-16 20:10:55.000000000 +0200 +++ svn/src/audio/plugins/cdbackup.py 2011-11-19 18:31:27.501316576 +0100 @@ -3,7 +3,7 @@ # cdbackup.py - CD Backup plugin for ripping/backing up CDs to # your hard drive # ----------------------------------------------------------------------- -# $Id: cdbackup.py 11523 2009-05-16 18:10:55Z duncan $ +# $Id: cdbackup.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: This is the cdbackup module which can be accessed from the audio menu # by hitting 'e' or enter (not return) whilst a CD is selected. @@ -46,6 +46,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.audio.plugins.cdbackup") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/coversearch.py svn/src/audio/plugins/coversearch.py --- freevo-1.9.2b2~upstream/src/audio/plugins/coversearch.py 2011-01-11 21:42:36.000000000 +0100 +++ svn/src/audio/plugins/coversearch.py 2011-11-19 18:31:27.497315748 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Plugin for album cover support # ----------------------------------------------------------------------- -# $Id: coversearch.py 11784 2011-01-11 20:42:36Z adam $ +# $Id: coversearch.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: This plugin will allow you to find album covers. At first, only # Amazon is supported. Someone could easily add allmusic.com support @@ -41,6 +41,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.audio.plugins.coversearch") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/detach.py svn/src/audio/plugins/detach.py --- freevo-1.9.2b2~upstream/src/audio/plugins/detach.py 2009-04-11 16:58:01.000000000 +0200 +++ svn/src/audio/plugins/detach.py 2011-11-19 18:31:27.489311579 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Detach plugin for the audio player # ----------------------------------------------------------------------- -# $Id: detach.py 11408 2009-04-11 14:58:01Z duncan $ +# $Id: detach.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.audio.plugins.detach") from kaa import Timer diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/detachbar.py svn/src/audio/plugins/detachbar.py --- freevo-1.9.2b2~upstream/src/audio/plugins/detachbar.py 2009-04-11 16:58:01.000000000 +0200 +++ svn/src/audio/plugins/detachbar.py 2011-11-19 18:31:27.501316576 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Audio DetachBar plug-in # ----------------------------------------------------------------------- -# $Id: detachbar.py 11408 2009-04-11 14:58:01Z duncan $ +# $Id: detachbar.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -30,6 +30,8 @@ Author: Viggo Fredriksen """ +import logging +logger = logging.getLogger("freevo.audio.plugins.detachbar") # python specific import time diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/freevo_scrobbler.py svn/src/audio/plugins/freevo_scrobbler.py --- freevo-1.9.2b2~upstream/src/audio/plugins/freevo_scrobbler.py 2008-05-25 19:08:13.000000000 +0200 +++ svn/src/audio/plugins/freevo_scrobbler.py 2011-11-19 18:31:27.505811386 +0100 @@ -26,6 +26,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.audio.plugins.freevo_scrobbler") import urllib2, urllib import md5 , time diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/fxmms.py svn/src/audio/plugins/fxmms.py --- freevo-1.9.2b2~upstream/src/audio/plugins/fxmms.py 2009-06-21 15:25:18.000000000 +0200 +++ svn/src/audio/plugins/fxmms.py 2011-11-19 18:31:27.489311579 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # fxmms.py - the Freevo XMMS plugin for audio # ----------------------------------------------------------------------- -# $Id: fxmms.py 11599 2009-06-21 13:25:18Z duncan $ +# $Id: fxmms.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: make audio cd's work @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.audio.plugins.fxmms") # regular python imports diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/lastfm.py svn/src/audio/plugins/lastfm.py --- freevo-1.9.2b2~upstream/src/audio/plugins/lastfm.py 2009-06-21 15:25:18.000000000 +0200 +++ svn/src/audio/plugins/lastfm.py 2011-11-19 18:31:27.505811386 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # LastFM radio player plug-in (http://www.last.fm/listen) # ----------------------------------------------------------------------- -# $Id: lastfm.py 11599 2009-06-21 13:25:18Z duncan $ +# $Id: lastfm.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: For the API 1.2 # http://code.google.com/p/thelastripper/wiki/LastFM12UnofficialDocumentation @@ -28,6 +28,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.audio.plugins.lastfm") import os import sys @@ -888,7 +890,7 @@ name, station = lfm_location lfm_stations += [ LastFMStation(self, name, station) ] if not lfm_stations: - lfm_stations += [MenuItem(_('No LastFM Stations'), menuw.goto_prev_page, 0)] + lfm_stations += [MenuItem(_('No LastFM Stations'), menuw.back_one_menu, 0)] lfm_menu = Menu(_('Last FM'), lfm_stations) menuw.pushmenu(lfm_menu) menuw.refresh() diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/lyrics.py svn/src/audio/plugins/lyrics.py --- freevo-1.9.2b2~upstream/src/audio/plugins/lyrics.py 2007-11-14 20:55:15.000000000 +0100 +++ svn/src/audio/plugins/lyrics.py 2011-11-19 18:31:27.497315748 +0100 @@ -26,6 +26,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.audio.plugins.lyrics") import time, os, re import plugin, menu, rc diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/mpdclient2.py svn/src/audio/plugins/mpdclient2.py --- freevo-1.9.2b2~upstream/src/audio/plugins/mpdclient2.py 2009-04-11 16:58:01.000000000 +0200 +++ svn/src/audio/plugins/mpdclient2.py 2011-11-19 18:31:27.493316667 +0100 @@ -1,8 +1,10 @@ #!/usr/bin/env python # -*- coding: iso-8859-1 -*- # ----------------------------------------------------------------------- -# $Id: mpdclient2.py 11408 2009-04-11 14:58:01Z duncan $ +# $Id: mpdclient2.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.audio.plugins.mpdclient2") # py-libmpdclient2 is written by Nick Welch , 2005. # diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/mplayer.py svn/src/audio/plugins/mplayer.py --- freevo-1.9.2b2~upstream/src/audio/plugins/mplayer.py 2011-02-15 22:03:55.000000000 +0100 +++ svn/src/audio/plugins/mplayer.py 2011-11-19 18:31:27.497315748 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # the Freevo MPlayer plug-in for audio # ----------------------------------------------------------------------- -# $Id: mplayer.py 11830 2011-02-15 21:03:55Z adam $ +# $Id: mplayer.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.audio.plugins.mplayer") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/mplayervis.py svn/src/audio/plugins/mplayervis.py --- freevo-1.9.2b2~upstream/src/audio/plugins/mplayervis.py 2009-06-21 15:25:18.000000000 +0200 +++ svn/src/audio/plugins/mplayervis.py 2011-11-19 18:31:27.489311579 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Native Freevo MPlayer Audio Visualization Plugin # ----------------------------------------------------------------------- -# $Id: mplayervis.py 11599 2009-06-21 13:25:18Z duncan $ +# $Id: mplayervis.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: - I'm no fan of all the skin.clear() being done :( # Todo: - Find a way to stop the skin when in full-screen mode @@ -31,6 +31,8 @@ """ Native Freevo MPlayer Audio Visualization Plugin """ +import logging +logger = logging.getLogger("freevo.audio.plugins.mplayervis") __author__ = 'Viggo Fredriksen ' diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/mplayervis2.py svn/src/audio/plugins/mplayervis2.py --- freevo-1.9.2b2~upstream/src/audio/plugins/mplayervis2.py 2011-02-10 23:28:26.000000000 +0100 +++ svn/src/audio/plugins/mplayervis2.py 2011-11-19 18:31:27.501316576 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Native Freevo MPlayer Audio Visualization Plugin # ----------------------------------------------------------------------- -# $Id: mplayervis2.py 11822 2011-02-10 22:28:26Z adam $ +# $Id: mplayervis2.py 11905 2011-11-14 21:54:46Z adam $ # # Todo: - # @@ -30,6 +30,8 @@ """ Native Freevo MPlayer Audio Visualization Plugin """ +import logging +logger = logging.getLogger("freevo.audio.plugins.mplayervis2") __author__ = 'Viggo Fredriksen' __author_email__ = 'viggo@katatonic.org' diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/radio.py svn/src/audio/plugins/radio.py --- freevo-1.9.2b2~upstream/src/audio/plugins/radio.py 2009-05-02 09:59:05.000000000 +0200 +++ svn/src/audio/plugins/radio.py 2011-11-19 18:31:27.493316667 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Simple plug-in to listen to radio # ----------------------------------------------------------------------- -# $Id: radio.py 11461 2009-05-02 07:59:05Z duncan $ +# $Id: radio.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2003 Krister Lagerstrom, et al. @@ -40,6 +40,8 @@ ('Magic 106', '106.7') ] """ +import logging +logger = logging.getLogger("freevo.audio.plugins.radio") #python modules import os, popen2, fcntl, select, time @@ -131,7 +133,7 @@ radio_item.info = {'album':'', 'artist':'', 'trackno': '', 'title':''} station_items += [ radio_item ] if (len(station_items) == 0): - station_items += [menu.MenuItem(_('No Radio Stations found'), menwu.goto_prev_page, 0)] + station_items += [menu.MenuItem(_('No Radio Stations found'), menwu.back_one_menu, 0)] station_menu = menu.Menu(_('Radio Stations'), station_items) menuw.pushmenu(station_menu) menuw.refresh() diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/radioplayer.py svn/src/audio/plugins/radioplayer.py --- freevo-1.9.2b2~upstream/src/audio/plugins/radioplayer.py 2009-06-21 15:25:18.000000000 +0200 +++ svn/src/audio/plugins/radioplayer.py 2011-11-19 18:31:27.497315748 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Radio player plugin for radio # ----------------------------------------------------------------------- -# $Id: radioplayer.py 11599 2009-06-21 13:25:18Z duncan $ +# $Id: radioplayer.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -27,6 +27,8 @@ """ Radio player plugin for radio """ +import logging +logger = logging.getLogger("freevo.audio.plugins.radioplayer") import time, os import string diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/shoutcast.py svn/src/audio/plugins/shoutcast.py --- freevo-1.9.2b2~upstream/src/audio/plugins/shoutcast.py 2011-01-12 22:48:39.000000000 +0100 +++ svn/src/audio/plugins/shoutcast.py 2011-11-04 20:40:05.129954838 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Browse and play shoutcast radio stations # ----------------------------------------------------------------------- -# $Id: shoutcast.py 11791 2011-01-12 21:48:39Z adam $ +# $Id: shoutcast.py 11873 2011-09-07 21:33:56Z adam $ # ----------------------------------------------------------------------- # # Description: @@ -165,7 +165,7 @@ xmlfile = self.retrievexml() pop.tick() if xmlfile == None: - genrelist = [ menu.MenuItem( _('Error retrieving genres'), action = menuw.goto_prev_page, arg = None) ] + genrelist = [ menu.MenuItem( _('Error retrieving genres'), action = menuw.back_one_menu, arg = None) ] else: parser = make_parser() parseGenreXML = GenreParser() @@ -175,7 +175,7 @@ for genre in parseGenreXML.genrelist: genrelist.append( menu.MenuItem(genre, action = self.generate_station_list, arg = genre ) ) except: - genrelist = [ menu.MenuItem( _('Error retrieving genres'), action = menuw.goto_prev_page, arg = None) ] + genrelist = [ menu.MenuItem( _('Error retrieving genres'), action = menuw.back_one_menu, arg = None) ] genremenu = menu.Menu( _("Genres"), genrelist, item_types = 'audio' ) menuw.pushmenu(genremenu) @@ -198,7 +198,7 @@ pop.tick() if xmlfile == None: - stationlist = [ menu.MenuItem( _('Error retrieving stations'), action = menuw.goto_prev_page, arg = None) ] + stationlist = [ menu.MenuItem( _('Error retrieving stations'), action = menuw.back_one_menu, arg = None) ] else: try: parser = make_parser() @@ -223,7 +223,7 @@ stationlist.append(stationitem) stationlist.sort(key = self.stationsortkey) except: - stationlist = [ menu.MenuItem( _('Error retrieving stationlist'), action = menuw.goto_prev_page, arg = None) ] + stationlist = [ menu.MenuItem( _('Error retrieving stationlist'), action = menuw.back_one_menu, arg = None) ] stationmenu = menu.Menu( arg, stationlist, item_types = 'audio' ) menuw.pushmenu(stationmenu) diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/xine.py svn/src/audio/plugins/xine.py --- freevo-1.9.2b2~upstream/src/audio/plugins/xine.py 2009-06-21 15:25:18.000000000 +0200 +++ svn/src/audio/plugins/xine.py 2011-11-19 18:31:27.497315748 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # xine.py - the Freevo XINE module for audio # ----------------------------------------------------------------------- -# $Id: xine.py 11599 2009-06-21 13:25:18Z duncan $ +# $Id: xine.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: Use xine (or better fbxine) to play audio files. This requires # xine-ui > 0.9.22 (when writing this plugin this means cvs) @@ -29,6 +29,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.audio.plugins.xine") import re diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/audio/plugins/xmradio.py svn/src/audio/plugins/xmradio.py --- freevo-1.9.2b2~upstream/src/audio/plugins/xmradio.py 2009-05-23 14:48:47.000000000 +0200 +++ svn/src/audio/plugins/xmradio.py 2011-11-19 18:31:27.493316667 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # xmradio.py - a simple plugin to listen to xmradio online # ----------------------------------------------------------------------- -# $Id: xmradio.py 11541 2009-05-23 12:48:47Z duncan $ +# $Id: xmradio.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # need to have an XM Radio account with a username and password @@ -37,6 +37,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.audio.plugins.xmradio") #python modules @@ -135,7 +137,7 @@ radio_item = XmRadioItem(url,self,str(rchannel[0])) channel_items += [ radio_item ] if (len(channel_items) == 0): - channel_items += [menu.MenuItem( _( 'No XM channels found' ), menwu.goto_prev_page, 0)] + channel_items += [menu.MenuItem( _( 'No XM channels found' ), menwu.back_one_menu, 0)] channel_menu = menu.Menu( _( 'XM channels' ), channel_items) menuw.pushmenu(channel_menu) menuw.refresh() diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/childapp.py svn/src/childapp.py --- freevo-1.9.2b2~upstream/src/childapp.py 2011-02-10 23:28:26.000000000 +0100 +++ svn/src/childapp.py 2011-11-19 18:31:29.157811150 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Runs an application in a child process # ----------------------------------------------------------------------- -# $Id: childapp.py 11822 2011-02-10 22:28:26Z adam $ +# $Id: childapp.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -31,6 +31,8 @@ """ Runs an application in a child process """ +import logging +logger = logging.getLogger("freevo.childapp") import sys import time diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/commdetectcore.py svn/src/commdetectcore.py --- freevo-1.9.2b2~upstream/src/commdetectcore.py 2009-04-11 16:58:01.000000000 +0200 +++ svn/src/commdetectcore.py 2011-11-19 18:31:29.153811371 +0100 @@ -26,6 +26,8 @@ """ Interface to Commercial Detection Server """ +import logging +logger = logging.getLogger("freevo.commdetectcore") #Import statements import threading diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/config.py svn/src/config.py --- freevo-1.9.2b2~upstream/src/config.py 2010-11-11 11:30:23.000000000 +0100 +++ svn/src/config.py 2011-11-19 18:31:29.149811242 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Handle the configuration file init. Also start logging. # ----------------------------------------------------------------------- -# $Id: config.py 11720 2010-11-11 10:30:23Z adam $ +# $Id: config.py 11904 2011-11-12 22:26:54Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -33,6 +33,8 @@ 2. /etc/freevo/freevo_config.py Systemwide config 3. ./freevo_config.py Defaults from the freevo dist """ +import logging +logger = logging.getLogger("freevo.config") import sys, os, time, re, string, pwd from threading import RLock @@ -90,26 +92,11 @@ Class to create a logger object which will send messages to stdout and log them into a logfile """ - def __init__(self, logtype='(unknown)'): + def __init__(self, logger, logtype='(unknown)'): self.lineno = 1 self.logtype = logtype - appname = os.path.splitext(os.path.basename(sys.argv[0]))[0] - if not appname: - appname = 'prompt' - try: - self.logfile = os.path.join(FREEVO_LOGDIR, '%s-%s.log' % (appname, os.getuid())) - self.fp = open(self.logfile, 'a') - logging.basicConfig(level=LOGGING, \ - #datefmt='%a, %H:%M:%S', - format='%(asctime)s %(levelname)-8s %(message)s', \ - filename=self.logfile, filemode='a') - except IOError, e: - print '%s' % e - self.logfile = '/dev/null' - self.fp = open(self.logfile, 'a') - logging.basicConfig(level=LOGGING, \ - format='%(asctime)s %(levelname)-8s %(message)s', \ - filename=self.logfile, filemode='a') + self.logger = logger + self.buffer = '' def write(self, msg): @@ -121,17 +108,25 @@ msg = msg.encode(LOCALE, 'replace') sys.__stdout__.write(msg) sys.__stdout__.flush() - self.fp.write(msg) - self.fp.flush() + self.buffer += msg + pos = self.buffer.find('\n') + start_pos = 0 + while pos != -1: + self.logger.info('%s', self.buffer[start_pos:pos]) + sys.__stdout__.flush() + + start_pos = pos + 1 + pos = self.buffer.find('\n', start_pos) + if start_pos: + self.buffer = self.buffer[start_pos:] finally: if lock: lock.release() return def log(self, msg): - self.fp.write('%s\n' % msg) - self.fp.flush() - return + self.write(msg + '\n') + def flush(self): pass @@ -410,15 +405,30 @@ lock = RLock() #if not HELPER: if not IS_PROMPT: + try: + appname = os.path.splitext(os.path.basename(sys.argv[0]))[0] + if not appname: + appname = 'prompt' + logfile = os.path.join(FREEVO_LOGDIR, '%s-%s.log' % (appname, os.getuid())) + fp = open(logfile, 'a') + fp.close() + except IOError, e: + print '%s' % e + logfile = '/dev/null' + + logging.basicConfig(level=LOGGING, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', + filename=logfile, filemode='a') + old_stdout = sys.stdout old_stderr = sys.stderr - sys.stdout = Logger(sys.argv[0] + ':stdout') - sys.stderr = Logger(sys.argv[0] + ':stderr') + sys.stdout = Logger(logging.getLogger('stdout'), sys.argv[0] + ':stdout') + sys.stderr = Logger(logging.getLogger('stderr'), sys.argv[0] + ':stderr') ts = time.asctime(time.localtime(time.time())) sys.stdout.log('=' * 80) sys.stdout.log('Freevo %s r%s started at %s' % (version.__version__, revision.__revision__, ts)) sys.stdout.log('-' * 80) + def shutdown(): sys.stdout.log('-' * 80) sys.stdout.log('Freevo %s r%s finished at %s' % (version.__version__, revision.__revision__, ts)) @@ -427,7 +437,7 @@ sys.stderr.close() sys.stdout = old_stdout sys.stderr = old_stderr - return + def _stack_function_(message='', limit=None): import traceback @@ -522,11 +532,11 @@ FONT_DIR = os.path.join(SHARE_DIR, 'fonts') RUNAPP = os.environ['RUNAPP'] -_debug_('RUNAPP: %s' % (RUNAPP)) +logger.debug('RUNAPP: %s', RUNAPP) -_debug_('LOGDIR: %s %s' % (OS_LOGDIR, FREEVO_LOGDIR), DINFO) -_debug_('STATICDIR: %s %s' % (OS_STATICDIR, FREEVO_STATICDIR), DINFO) -_debug_('CACHEDIR: %s %s' % (OS_CACHEDIR, FREEVO_CACHEDIR), DINFO) +logger.info('LOGDIR: %s %s', OS_LOGDIR, FREEVO_LOGDIR) +logger.info('STATICDIR: %s %s', OS_STATICDIR, FREEVO_STATICDIR) +logger.info('CACHEDIR: %s %s', OS_CACHEDIR, FREEVO_CACHEDIR) # # Check that freevo_config.py is not found in the config file dirs @@ -542,9 +552,9 @@ # for dirname in cfgfilepath: freevoconf = os.path.join(dirname, 'freevo.conf') - _debug_('Trying freevo configuration file "%s"...' % freevoconf) + logger.debug('Trying freevo configuration file "%s"...', freevoconf) if os.path.isfile(freevoconf): - _debug_('Loading freevo configuration file "%s"' % freevoconf, DINFO) + logger.info('Loading freevo configuration file "%s"', freevoconf) commentpat = re.compile('([^#]*)( *#.*)') c = open(freevoconf) @@ -555,7 +565,7 @@ if len(line) == 0: continue vals = line.split() - _debug_('Cfg file data: "%s"' % line) + logger.debug('Cfg file data: "%s"', line) try: name, val = vals[0].strip(), vals[2].strip() except: @@ -617,14 +627,14 @@ # Load freevo_config.py: # if os.path.isfile(os.environ['FREEVO_CONFIG']): - _debug_('Loading cfg: %s' % os.environ['FREEVO_CONFIG']) - _debug_('Loading freevo configuration file: "%s"' % os.environ['FREEVO_CONFIG'], DINFO) + logger.debug('Loading cfg: %s', os.environ['FREEVO_CONFIG']) + logger.info('Loading freevo configuration file: "%s"', os.environ['FREEVO_CONFIG']) try: execfile(os.environ['FREEVO_CONFIG'], globals(), locals()) except Exception, why: traceback.print_exc() raise SystemExit - _debug_('Loaded freevo configuration file: "%s"' % os.environ['FREEVO_CONFIG'], DINFO) + logger.info('Loaded freevo configuration file: "%s"', os.environ['FREEVO_CONFIG']) else: print print "Error: %s: no such file" % os.environ['FREEVO_CONFIG'] @@ -637,9 +647,9 @@ # for dirname in cfgfilepath: overridefile = os.path.join(dirname, 'local_conf.py') - _debug_('Trying local configuration file "%s"...' % overridefile) + logger.debug('Trying local configuration file "%s"...', overridefile) if os.path.isfile(overridefile): - _debug_('Loading local configuration file: "%s"' % overridefile, DINFO) + logger.info('Loading local configuration file: "%s"', overridefile) our_locals = {} try: execfile(overridefile, globals(), our_locals) @@ -647,7 +657,7 @@ traceback.print_exc() raise SystemExit locals().update(our_locals) - _debug_('Loaded local configuration file: "%s"' % overridefile, DINFO) + logger.info('Loaded local configuration file: "%s"', overridefile) try: CONFIG_VERSION @@ -691,6 +701,8 @@ #if not HELPER: logging.getLogger('').setLevel(LOGGING) +for module, level in LOGGERS.items(): + logging.getLogger(module).setLevel(level) # # force fullscreen when freevo is it's own windowmanager @@ -822,28 +834,28 @@ mntdir = devname = dispname = '' if match_cd or match_bymountcd: m = match_cd or match_bymountcd - _debug_('match_cd or match_bymountcd=%r' % (m.groups(),)) + logger.debug('match_cd or match_bymountcd=%r', m.groups()) mntdir = m.group(2) devname = m.group(1) dispname = 'CD-%s' % (len(ROM_DRIVES)+1) elif match_cdrec: - _debug_('match_cdrec=%r' % (match_cdrec.groups(),)) + logger.debug('match_cdrec=%r', match_cdrec.groups()) mntdir = match_cdrec.group(2) devname = match_cdrec.group(1) dispname = 'CDREC-%s' % (len(ROM_DRIVES)+1) elif match_dvd or match_bymountdvd: m = match_dvd or match_bymountdvd - _debug_('match_dvd or match_bymountdvd=%r' % (m.groups(),)) + logger.debug('match_dvd or match_bymountdvd=%r', m.groups()) mntdir = m.group(2) devname = m.group(1) dispname = 'DVD-%s' % (len(ROM_DRIVES)+1) elif match_iso: - _debug_('match_iso=%r' % (match_iso.groups(),)) + logger.debug('match_iso=%r', match_iso.groups()) mntdir = match_iso.group(2) devname = match_iso.group(1) dispname = 'CD-%s' % (len(ROM_DRIVES)+1) elif match_automount: - _debug_('match_automount=%r' % (match_automount.groups(),)) + logger.debug('match_automount=%r', match_automount.groups()) mntdir = match_automount.group(1) devname = match_automount.group(2) # Must check that the supermount device is cd or dvd @@ -852,19 +864,19 @@ elif devname.lower().find('dvd') != -1: dispname = 'DVD-%s' % (len(ROM_DRIVES)+1) elif devname.lower().find('hd') != -1: - _debug_('Trying to autodetect type of %r' % (devname,), DINFO) + logger.info('Trying to autodetect type of %r', devname) if os.path.exists('/proc/ide/' + re.sub(r'^(/dev/)', '', devname) + '/media'): if open('/proc/ide/' + re.sub(r'^(/dev/)', '', devname) + \ '/media', 'r').read().lower().find('cdrom') != 1: dispname = 'CD-%s' % (len(ROM_DRIVES)+1) - _debug_('%r is a cdrom drive' % (devname,), DINFO) + logger.info('%r is a cdrom drive', devname) else: - _debug_("%r doesn't seems to be a cdrom drive" % (devname,), DINFO) + logger.info("%r doesn't seems to be a cdrom drive", devname) mntdir = devname = dispname = '' else: mntdir = devname = dispname = '' if mntdir: - _debug_('line=%r, mntdir=%r, devname=%r, dispname=%r' % (line, mntdir, devname, dispname), DINFO) + logger.info('line=%r, mntdir=%r, devname=%r, dispname=%r', line, mntdir, devname, dispname) if os.uname()[0] == 'FreeBSD': # FreeBSD-STABLE mount point is often device name + "c", @@ -1049,7 +1061,7 @@ # concat is much faster if OVERLAY_DIR and OVERLAY_DIR.endswith('/'): OVERLAY_DIR = OVERLAY_DIR[:-1] -_debug_('overlaydir: %s' % (OVERLAY_DIR), DINFO) +logger.info('overlaydir: %s', OVERLAY_DIR) if not os.path.isdir(OVERLAY_DIR + '/disc'): os.makedirs(OVERLAY_DIR + '/disc') @@ -1083,10 +1095,10 @@ encoding = LOCALE if not HELPER: - _debug_("Using '%s' encoding" % encoding) + logger.debug("Using '%s' encoding", encoding) for k, v in CONF.__dict__.items(): - _debug_('%r: %r' % (k, v)) + logger.debug('%r: %r', k, v) # make sure USER and HOME are set os.environ['USER'] = pwd.getpwuid(os.getuid())[0] diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/dialog/__init__.py svn/src/dialog/__init__.py --- freevo-1.9.2b2~upstream/src/dialog/__init__.py 2011-02-18 22:58:19.000000000 +0100 +++ svn/src/dialog/__init__.py 2011-11-09 09:03:15.792291735 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Module used to display information on top of the menu or video. # ----------------------------------------------------------------------- -# $Id: __init__.py 11836 2011-02-18 21:58:19Z adam $ +# $Id: __init__.py 11900 2011-11-07 22:12:01Z adam $ # # Notes: # Todo: @@ -268,7 +268,7 @@ Both total time and percent position are optional. """ if _display: - _display.show_play_state(state, item, get_time_info) + return _display.show_play_state(state, item, get_time_info) def show_busy_indicator(delay=0.0): diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/dialog/dialogs.py svn/src/dialog/dialogs.py --- freevo-1.9.2b2~upstream/src/dialog/dialogs.py 2011-02-20 09:23:30.000000000 +0100 +++ svn/src/dialog/dialogs.py 2011-11-19 18:31:28.901815352 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # dialogs module for livepause osd # ----------------------------------------------------------------------- -# $Id: dialogs.py 11838 2011-02-20 08:23:30Z adam $ +# $Id: dialogs.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -38,6 +38,8 @@ - normal - high """ +import logging +logger = logging.getLogger("freevo.dialog.dialogs") import time from event import * import rc @@ -328,7 +330,7 @@ will return a tuple of elapsed time, total time and percent through the file. Both total time and percent position are optional. """ - super(PlayStateDialog, self).__init__('play_state', 3.0) + super(PlayStateDialog, self).__init__('play_state', 10.0) self.priority = Dialog.LOW_PRIORITY self.state = state self.item = item @@ -356,14 +358,14 @@ time_info = self.get_time_info() if time_info: - current_time = time_info[0] + current_time = int(time_info[0]) current_time_hours = current_time / (60 * 60) current_time_minutes = (current_time / 60) - (current_time_hours * 60) current_time_seconds = current_time - (((current_time_hours * 60) + current_time_minutes) * 60) current_time_str = '%02d:%02d:%02d' % (current_time_hours, current_time_minutes, current_time_seconds) if len(time_info) > 1: - total_time = time_info[1] + total_time = int(time_info[1]) total_time_hours = total_time / (60 * 60) total_time_minutes = (total_time / 60) - (total_time_hours * 60) total_time_seconds = total_time - (((total_time_hours * 60) + total_time_minutes) * 60) @@ -395,12 +397,12 @@ attr['tagline'] = None attr['image'] = self.item.image - # Skip thumbnails - if attr['image'] and attr['image'].endswith('.raw'): - attr['image'] = None + # Skip thumbnails + if attr['image'] and attr['image'].endswith('.raw'): + attr['image'] = None + if not attr['image']: + attr['image'] = self.item.parent.image if not attr['image']: - attr['image'] = self.item.parent.image - if not attr['image']: attr['image'] = "nocover.png" _debug_('Cover image for %s is %s' % (self.item.filename, attr['image'])) diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/dialog/display.py svn/src/dialog/display.py --- freevo-1.9.2b2~upstream/src/dialog/display.py 2011-02-18 22:58:19.000000000 +0100 +++ svn/src/dialog/display.py 2011-11-19 18:31:28.905811360 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # # ----------------------------------------------------------------------- -# $Id: display.py 11836 2011-02-18 21:58:19Z adam $ +# $Id: display.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -41,6 +41,8 @@ the higher priority dialog closes. """ +import logging +logger = logging.getLogger("freevo.dialog.display") import time import traceback @@ -242,22 +244,20 @@ return True return False - @kaa.threaded(kaa.MAINTHREAD) def show_volume(self, level, muted, channel=None): if self.volume_dialog is None: self.volume_dialog = dialogs.VolumeDialog() self.volume_dialog.set_details(level, muted, channel) self.volume_dialog.show() - @kaa.threaded(kaa.MAINTHREAD) def show_message(self, message): dialog = dialogs.MessageDialog(message) dialog.show() - @kaa.threaded(kaa.MAINTHREAD) def show_play_state(self, state, item, get_time_info=None): dialog = dialogs.PlayStateDialog(state, item, get_time_info) dialog.show() + return dialog @kaa.threaded(kaa.MAINTHREAD) def show_dialog(self, dialog, duration): diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/dialog/plugins/x11_overlay_display.py svn/src/dialog/plugins/x11_overlay_display.py --- freevo-1.9.2b2~upstream/src/dialog/plugins/x11_overlay_display.py 2011-01-16 23:39:16.000000000 +0100 +++ svn/src/dialog/plugins/x11_overlay_display.py 2011-11-19 18:31:28.865818315 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # # ----------------------------------------------------------------------- -# $Id: x11_overlay_display.py 11794 2011-01-16 22:39:16Z adam $ +# $Id: x11_overlay_display.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.dialog.plugins.x11_overlay_display") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/directory.py svn/src/directory.py --- freevo-1.9.2b2~upstream/src/directory.py 2011-03-05 22:41:24.000000000 +0100 +++ svn/src/directory.py 2011-11-19 18:31:29.149811242 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Directory handling # ----------------------------------------------------------------------- -# $Id: directory.py 11849 2011-03-05 21:41:24Z adam $ +# $Id: directory.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -31,6 +31,8 @@ """ Directory handling """ +import logging +logger = logging.getLogger("freevo.directory") import os import traceback @@ -495,7 +497,6 @@ browse directory """ _debug_('cwd(arg=%r, menuw=%r)' % (arg, menuw), 2) - print('cwd(arg=%r, menuw=%r)' % (arg, menuw)) self.check_password_and_build(arg=None, menuw=menuw) diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/encodingcore.py svn/src/encodingcore.py --- freevo-1.9.2b2~upstream/src/encodingcore.py 2010-11-23 23:32:10.000000000 +0100 +++ svn/src/encodingcore.py 2011-11-19 18:31:29.153811371 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Interface to the encoding server # ----------------------------------------------------------------------- -# $Id: encodingcore.py 11744 2010-11-23 22:32:10Z adam $ +# $Id: encodingcore.py 11905 2011-11-14 21:54:46Z adam $ # # Author: den_RDC # some parts taken or inspired by Quickrip (by T. Chance, GPL, @@ -31,6 +31,8 @@ """ Interface to the encoding server, to re-encode video to a different format. """ +import logging +logger = logging.getLogger("freevo.encodingcore") #Import statements from threading import Thread, Lock @@ -58,7 +60,7 @@ #some data __author__ = 'den_RDC (rdc@kokosnoot.com)' -__revision__ = '$Rev: 11744 $' +__revision__ = '$Rev: 11905 $' __copyright__ = 'Copyright (C) 2004 den_RDC' __license__ = 'GPL' diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/fxditem.py svn/src/fxditem.py --- freevo-1.9.2b2~upstream/src/fxditem.py 2009-04-02 18:16:35.000000000 +0200 +++ svn/src/fxditem.py 2011-11-19 18:31:29.157811150 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Create items out of fxd files # ----------------------------------------------------------------------- -# $Id: fxditem.py 11379 2009-04-02 16:16:35Z duncan $ +# $Id: fxditem.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -42,6 +42,8 @@ 1. add the fxd file as 'fxd_file' member variable to the new item 2. add the files as list _fxd_covered_ to the item """ +import logging +logger = logging.getLogger("freevo.fxditem") import copy import traceback diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/games/__init__.py svn/src/games/__init__.py --- freevo-1.9.2b2~upstream/src/games/__init__.py 2008-05-31 18:14:43.000000000 +0200 +++ svn/src/games/__init__.py 2011-11-19 18:31:27.329322082 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Interface between mediamenu and games # ----------------------------------------------------------------------- -# $Id: __init__.py 10790 2008-05-31 16:14:43Z duncan $ +# $Id: __init__.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -27,6 +27,8 @@ """ Interface between media menu and games """ +import logging +logger = logging.getLogger("freevo.games") import config import util diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/games/game.py svn/src/games/game.py --- freevo-1.9.2b2~upstream/src/games/game.py 2011-03-06 10:43:19.000000000 +0100 +++ svn/src/games/game.py 2011-11-19 18:31:27.329322082 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Freevo module to run games. # ----------------------------------------------------------------------- -# $Id: game.py 11850 2011-03-06 09:43:19Z adam $ +# $Id: game.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.games.game") import sys diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/games/genericitem.py svn/src/games/genericitem.py --- freevo-1.9.2b2~upstream/src/games/genericitem.py 2009-05-02 09:59:05.000000000 +0200 +++ svn/src/games/genericitem.py 2011-11-19 18:31:27.329322082 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # genericitem.py - Item for generic objects # ----------------------------------------------------------------------- -# $Id: genericitem.py 11461 2009-05-02 07:59:05Z duncan $ +# $Id: genericitem.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.games.genericitem") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/games/mame_cache.py svn/src/games/mame_cache.py --- freevo-1.9.2b2~upstream/src/games/mame_cache.py 2007-10-13 18:02:19.000000000 +0200 +++ svn/src/games/mame_cache.py 2011-11-19 18:31:27.329322082 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # mame_cache.py - Module for caching MAME rom information for Freevo. # ----------------------------------------------------------------------- -# $Id: mame_cache.py 9961 2007-10-13 16:02:19Z duncan $ +# $Id: mame_cache.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: This contains some rominfo code from videogame.py. # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.games.mame_cache") import sys diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/games/mameitem.py svn/src/games/mameitem.py --- freevo-1.9.2b2~upstream/src/games/mameitem.py 2009-05-09 17:03:04.000000000 +0200 +++ svn/src/games/mameitem.py 2011-11-19 18:31:27.329322082 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # mameitem.py - Item for mame objects # ----------------------------------------------------------------------- -# $Id: mameitem.py 11484 2009-05-09 15:03:04Z duncan $ +# $Id: mameitem.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.games.mameitem") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/games/snesitem.py svn/src/games/snesitem.py --- freevo-1.9.2b2~upstream/src/games/snesitem.py 2009-05-02 09:59:05.000000000 +0200 +++ svn/src/games/snesitem.py 2011-11-19 18:31:27.333311594 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # snesitem.py - Item for snes objects # ----------------------------------------------------------------------- -# $Id: snesitem.py 11461 2009-05-02 07:59:05Z duncan $ +# $Id: snesitem.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.games.snesitem") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/gui/Border.py svn/src/gui/Border.py --- freevo-1.9.2b2~upstream/src/gui/Border.py 2008-05-11 12:50:48.000000000 +0200 +++ svn/src/gui/Border.py 2011-11-19 18:31:28.541315333 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # For drawing borders around rectangular objects. # ----------------------------------------------------------------------- -# $Id: Border.py 10716 2008-05-11 10:50:48Z duncan $ +# $Id: Border.py 11905 2011-11-14 21:54:46Z adam $ # # Todo: o Make a get_thickness set_thickness function pair. # ----------------------------------------------------------------------- @@ -36,9 +36,11 @@ All suggestions on improvement are welcome """ +import logging +logger = logging.getLogger("freevo.gui.Border") -__date__ = "$Date: 2008-05-11 11:50:48 +0100 (Sun, 11 May 2008) $" -__version__ = "$Revision: 10716 $" +__date__ = "$Date: 2011-11-14 22:54:46 +0100(lun, 14 nov 2011) $" +__version__ = "$Revision: 11905 $" __author__ = """Thomas Malt """ diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/gui/Color.py svn/src/gui/Color.py --- freevo-1.9.2b2~upstream/src/gui/Color.py 2007-05-11 20:22:36.000000000 +0200 +++ svn/src/gui/Color.py 2010-01-23 20:06:11.769759620 +0100 @@ -29,7 +29,7 @@ """ A color handling object. """ -__date__ = "$Date: 2007-05-11 19:22:36 +0100 (Fri, 11 May 2007) $" +__date__ = "$Date: 2007-05-11 20:22:36 +0200(ven, 11 mag 2007) $" __version__ = "$Revision: 9561 $" __author__ = """Thomas Malt """ diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/gui/Container.py svn/src/gui/Container.py --- freevo-1.9.2b2~upstream/src/gui/Container.py 2007-05-11 20:22:36.000000000 +0200 +++ svn/src/gui/Container.py 2011-11-19 18:31:28.541315333 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Container.py - Container class for the GUI. # ----------------------------------------------------------------------- -# $Id: Container.py 9561 2007-05-11 18:22:36Z duncan $ +# $Id: Container.py 11905 2011-11-14 21:54:46Z adam $ # # ----------------------------------------------------------------------- # @@ -25,6 +25,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ---------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.gui.Container") import config diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/gui/GUIObject.py svn/src/gui/GUIObject.py --- freevo-1.9.2b2~upstream/src/gui/GUIObject.py 2009-05-02 09:59:05.000000000 +0200 +++ svn/src/gui/GUIObject.py 2011-11-19 18:31:28.541315333 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # GUIObject - Common object for all GUI Classes # ----------------------------------------------------------------------- -# $Id: GUIObject.py 11461 2009-05-02 07:59:05Z duncan $ +# $Id: GUIObject.py 11905 2011-11-14 21:54:46Z adam $ # # Todo: o Add move function # ----------------------------------------------------------------------- @@ -41,8 +41,10 @@ Currently not many classes are in place, but hopefully we will add more in time. """ -__date__ = "$Date: 2009-05-02 08:59:05 +0100 (Sat, 02 May 2009) $" -__version__ = "$Revision: 11461 $".split()[1] +import logging +logger = logging.getLogger("freevo.gui.GUIObject") +__date__ = "$Date: 2011-11-14 22:54:46 +0100(lun, 14 nov 2011) $" +__version__ = "$Revision: 11905 $".split()[1] __author__ = "Thomas Malt " diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/gui/LayoutManagers.py svn/src/gui/LayoutManagers.py --- freevo-1.9.2b2~upstream/src/gui/LayoutManagers.py 2008-07-09 22:09:41.000000000 +0200 +++ svn/src/gui/LayoutManagers.py 2011-11-19 18:31:28.537311782 +0100 @@ -3,7 +3,7 @@ # LayoutManagers.py - Different layout managers to manage the contents # of a Container. # ----------------------------------------------------------------------- -# $Id: LayoutManagers.py 10845 2008-07-09 20:09:41Z duncan $ +# $Id: LayoutManagers.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -28,6 +28,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.gui.LayoutManagers") import config diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/gui/ListBox.py svn/src/gui/ListBox.py --- freevo-1.9.2b2~upstream/src/gui/ListBox.py 2007-05-11 20:22:36.000000000 +0200 +++ svn/src/gui/ListBox.py 2011-11-19 18:31:28.545315672 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # ListBox.py - scrollable box containing ListItems. # ----------------------------------------------------------------------- -# $Id: ListBox.py 9561 2007-05-11 18:22:36Z duncan $ +# $Id: ListBox.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.gui.ListBox") import config diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/gui/PopupBox.py svn/src/gui/PopupBox.py --- freevo-1.9.2b2~upstream/src/gui/PopupBox.py 2011-02-18 22:58:19.000000000 +0100 +++ svn/src/gui/PopupBox.py 2011-11-19 18:31:28.541315333 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # PopupBox - A dialog box for freevo. # ----------------------------------------------------------------------- -# $Id: PopupBox.py 11836 2011-02-18 21:58:19Z adam $ +# $Id: PopupBox.py 11905 2011-11-14 21:54:46Z adam $ # # Todo: o Add sanitychecking on all arguments. # o Add actual support for icons, not just brag about it. @@ -29,6 +29,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ---------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.gui.PopupBox") import config diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/gui/RegionScroller.py svn/src/gui/RegionScroller.py --- freevo-1.9.2b2~upstream/src/gui/RegionScroller.py 2007-05-11 20:22:36.000000000 +0200 +++ svn/src/gui/RegionScroller.py 2011-11-19 18:31:28.537311782 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # RegionScroller.py - A class that will scroll another surface. # ----------------------------------------------------------------------- -# $Id: RegionScroller.py 9561 2007-05-11 18:22:36Z duncan $ +# $Id: RegionScroller.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.gui.RegionScroller") import config diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/gui/Scrollbar.py svn/src/gui/Scrollbar.py --- freevo-1.9.2b2~upstream/src/gui/Scrollbar.py 2007-05-11 20:22:36.000000000 +0200 +++ svn/src/gui/Scrollbar.py 2011-11-19 18:31:28.545315672 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Scrollbar.py - A scrollbar to use with any RegionScroller. # ----------------------------------------------------------------------- -# $Id: Scrollbar.py 9561 2007-05-11 18:22:36Z duncan $ +# $Id: Scrollbar.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.gui.Scrollbar") import config diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/gui/Window.py svn/src/gui/Window.py --- freevo-1.9.2b2~upstream/src/gui/Window.py 2009-05-02 09:59:05.000000000 +0200 +++ svn/src/gui/Window.py 2011-11-19 18:31:28.541315333 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Window - A window for freevo. # ----------------------------------------------------------------------- -# $Id: Window.py 11461 2009-05-02 07:59:05Z duncan $ +# $Id: Window.py 11905 2011-11-14 21:54:46Z adam $ # # # ----------------------------------------------------------------------- @@ -26,6 +26,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ---------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.gui.Window") import copy diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/helpers/cache.py svn/src/helpers/cache.py --- freevo-1.9.2b2~upstream/src/helpers/cache.py 2010-02-11 17:15:04.000000000 +0100 +++ svn/src/helpers/cache.py 2011-11-19 18:31:27.621316595 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Delete old cache files and update the cache # ----------------------------------------------------------------------- -# $Id: cache.py 11656 2010-02-11 16:15:04Z duncan $ +# $Id: cache.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -27,6 +27,8 @@ """ Delete old cache files and update the cache """ +import logging +logger = logging.getLogger("freevo.helpers.cache") import sys import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/helpers/commdetectserver.py svn/src/helpers/commdetectserver.py --- freevo-1.9.2b2~upstream/src/helpers/commdetectserver.py 2009-04-28 17:01:44.000000000 +0200 +++ svn/src/helpers/commdetectserver.py 2011-11-19 18:31:27.625315536 +0100 @@ -22,6 +22,8 @@ # with this program; if not, write to the Free Software Foundation # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.helpers.commdetectserver") import sys, string, random, time, os, re, pwd, stat import config diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/helpers/encodingserver.py svn/src/helpers/encodingserver.py --- freevo-1.9.2b2~upstream/src/helpers/encodingserver.py 2009-04-28 17:01:44.000000000 +0200 +++ svn/src/helpers/encodingserver.py 2011-11-19 18:31:27.629350166 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # EncodingServer daemon, manages the encoding queue # ----------------------------------------------------------------------- -# $Id: encodingserver.py 11445 2009-04-28 15:01:44Z duncan $ +# $Id: encodingserver.py 11905 2011-11-14 21:54:46Z adam $ # # Author: den_RDC # some parts taken or inspired by Freevo's recordserver (by rshortt) @@ -25,6 +25,8 @@ # with this program; if not, write to the Free Software Foundation # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.helpers.encodingserver") import sys, string, random, time, os, re, pwd, stat, tempfile @@ -79,7 +81,7 @@ from encodingcore import EncodingJob, EncodingQueue, EncodingOptions __author__ = 'den_RDC (rdc@kokosnoot.com)' -__revision__ = '$Rev: 11445 $' +__revision__ = '$Rev: 11905 $' __copyright__ = 'Copyright (C) 2004 den_RDC' __license__ = 'GPL' diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/helpers/imdbpy.py svn/src/helpers/imdbpy.py --- freevo-1.9.2b2~upstream/src/helpers/imdbpy.py 2010-12-05 21:41:53.000000000 +0100 +++ svn/src/helpers/imdbpy.py 2011-11-19 18:31:27.629350166 +0100 @@ -29,6 +29,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.helpers.imdbpy") __maintainer__ = 'Maciej Mike Urbaniak' __maintainer_email__ = 'maciej@urbaniak.org' @@ -39,9 +41,10 @@ import os from optparse import OptionParser import util +import logging try: - import imdbpy + import imdb except ImportError: print 'It seems that you do not have imdbpy installed!' print 'Check out http://imdbpy.sourceforge.net/?page=download for imdbpy package for your distribution' diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/helpers/inputhelper.py svn/src/helpers/inputhelper.py --- freevo-1.9.2b2~upstream/src/helpers/inputhelper.py 2011-03-04 10:51:55.000000000 +0100 +++ svn/src/helpers/inputhelper.py 2011-11-19 18:31:27.621316595 +0100 @@ -29,6 +29,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.helpers.inputhelper") import fcntl import os @@ -42,16 +44,12 @@ wire_format = struct.Struct('d30p') -# Put stdout in non-blocking mode -flag = fcntl.fcntl(sys.__stderr__, fcntl.F_GETFL) -fcntl.fcntl(sys.__stderr__, fcntl.F_SETFL, flag | os.O_NDELAY) def post_key(key): """ Send key to main process. """ - sys.__stderr__.write(wire_format.pack(time.time(), key)) - sys.__stderr__.flush() + os.write(fd, wire_format.pack(time.time(), key)) class Lirc: @@ -229,10 +227,22 @@ if hasattr(i, 'resume'): i.resume() - elif cmd == 'quit': + elif cmd == 'quit' or cmd == '': sys.exit(0) +if len(sys.argv) < 2: + sys.stderr.write('No fd specified!') + sys.exit(1) + +fd = int(sys.argv[1]) +_debug_('Using pipe fd %d' % fd) + +# Put fd in non-blocking mode +flag = fcntl.fcntl(fd, fcntl.F_GETFL) +fcntl.fcntl(fd, fcntl.F_SETFL, flag | os.O_NDELAY) + + inputs = [Lirc()] if config.EVENT_DEVS: diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/helpers/livepauseserver.py svn/src/helpers/livepauseserver.py --- freevo-1.9.2b2~upstream/src/helpers/livepauseserver.py 2009-05-07 18:09:37.000000000 +0200 +++ svn/src/helpers/livepauseserver.py 2011-11-19 18:31:27.629350166 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Livepause backend server # ----------------------------------------------------------------------- -# $Id: livepauseserver.py 11477 2009-05-07 16:09:37Z duncan $ +# $Id: livepauseserver.py 11905 2011-11-14 21:54:46Z adam $ # # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework @@ -24,6 +24,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.helpers.livepauseserver") import config diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/helpers/osddesigner.py svn/src/helpers/osddesigner.py --- freevo-1.9.2b2~upstream/src/helpers/osddesigner.py 2009-04-11 14:56:38.000000000 +0200 +++ svn/src/helpers/osddesigner.py 2011-11-19 18:31:27.625315536 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # OSD skin designer # ----------------------------------------------------------------------- -# $Id: osddesigner.py 11405 2009-04-11 12:56:38Z duncan $ +# $Id: osddesigner.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -30,6 +30,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- */ +import logging +logger = logging.getLogger("freevo.helpers.osddesigner") from skins.osd.designer import WidgetStyleObject from skins.osd.designer import WidgetStateObject import skins.osd.skin diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/helpers/recordserver.py svn/src/helpers/recordserver.py --- freevo-1.9.2b2~upstream/src/helpers/recordserver.py 2011-02-06 22:23:07.000000000 +0100 +++ svn/src/helpers/recordserver.py 2011-11-19 18:31:27.625315536 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # A network aware TV recording server. # ----------------------------------------------------------------------- -# $Id: recordserver.py 11814 2011-02-06 21:23:07Z adam $ +# $Id: recordserver.py 11905 2011-11-14 21:54:46Z adam $ # # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework @@ -24,6 +24,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.helpers.recordserver") import sys, time, os, re, pwd, stat, threading, hashlib, datetime, copy diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/helpers/webserver.py svn/src/helpers/webserver.py --- freevo-1.9.2b2~upstream/src/helpers/webserver.py 2009-04-28 17:01:44.000000000 +0200 +++ svn/src/helpers/webserver.py 2011-11-19 18:31:27.621316595 +0100 @@ -3,7 +3,7 @@ # ----------------------------------------------------------------------- # start the webserver # ----------------------------------------------------------------------- -# $Id: webserver.py 11445 2009-04-28 15:01:44Z duncan $ +# $Id: webserver.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -29,6 +29,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.helpers.webserver") import sys, os, pwd diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/image/imageitem.py svn/src/image/imageitem.py --- freevo-1.9.2b2~upstream/src/image/imageitem.py 2009-06-16 19:51:49.000000000 +0200 +++ svn/src/image/imageitem.py 2011-11-19 18:31:26.921814843 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # imageitem.py - Item for image files # ----------------------------------------------------------------------- -# $Id: imageitem.py 11594 2009-06-16 17:51:49Z duncan $ +# $Id: imageitem.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.image.imageitem") import util diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/image/plugins/flickr.py svn/src/image/plugins/flickr.py --- freevo-1.9.2b2~upstream/src/image/plugins/flickr.py 2008-09-12 15:22:34.000000000 +0200 +++ svn/src/image/plugins/flickr.py 2011-11-19 18:31:26.889812278 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Plugin for download and watch pictures of flickr # ----------------------------------------------------------------------- -# $Id: flickr.py 10999 2008-09-12 13:22:34Z duncan $ +# $Id: flickr.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # You need to install python-json from http://sourceforge.net/projects/json-py/ @@ -42,6 +42,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.image.plugins.flickr") __author__ = 'Alberto Gonzlez Rodrguez' __author_email__ = 'alberto@pesadilla.org' diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/image/viewer.py svn/src/image/viewer.py --- freevo-1.9.2b2~upstream/src/image/viewer.py 2011-03-04 23:53:28.000000000 +0100 +++ svn/src/image/viewer.py 2011-11-19 18:31:26.921814843 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Freevo image viewer # ----------------------------------------------------------------------- -# $Id: viewer.py 11848 2011-03-04 22:53:28Z adam $ +# $Id: viewer.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -27,6 +27,8 @@ """ Freevo image viewer """ +import logging +logger = logging.getLogger("freevo.image.viewer") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/item.py svn/src/item.py --- freevo-1.9.2b2~upstream/src/item.py 2009-06-16 19:51:49.000000000 +0200 +++ svn/src/item.py 2011-11-19 18:31:29.153811371 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Base class of a media item # ----------------------------------------------------------------------- -# $Id: item.py 11594 2009-06-16 17:51:49Z duncan $ +# $Id: item.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -31,6 +31,8 @@ """ Base class of a media item """ +import logging +logger = logging.getLogger("freevo.item") import os import gettext diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/main.py svn/src/main.py --- freevo-1.9.2b2~upstream/src/main.py 2011-02-10 23:28:26.000000000 +0100 +++ svn/src/main.py 2011-11-19 18:31:29.149811242 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # This is the Freevo main application code # ----------------------------------------------------------------------- -# $Id: main.py 11822 2011-02-10 22:28:26Z adam $ +# $Id: main.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -27,6 +27,8 @@ """ This is the Freevo main entry point """ +import logging +logger = logging.getLogger("freevo.main") # Must do this here to make sure no os.system() calls generated by module init # code gets LD_PRELOADed diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/menu.py svn/src/menu.py --- freevo-1.9.2b2~upstream/src/menu.py 2011-02-18 22:58:19.000000000 +0100 +++ svn/src/menu.py 2011-11-19 18:31:29.145811324 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Freevo menu handling system # ----------------------------------------------------------------------- -# $Id: menu.py 11836 2011-02-18 21:58:19Z adam $ +# $Id: menu.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -27,6 +27,8 @@ """ Freevo menu handling system """ +import logging +logger = logging.getLogger("freevo.menu") import string import copy diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/osd.py svn/src/osd.py --- freevo-1.9.2b2~upstream/src/osd.py 2011-02-12 23:17:25.000000000 +0100 +++ svn/src/osd.py 2011-11-19 18:31:29.157811150 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Low level graphics routines # ----------------------------------------------------------------------- -# $Id: osd.py 11825 2011-02-12 22:17:25Z adam $ +# $Id: osd.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -29,6 +29,8 @@ B{NOTE} Do not use the OSD object inside a thread. """ +import logging +logger = logging.getLogger("freevo.osd") # Python modules import time diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/playlist.py svn/src/playlist.py --- freevo-1.9.2b2~upstream/src/playlist.py 2011-02-27 23:28:53.000000000 +0100 +++ svn/src/playlist.py 2011-11-19 18:31:29.145811324 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # This is the Freevo playlist reading module. # ----------------------------------------------------------------------- -# $Id: playlist.py 11842 2011-02-27 22:28:53Z adam $ +# $Id: playlist.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -27,6 +27,8 @@ """ This is the Freevo play list reading module. """ +import logging +logger = logging.getLogger("freevo.playlist") import random import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugin.py svn/src/plugin.py --- freevo-1.9.2b2~upstream/src/plugin.py 2011-02-14 17:38:14.000000000 +0100 +++ svn/src/plugin.py 2011-11-19 18:31:29.141316584 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Plug-in interface # ----------------------------------------------------------------------- -# $Id: plugin.py 11828 2011-02-14 16:38:14Z adam $ +# $Id: plugin.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -27,6 +27,8 @@ """ Plug-in interface """ +import logging +logger = logging.getLogger("freevo.plugin") import os, sys import traceback diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/alsamixer.py svn/src/plugins/alsamixer.py --- freevo-1.9.2b2~upstream/src/plugins/alsamixer.py 2011-03-06 10:43:19.000000000 +0100 +++ svn/src/plugins/alsamixer.py 2011-11-19 18:31:28.421811184 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # alsamixer.py - The ALSA mixer interface for freevo. # ----------------------------------------------------------------------- -# $Id: alsamixer.py 11850 2011-03-06 09:43:19Z adam $ +# $Id: alsamixer.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -36,6 +36,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.alsamixer") __version__="0.2" diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/autocolor.py svn/src/plugins/autocolor.py --- freevo-1.9.2b2~upstream/src/plugins/autocolor.py 2011-02-08 23:51:11.000000000 +0100 +++ svn/src/plugins/autocolor.py 2011-11-19 18:31:28.417811265 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # autocolor.py - An tool for Freevo # ----------------------------------------------------------------------- -# $Id: autocolor.py 11821 2011-02-08 22:51:11Z adam $ +# $Id: autocolor.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -32,6 +32,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.autocolor") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/autoshutdown.py svn/src/plugins/autoshutdown.py --- freevo-1.9.2b2~upstream/src/plugins/autoshutdown.py 2011-02-08 23:51:11.000000000 +0100 +++ svn/src/plugins/autoshutdown.py 2011-11-19 18:31:28.417811265 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Automated Shutdown # ----------------------------------------------------------------------- -# $Id: autoshutdown.py 11821 2011-02-08 22:51:11Z adam $ +# $Id: autoshutdown.py 11905 2011-11-14 21:54:46Z adam $ # # Author: rvpaasen@t3i.nl # Notes: @@ -28,6 +28,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.autoshutdown") import os @@ -246,7 +248,6 @@ """ def config(self): - PLIST = ['mencoder','transcode','cdrecord','emerge','tvgids.sh','tv_grab','sshd:'] return [ ('SYS_SHUTDOWN_ENABLE', 1, 'enable system shutdown'), ('SYS_SHUTDOWN_CMD', 'sudo shutdown -h now', 'shutdown command'), @@ -259,7 +260,7 @@ ('AUTOSHUTDOWN_WAKEUP_TIME_PAD', 180, 'seconds to start ahead of time set'), ('AUTOSHUTDOWN_ALLOWED_IDLE_TIME', 45, 'minutes of idle time allowed'), ('AUTOSHUTDOWN_WHILE_USER_LOGGED', True, 'shutdown even when someone is logged in'), - ('AUTOSHUTDOWN_PROCESS_LIST', PLIST, 'list of processes that prevent a shutdown'), + ('AUTOSHUTDOWN_PROCESS_LIST', [], 'list of processes that prevent a shutdown'), ('AUTOSHUTDOWN_PROCESS_CHECK', '/home/user/bin/freevoshutdown_check', 'command to check external processes before shutdown'), ('AUTOSHUTDOWN_METHOD', None, 'acpi or nvram (or None to disable)'), diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/autostart.py svn/src/plugins/autostart.py --- freevo-1.9.2b2~upstream/src/plugins/autostart.py 2008-09-18 12:54:50.000000000 +0200 +++ svn/src/plugins/autostart.py 2011-11-19 18:31:28.413811276 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Plug-in to sent events at the end of start up # ----------------------------------------------------------------------- -# $Id: autostart.py 11022 2008-09-18 10:54:50Z duncan $ +# $Id: autostart.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # To activate, put the following line in local_conf.py: @@ -30,6 +30,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.autostart") from kaa import OneShotTimer from kaa import EventHandler @@ -55,7 +57,7 @@ __author_email__ = 'andudi@gmx.ch' __maintainer__ = __author__ __maintainer_email__ = __author_email__ - __version__ = '$Revision: 11022 $'.split()[1] + __version__ = '$Revision: 11905 $'.split()[1] def __init__(self): """ diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/buttonbar.py svn/src/plugins/buttonbar.py --- freevo-1.9.2b2~upstream/src/plugins/buttonbar.py 2011-02-27 23:22:20.000000000 +0100 +++ svn/src/plugins/buttonbar.py 2011-11-19 18:31:28.397317407 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # ButtonBar plug-in # ----------------------------------------------------------------------- -# $Id: buttonbar.py 11841 2011-02-27 22:22:20Z adam $ +# $Id: buttonbar.py 11905 2011-11-14 21:54:46Z adam $ # # ----------------------------------------------------------------------- # Freevo-A Home Theater PC framework @@ -24,6 +24,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.buttonbar") # python modules import time @@ -368,6 +370,9 @@ if hasattr(menu, 'is_submenu') or (not hasattr(menu, 'selected')): return result + if menu.selected is None: + return None + # Determine the available actions actions = menu.selected.actions() if not actions: diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/cd_burn.py svn/src/plugins/cd_burn.py --- freevo-1.9.2b2~upstream/src/plugins/cd_burn.py 2009-06-25 17:50:59.000000000 +0200 +++ svn/src/plugins/cd_burn.py 2011-11-19 18:31:28.405315429 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # cd_burn.py - Plugin for copying files to a cd # ----------------------------------------------------------------------- -# $Id: cd_burn.py 11604 2009-06-25 15:50:59Z duncan $ +# $Id: cd_burn.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -42,6 +42,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.cd_burn") import sys import threading diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/command.py svn/src/plugins/command.py --- freevo-1.9.2b2~upstream/src/plugins/command.py 2009-05-02 10:44:26.000000000 +0200 +++ svn/src/plugins/command.py 2011-11-19 18:31:28.405315429 +0100 @@ -3,7 +3,7 @@ # a simple plugin to run arbitrary commands from a directory. # it determines success or failure of command based on its exit status. # ----------------------------------------------------------------------- -# $Id: command.py 11462 2009-05-02 08:44:26Z duncan $ +# $Id: command.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: no echo of output of command to screen. # To use add the following to local_conf.py: @@ -31,6 +31,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.command") #python modules diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/ejectromdrives.py svn/src/plugins/ejectromdrives.py --- freevo-1.9.2b2~upstream/src/plugins/ejectromdrives.py 2009-01-31 09:41:03.000000000 +0100 +++ svn/src/plugins/ejectromdrives.py 2011-11-19 18:31:28.409811427 +0100 @@ -33,6 +33,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.ejectromdrives") import plugin diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/file_ops.py svn/src/plugins/file_ops.py --- freevo-1.9.2b2~upstream/src/plugins/file_ops.py 2011-03-06 10:47:38.000000000 +0100 +++ svn/src/plugins/file_ops.py 2011-11-19 18:31:28.413811276 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # file_ops.py - Small file operations (currently only delete) # ----------------------------------------------------------------------- -# $Id: file_ops.py 11851 2011-03-06 09:47:38Z adam $ +# $Id: file_ops.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.file_ops") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/freevoscreensaver.py svn/src/plugins/freevoscreensaver.py --- freevo-1.9.2b2~upstream/src/plugins/freevoscreensaver.py 2011-02-08 23:51:11.000000000 +0100 +++ svn/src/plugins/freevoscreensaver.py 2011-11-19 18:31:28.421811184 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # freevoscreensaver.py - quick hurry and save the screen!!! # ----------------------------------------------------------------------- -# $Id: freevoscreensaver.py 11821 2011-02-08 22:51:11Z adam $ +# $Id: freevoscreensaver.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: maybe some day i will make it really start and stop the saver # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.freevoscreensaver") import time diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/freevused.py svn/src/plugins/freevused.py --- freevo-1.9.2b2~upstream/src/plugins/freevused.py 2008-05-03 14:34:35.000000000 +0200 +++ svn/src/plugins/freevused.py 2011-11-19 18:31:28.413811276 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Get events from a Bemused like client # ----------------------------------------------------------------------- -# $Id: freevused.py 10672 2008-05-03 12:34:35Z duncan $ +# $Id: freevused.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: This is a plugin to remote control Freevo with a bluetooth mobile # phone using a j2me client running in the phone. @@ -37,7 +37,7 @@ # 'VOLM': 'MIXER_MUTE', # 4th row left # 'SLCT': 'ENTER', # 4th row center # 'MAIN': 'STOP', # 4th row right - +# # 'DISP': 'DISPLAY', # More actions # 'EJEC': 'EJECT', # 'DEAU': 'DISPLAY', @@ -121,6 +121,9 @@ # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.freevused") + import config import plugin import rc diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/headlines.py svn/src/plugins/headlines.py --- freevo-1.9.2b2~upstream/src/plugins/headlines.py 2009-05-02 09:59:05.000000000 +0200 +++ svn/src/plugins/headlines.py 2011-11-19 18:31:28.397317407 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # headlines.py - a simple plugin to listen to headlines # ----------------------------------------------------------------------- -# $Id: headlines.py 11461 2009-05-02 07:59:05Z duncan $ +# $Id: headlines.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -33,6 +33,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.headlines") #python modules @@ -185,7 +187,7 @@ description = description.replace('

', '\n').replace('
', '\n') description = description + '\n \n \nLink: ' + link description = unicode(BeautifulStoneSoup(description, convertEntities=BeautifulStoneSoup.HTML_ENTITIES)) - description = util.htmlenties2txt(description) + description = util.htmlenties2txt(description, 'unicode') mi.description = re.sub('<.*?>', '', description) @@ -193,7 +195,7 @@ if (len(headlines) == 0): - headlines += [menu.MenuItem(_('No Headlines found'), menuw.goto_prev_page, 0)] + headlines += [menu.MenuItem(_('No Headlines found'), menuw.back_one_menu, 0)] headlines_menu = menu.Menu(_('Headlines'), headlines) menuw.pushmenu(headlines_menu) @@ -226,7 +228,7 @@ headlines_sites += [ headlines_site_item ] if (len(headlines_sites) == 0): headlines_sites += [menu.MenuItem(_('No Headlines Sites found'), - menuw.goto_prev_page, 0)] + menuw.back_one_menu, 0)] headlines_site_menu = menu.Menu(_('Headlines Sites'), headlines_sites) menuw.pushmenu(headlines_site_menu) menuw.refresh() diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/home_automation.py svn/src/plugins/home_automation.py --- freevo-1.9.2b2~upstream/src/plugins/home_automation.py 2007-10-18 17:31:31.000000000 +0200 +++ svn/src/plugins/home_automation.py 2011-11-04 20:40:05.689955202 +0100 @@ -142,7 +142,7 @@ automation_item.room_items = room[1] automation_items += [ automation_item ] if (len(automation_items) == 0): - automation_items += [menu.MenuItem(_('No Home Automation items found'), menuw.goto_prev_page, 0)] + automation_items += [menu.MenuItem(_('No Home Automation items found'), menuw.back_one_menu, 0)] automation_items_menu = menu.Menu(_('Home Automation'), automation_items) menuw.pushmenu(automation_items_menu) menuw.refresh() diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/idlebar/MultiMail.py svn/src/plugins/idlebar/MultiMail.py --- freevo-1.9.2b2~upstream/src/plugins/idlebar/MultiMail.py 2009-05-31 15:33:51.000000000 +0200 +++ svn/src/plugins/idlebar/MultiMail.py 2011-11-19 18:31:28.169816440 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # IdleBar plugins for checking email accounts # ----------------------------------------------------------------------- -# $Id: MultiMail.py 11579 2009-05-31 13:33:51Z duncan $ +# $Id: MultiMail.py 11905 2011-11-14 21:54:46Z adam $ # # Author : Chris Griffiths (freevo@y-fronts.com) # Date : Nov 8th 2003 @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.idlebar.MultiMail") import os import config diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/idlebar/__init__.py svn/src/plugins/idlebar/__init__.py --- freevo-1.9.2b2~upstream/src/plugins/idlebar/__init__.py 2011-02-08 23:51:11.000000000 +0100 +++ svn/src/plugins/idlebar/__init__.py 2011-11-19 18:31:28.169816440 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # IdleBar plug-in # ----------------------------------------------------------------------- -# $Id: __init__.py 11821 2011-02-08 22:51:11Z adam $ +# $Id: __init__.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -39,6 +39,8 @@ - idlebar.weather - idlebar.holidays """ +import logging +logger = logging.getLogger("freevo.plugins.idlebar") # python modules import time import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/idlebar/encoding.py svn/src/plugins/idlebar/encoding.py --- freevo-1.9.2b2~upstream/src/plugins/idlebar/encoding.py 2011-02-08 23:51:11.000000000 +0100 +++ svn/src/plugins/idlebar/encoding.py 2011-11-19 18:31:28.173815451 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # IdleBarplugin for showing encoding status # ----------------------------------------------------------------------- -# $Id: encoding.py 11821 2011-02-08 22:51:11Z adam $ +# $Id: encoding.py 11905 2011-11-14 21:54:46Z adam $ # # Author: Duncan Webb # @@ -26,6 +26,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.idlebar.encoding") # python modules diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/idlebar/remindicon.py svn/src/plugins/idlebar/remindicon.py --- freevo-1.9.2b2~upstream/src/plugins/idlebar/remindicon.py 2007-10-18 17:31:31.000000000 +0200 +++ svn/src/plugins/idlebar/remindicon.py 2011-11-19 18:31:28.173815451 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # remind.py - IdleBarplugin for monitoring the remind command output # ----------------------------------------------------------------------- -# $Id: remindicon.py 9999 2007-10-18 15:31:31Z duncan $ +# $Id: remindicon.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,11 +27,13 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.idlebar.remindicon") __author__ = "Christian Lyra" __version__ = "0.1" -__svnversion__ = "$Revision: 9999 $"[11:-2] -__date__ = "$Date: 2007-10-18 16:31:31 +0100 (Thu, 18 Oct 2007) $"[7:-2] +__svnversion__ = "$Revision: 11905 $"[11:-2] +__date__ = "$Date: 2011-11-14 22:54:46 +0100(lun, 14 nov 2011) $"[7:-2] __copyright__ = "Copyright (c) 2007 Christian Lyra" __license__ = "GPL" diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/idlebar/system.py svn/src/plugins/idlebar/system.py --- freevo-1.9.2b2~upstream/src/plugins/idlebar/system.py 2008-06-11 17:37:50.000000000 +0200 +++ svn/src/plugins/idlebar/system.py 2011-11-19 18:31:28.173815451 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # IdleBar plugins for monitoring the system # ----------------------------------------------------------------------- -# $Id: system.py 10808 2008-06-11 15:37:50Z duncan $ +# $Id: system.py 11905 2011-11-14 21:54:46Z adam $ # # Documentation moved to the corresponding classes, so that the help # interface returns something usefull. @@ -31,6 +31,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.idlebar.system") import time diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/idlebar/transcode.py svn/src/plugins/idlebar/transcode.py --- freevo-1.9.2b2~upstream/src/plugins/idlebar/transcode.py 2011-02-08 23:51:11.000000000 +0100 +++ svn/src/plugins/idlebar/transcode.py 2011-11-19 18:31:28.173815451 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Idlebar plugin for showing encoding status # ----------------------------------------------------------------------- -# $Id: transcode.py 11821 2011-02-08 22:51:11Z adam $ +# $Id: transcode.py 11905 2011-11-14 21:54:46Z adam $ # # Author: Duncan Webb # @@ -26,6 +26,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.idlebar.transcode") # python modules diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/idlebar/tv.py svn/src/plugins/idlebar/tv.py --- freevo-1.9.2b2~upstream/src/plugins/idlebar/tv.py 2009-04-11 16:58:01.000000000 +0200 +++ svn/src/plugins/idlebar/tv.py 2011-11-19 18:31:28.169816440 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # IdleBar plug-in for monitoring the xmltv-listings and record status # ----------------------------------------------------------------------- -# $Id: tv.py 11408 2009-04-11 14:58:01Z duncan $ +# $Id: tv.py 11905 2011-11-14 21:54:46Z adam $ # # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework @@ -24,6 +24,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.idlebar.tv") # python modules diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/idlebar/weather.py svn/src/plugins/idlebar/weather.py --- freevo-1.9.2b2~upstream/src/plugins/idlebar/weather.py 2010-02-11 17:29:18.000000000 +0100 +++ svn/src/plugins/idlebar/weather.py 2011-11-19 18:31:28.169816440 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # weather.py - IdleBarplugin for weather # ----------------------------------------------------------------------- -# $Id: weather.py 11658 2010-02-11 16:29:18Z duncan $ +# $Id: weather.py 11905 2011-11-14 21:54:46Z adam $ # # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework @@ -24,6 +24,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.idlebar.weather") # python modules diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/itv.py svn/src/plugins/itv.py --- freevo-1.9.2b2~upstream/src/plugins/itv.py 2010-11-02 14:38:17.000000000 +0100 +++ svn/src/plugins/itv.py 2011-11-19 18:31:28.405315429 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Plugin to view RSS Video # ----------------------------------------------------------------------- -# $Id: itv.py 11710 2010-11-02 13:38:17Z adam $ +# $Id: itv.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -36,6 +36,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.itv") #python modules @@ -235,7 +237,7 @@ # create the menu if (len(headlines) == 0): - headlines += [menu.MenuItem(_('No Headlines found'), menuw.goto_prev_page, 0)] + headlines += [menu.MenuItem(_('No Headlines found'), menuw.back_one_menu, 0)] headlines_menu = menu.Menu(_('Headlines'), headlines) menuw.pushmenu(headlines_menu) @@ -268,7 +270,7 @@ headlines_site_item.location_index = config.ITV_LOCATIONS.index(location) headlines_sites += [ headlines_site_item ] if (len(headlines_sites) == 0): - headlines_sites += [menu.MenuItem(_('No Headlines Sites found'), menuw.goto_prev_page, 0)] + headlines_sites += [menu.MenuItem(_('No Headlines Sites found'), menuw.back_one_menu, 0)] headlines_site_menu = menu.Menu(_('Headlines Sites'), headlines_sites) menuw.pushmenu(headlines_site_menu) menuw.refresh() diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/joy.py svn/src/plugins/joy.py --- freevo-1.9.2b2~upstream/src/plugins/joy.py 2011-02-08 23:51:11.000000000 +0100 +++ svn/src/plugins/joy.py 2011-11-19 18:31:28.401317187 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # A joystick control plugin for Freevo. # ----------------------------------------------------------------------- -# $Id: joy.py 11821 2011-02-08 22:51:11Z adam $ +# $Id: joy.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # To use this plugin make sure that your joystick is already working @@ -29,6 +29,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.joy") import sys diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/lcd.py svn/src/plugins/lcd.py --- freevo-1.9.2b2~upstream/src/plugins/lcd.py 2011-02-08 23:51:11.000000000 +0100 +++ svn/src/plugins/lcd.py 2011-11-19 18:31:28.401317187 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Use PyLCD to display menus and players # ----------------------------------------------------------------------- -# $Id: lcd.py 11821 2011-02-08 22:51:11Z adam $ +# $Id: lcd.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -36,6 +36,10 @@ 2. Have Movie Player, TV Player and Image viewer to use LCD 3. Better (and more) LCD screens. """ +import logging +logger = logging.getLogger("freevo.plugins.lcd") + +import string from menu import MenuItem import copy @@ -46,6 +50,12 @@ import util from util.tv_util import get_chan_displayname +if config.LCD_REMAP_TO_ASCII: + try: + from unidecode import unidecode + except: + _debug_(String(_('ERROR')+': '+_('You need unidecode to run "lcd" plugin.')), 2) + try: import pylcd except: @@ -423,33 +433,33 @@ 'title' : ('title', '1 1 Freevo', None) }, 'menu' : { - 'title_v' : ('scroller', '1 1 %d 1 m 8 "%s%s"', - '(self.width, menu.heading, self.get_sepstrmscroll(menu.heading))'), - 'item_v' : ('scroller', '1 2 %d 2 m 8 "%s%s"', - '(self.width, title, self.get_sepstrmscroll(title))') + 'title_v' : ('scroller', '1 1 %d 1 m 2 "%s%s"', + '(self.width, remap(menu.heading), self.get_sepstrmscroll(menu.heading))'), + 'item_v' : ('scroller', '1 2 %d 2 m 2 "%s%s"', + '(self.width, remap(title), self.get_sepstrmscroll(title))') }, 'audio_player' : { - 'music_v' : ('scroller', '1 1 %d 1 m 8 "%s%s"', - '(self.width, title, self.get_sepstrmscroll(title))'), + 'music_v' : ('scroller', '1 1 %d 1 m 2 "%s%s"', + '(self.width, remap(title), self.get_sepstrmscroll(title))'), 'time_v1' : ('string', '2 2 "% 2d:%02d/"', '(int(player.length / 60), int(player.length % 60))'), 'time_v2' : ('string', '8 2 "% 2d:%02d"', '(int(player.elapsed / 60), int(player.elapsed % 60))'), 'animation_v': ('string', '1 2 "%s"', 'self.animation_audioplayer_chars[player.elapsed % len(self.animation_audioplayer_chars)]') }, 'video_player' : { - 'video_v' : ('scroller', '1 1 %d 1 m 8 "%s%s"', - '(self.width, title, self.get_sepstrmscroll(title))'), + 'video_v' : ('scroller', '1 1 %d 1 m 2 "%s%s"', + '(self.width, remap(title), self.get_sepstrmscroll(title))'), 'time_v2' : ('string', '2 2 "%s"', '(elapsed)'), 'time_v3' : ('string', '11 2 "(%2d%%)"', '(int(percentage * 100))'), 'animation_v': ('string', '1 2 "%s"', 'self.animation_audioplayer_chars[player.elapsed % len(self.animation_audioplayer_chars)]') }, 'tv' : { - 'chan_v' : ('scroller', '1 1 %d 1 m 8 "%s%s"', - '(self.width, get_chan_displayname(tv.channel_id), '+ + 'chan_v' : ('scroller', '1 1 %d 1 m 2 "%s%s"', + '(self.width, remap(get_chan_displayname(tv.channel_id)), '+ 'self.get_sepstrmscroll(get_chan_displayname(tv.channel_id)))'), - 'prog_v' : ('scroller', '1 2 %d 2 m 8 "%s%s"', - '(self.width, tv.title, self.get_sepstrmscroll(tv.title))') + 'prog_v' : ('scroller', '1 2 %d 2 m 2 "%s%s"', + '(self.width, remap(tv.title), self.get_sepstrmscroll(tv.title))') } }, # 2 lines, 16 chars per line @@ -501,6 +511,23 @@ }, } +def remap(data): + _debug_('remap(data=%r)' % (data), 2) + + try: + # first we remap all non-ASCII chars to ASCII + if config.LCD_REMAP_TO_ASCII: + data = unidecode(data) + + # now we replace double quotes with single ones, + # double quotes confuse LCDd + data = data.replace('\"', '\'').strip() + + except UnicodeDecodeError, error: + _debug_('%s' % error, DWARNING) + + return data + def get_lengthsecs(slen): _debug_('get_lengthsecs(slen=%r)' % (slen,), 2) @@ -556,7 +583,7 @@ __author_email__ = 'barbieri@gmail.com' __maintainer__ = __author__ __maintainer_email__ = __author_email__ - __version__ = '$Revision: 11821 $' + __version__ = '$Revision: 11905 $' def __init__(self, height=None, width=None): """ diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/lcd2.py svn/src/plugins/lcd2.py --- freevo-1.9.2b2~upstream/src/plugins/lcd2.py 2011-02-08 23:51:11.000000000 +0100 +++ svn/src/plugins/lcd2.py 2011-11-19 18:31:28.409811427 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Use PyLCD to display menus and players on a LCD display # ----------------------------------------------------------------------- -# $Id: lcd2.py 11821 2011-02-08 22:51:11Z adam $ +# $Id: lcd2.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -31,6 +31,8 @@ plugin.activate('lcd2') """ +import logging +logger = logging.getLogger("freevo.plugins.lcd2") import config import plugin @@ -92,7 +94,7 @@ __author_email__ = 'andudi@gmx.ch' __maintainer__ = __author__ __maintainer_email__ = __author_email__ - __version__ = '$Revision: 11821 $' + __version__ = '$Revision: 11905 $' def __init__(self): """ @@ -100,7 +102,7 @@ """ plugin.DaemonPlugin.__init__(self) - self.poll_interval = 4 + self.poll_interval = 20 # timer resolution is 200ms self.poll_menu_only = 0 # lcd even if player is on self.event_listener = 1 # listening to events @@ -147,6 +149,14 @@ # register this pluing plugin.register(self, 'lcd2') + def shutdown(self): + """ + to be called before the plugin exists. + It terminates the connection with the server + """ + self.menu_clear() + self.lcd_head.draw('Goodbye') + _debug_('close()', 2) def menu_clear(self): """ @@ -171,7 +181,7 @@ head = 'Freevo' elif object.menustack[0].selected.arg[0] == 'audio': if level == 1: - head = 'Musik' + head = 'Music' elif object.menustack[1].selected.info.disc: head = 'Audio-CD' elif object.menustack[1].selected.name.split()[0] == 'USB': @@ -203,7 +213,7 @@ except: self.lcd_head.draw('NONE') # prepare index position and update selected menu item - items = len(object.menu_items) + items = len(object.menustack[-1].choices) if items: selection = object.menustack[-1].selected index = object.menustack[-1].choices.index(selection) + 1 @@ -232,16 +242,21 @@ player = object if player.type == 'audio': # prepare player info - title = player.name + title = player.getattr('title') + if not title: + title = String(player.getattr('name')) trackno = player.getattr('trackno') + artist = player.getattr('artist') time = player.elapsed length = player.length - if length: # audio like MP3 and CD-ROM if (self.lcd_title == self.lcd_player): # if lines are shared - if (time < 3) or ((time % 10) < 2): - self.lcd_title.draw('%s %s' % (trackno, title)) + phase = (time % 10) + if (phase < 3): + self.lcd_title.draw('%s' % (title)) + elif (phase < 6): + self.lcd_title.draw('%s' % (artist)) else: self.lcd_player.draw_right('%d:%02d/%d:%02d' % (time//60, time%60, length//60, length%60)) else: @@ -271,13 +286,12 @@ TODO define events in event.py """ # show player info while playing - if event == VIDEO_START: + if event == 'VIDEO_START': self.menu_clear() self.lcd_head.draw('DVD/SVCD') elif event == 'VIDEO_PLAY_INFO': (elapsed, length) = event.arg self.lcd_player.draw_right('%d:%02d/%d:%02d' % (elapsed//60, elapsed%60, length//60, length%60)) - # show volume in info area, grab it afer MIXER message from the OSD message if event == 'MIXER_VOLUME_INFO': self.lcd_info.draw('VOL%3s%%' % event.arg, 5, 12) diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/mixer.py svn/src/plugins/mixer.py --- freevo-1.9.2b2~upstream/src/plugins/mixer.py 2008-11-19 20:27:25.000000000 +0100 +++ svn/src/plugins/mixer.py 2011-11-19 18:31:28.409811427 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # mixer.py - The mixer interface for freevo. # ----------------------------------------------------------------------- -# $Id: mixer.py 11182 2008-11-19 19:27:25Z duncan $ +# $Id: mixer.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -32,6 +32,8 @@ """ For manipulating the mixer. """ +import logging +logger = logging.getLogger("freevo.plugins.mixer") import fcntl import struct diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/oneclick.py svn/src/plugins/oneclick.py --- freevo-1.9.2b2~upstream/src/plugins/oneclick.py 2011-02-10 23:45:16.000000000 +0100 +++ svn/src/plugins/oneclick.py 2011-11-19 18:31:28.421811184 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # A plugin to obtain detailed weather forecast information # ----------------------------------------------------------------------- -# $Id: oneclick.py 11823 2011-02-10 22:45:16Z adam $ +# $Id: oneclick.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # There are two ways to get the radar map: @@ -40,6 +40,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.oneclick") #python modules import os, stat, re, copy @@ -791,7 +793,7 @@ # if no locations were found, add a menu entry indicating that if not locations: - nolocation = menu.MenuItem(_('No locations specified'), menuw.goto_prev_page, 0) + nolocation = menu.MenuItem(_('No locations specified'), menuw.back_one_menu, 0) locations.append(nolocation) # if only 1 valid menu entry present, autoselect it diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/ossmixer.py svn/src/plugins/ossmixer.py --- freevo-1.9.2b2~upstream/src/plugins/ossmixer.py 2008-11-19 20:27:25.000000000 +0100 +++ svn/src/plugins/ossmixer.py 2011-11-19 18:31:28.405315429 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # The oss mixer interface for freevo. # ----------------------------------------------------------------------- -# $Id: ossmixer.py 11182 2008-11-19 19:27:25Z duncan $ +# $Id: ossmixer.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -43,6 +43,8 @@ """For manipulating the mixer. """ +import logging +logger = logging.getLogger("freevo.plugins.ossmixer") import struct import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/remind.py svn/src/plugins/remind.py --- freevo-1.9.2b2~upstream/src/plugins/remind.py 2009-05-02 09:59:05.000000000 +0200 +++ svn/src/plugins/remind.py 2011-11-04 20:40:05.685954916 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # A simple plugin show reminders, or the output of a command # ----------------------------------------------------------------------- -# $Id: remind.py 11461 2009-05-02 07:59:05Z duncan $ +# $Id: remind.py 11873 2011-09-07 21:33:56Z adam $ # # Notes: # Todo: @@ -31,8 +31,8 @@ __author__ = "Christian Lyra" __version__ = "0.1" -__svnversion__ = "$Revision: 11461 $".split()[1] -__date__ = "$Date: 2009-05-02 08:59:05 +0100 (Sat, 02 May 2009) $".split()[1] +__svnversion__ = "$Revision: 11873 $".split()[1] +__date__ = "$Date: 2011-09-07 23:33:56 +0200(mer, 07 set 2011) $".split()[1] __copyright__ = "Copyright (c) 2007 Christian Lyra" __license__ = "GPL" __doc__ = """A plugin to list reminders, but can be used to @@ -113,7 +113,7 @@ lines.append(mi) if (len(lines) == 0): - lines += [menu.MenuItem(_('No Reminders Found'), menuw.goto_prev_page, 0)] + lines += [menu.MenuItem(_('No Reminders Found'), menuw.back_one_menu, 0)] lines_menu = menu.Menu(_('Reminders'), lines) menuw.pushmenu(lines_menu) diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/rom_drives.py svn/src/plugins/rom_drives.py --- freevo-1.9.2b2~upstream/src/plugins/rom_drives.py 2009-08-11 17:18:29.000000000 +0200 +++ svn/src/plugins/rom_drives.py 2011-11-19 18:31:28.417811265 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Freevo identify media/automount removable media plugin # ----------------------------------------------------------------------- -# $Id: rom_drives.py 11624 2009-08-11 15:18:29Z duncan $ +# $Id: rom_drives.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.rom_drives") import time, os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/screensaver/__init__.py svn/src/plugins/screensaver/__init__.py --- freevo-1.9.2b2~upstream/src/plugins/screensaver/__init__.py 2011-02-13 10:25:30.000000000 +0100 +++ svn/src/plugins/screensaver/__init__.py 2011-11-19 18:31:28.309312134 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # screensaver/__init__.py - the Freevo Screensaver # ----------------------------------------------------------------------- -# $Id: __init__.py 11827 2011-02-13 09:25:30Z adam $ +# $Id: __init__.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -29,6 +29,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- */ +import logging +logger = logging.getLogger("freevo.plugins.screensaver") import time diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/screensaver/balls.py svn/src/plugins/screensaver/balls.py --- freevo-1.9.2b2~upstream/src/plugins/screensaver/balls.py 2008-03-22 12:42:02.000000000 +0100 +++ svn/src/plugins/screensaver/balls.py 2011-11-19 18:31:28.309312134 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # screensaver/balls.py - the Freevo Screensaver # ----------------------------------------------------------------------- -# $Id: balls.py 10559 2008-03-22 11:42:02Z duncan $ +# $Id: balls.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -29,6 +29,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- */ +import logging +logger = logging.getLogger("freevo.plugins.screensaver.balls") from random import randint import pygame diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/screensaver/bouncing_freevo.py svn/src/plugins/screensaver/bouncing_freevo.py --- freevo-1.9.2b2~upstream/src/plugins/screensaver/bouncing_freevo.py 2008-03-22 12:42:02.000000000 +0100 +++ svn/src/plugins/screensaver/bouncing_freevo.py 2011-11-19 18:31:28.309312134 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # screensaver/bouncing_freevo.py - the Freevo Screensaver # ----------------------------------------------------------------------- -# $Id: bouncing_freevo.py 10559 2008-03-22 11:42:02Z duncan $ +# $Id: bouncing_freevo.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -29,6 +29,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- */ +import logging +logger = logging.getLogger("freevo.plugins.screensaver.bouncing_freevo") import os from random import randint import pygame diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/screensaver/flames.py svn/src/plugins/screensaver/flames.py --- freevo-1.9.2b2~upstream/src/plugins/screensaver/flames.py 2009-05-02 09:59:05.000000000 +0200 +++ svn/src/plugins/screensaver/flames.py 2011-11-19 18:31:28.309312134 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # screensaver/flames.py - the Freevo Screensaver # ----------------------------------------------------------------------- -# $Id: flames.py 11461 2009-05-02 07:59:05Z duncan $ +# $Id: flames.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Many thanks to Pete Shinners for his example. @@ -32,6 +32,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- */ +import logging +logger = logging.getLogger("freevo.plugins.screensaver.flames") from plugins.screensaver import ScreenSaverPlugin import config diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/screensaver/life.py svn/src/plugins/screensaver/life.py --- freevo-1.9.2b2~upstream/src/plugins/screensaver/life.py 2008-12-01 21:21:48.000000000 +0100 +++ svn/src/plugins/screensaver/life.py 2011-11-19 18:31:28.309312134 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # screensaver/life.py - the Freevo Screensaver # ----------------------------------------------------------------------- -# $Id: life.py 11212 2008-12-01 20:21:48Z duncan $ +# $Id: life.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -29,6 +29,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- */ +import logging +logger = logging.getLogger("freevo.plugins.screensaver.life") from random import randint import pygame diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/screensaver/sonar.py svn/src/plugins/screensaver/sonar.py --- freevo-1.9.2b2~upstream/src/plugins/screensaver/sonar.py 2010-11-08 13:40:06.000000000 +0100 +++ svn/src/plugins/screensaver/sonar.py 2011-11-19 18:31:28.309312134 +0100 @@ -29,6 +29,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- */ +import logging +logger = logging.getLogger("freevo.plugins.screensaver.sonar") import random import math diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/shoppingcart.py svn/src/plugins/shoppingcart.py --- freevo-1.9.2b2~upstream/src/plugins/shoppingcart.py 2010-11-02 14:38:17.000000000 +0100 +++ svn/src/plugins/shoppingcart.py 2011-11-19 18:31:28.401317187 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # shoppingcart.py - Example item plugin # ----------------------------------------------------------------------- -# $Id: shoppingcart.py 11710 2010-11-02 13:38:17Z adam $ +# $Id: shoppingcart.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: This is a plugin to move and copy files # @@ -33,6 +33,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.shoppingcart") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/shutdown.py svn/src/plugins/shutdown.py --- freevo-1.9.2b2~upstream/src/plugins/shutdown.py 2011-02-07 13:37:59.000000000 +0100 +++ svn/src/plugins/shutdown.py 2011-11-19 18:31:28.421811184 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # shutdown plug-in and handling # ----------------------------------------------------------------------- -# $Id: shutdown.py 11816 2011-02-07 12:37:59Z adam $ +# $Id: shutdown.py 11905 2011-11-14 21:54:46Z adam $ # # Author: # Notes: @@ -28,6 +28,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.shutdown") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/speak.py svn/src/plugins/speak.py --- freevo-1.9.2b2~upstream/src/plugins/speak.py 2009-05-31 15:33:51.000000000 +0200 +++ svn/src/plugins/speak.py 2011-11-19 18:31:28.405315429 +0100 @@ -26,6 +26,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.speak") import types try: diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/tiny_xosd.py svn/src/plugins/tiny_xosd.py --- freevo-1.9.2b2~upstream/src/plugins/tiny_xosd.py 2007-10-18 17:31:31.000000000 +0200 +++ svn/src/plugins/tiny_xosd.py 2011-11-19 18:31:28.421811184 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # tiny_xosd.py - Implementation of an OSD function using PyOSD # ----------------------------------------------------------------------- -# $Id: tiny_xosd.py 9999 2007-10-18 15:31:31Z duncan $ +# $Id: tiny_xosd.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -32,6 +32,8 @@ """ Plugin for PyOSDd which facilitates controling Freevo """ +import logging +logger = logging.getLogger("freevo.plugins.tiny_xosd") import time, re, string, pyosd, config diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/usb.py svn/src/plugins/usb.py --- freevo-1.9.2b2~upstream/src/plugins/usb.py 2011-02-08 23:51:11.000000000 +0100 +++ svn/src/plugins/usb.py 2011-11-19 18:31:28.397317407 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # usb.py - the Freevo usb plugin # ----------------------------------------------------------------------- -# $Id: usb.py 11821 2011-02-08 22:51:11Z adam $ +# $Id: usb.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: This plugin sends an event if an usb device is added # or removed @@ -28,6 +28,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.usb") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/vfd.py svn/src/plugins/vfd.py --- freevo-1.9.2b2~upstream/src/plugins/vfd.py 2011-02-08 23:51:11.000000000 +0100 +++ svn/src/plugins/vfd.py 2011-11-19 18:31:28.409811427 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Shuttles VFD interface plug-in # ----------------------------------------------------------------------- -# $Id: vfd.py 11821 2011-02-08 22:51:11Z adam $ +# $Id: vfd.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # To activate, put the following line in local_conf.py: @@ -32,6 +32,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.vfd") from menu import MenuItem @@ -286,7 +288,7 @@ __author_email__ = 'duncan@freevo.org' __maintainer__ = __author__ __maintainer_email__ = __author_email__ - __version__ = '$Revision: 11821 $' + __version__ = '$Revision: 11905 $' def send(self, data): """ diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/plugins/zoneminder.py svn/src/plugins/zoneminder.py --- freevo-1.9.2b2~upstream/src/plugins/zoneminder.py 2009-05-24 17:46:48.000000000 +0200 +++ svn/src/plugins/zoneminder.py 2011-11-19 18:31:28.417811265 +0100 @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.plugins.zoneminder") __author__ = "Christophe 'CSCMEU' Nowicki" __author_email__ = 'cscm@csquad.org' diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/rc.py svn/src/rc.py --- freevo-1.9.2b2~upstream/src/rc.py 2011-03-04 10:51:55.000000000 +0100 +++ svn/src/rc.py 2011-11-19 18:31:29.145811324 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Remote control / Event and Callback handling # ----------------------------------------------------------------------- -# $Id: rc.py 11845 2011-03-04 09:51:55Z adam $ +# $Id: rc.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -29,6 +29,8 @@ This module is thread safe """ +import logging +logger = logging.getLogger("freevo.rc") import os import copy @@ -184,30 +186,40 @@ import struct import subprocess import sys - + self.pipe = os.pipe() self.wire_format = struct.Struct('d30p') - self.input = subprocess.Popen([sys.executable, os.path.join(os.environ['FREEVO_HELPERS'],'inputhelper.py')], - stdin=subprocess.PIPE, stderr=subprocess.PIPE) + self.input = subprocess.Popen([sys.executable, os.path.join(os.environ['FREEVO_HELPERS'],'inputhelper.py'), + str(self.pipe[1])], + stdin=subprocess.PIPE) self.monitor = kaa.IOMonitor(self._handle_input) - self.monitor.register(self.input.stderr) + self.monitor.register(self.pipe[0]) def _handle_input(self): """ Handle input events from input helper over stderr """ - data = self.input.stderr.read(self.wire_format.size) - t, key = self.wire_format.unpack(data) - if time.time() - t < 0.5: - self.rc.post_key(key) + data = os.read(self.pipe[0], self.wire_format.size) + if data: + t, key = self.wire_format.unpack(data) + if time.time() - t < 0.5: + self.rc.post_key(key) + else: + self.input = None + def __send_cmd(self, cmd): """ Send a command to the input helper """ - self.input.stdin.write(cmd + '\n') + try: + if self.input: + self.input.stdin.write(cmd + '\n') + except: + pass + def suspend(self): """ @@ -228,6 +240,7 @@ Shutdown the helper """ self.__send_cmd('quit') + self.input.wait() # -------------------------------------------------------------------------------- diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/rssperiodic.py svn/src/rssperiodic.py --- freevo-1.9.2b2~upstream/src/rssperiodic.py 2009-05-17 15:25:03.000000000 +0200 +++ svn/src/rssperiodic.py 2011-11-19 18:31:29.161811139 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # This is the Freevo RSS feed module # ----------------------------------------------------------------------- -# $Id: rssperiodic.py 11525 2009-05-17 13:25:03Z duncan $ +# $Id: rssperiodic.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -27,6 +27,8 @@ """ RSS feed module feed grabber """ +import logging +logger = logging.getLogger("freevo.rssperiodic") import re, os, sys, glob, urllib, datetime, time, shutil from subprocess import Popen diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/skin/__init__.py svn/src/skin/__init__.py --- freevo-1.9.2b2~upstream/src/skin/__init__.py 2011-01-09 22:52:30.000000000 +0100 +++ svn/src/skin/__init__.py 2011-11-19 18:31:28.933319044 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # This is the Freevo top-level skin code. # ----------------------------------------------------------------------- -# $Id: __init__.py 11781 2011-01-09 21:52:30Z adam $ +# $Id: __init__.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -39,6 +39,8 @@ get_singleton() returns an initialized skin object which is kept unique and consistent throughout. """ +import logging +logger = logging.getLogger("freevo.skin") import plugin import config diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/skin/widgets/scrollabletext_screen.py svn/src/skin/widgets/scrollabletext_screen.py --- freevo-1.9.2b2~upstream/src/skin/widgets/scrollabletext_screen.py 2011-01-12 21:25:32.000000000 +0100 +++ svn/src/skin/widgets/scrollabletext_screen.py 2011-11-19 18:31:28.929311303 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # scrollabletext_screen.py - A widget to handle scrollable text. # ----------------------------------------------------------------------- -# $Id: scrollabletext_screen.py 11788 2011-01-12 20:25:32Z adam $ +# $Id: scrollabletext_screen.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -28,6 +28,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.skin.widgets.scrollabletext_screen") import rc from event import * diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/skins/main/area.py svn/src/skins/main/area.py --- freevo-1.9.2b2~upstream/src/skins/main/area.py 2009-04-11 16:58:01.000000000 +0200 +++ svn/src/skins/main/area.py 2011-11-19 18:31:27.133816840 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # An area for the Freevo skin # ----------------------------------------------------------------------- -# $Id: area.py 11408 2009-04-11 14:58:01Z duncan $ +# $Id: area.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -45,6 +45,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.skins.main.area") import copy diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/skins/main/listing_area.py svn/src/skins/main/listing_area.py --- freevo-1.9.2b2~upstream/src/skins/main/listing_area.py 2010-12-11 23:35:50.000000000 +0100 +++ svn/src/skins/main/listing_area.py 2011-11-19 18:31:27.133816840 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # listing_area.py - A listing area for the Freevo skin # ----------------------------------------------------------------------- -# $Id: listing_area.py 11763 2010-12-11 22:35:50Z adam $ +# $Id: listing_area.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.skins.main.listing_area") import copy diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/skins/main/main.py svn/src/skins/main/main.py --- freevo-1.9.2b2~upstream/src/skins/main/main.py 2011-02-07 21:24:24.000000000 +0100 +++ svn/src/skins/main/main.py 2011-11-19 18:31:27.133816840 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Freevo default skin # ----------------------------------------------------------------------- -# $Id: main.py 11819 2011-02-07 20:24:24Z adam $ +# $Id: main.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -27,6 +27,8 @@ """ Freevo default skin """ +import logging +logger = logging.getLogger("freevo.skins.main.main") import os, copy import stat diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/skins/main/screen.py svn/src/skins/main/screen.py --- freevo-1.9.2b2~upstream/src/skins/main/screen.py 2009-05-10 18:10:00.000000000 +0200 +++ svn/src/skins/main/screen.py 2011-11-19 18:31:27.133816840 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # The screen for the Freevo areas to draw on # ----------------------------------------------------------------------- -# $Id: screen.py 11490 2009-05-10 16:10:00Z duncan $ +# $Id: screen.py 11905 2011-11-14 21:54:46Z adam $ # # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework @@ -24,6 +24,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.skins.main.screen") import config diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/skins/main/skin_utils.py svn/src/skins/main/skin_utils.py --- freevo-1.9.2b2~upstream/src/skins/main/skin_utils.py 2011-01-16 22:45:11.000000000 +0100 +++ svn/src/skins/main/skin_utils.py 2011-11-19 18:31:27.137816549 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Some utils for the skin # ----------------------------------------------------------------------- -# $Id: skin_utils.py 11793 2011-01-16 21:45:11Z adam $ +# $Id: skin_utils.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -31,6 +31,8 @@ """ Some utils for the skin """ +import logging +logger = logging.getLogger("freevo.skins.main.skin_utils") import config import pygame diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/skins/main/xml_skin.py svn/src/skins/main/xml_skin.py --- freevo-1.9.2b2~upstream/src/skins/main/xml_skin.py 2010-11-13 23:06:41.000000000 +0100 +++ svn/src/skins/main/xml_skin.py 2011-11-19 18:31:27.137816549 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # XML reader for the skin # ----------------------------------------------------------------------- -# $Id: xml_skin.py 11729 2010-11-13 22:06:41Z adam $ +# $Id: xml_skin.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.skins.main.xml_skin") # some python stuff diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/skins/osd/skin.py svn/src/skins/osd/skin.py --- freevo-1.9.2b2~upstream/src/skins/osd/skin.py 2010-11-02 14:19:20.000000000 +0100 +++ svn/src/skins/osd/skin.py 2011-11-19 18:31:27.177311627 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # dialog definition and rendering module for livepause osd # ----------------------------------------------------------------------- -# $Id: skin.py 11709 2010-11-02 13:19:20Z adam $ +# $Id: skin.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -30,6 +30,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- */ +import logging +logger = logging.getLogger("freevo.skins.osd.skin") import os.path import traceback @@ -40,7 +42,7 @@ from time import strftime from kaa import imlib2 -from util import vfs, objectcache +from util import vfs, objectcache, webcache widget_styles = {} definitions = {} @@ -638,7 +640,12 @@ # Finally load the image and scale it as required. if not image: - image = imlib2.open(filename) + if filename.startswith('http://') or filename.startswith('https://'): + fp = webcache.get_default_cache().get(filename) + image = imlib2.open_from_memory(fp.read()) + fp.close() + else: + image = imlib2.open(filename) w = image.width h = image.height src_size = (image.width, image.height) @@ -690,6 +697,10 @@ def find_image(filename): _debug_('Looking for %s (icontheme %s)' % (filename, icontheme), 2) + + if filename.startswith('http://') or filename.startswith('https://'): + return filename + if icontheme: dirs = [os.path.join(config.IMAGE_DIR, 'osd', icontheme), os.path.join(config.ICON_DIR, 'osd', icontheme)] diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/skins/osd/xml.py svn/src/skins/osd/xml.py --- freevo-1.9.2b2~upstream/src/skins/osd/xml.py 2010-11-02 14:19:20.000000000 +0100 +++ svn/src/skins/osd/xml.py 2011-11-19 18:31:27.177311627 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # xml dialog definition module for livepause osd # ----------------------------------------------------------------------- -# $Id: xml.py 11709 2010-11-02 13:19:20Z adam $ +# $Id: xml.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -30,6 +30,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- */ +import logging +logger = logging.getLogger("freevo.skins.osd.xml") import config import os.path diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/channels.py svn/src/tv/channels.py --- freevo-1.9.2b2~upstream/src/tv/channels.py 2009-05-02 09:59:05.000000000 +0200 +++ svn/src/tv/channels.py 2011-11-19 18:31:28.845811526 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Freevo module to handle channel changing. # ----------------------------------------------------------------------- -# $Id: channels.py 11461 2009-05-02 07:59:05Z duncan $ +# $Id: channels.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.channels") import threading diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/edit_favorite.py svn/src/tv/edit_favorite.py --- freevo-1.9.2b2~upstream/src/tv/edit_favorite.py 2008-05-11 12:50:48.000000000 +0200 +++ svn/src/tv/edit_favorite.py 2011-11-19 18:31:28.853811434 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Edit TV favorite recordings # ----------------------------------------------------------------------- -# $Id: edit_favorite.py 10716 2008-05-11 10:50:48Z duncan $ +# $Id: edit_favorite.py 11905 2011-11-14 21:54:46Z adam $ # # Todo: # Notes: @@ -28,6 +28,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ---------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.edit_favorite") from time import gmtime, strftime diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/epg_types.py svn/src/tv/epg_types.py --- freevo-1.9.2b2~upstream/src/tv/epg_types.py 2009-04-11 13:33:58.000000000 +0200 +++ svn/src/tv/epg_types.py 2011-11-19 18:31:28.845811526 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Types for the Freevo Electronic Program Guide module. # ----------------------------------------------------------------------- -# $Id: epg_types.py 11393 2009-04-11 11:33:58Z duncan $ +# $Id: epg_types.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.epg_types") import sys diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/epg_xmltv.py svn/src/tv/epg_xmltv.py --- freevo-1.9.2b2~upstream/src/tv/epg_xmltv.py 2010-11-25 23:39:28.000000000 +0100 +++ svn/src/tv/epg_xmltv.py 2011-11-19 18:31:28.849811305 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # epg_xmltv.py - Freevo Electronic Program Guide module for XMLTV # ----------------------------------------------------------------------- -# $Id: epg_xmltv.py 11749 2010-11-25 22:39:28Z adam $ +# $Id: epg_xmltv.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.epg_xmltv") import sys diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/favoriteitem.py svn/src/tv/favoriteitem.py --- freevo-1.9.2b2~upstream/src/tv/favoriteitem.py 2011-02-06 22:23:07.000000000 +0100 +++ svn/src/tv/favoriteitem.py 2011-11-19 18:31:28.845811526 +0100 @@ -28,6 +28,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ---------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.favoriteitem") import time import menu, config, osd diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/ivtv.py svn/src/tv/ivtv.py --- freevo-1.9.2b2~upstream/src/tv/ivtv.py 2009-06-23 20:18:05.000000000 +0200 +++ svn/src/tv/ivtv.py 2011-11-19 18:31:28.841811467 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Python interface to ivtv based capture cards. # ----------------------------------------------------------------------- -# $Id: ivtv.py 11601 2009-06-23 18:18:05Z duncan $ +# $Id: ivtv.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: http://ivtv.sf.net # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.ivtv") import string, struct, fcntl, time diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/dvbstreamer/manager.py svn/src/tv/plugins/dvbstreamer/manager.py --- freevo-1.9.2b2~upstream/src/tv/plugins/dvbstreamer/manager.py 2011-01-24 21:12:41.000000000 +0100 +++ svn/src/tv/plugins/dvbstreamer/manager.py 2011-11-19 18:31:28.709316816 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # manager.py - the Freevo DVBStreamer module for tv # ----------------------------------------------------------------------- -# $Id: manager.py 11809 2011-01-24 20:12:41Z adam $ +# $Id: manager.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -29,6 +29,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- */ +import logging +logger = logging.getLogger("freevo.tv.plugins.dvbstreamer.manager") from tv.plugins.dvbstreamer import comms class DVBStreamerManager: diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/dvbstreamer/record.py svn/src/tv/plugins/dvbstreamer/record.py --- freevo-1.9.2b2~upstream/src/tv/plugins/dvbstreamer/record.py 2008-08-27 20:07:52.000000000 +0200 +++ svn/src/tv/plugins/dvbstreamer/record.py 2011-11-19 18:31:28.709316816 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # record.py - the Freevo DVBStreamer Recording module for tv # ----------------------------------------------------------------------- -# $Id: record.py 10963 2008-08-27 18:07:52Z duncan $ +# $Id: record.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -31,6 +31,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- */ +import logging +logger = logging.getLogger("freevo.tv.plugins.dvbstreamer.record") import time diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/freeboxtv.py svn/src/tv/plugins/freeboxtv.py --- freevo-1.9.2b2~upstream/src/tv/plugins/freeboxtv.py 2008-07-19 22:43:20.000000000 +0200 +++ svn/src/tv/plugins/freeboxtv.py 2011-11-04 20:40:06.005955881 +0100 @@ -111,7 +111,7 @@ # if no locations were found, add a menu entry indicating that if not chaines_items: - nolocation = menu.MenuItem(_('No locations specified'), menuw.goto_prev_page, 0) + nolocation = menu.MenuItem(_('No locations specified'), menuw.back_one_menu, 0) chaines_items.append( nolocation ) # create menu diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/generic_record.py svn/src/tv/plugins/generic_record.py --- freevo-1.9.2b2~upstream/src/tv/plugins/generic_record.py 2009-04-11 14:42:12.000000000 +0200 +++ svn/src/tv/plugins/generic_record.py 2011-11-19 18:31:28.721316781 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # A plugin to record tv using VCR_CMD. # ----------------------------------------------------------------------- -# $Id: generic_record.py 11402 2009-04-11 12:42:12Z duncan $ +# $Id: generic_record.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.plugins.generic_record") import sys, string diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/iplayer.py svn/src/tv/plugins/iplayer.py --- freevo-1.9.2b2~upstream/src/tv/plugins/iplayer.py 2011-03-06 13:16:48.000000000 +0100 +++ svn/src/tv/plugins/iplayer.py 2011-11-19 18:31:28.717316514 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Plug-in to browse and view content using get_iplayer # ----------------------------------------------------------------------- -# $Id: iplayer.py 11852 2011-03-06 12:16:48Z adam $ +# $Id: iplayer.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -33,6 +33,8 @@ See http://www.infradead.org/get_iplayer/html/get_iplayer.html for details of get_iplayer. """ +import logging +logger = logging.getLogger("freevo.tv.plugins.iplayer") from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer import copy @@ -60,7 +62,7 @@ import kaa GIP_MAPPINGS = { - 'bbc tv': ('tv', _('BBC IPlayer')), + 'bbc tv': ('tv', _('BBC IPlayer ')), 'bbc radio': ('radio', _('BBC Radio listen again')), 'bbc podcast': ('podcast', _('BBC Podcasts')), } @@ -696,7 +698,7 @@ gip_type = elements[0] pid = elements[1] - cmd = (config.CONF.get_iplayer, + cmd = (GET_IPLAYER, '--pid', pid, '--type', gip_type, '--file-prefix', 'tmp_stream', @@ -960,7 +962,8 @@ else: line_cb(arg, line[:-1]) - process = kaa.Process('%s %s --type %s' % (GET_IPLAYER, cmd, gip_type)) + print 'CMD: %r' % cmd + process = kaa.Process('%s %s --type %s' % (GET_IPLAYER, cmd.encode('utf-8', 'ignore'), gip_type)) process.signals['readline'].connect(line_callback) ip = process.start() process.stdin.write('n\n') diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/ivtv_record.py svn/src/tv/plugins/ivtv_record.py --- freevo-1.9.2b2~upstream/src/tv/plugins/ivtv_record.py 2009-01-14 20:01:10.000000000 +0100 +++ svn/src/tv/plugins/ivtv_record.py 2011-11-19 18:31:28.725811731 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # A plugin to record tv using an ivtv based card. # ----------------------------------------------------------------------- -# $Id: ivtv_record.py 11249 2009-01-14 19:01:10Z duncan $ +# $Id: ivtv_record.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.plugins.ivtv_record") import sys, string diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/ivtv_xine_tv.py svn/src/tv/plugins/ivtv_xine_tv.py --- freevo-1.9.2b2~upstream/src/tv/plugins/ivtv_xine_tv.py 2009-05-02 09:59:05.000000000 +0200 +++ svn/src/tv/plugins/ivtv_xine_tv.py 2011-11-19 18:31:28.725811731 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Implementation of live tv timeshift for ivtv # ----------------------------------------------------------------------- -# $Id: ivtv_xine_tv.py 11461 2009-05-02 07:59:05Z duncan $ +# $Id: ivtv_xine_tv.py 11905 2011-11-14 21:54:46Z adam $ # # Author: # rvpaasen@t3i.nl (Richard van Paasen) @@ -32,6 +32,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.plugins.ivtv_xine_tv") import config @@ -279,7 +281,7 @@ __author_email__ = 'rvpaasen@t3i.nl' __maintainer__ = __author__ __maintainer_email__ = __author_email__ - __version__ = '$Revision: 11461 $' + __version__ = '$Revision: 11905 $' def __init__(self): plugin.Plugin.__init__(self) diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/livepause/__init__.py svn/src/tv/plugins/livepause/__init__.py --- freevo-1.9.2b2~upstream/src/tv/plugins/livepause/__init__.py 2010-12-18 22:59:12.000000000 +0100 +++ svn/src/tv/plugins/livepause/__init__.py 2011-11-19 18:31:28.629311388 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # the Freevo Live Pause module for tv # ----------------------------------------------------------------------- -# $Id: __init__.py 11770 2010-12-18 21:59:12Z adam $ +# $Id: __init__.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -29,6 +29,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- */ +import logging +logger = logging.getLogger("freevo.tv.plugins.livepause") import time import kaa diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/livepause/backend.py svn/src/tv/plugins/livepause/backend.py --- freevo-1.9.2b2~upstream/src/tv/plugins/livepause/backend.py 2010-11-02 14:40:14.000000000 +0100 +++ svn/src/tv/plugins/livepause/backend.py 2011-11-19 18:31:28.629311388 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # the Freevo Live Pause module for tv # ----------------------------------------------------------------------- -# $Id: backend.py 11711 2010-11-02 13:40:14Z adam $ +# $Id: backend.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -29,6 +29,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- */ +import logging +logger = logging.getLogger("freevo.tv.plugins.livepause.backend") import socket import sys import threading diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/livepause/controllers.py svn/src/tv/plugins/livepause/controllers.py --- freevo-1.9.2b2~upstream/src/tv/plugins/livepause/controllers.py 2009-06-23 20:26:34.000000000 +0200 +++ svn/src/tv/plugins/livepause/controllers.py 2011-11-19 18:31:28.629311388 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # controllers.py - the Freevo Live Pause module for tv # ----------------------------------------------------------------------- -# $Id: controllers.py 11602 2009-06-23 18:26:34Z duncan $ +# $Id: controllers.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -37,6 +37,8 @@ DVBStreamerController - Controls local or remote DVBStreamer instances. """ +import logging +logger = logging.getLogger("freevo.tv.plugins.livepause.controllers") import socket import os import traceback diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/livepause/players.py svn/src/tv/plugins/livepause/players.py --- freevo-1.9.2b2~upstream/src/tv/plugins/livepause/players.py 2010-12-01 19:53:24.000000000 +0100 +++ svn/src/tv/plugins/livepause/players.py 2011-11-19 18:31:28.629311388 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Freevo DVBStreamer module for tv # ----------------------------------------------------------------------- -# $Id: players.py 11754 2010-12-01 18:53:24Z adam $ +# $Id: players.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -38,6 +38,8 @@ MPlayer - Controls MPlayer via its rc interface. (Supports OSD Text) Vlc - Controls Vlc via its rc interface. (Supports OSD Text) """ +import logging +logger = logging.getLogger("freevo.tv.plugins.livepause.players") import re import threading diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/manual_record.py svn/src/tv/plugins/manual_record.py --- freevo-1.9.2b2~upstream/src/tv/plugins/manual_record.py 2009-05-07 19:30:15.000000000 +0200 +++ svn/src/tv/plugins/manual_record.py 2011-11-19 18:31:28.721316781 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # A plugin to manually record TV programs # ----------------------------------------------------------------------- -# $Id: manual_record.py 11478 2009-05-07 17:30:15Z duncan $ +# $Id: manual_record.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.plugins.manual_record") import calendar diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/mplayer.py svn/src/tv/plugins/mplayer.py --- freevo-1.9.2b2~upstream/src/tv/plugins/mplayer.py 2010-11-14 23:26:54.000000000 +0100 +++ svn/src/tv/plugins/mplayer.py 2011-11-19 18:31:28.721316781 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Plug-in to watch tv with mplayer. # ----------------------------------------------------------------------- -# $Id: mplayer.py 11732 2010-11-14 22:26:54Z adam $ +# $Id: mplayer.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.plugins.mplayer") import time, os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/recordings_manager.py svn/src/tv/plugins/recordings_manager.py --- freevo-1.9.2b2~upstream/src/tv/plugins/recordings_manager.py 2011-03-06 10:47:38.000000000 +0100 +++ svn/src/tv/plugins/recordings_manager.py 2011-11-19 18:31:28.717316514 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Plug-in to browse the TV recordings directory based on series # ----------------------------------------------------------------------- -# $Id: recordings_manager.py 11851 2011-03-06 09:47:38Z adam $ +# $Id: recordings_manager.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -34,6 +34,8 @@ are a member of a series are placed in a series menu and the menu placed at the top level. """ +import logging +logger = logging.getLogger("freevo.tv.plugins.recordings_manager") import os import os.path diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/remind.py svn/src/tv/plugins/remind.py --- freevo-1.9.2b2~upstream/src/tv/plugins/remind.py 2010-11-12 14:00:12.000000000 +0100 +++ svn/src/tv/plugins/remind.py 2011-11-19 18:31:28.725811731 +0100 @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.plugins.remind") import config import dialog diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/tvtime.py svn/src/tv/plugins/tvtime.py --- freevo-1.9.2b2~upstream/src/tv/plugins/tvtime.py 2009-05-02 09:59:05.000000000 +0200 +++ svn/src/tv/plugins/tvtime.py 2011-11-19 18:31:28.721316781 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Implementation of a TV function using tvtime # ----------------------------------------------------------------------- -# $Id: tvtime.py 11461 2009-05-02 07:59:05Z duncan $ +# $Id: tvtime.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.plugins.tvtime") # Configuration file. Determines where to look for AVI/MP3 files, etc diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/upsoon.py svn/src/tv/plugins/upsoon.py --- freevo-1.9.2b2~upstream/src/tv/plugins/upsoon.py 2009-02-01 13:06:55.000000000 +0100 +++ svn/src/tv/plugins/upsoon.py 2011-11-19 18:31:28.725811731 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Stop the playing and listening when something is upsoon # ----------------------------------------------------------------------- -# $Id: upsoon.py 11276 2009-02-01 12:06:55Z duncan $ +# $Id: upsoon.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # To activate, put the following line in local_conf.py: @@ -30,6 +30,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.plugins.upsoon") import config @@ -64,7 +66,7 @@ __author_email__ = 'duncan@freevo.org' __maintainer__ = __author__ __maintainer_email__ = __author_email__ - __version__ = '$Revision: 11276 $' + __version__ = '$Revision: 11905 $' def __init__(self, standalone=False): diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/vbi2srt_record.py svn/src/tv/plugins/vbi2srt_record.py --- freevo-1.9.2b2~upstream/src/tv/plugins/vbi2srt_record.py 2009-03-18 20:07:00.000000000 +0100 +++ svn/src/tv/plugins/vbi2srt_record.py 2011-11-19 18:31:28.713316945 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # A plugin to record tv and extract the subtitles # ----------------------------------------------------------------------- -# $Id: vbi2srt_record.py 11364 2009-03-18 19:07:00Z duncan $ +# $Id: vbi2srt_record.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -31,6 +31,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.plugins.vbi2srt_record") __author__ = "Duncan Webb " __doc__ = """ diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/view_favorites.py svn/src/tv/plugins/view_favorites.py --- freevo-1.9.2b2~upstream/src/tv/plugins/view_favorites.py 2010-11-21 10:19:43.000000000 +0100 +++ svn/src/tv/plugins/view_favorites.py 2011-11-19 18:31:28.717316514 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # A plugin to view your list of favorites. # ----------------------------------------------------------------------- -# $Id: view_favorites.py 11738 2010-11-21 09:19:43Z adam $ +# $Id: view_favorites.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.plugins.view_favorites") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/xawtv.py svn/src/tv/plugins/xawtv.py --- freevo-1.9.2b2~upstream/src/tv/plugins/xawtv.py 2009-05-02 09:59:05.000000000 +0200 +++ svn/src/tv/plugins/xawtv.py 2011-11-19 18:31:28.721316781 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # xawtv.py - use xawtv for tv viewing # ----------------------------------------------------------------------- -# $Id: xawtv.py 11461 2009-05-02 07:59:05Z duncan $ +# $Id: xawtv.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.plugins.xawtv") import config diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/plugins/xine.py svn/src/tv/plugins/xine.py --- freevo-1.9.2b2~upstream/src/tv/plugins/xine.py 2010-11-14 23:26:54.000000000 +0100 +++ svn/src/tv/plugins/xine.py 2011-11-19 18:31:28.717316514 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Plug-in to watch tv with xine. # ----------------------------------------------------------------------- -# $Id: xine.py 11732 2010-11-14 22:26:54Z adam $ +# $Id: xine.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -31,6 +31,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.plugins.xine") import time, os, re diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/programitem.py svn/src/tv/programitem.py --- freevo-1.9.2b2~upstream/src/tv/programitem.py 2010-11-12 14:00:12.000000000 +0100 +++ svn/src/tv/programitem.py 2011-11-19 18:31:28.853811434 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Information and actions for TV Programmes. # ----------------------------------------------------------------------- -# $Id: programitem.py 11726 2010-11-12 13:00:12Z adam $ +# $Id: programitem.py 11905 2011-11-14 21:54:46Z adam $ # # Todo: # Notes: @@ -28,6 +28,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ---------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.programitem") import time import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/record_client.py svn/src/tv/record_client.py --- freevo-1.9.2b2~upstream/src/tv/record_client.py 2010-07-19 23:38:23.000000000 +0200 +++ svn/src/tv/record_client.py 2011-11-19 18:31:28.849811305 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # A client interface to the Freevo recording server. # ----------------------------------------------------------------------- -# $Id: record_client.py 11677 2010-07-19 21:38:23Z adam $ +# $Id: record_client.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.record_client") import sys diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/record_types.py svn/src/tv/record_types.py --- freevo-1.9.2b2~upstream/src/tv/record_types.py 2011-02-06 22:23:07.000000000 +0100 +++ svn/src/tv/record_types.py 2011-11-19 18:31:28.845811526 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Some classes that are important to recording. # ----------------------------------------------------------------------- -# $Id: record_types.py 11814 2011-02-06 21:23:07Z adam $ +# $Id: record_types.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.record_types") import sys, time, os, string, codecs diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/tvguide.py svn/src/tv/tvguide.py --- freevo-1.9.2b2~upstream/src/tv/tvguide.py 2011-01-09 22:52:30.000000000 +0100 +++ svn/src/tv/tvguide.py 2011-11-19 18:31:28.849811305 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # This is the Freevo TV Guide module. # ----------------------------------------------------------------------- -# $Id: tvguide.py 11781 2011-01-09 21:52:30Z adam $ +# $Id: tvguide.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.tvguide") import os, time diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/v4l2.py svn/src/tv/v4l2.py --- freevo-1.9.2b2~upstream/src/tv/v4l2.py 2009-06-23 20:18:05.000000000 +0200 +++ svn/src/tv/v4l2.py 2011-11-19 18:31:28.853811434 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # V4L2 python interface. # ----------------------------------------------------------------------- -# $Id: v4l2.py 11601 2009-06-23 18:18:05Z duncan $ +# $Id: v4l2.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: http://bytesex.org/v4l/spec/ # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.v4l2") import string diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/tv/xmltv.py svn/src/tv/xmltv.py --- freevo-1.9.2b2~upstream/src/tv/xmltv.py 2008-05-11 12:50:48.000000000 +0200 +++ svn/src/tv/xmltv.py 2011-11-19 18:31:28.849811305 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Python interface to XMLTV format, based on XMLTV.pm # ----------------------------------------------------------------------- -# $Id: xmltv.py 10716 2008-05-11 10:50:48Z duncan $ +# $Id: xmltv.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -25,6 +25,8 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.tv.xmltv") # # If you have any trouble: jfunk@funktronics.ca diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/util/dbutil.py svn/src/util/dbutil.py --- freevo-1.9.2b2~upstream/src/util/dbutil.py 2009-03-22 17:35:14.000000000 +0100 +++ svn/src/util/dbutil.py 2011-11-19 18:31:29.137315547 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Sqlite database wrapper # ----------------------------------------------------------------------- -# $Id: dbutil.py 11371 2009-03-22 16:35:14Z duncan $ +# $Id: dbutil.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.util.dbutil") import os, traceback diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/util/extendedmeta.py svn/src/util/extendedmeta.py --- freevo-1.9.2b2~upstream/src/util/extendedmeta.py 2009-10-03 15:11:56.000000000 +0200 +++ svn/src/util/extendedmeta.py 2011-11-19 18:31:29.133312136 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Extended Metadata Reader/Cacher # ----------------------------------------------------------------------- -# $Id: extendedmeta.py 11631 2009-10-03 13:11:56Z duncan $ +# $Id: extendedmeta.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.util.extendedmeta") # The basics diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/util/fileops.py svn/src/util/fileops.py --- freevo-1.9.2b2~upstream/src/util/fileops.py 2011-02-16 13:28:31.000000000 +0100 +++ svn/src/util/fileops.py 2011-11-19 18:31:29.129312147 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Some File Operation Utilities # ----------------------------------------------------------------------- -# $Id: fileops.py 11833 2011-02-16 12:28:31Z adam $ +# $Id: fileops.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -27,6 +27,8 @@ """ Some File Operation Utilities """ +import logging +logger = logging.getLogger("freevo.util.fileops") import os import sys diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/util/fxdimdb.py svn/src/util/fxdimdb.py --- freevo-1.9.2b2~upstream/src/util/fxdimdb.py 2011-02-17 21:55:07.000000000 +0100 +++ svn/src/util/fxdimdb.py 2011-11-19 18:31:29.133312136 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # class and helpers for fxd/imdb generation # ----------------------------------------------------------------------- -# $Id: fxdimdb.py 11835 2011-02-17 20:55:07Z adam $ +# $Id: fxdimdb.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: see http://pintje.servebeer.com/fxdimdb.html for documentation, # Todo: @@ -29,6 +29,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.util.fxdimdb") # python has no data hiding, but this is the intended use... @@ -217,7 +219,7 @@ # We try to reduce the search result by filtering initial result for tv (mini) series only. results = self.imdb.search_movie(title) - print 'Found %s items' % len(results) + _debug_('Searched IMDB for %s, found %s items' % (title, len(results))) # if series we remove all non series objects to narrow down the search results if season and episode: @@ -486,9 +488,10 @@ self.info['year'] = self.get_year(movie, episode) self.info['rating'] = self.get_rating(movie, episode) self.info['plot'] = self.get_plot(movie, episode) - self.info['runtime'] = self.get_runtimes(movie, episode) self.info['mpaa'] = self.get_mpaa(movie) - #self.info['runtime'] = self.item['length:min'] + + if config.IMDB_USE_IMDB_RUNTIME: + self.info['runtime'] = self.get_runtimes(movie, episode) # try to retrieve movie poster urls, first from impawards.com, then from IMDB self.impawardsimages(movie['title'], self.info['year'], episode) diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/util/fxdparser.py svn/src/util/fxdparser.py --- freevo-1.9.2b2~upstream/src/util/fxdparser.py 2010-01-25 17:19:48.000000000 +0100 +++ svn/src/util/fxdparser.py 2011-11-19 18:31:29.129312147 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Parser for fxd files # ----------------------------------------------------------------------- -# $Id: fxdparser.py 11646 2010-01-25 16:19:48Z duncan $ +# $Id: fxdparser.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.util.fxdparser") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/util/httpserver.py svn/src/util/httpserver.py --- freevo-1.9.2b2~upstream/src/util/httpserver.py 1970-01-01 01:00:00.000000000 +0100 +++ svn/src/util/httpserver.py 2011-11-19 18:31:29.133312136 +0100 @@ -0,0 +1,331 @@ +# -*- coding: iso-8859-1 -*- +# ----------------------------------------------------------------------- +# Local HTTP Server +# ----------------------------------------------------------------------- +# $Id: youtube.py 11862 2011-08-07 11:56:13Z adam $ +# +# ----------------------------------------------------------------------- +# +# Freevo - A Home Theater PC framework +# Copyright (C) 2002 Krister Lagerstrom, et al. +# Please see the file freevo/Docs/CREDITS for a complete list of authors. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MER- +# CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.util.httpserver") + +from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer +from SocketServer import ThreadingMixIn + +import Queue +import re +import select +import socket +import threading +import traceback +import urlparse + +_local_server_singleton = None + +def get_local_server(): + global _local_server_singleton + if _local_server_singleton is None: + _local_server_singleton = LocalServer() + return _local_server_singleton + +class LocalServer(ThreadingMixIn, HTTPServer): + """ + Class to server files/data over http the to localhost only. + """ + def __init__(self): + HTTPServer.__init__(self, ('localhost', 0), RegExRequestHandler) + self.base_url = 'http://localhost:%d' % self.server_port + self.handlers = [] + self.register_handler('^http://.*$', proxy_handler) + self.stop = False + thread = threading.Thread(target=self.serve_forever) + thread.setDaemon(True) + thread.start() + + + def serve_forever(self): + """ + Start HTTP server and wait for connections. + """ + while not self.stop: + try: + self.handle_request() + except: + traceback.print_exc() + + + def shutdown(self): + """Shutdown the local HTTP server. + """ + self.stop = True + self.socket.close() + + + def register_handler(self, regex, handler): + """Register a handler callback for the specifed regular expression object. + The handler will be called with the BaseHTTPRequestHandler object and the match object from the regular + expression. + """ + self.handlers.insert(0, (re.compile(regex), handler)) + + + def unregister_handler(self, regex): + """Unregister the specified regular expression handler. + """ + for i in range(0,self.handlers): + if self.handers[i][0].pattern == regex: + del self.handlers[i] + break + + + def get_url(self, path): + """Returns the URL on the local server for the specified path. + """ + return self.base_url + path + +# +# Following code copied from TinyHTTPProxy +# +def proxy_handler(request): + (scm, netloc, path, params, query, fragment) = urlparse.urlparse( + request.path, 'http') + if scm!='http' or fragment or not netloc: + request.send_error(400, "bad url %s" % request.path) + return + soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + try: + if request.connect_to(netloc, soc): + soc.send("%s %s %s\r\n" % (request.command, + urlparse.urlunparse(('', '', path, + params, query, + '')), + request.request_version)) + request.headers['Connection'] = 'close' + del request.headers['Proxy-Connection'] + for key_val in request.headers.items(): + soc.send("%s: %s\r\n" % key_val) + soc.send("\r\n") + request.read_write(soc) + finally: + soc.close() + request.connection.close() + + + +class RegExRequestHandler(BaseHTTPRequestHandler): + """HTTP Request handler that matches regular expressions to handler callbacks. + """ + def do_GET(self): + if self.path.startswith(self.server.base_url): + self.path = self.path[len(self.server.base_url):] + handled = False + for regex, handler in self.server.handlers: + m = regex.match(self.path) + if m: + handled = True + try: + handler(self, *m.groups()) + except: + traceback.print_exc() + break + + if not handled: + self.send_error(404) + + do_HEAD = do_GET + do_POST = do_GET + do_PUT = do_GET + do_DELETE = do_GET + + + def connect_to(self, netloc, soc): + i = netloc.find(':') + if i >= 0: + host_port = netloc[:i], int(netloc[i+1:]) + else: + host_port = netloc, 80 + + try: + soc.connect(host_port) + except socket.error, arg: + try: + msg = arg[1] + except: + msg = arg + self.send_error(404, msg) + return 0 + return 1 + + def read_write(self, soc, max_idling=20, local=False): + iw = [self.connection, soc] + local_data = "" + ow = [] + count = 0 + while True: + count += 1 + (ins, _, exs) = select.select(iw, ow, iw, 1) + if exs: + break + if ins: + for i in ins: + if i is soc: + out = self.connection + else: + out = soc + data = i.recv(8192) + if data: + if local: + local_data += data + else: + out.send(data) + count = 0 + if count == max_idling: + break + if local: + return local_data + return None + + + def do_CONNECT(self): + soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + try: + if self.connect_to(self.path, soc): + self.log_request(200) + self.wfile.write(self.protocol_version + + " 200 Connection established\r\n") + self.wfile.write("Proxy-agent: %s\r\n" % self.version_string()) + self.wfile.write("\r\n") + self.read_write(soc, 300) + finally: + soc.close() + self.connection.close() + + def log_message(self, format, *args): + _debug_(format % args, 2) + + +class LongPollHandler(object): + """Class to make long polling handlers easier. + Simply creating a LongPollHandler object specifying the content type that will be returned by the handler then + register it with the local server instance. + + lphandler = QueuedLongPollHandler() + get_local_server().register_handler('^/longpolldemo$', lphandler) + + To send data to be picked up by the next request to the registered url simply append it to the lphandler. + + lphandler.append('Example data') + """ + def __init__(self, content_type='text/plain'): + self.queue = Queue.PriorityQueue() + self.lock = threading.Lock() + self.waiting_count = 0 + self.content_type = content_type + + + def __call__(self, request): + request.send_response(200) + request.send_header('mime-type', self.content_type) + request.end_headers() + request.request.settimeout(None) + self.lock.acquire() + self.waiting_count += 1 + data = self.queue.get()[1] + try: + request.wfile.write(data) + except: + queue.put((0,data)) + self.waiting_count -= 1 + self.lock.release() + + + def append(self, data): + self.queue.put((100, data)) + + + def shutdown(self): + for i in range(0, self.waiting_count): + self.queue.put((0,'')) + + +if __name__ == '__main__': + import sys + long_poll_html=""" + + +Long Poll Test + + + +

Unset
+ + +""" + def _debug_(text, l=0): + print text + + def html_handler(request): + request.send_response(200) + request.send_header('mime-type', 'text/html' ) + request.end_headers() + request.wfile.write(long_poll_html) + + + def handler(request, arg): + request.send_response(200) + request.send_header('mime-type', 'text/plain' ) + request.end_headers() + request.wfile.write('Got arg %s' % arg) + + s = get_local_server() + lphandler = LongPollHandler() + s.register_handler('^/(.*)$', handler) + s.register_handler('^/longpoll.html$', html_handler) + s.register_handler('^/longpollcmd', lphandler) + + print s.get_url('/') + + while True: + cmd = sys.stdin.readline() + if cmd.strip(): + lphandler.append(cmd) + else: + break + + lphandler.shutdown() + s.shutdown() diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/util/mediainfo.py svn/src/util/mediainfo.py --- freevo-1.9.2b2~upstream/src/util/mediainfo.py 2011-02-10 23:28:26.000000000 +0100 +++ svn/src/util/mediainfo.py 2011-11-19 18:31:29.129312147 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # media information for storage/parsing # ----------------------------------------------------------------------- -# $Id: mediainfo.py 11822 2011-02-10 22:28:26Z adam $ +# $Id: mediainfo.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.util.mediainfo") import os, stat diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/util/misc.py svn/src/util/misc.py --- freevo-1.9.2b2~upstream/src/util/misc.py 2010-12-07 11:09:19.000000000 +0100 +++ svn/src/util/misc.py 2011-11-19 18:31:29.125312159 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # util/misc.py - Some Misc Utilities # ----------------------------------------------------------------------- -# $Id: misc.py 11760 2010-12-07 10:09:19Z adam $ +# $Id: misc.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.util.misc") import string import glob diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/util/popen3.py svn/src/util/popen3.py --- freevo-1.9.2b2~upstream/src/util/popen3.py 2007-05-11 20:22:36.000000000 +0200 +++ svn/src/util/popen3.py 2011-11-19 18:31:29.133312136 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # util/popen3.py - popen2 warpper # ----------------------------------------------------------------------- -# $Id: popen3.py 9561 2007-05-11 18:22:36Z duncan $ +# $Id: popen3.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.util.popen3") import time diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/util/tv_util.py svn/src/util/tv_util.py --- freevo-1.9.2b2~upstream/src/util/tv_util.py 2007-12-16 18:44:08.000000000 +0100 +++ svn/src/util/tv_util.py 2011-11-19 18:31:29.137315547 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # util/tv.py - A module to make some tasks related to TV easier. # ----------------------------------------------------------------------- -# $Id: tv_util.py 10211 2007-12-16 17:44:08Z duncan $ +# $Id: tv_util.py 11905 2011-11-14 21:54:46Z adam $ # # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework @@ -24,6 +24,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.util.tv_util") import sys, string, re diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/util/udisks.py svn/src/util/udisks.py --- freevo-1.9.2b2~upstream/src/util/udisks.py 2010-09-17 13:40:43.000000000 +0200 +++ svn/src/util/udisks.py 2011-11-04 20:40:06.697955683 +0100 @@ -51,7 +51,6 @@ """ optical = [] for device_path in self.disks_iface.EnumerateDevices(): - device_proxy = bus.get_object(self.BUS, device_path) device = self.DEVICE_CLASS(device_path) if device.is_optical(): optical.append(device) @@ -64,7 +63,6 @@ """ removable = [] for device_path in self.disks_iface.EnumerateDevices(): - device_proxy = bus.get_object(self.BUS, device_path) device = self.DEVICE_CLASS(device_path) if device.is_removable() and not device.is_optical(): removable.append(device) diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/util/vfs.py svn/src/util/vfs.py --- freevo-1.9.2b2~upstream/src/util/vfs.py 2009-04-13 20:24:26.000000000 +0200 +++ svn/src/util/vfs.py 2011-11-19 18:31:29.129312147 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Virtual filesystem # ----------------------------------------------------------------------- -# $Id: vfs.py 11413 2009-04-13 18:24:26Z duncan $ +# $Id: vfs.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -33,6 +33,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.util.vfs") import os import copy diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/util/videothumb.py svn/src/util/videothumb.py --- freevo-1.9.2b2~upstream/src/util/videothumb.py 2011-01-08 00:06:16.000000000 +0100 +++ svn/src/util/videothumb.py 2011-11-19 18:31:29.133312136 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # videothumb - create a thumbnail for video files # ----------------------------------------------------------------------- -# $Id: videothumb.py 11780 2011-01-07 23:06:16Z adam $ +# $Id: videothumb.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: This is a bad hack. It creates a new process to make the # images with mplayer and than copy it to the location @@ -31,6 +31,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.util.videothumb") import sys, os, glob, shutil diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/util/webbrowser.py svn/src/util/webbrowser.py --- freevo-1.9.2b2~upstream/src/util/webbrowser.py 1970-01-01 01:00:00.000000000 +0100 +++ svn/src/util/webbrowser.py 2011-11-19 18:31:29.137315547 +0100 @@ -0,0 +1,171 @@ +# -*- coding: iso-8859-1 -*- +# ----------------------------------------------------------------------- +# Module for controlling a simple undecorated web browser. +# ----------------------------------------------------------------------- +# $Id: youtube.py 11862 2011-08-07 11:56:13Z adam $ +# +# ----------------------------------------------------------------------- +# +# Freevo - A Home Theater PC framework +# Copyright (C) 2002 Krister Lagerstrom, et al. +# Please see the file freevo/Docs/CREDITS for a complete list of authors. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MER- +# CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# ----------------------------------------------------------------------- +''' +Module for controlling a simple undecorated web browser. +''' +import logging +logger = logging.getLogger("freevo.util.webbrowser") +import config + +import json +import threading +import os.path + +from kaa.process import Process + +import event +from util.httpserver import get_local_server, LongPollHandler + +JSON_MIMETYPE= 'application/json' +JS_MIMETYPE = 'application/javascript' + +HTML_DIR = os.path.join(config.SHARE_DIR, 'html') + +_initial_url = None + +def start_web_browser(initial_url, exit_handler=None): + """ + Create a new instance of a web browser. + @param initial_url: Optional initial URL to be displayed. + """ + global _initial_url + _initial_url = initial_url + local_server = get_local_server() + proxy = 'localhost:%d' % local_server.server_port + start_url = 'http://freevo/wbinitial.html' + browser_process = Process([config.CHROME_PATH, '--app='+start_url, '--proxy-server=' + proxy]) + if exit_handler: + browser_process.signals['exited'].connect(exit_handler) + browser_process.start() + return browser_process + + +class WebIPC(object): + def __init__(self, server): + self.return_pending = False + self.return_event = threading.Event() + self.lphandler = LongPollHandler(JSON_MIMETYPE) + self.server = server + server.register_handler('^.*/freevo/ipc$', self.__ipc_handler) + server.register_handler('^.*/freevo/ipc.js$', self.__js_handler) + + + def __ipc_handler(self, request): + if request.command == 'POST': + self.__send_handler(request) + if request.command == 'GET': + self.lphandler(request) + else: + request.send_error(405) + + + def __js_handler(self, request): + request.send_response(200) + request.send_header('content-type', JS_MIMETYPE) + request.end_headers() + f = open(os.path.join(HTML_DIR, 'ipc.js')) + request.wfile.write(f.read()) + f.close() + + + def __send_handler(self, request): + l = int(request.headers.getheader('Content-Length')) + s = request.rfile.read(l) + try: + result = None + args = json.loads(s) + if args['cmd'] == 'return': + if self.return_pending: + self.return_pending = False + self.return_result = args.get('data') + self.return_event.set() + else: + _debug_('Unexpected return!') + elif args['cmd'] == 'event': + event.Event('WEB_IPC', args['data']).post() + else: + _debug_('Unexpected ') + + if result is None: + result = {} + + request.send_response(200) + request.send_header('content-type', JSON_MIMETYPE) + request.end_headers() + json.dump(result, request.wfile) + except: + request.send_error(500) + + + def __calljs(self, js): + self.return_pending = True + self.lphandler.append(json.dumps({'cmd':js})) + self.return_event.wait(10.0) + self.return_event.clear() + return self.return_result + + + def __getattr__(self, item): + return JSObject(self.__calljs, None, item) + + +class JSObject(object): + def __init__(self, ipc, parent, name): + self.ipc = ipc + self.parent = parent + self.name = name + + + def __getattr__(self, item): + return JSObject(self.ipc, self, item) + + + def __call__(self, *args, **kwargs): + n = self.name + p = self.parent + while p is not None: + n = p.name + '.' + n + p = p.parent + return self.ipc('%s(%s)' % (n, json.dumps(args)[1:-1])) + + +def _get_initial_HTML(request): + f = open(os.path.join(HTML_DIR, 'wbinitial.html')) + initial_html = f.read() + f.close() + html = initial_html % (config.CONF.width, config.CONF.height, config.CONF.x, config.CONF.y, _initial_url) + request.send_response(200) + request.send_header('content-type', 'text/html') + request.send_header('content-length', str(len(html))) + request.end_headers() + request.wfile.write(html) + + +get_local_server().register_handler('^http://freevo/wbinitial.html$', _get_initial_HTML) + +ipc = WebIPC(get_local_server()) \ No newline at end of file diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/version.py svn/src/version.py --- freevo-1.9.2b2~upstream/src/version.py 2011-03-06 21:20:17.000000000 +0100 +++ svn/src/version.py 2010-01-23 20:06:12.393259675 +0100 @@ -1,7 +1,7 @@ """ Freevo Version number """ -__version__ = '1.9.2b2' +__version__ = '1.9.2-svn' runtime = '0.3.1' mmpython = '0.4.10' diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/__init__.py svn/src/video/__init__.py --- freevo-1.9.2b2~upstream/src/video/__init__.py 2009-04-02 18:16:35.000000000 +0200 +++ svn/src/video/__init__.py 2011-11-19 18:31:27.985822956 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # __init__.py - interface between mediamenu and video # ----------------------------------------------------------------------- -# $Id: __init__.py 11379 2009-04-02 16:16:35Z duncan $ +# $Id: __init__.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -27,6 +27,8 @@ """ Interface between media menu and video items. """ +import logging +logger = logging.getLogger("freevo.video") import os import copy diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/commdetectclient.py svn/src/video/commdetectclient.py --- freevo-1.9.2b2~upstream/src/video/commdetectclient.py 2008-05-31 18:14:43.000000000 +0200 +++ svn/src/video/commdetectclient.py 2011-11-19 18:31:27.989311502 +0100 @@ -3,7 +3,7 @@ # ----------------------------------------------------------------------- # A client interface to the commercial detecting server. # ----------------------------------------------------------------------- -# $Id: commdetectclient.py 10790 2008-05-31 16:14:43Z duncan $ +# $Id: commdetectclient.py 11905 2011-11-14 21:54:46Z adam $ # # Author: Justin Wetherell # @@ -34,6 +34,8 @@ """ A client interface to the commercial detecting server. """ +import logging +logger = logging.getLogger("freevo.video.commdetectclient") import xmlrpclib, sys from util.marmalade import jellyToXML, unjellyFromXML diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/encodingclient.py svn/src/video/encodingclient.py --- freevo-1.9.2b2~upstream/src/video/encodingclient.py 2009-03-31 18:06:58.000000000 +0200 +++ svn/src/video/encodingclient.py 2011-11-19 18:31:27.989311502 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # A client interface to the Freevo encoding server. # ----------------------------------------------------------------------- -# $Id: encodingclient.py 11375 2009-03-31 16:06:58Z duncan $ +# $Id: encodingclient.py 11905 2011-11-14 21:54:46Z adam $ # # Author: den_RDC # Notes: parts taken from encodingclient @@ -28,6 +28,8 @@ """ A client interface to the Freevo encoding server. """ +import logging +logger = logging.getLogger("freevo.video.encodingclient") import sys @@ -38,7 +40,7 @@ #some data __author__ = "den_RDC (rdc@kokosnoot.com)" -__revision__ = "$Rev: 11375 $" +__revision__ = "$Rev: 11905 $" __copyright__ = "Copyright (C) 2004 den_RDC" __license__ = "GPL" __doc__="""EncodingClient, an interface to EncodingServer diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/fxdhandler.py svn/src/video/fxdhandler.py --- freevo-1.9.2b2~upstream/src/video/fxdhandler.py 2010-07-21 22:21:57.000000000 +0200 +++ svn/src/video/fxdhandler.py 2011-11-19 18:31:27.989311502 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Handler for and tags in a fxd file # ----------------------------------------------------------------------- -# $Id: fxdhandler.py 11678 2010-07-21 20:21:57Z adam $ +# $Id: fxdhandler.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -31,6 +31,8 @@ """ Handle FXD (Freevo Extended Data) files. """ +import logging +logger = logging.getLogger("freevo.video.fxdhandler") from videoitem import VideoItem from item import FileInformation diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/applelib.py svn/src/video/plugins/applelib.py --- freevo-1.9.2b2~upstream/src/video/plugins/applelib.py 2010-12-16 00:50:54.000000000 +0100 +++ svn/src/video/plugins/applelib.py 2011-11-04 20:40:05.513954855 +0100 @@ -35,6 +35,7 @@ import time import datetime import urllib +import config class Trailer: def __init__(self, element): @@ -85,12 +86,36 @@ elif ch.tag == 'releasedate': if ch.text is not None: - t = time.strptime(ch.text, '%Y-%m-%d') + + t = None + date = config.APPLETRAILERS_DATE_FORMAT + try: + t = time.strptime(ch.text, date) + except ValueError: + date = config.APPLETRAILERS_ALT_DATE_FORMAT + try: + t = time.strptime(ch.text, date) + except ValueError: + traceback.print_exc() + return + self.release_date = datetime.date(t.tm_year, t.tm_mon, t.tm_mday) elif ch.tag == 'postdate': if ch.text is not None: - t = time.strptime(ch.text, '%Y-%m-%d') + + t = None + date = config.APPLETRAILERS_DATE_FORMAT + try: + t = time.strptime(ch.text, date) + except ValueError: + date = config.APPLETRAILERS_ALT_DATE_FORMAT + try: + t = time.strptime(ch.text, date) + except ValueError: + traceback.print_exc() + return + self.post_date = datetime.date(t.tm_year, t.tm_mon, t.tm_mday) def __parse_cast(self, element): @@ -195,7 +220,7 @@ return False if __name__ == '__main__': - a = Trailers('720p') + a = Trailers(config.APPLETRAILERS_RESOLUTION) for studio,trailers in a.studios.items(): print '[Studio] %s' % studio for t in trailers: diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/appletrailers.py svn/src/video/plugins/appletrailers.py --- freevo-1.9.2b2~upstream/src/video/plugins/appletrailers.py 2011-03-01 18:18:08.000000000 +0100 +++ svn/src/video/plugins/appletrailers.py 2011-11-19 18:31:27.873311406 +0100 @@ -26,6 +26,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.video.plugins.appletrailers") import os import urllib @@ -91,8 +93,11 @@ '', 'Selects the resolution of the trailers, options are \'\'(Default) for 640p, \'480p\' and \'720p\'' ), ('APPLETRAILERS_DATE_FORMAT', + '%Y-%m-%d', + 'How to format the release date of a film'), + ('APPLETRAILERS_ALT_DATE_FORMAT', '%y-%m-%d', - 'How to format the release date of a film')] + 'Alternate date format, some trailes have this format date')] def items(self, parent): return [ BrowseMainMenu(parent) ] @@ -201,19 +206,23 @@ def download_trailers(self): pfile = os.path.join(cachedir, 'trailers.pickle') + if os.path.isfile(pfile): self.trailers = util.fileops.read_pickle(pfile) + _debug_('Cache file present %s' % pfile, 2) s = os.stat(pfile) if self.trailers.resolution == config.APPLETRAILERS_RESOLUTION or \ (time.time() - s.st_mtime) > (60*60): # Over an hour ago + _debug_('Resolution changed or cache expired, updating feed ...', 2) self.trailers.update_feed() else: + _debug_('Cache invalid, updating ...', 2) self.trailers = None else: old_posters = set() - if self.trailers is None: + _debug_('Downloading trailers ...', 2) self.trailers = applelib.Trailers(config.APPLETRAILERS_RESOLUTION) util.fileops.save_pickle(self.trailers, pfile) diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/bilingual.py svn/src/video/plugins/bilingual.py --- freevo-1.9.2b2~upstream/src/video/plugins/bilingual.py 2008-11-16 18:55:40.000000000 +0100 +++ svn/src/video/plugins/bilingual.py 2011-11-19 18:31:27.869311697 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # A plugin to add options to play bilingual recordings. # ----------------------------------------------------------------------- -# $Id: bilingual.py 11169 2008-11-16 17:55:40Z duncan $ +# $Id: bilingual.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # ToDo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.video.plugins.bilingual") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/bmovl.py svn/src/video/plugins/bmovl.py --- freevo-1.9.2b2~upstream/src/video/plugins/bmovl.py 2009-05-09 17:03:04.000000000 +0200 +++ svn/src/video/plugins/bmovl.py 2011-11-19 18:31:27.865311289 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # bmovl plugin for Freevo MPlayer module for video # ----------------------------------------------------------------------- -# $Id: bmovl.py 11484 2009-05-09 15:03:04Z duncan $ +# $Id: bmovl.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.video.plugins.bmovl") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/bookmarker.py svn/src/video/plugins/bookmarker.py --- freevo-1.9.2b2~upstream/src/video/plugins/bookmarker.py 2010-11-09 00:37:31.000000000 +0100 +++ svn/src/video/plugins/bookmarker.py 2011-11-19 18:31:27.857315502 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # bookmarker.py - Plugin to handle bookmarking # ----------------------------------------------------------------------- -# $Id: bookmarker.py 11719 2010-11-08 23:37:31Z adam $ +# $Id: bookmarker.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # 1. while watching a movie file, hit the 'record' button and it'll save a @@ -38,6 +38,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.video.plugins.bookmarker") import os, time, copy diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/dvdbackup.py svn/src/video/plugins/dvdbackup.py --- freevo-1.9.2b2~upstream/src/video/plugins/dvdbackup.py 2009-05-14 21:56:37.000000000 +0200 +++ svn/src/video/plugins/dvdbackup.py 2011-11-19 18:31:27.861311370 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Plug-in for encoding DVD's with the EncodingServer # ----------------------------------------------------------------------- -# $Id: dvdbackup.py 11508 2009-05-14 19:56:37Z duncan $ +# $Id: dvdbackup.py 11905 2011-11-14 21:54:46Z adam $ # # Author: # Todo: @@ -24,6 +24,8 @@ # with this program; if not, write to the Free Software Foundation # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.video.plugins.dvdbackup") #Import statements from os.path import join, split diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/fillscreen.py svn/src/video/plugins/fillscreen.py --- freevo-1.9.2b2~upstream/src/video/plugins/fillscreen.py 2009-05-31 15:33:51.000000000 +0200 +++ svn/src/video/plugins/fillscreen.py 2011-11-19 18:31:27.869311697 +0100 @@ -41,6 +41,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.video.plugins.fillscreen") import menu import config diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/filmaffinity.py svn/src/video/plugins/filmaffinity.py --- freevo-1.9.2b2~upstream/src/video/plugins/filmaffinity.py 2010-03-14 17:19:55.000000000 +0100 +++ svn/src/video/plugins/filmaffinity.py 2011-11-19 18:31:27.873311406 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Plugin for FILMAFFINITY support # ----------------------------------------------------------------------- -# $Id: filmaffinity.py 11662 2010-03-14 16:19:55Z duncan $ +# $Id: filmaffinity.py 11905 2011-11-14 21:54:46Z adam $ # Version: 080607_01 # # Notes: FilmAffinity plugin. You can add FilmAffinity.com informations for video items @@ -43,6 +43,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- */ +import logging +logger = logging.getLogger("freevo.video.plugins.filmaffinity") import re import socket diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/fxdarchive.py svn/src/video/plugins/fxdarchive.py --- freevo-1.9.2b2~upstream/src/video/plugins/fxdarchive.py 2009-05-16 20:10:55.000000000 +0200 +++ svn/src/video/plugins/fxdarchive.py 2011-11-19 18:31:27.873311406 +0100 @@ -25,6 +25,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.video.plugins.fxdarchive") __author__ = "Christian Lyra" __version__ = "0.1" diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/imdb.py svn/src/video/plugins/imdb.py --- freevo-1.9.2b2~upstream/src/video/plugins/imdb.py 2010-12-05 21:41:53.000000000 +0100 +++ svn/src/video/plugins/imdb.py 2011-11-19 18:31:27.865311289 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Plug-in for IMDB support # ----------------------------------------------------------------------- -# $Id: imdb.py 11759 2010-12-05 20:41:53Z adam $ +# $Id: imdb.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: IMDB plugin. You can add IMDB information for video items # with the plugin @@ -33,6 +33,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.video.plugins.imdb") # based on original implementation by 'den_RDC (rdc@kokosnoot.com)' __author__ = 'den_RDC (rdc@kokosnoot.com)' @@ -220,7 +222,7 @@ box.show() try: - self.fxd.retrieveImdbData(arg[0]) + self.fxd.retrieveImdbData(arg[0], self.fxd.ctitle[1], self.fxd.ctitle[2]) except FxdImdb_Error, error: _debug_('%s' % (error,), DWARNING) diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/mover.py svn/src/video/plugins/mover.py --- freevo-1.9.2b2~upstream/src/video/plugins/mover.py 2007-10-18 17:31:31.000000000 +0200 +++ svn/src/video/plugins/mover.py 2011-11-19 18:31:27.869311697 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # mover.py - Example item plugin # ----------------------------------------------------------------------- -# $Id: mover.py 9999 2007-10-18 15:31:31Z duncan $ +# $Id: mover.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: This is an example how plugins work. This plugin add a move action # to movie items in a given directory to move the item to a second @@ -30,6 +30,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.video.plugins.mover") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/mplayer.py svn/src/video/plugins/mplayer.py --- freevo-1.9.2b2~upstream/src/video/plugins/mplayer.py 2010-12-10 18:55:00.000000000 +0100 +++ svn/src/video/plugins/mplayer.py 2011-11-19 18:31:27.861311370 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Freevo video module for MPlayer # ----------------------------------------------------------------------- -# $Id: mplayer.py 11762 2010-12-10 17:55:00Z adam $ +# $Id: mplayer.py 11905 2011-11-14 21:54:46Z adam $ # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002 Krister Lagerstrom, et al. @@ -27,6 +27,8 @@ """ Freevo video module for MPlayer """ +import logging +logger = logging.getLogger("freevo.video.plugins.mplayer") import os, re import threading @@ -393,6 +395,7 @@ rc.add_app(self) self.app = MPlayerApp(command, self) dialog.enable_overlay_display(AppTextDisplay(self.show_message)) + self.play_state_dialog = None return None @@ -413,6 +416,7 @@ rc.remove_app(self) dialog.disable_overlay_display() self.app = None + self.play_state_dialog = None def eventhandler(self, event, menuw=None): @@ -476,10 +480,14 @@ if event == TOGGLE_OSD: if dialog.is_dialog_supported(): - if self.paused: - dialog.show_play_state(dialog.PLAY_STATE_INFO, self.item, self.get_stored_time_info) + if self.play_state_dialog is None: + if self.paused: + self.play_state_dialog = dialog.show_play_state(dialog.PLAY_STATE_INFO, self.item, self.get_stored_time_info) + else: + self.play_state_dialog = dialog.show_play_state(dialog.PLAY_STATE_INFO, self.item, self.get_time_info) else: - dialog.show_play_state(dialog.PLAY_STATE_INFO, self.item, self.get_time_info) + self.play_state_dialog.hide() + self.play_state_dialog = None else: self.paused = False self.app.write('osd\n') @@ -491,11 +499,11 @@ # otherwise the act of requesting the current position resumes playback! if self.paused: self.stored_time_info = self.get_time_info() - dialog.show_play_state(dialog.PLAY_STATE_PAUSE, self.item, self.get_stored_time_info) + self.play_state_dialog = dialog.show_play_state(dialog.PLAY_STATE_PAUSE, self.item, self.get_stored_time_info) self.app.write('pause\n') else: self.app.write('speed_set 1.0\n') - dialog.show_play_state(dialog.PLAY_STATE_PLAY, self.item, self.get_time_info) + self.play_state_dialog = dialog.show_play_state(dialog.PLAY_STATE_PLAY, self.item, self.get_time_info) return True @@ -530,9 +538,9 @@ self.paused = False self.app.write('seek %s\n' % event.arg) if event.arg > 0: - dialog.show_play_state(dialog.PLAY_STATE_SEEK_FORWARD, self.item, self.get_time_info) + self.play_state_dialog = dialog.show_play_state(dialog.PLAY_STATE_SEEK_FORWARD, self.item, self.get_time_info) else: - dialog.show_play_state(dialog.PLAY_STATE_SEEK_BACK, self.item, self.get_time_info) + self.play_state_dialog = dialog.show_play_state(dialog.PLAY_STATE_SEEK_BACK, self.item, self.get_time_info) return True if event == VIDEO_AVSYNC: diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/mplayer_autoaspect.py svn/src/video/plugins/mplayer_autoaspect.py --- freevo-1.9.2b2~upstream/src/video/plugins/mplayer_autoaspect.py 2007-11-05 08:29:08.000000000 +0100 +++ svn/src/video/plugins/mplayer_autoaspect.py 2011-11-19 18:31:27.857315502 +0100 @@ -40,6 +40,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.video.plugins.mplayer_autoaspect") import config import plugin diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/reencode-old.py svn/src/video/plugins/reencode-old.py --- freevo-1.9.2b2~upstream/src/video/plugins/reencode-old.py 2008-11-17 22:34:29.000000000 +0100 +++ svn/src/video/plugins/reencode-old.py 2011-11-19 18:31:27.857315502 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # re-encode recorded TV programmes # ----------------------------------------------------------------------- -# $Id: reencode-old.py 11173 2008-11-17 21:34:29Z duncan $ +# $Id: reencode-old.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # To activate, put the following line in local_conf.py: @@ -29,6 +29,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.video.plugins.reencode-old") from os.path import join, split diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/reencode.py svn/src/video/plugins/reencode.py --- freevo-1.9.2b2~upstream/src/video/plugins/reencode.py 2009-05-26 18:15:08.000000000 +0200 +++ svn/src/video/plugins/reencode.py 2011-11-19 18:31:27.873311406 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # re-encode recorded TV programmes # ----------------------------------------------------------------------- -# $Id: reencode.py 11570 2009-05-26 16:15:08Z duncan $ +# $Id: reencode.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # ToDo: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.video.plugins.reencode") import os diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/removecommercials.py svn/src/video/plugins/removecommercials.py --- freevo-1.9.2b2~upstream/src/video/plugins/removecommercials.py 2008-05-03 14:29:38.000000000 +0200 +++ svn/src/video/plugins/removecommercials.py 2011-11-19 18:31:27.865311289 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Commmercial removal option for the item menu # ----------------------------------------------------------------------- -# $Id: removecommercials.py 10671 2008-05-03 12:29:38Z duncan $ +# $Id: removecommercials.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -27,9 +27,11 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.video.plugins.removecommercials") __author__ = 'Andrew Jeffery ' -__revision__ = '$Rev: 10671 $'.split()[1] +__revision__ = '$Rev: 11905 $'.split()[1] import os import plugin diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/vlc.py svn/src/video/plugins/vlc.py --- freevo-1.9.2b2~upstream/src/video/plugins/vlc.py 2009-05-02 09:59:05.000000000 +0200 +++ svn/src/video/plugins/vlc.py 2011-11-19 18:31:27.877332068 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # VLC Player Plug-in # ----------------------------------------------------------------------- -# $Id: vlc.py 11461 2009-05-02 07:59:05Z duncan $ +# $Id: vlc.py 11905 2011-11-14 21:54:46Z adam $ # # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework @@ -24,6 +24,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.video.plugins.vlc") import os, re diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/vpodcast.py svn/src/video/plugins/vpodcast.py --- freevo-1.9.2b2~upstream/src/video/plugins/vpodcast.py 2009-05-24 16:09:04.000000000 +0200 +++ svn/src/video/plugins/vpodcast.py 2011-11-19 18:31:27.865311289 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Video Podcast Player Plug-in # ----------------------------------------------------------------------- -# $Id: vpodcast.py 11555 2009-05-24 14:09:04Z duncan $ +# $Id: vpodcast.py 11905 2011-11-14 21:54:46Z adam $ # # ----------------------------------------------------------------------- # Freevo - A Home Theater PC framework @@ -24,6 +24,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.video.plugins.vpodcast") __author__ = 'Krasimir Atanasov' __author_email__ = 'atanasov.krasimir@gmail.com' @@ -75,7 +77,7 @@ | ('CNN - Now in the news', 'http://rss.cnn.com/services/podcasting/nitn/rss.xml'), | ('CNN - The Larry King', 'http://rss.cnn.com/services/podcasting/lkl/rss?format=xml'), | ('Discovery Channel', 'http://www.discovery.com/radio/xml/discovery_video.xml') - | (u'TV Markíza - Spravodajstvo', 'http://www.markiza.sk/xml/video/feed.rss?section=spravodajstvo', 'mrss'), + | (u'TV Markza - Spravodajstvo', 'http://www.markiza.sk/xml/video/feed.rss?section=spravodajstvo', 'mrss'), | ] | | VPODCAST_DIR = '/path/to/vpodcasts' @@ -243,7 +245,7 @@ except PodcastException: pass if not podcast_items: - podcast_items += [menu.MenuItem(_('No Podcast locations found'), menuw.goto_prev_page, 0)] + podcast_items += [menu.MenuItem(_('No Podcast locations found'), menuw.back_one_menu, 0)] finally: popup.destroy() diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/xine.py svn/src/video/plugins/xine.py --- freevo-1.9.2b2~upstream/src/video/plugins/xine.py 2011-03-04 23:09:10.000000000 +0100 +++ svn/src/video/plugins/xine.py 2011-11-19 18:31:27.861311370 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Freevo video modules for Xine # ----------------------------------------------------------------------- -# $Id: xine.py 11847 2011-03-04 22:09:10Z adam $ +# $Id: xine.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -35,6 +35,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.video.plugins.xine") import time, os, re @@ -257,6 +259,7 @@ rc.add_app(self) self.app = XineApp(command, self) + self.play_state_dialog = None dialog.enable_overlay_display(AppTextDisplay(self.ShowMessage)) return None @@ -298,6 +301,7 @@ rc.remove_app(self) dialog.disable_overlay_display() self.app = None + self.play_state_dialog = None def eventhandler(self, event, menuw=None): @@ -316,7 +320,8 @@ if event == PAUSE or event == PLAY: self.paused = not self.paused if config.XINE_USE_FREEVO_OSD: - dialog.show_play_state(self.paused and dialog.PLAY_STATE_PAUSE or dialog.PLAY_STATE_PLAY, self.item, self.get_time_info) + self.play_state_dialog = dialog.show_play_state(dialog.PLAY_STATE_PAUSE if self.paused else dialog.PLAY_STATE_PLAY, + self.item, self.get_time_info) self.app.write('pause\n') return True @@ -330,11 +335,11 @@ action='SeekRelative-' pos = 0 - pos if config.XINE_USE_FREEVO_OSD and dialog.is_dialog_supported(): - dialog.show_play_state(dialog.PLAY_STATE_SEEK_BACK, self.item, self.get_time_info) + self.play_state_dialog = dialog.show_play_state(dialog.PLAY_STATE_SEEK_BACK, self.item, self.get_time_info) else: action='SeekRelative+' if config.XINE_USE_FREEVO_OSD and dialog.is_dialog_supported(): - dialog.show_play_state(dialog.PLAY_STATE_SEEK_FORWARD, self.item, self.get_time_info) + self.play_state_dialog = dialog.show_play_state(dialog.PLAY_STATE_SEEK_FORWARD, self.item, self.get_time_info) if pos <= 15: pos = 15 elif pos <= 30: @@ -346,7 +351,11 @@ if event == TOGGLE_OSD: if config.XINE_USE_FREEVO_OSD and dialog.is_dialog_supported(): - dialog.show_play_state(dialog.PLAY_STATE_INFO, self.item, self.get_time_info) + if self.play_state_dialog is None: + self.play_state_dialog = dialog.show_play_state(dialog.PLAY_STATE_INFO, self.item, self.get_time_info) + else: + self.play_state_dialog.hide() + self.play_state_dialog = None else: self.app.write('OSDStreamInfos\n') return True @@ -456,19 +465,17 @@ handle = None result = None position = self.item.elapsed - if position == -1 or self.item_length == -1: - try: - handle = telnetlib.Telnet('127.0.0.1', 6789) - out = handle.read_until('\n', 0.1) - if out[-1] == '\n': - if position == -1: - position = self._get_time(handle, 'position') - self.item_length = self._get_time(handle, 'length') - result = (position, self.item_length) - except: - _debug_('Failed to retrieve time info from xine') - else: - result = (position, self.item_length) + + try: + handle = telnetlib.Telnet('127.0.0.1', 6789) + out = handle.read_until('\n', 0.1) + if out[-1] == '\n': + if position == -1: + position = self._get_time(handle, 'position') + self.item_length = self._get_time(handle, 'length') + result = (position, self.item_length) + except: + _debug_('Failed to retrieve time info from xine') if handle: handle.close() diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/xine_info.py svn/src/video/plugins/xine_info.py --- freevo-1.9.2b2~upstream/src/video/plugins/xine_info.py 2011-02-08 23:51:11.000000000 +0100 +++ svn/src/video/plugins/xine_info.py 2011-11-19 18:31:27.865311289 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Use telnetlib to provide information about the videos played with xine # ----------------------------------------------------------------------- -# $Id: xine_info.py 11821 2011-02-08 22:51:11Z adam $ +# $Id: xine_info.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # To activate, put the following line in local_conf.py: @@ -27,6 +27,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.video.plugins.xine_info") import os import telnetlib @@ -54,7 +56,7 @@ __author_email__ = 'andudi@gmx.ch' __maintainer__ = __author__ __maintainer_email__ = __author_email__ - __version__ = '$Revision: 11821 $'.split()[1] + __version__ = '$Revision: 11905 $'.split()[1] def __init__(self): """ diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/youtube.py svn/src/video/plugins/youtube.py --- freevo-1.9.2b2~upstream/src/video/plugins/youtube.py 2011-03-06 13:16:48.000000000 +0100 +++ svn/src/video/plugins/youtube.py 2011-11-19 18:31:27.869311697 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Plugin for download and watch videos of youtube # ----------------------------------------------------------------------- -# $Id: youtube.py 11852 2011-03-06 12:16:48Z adam $ +# $Id: youtube.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # You need to install: @@ -50,6 +50,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.video.plugins.youtube") __author__ = 'Alberto Gonz�lez Rodr�guez' __author_email__ = 'alberto@pesadilla.org' @@ -72,6 +74,7 @@ from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer import threading +import util.httpserver from skin.widgets import TextEntryScreen from video.videoitem import VideoItem @@ -81,6 +84,7 @@ import osd osd = osd.get_singleton() +local_server = util.httpserver.get_local_server() standardfeeds = [ 'top_rated', 'top_favorites', 'most_viewed', 'most_popular', @@ -112,7 +116,7 @@ except ImportError: from elementtree import ElementTree -YOUTUBE_WEB_PORT=0 +RE_VIDEO_ID=re.compile('.+watch\?v=([^&]+)') class PluginInterface(plugin.MainMenuPlugin): @@ -156,33 +160,7 @@ if not os.path.isdir(config.YOUTUBE_DIR): os.mkdir(config.YOUTUBE_DIR, S_IMODE(os.stat(config.FREEVO_CACHEDIR)[ST_MODE])) - self.http_server = HTTPServer(('', 0), YoutubeRequestHandler) - - global YOUTUBE_WEB_PORT - YOUTUBE_WEB_PORT = self.http_server.server_address[1] - - self.stop = False - thread = threading.Thread(target=self.serve_forever) - thread.setDaemon(True) - thread.start() - - - - def serve_forever(self): - """ - Start HTTP server and wait for connections. - """ - while not self.stop: - try: - self.http_server.handle_request() - except: - traceback.print_exc() - - - def shutdown(self): - self.stop = True - self.http_server.socket.close() - + local_server.register_handler(r'/youtube/(.+)$', get_youtube_handler) def config(self): """returns the config variables used by this plugin""" @@ -214,12 +192,12 @@ """Create a VideoItem for play""" def __init__(self, video, id, parent): - VideoItem.__init__(self, 'http://localhost:%d/%s' % (YOUTUBE_WEB_PORT, id), parent) - self.name = video.title.text + VideoItem.__init__(self, local_server.get_url('/youtube/%s' % id), parent) + self.name = unicode(video.title.text) if video.content.type == "text" and video.content.text: - self.description = video.content.text + self.description = unicode(video.content.text) elif video.content.type == "html": - text = util.htmlenties2txt(video.content.text) + text = util.htmlenties2txt(unicode(video.content.text), 'unicode') match = re.search('([^\<]*)<', text) if match: self.description = decodeAcute(match.group(1)) @@ -267,13 +245,15 @@ def append_items(self, gfeed): for video in gfeed.entry: - if video.link[1].href.find('watch?v=') >= 0: - id = video.link[1].href.split('watch?v='); - elif video.link[0].href.find('watch?v=') >= 0: - id = video.link[0].href.split('watch?v='); - else: + id = None + for link in (video.link[1], video.link[0]): + m = RE_VIDEO_ID.match(link.href) + if m is not None: + id = m.group(1) + + if id is None: continue - mi = YoutubeVideoItem(video, id[1], self.parent) + mi = YoutubeVideoItem(video, id, self.parent) self.choices.append(mi) @@ -362,45 +342,42 @@ #------------------------------------------------------------------------------- # HTTP Server #------------------------------------------------------------------------------- -class YoutubeRequestHandler(BaseHTTPRequestHandler): - def do_GET(self): - id = self.path[1:] - cmd = [config.YOUTUBE_DL, '-o', '-', "http://www.youtube.com/watch?v=%s" % id] - if config.YOUTUBE_FORMAT: - cmd += ['-f', config.YOUTUBE_FORMAT] - process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - if process: - thread = threading.Thread(target=self.output, args=(process.stderr,)) - thread.setName('youtube-dl-stderr') - thread.start() - self.send_response(200) - self.send_header('Content-type', 'application/octet-stream') - self.end_headers() - self.request.settimeout(None) - more_data = True - try: - while more_data: - data = process.stdout.read(2048) - if data: - self.wfile.write(data) - else: - more_data = False - except: - os.kill(process.pid, 15) - else: - self.send_error(500, 'Failed to start youtube-dl') +def get_youtube_handler(request, ytid): + cmd = [config.YOUTUBE_DL, '-o', '-', "http://www.youtube.com/watch?v=%s" % ytid] + if config.YOUTUBE_FORMAT: + cmd += ['-f', config.YOUTUBE_FORMAT] + process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + if process: + def output(out): + buf = 'a' + line = '' + while buf: + buf = out.read(1) + if buf =='\n' or buf == '\r': + _debug_('DOWNLOAD: %r' % line) + line = '' + else: + line += buf + + thread = threading.Thread(target=output, args=(process.stderr,)) + thread.setName('youtube-dl-stderr') + thread.start() + request.send_response(200) + request.send_header('Content-type', 'application/octet-stream') + request.end_headers() + request.request.settimeout(None) + more_data = True + try: + while more_data: + data = process.stdout.read(2048) + if data: + request.wfile.write(data) + else: + more_data = False + except: + os.kill(process.pid, 15) + else: + request.send_error(500, 'Failed to start youtube-dl') - def log_message(self, format, *args): - _debug_(format % args, 2) - def output(self, out): - buf = 'a' - line = '' - while buf: - buf = out.read(1) - if buf =='\n' or buf == '\r': - _debug_('DOWNLOAD: %r' % line) - line = '' - else: - line += buf diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/plugins/ytflashplayer.py svn/src/video/plugins/ytflashplayer.py --- freevo-1.9.2b2~upstream/src/video/plugins/ytflashplayer.py 1970-01-01 01:00:00.000000000 +0100 +++ svn/src/video/plugins/ytflashplayer.py 2011-11-19 18:31:27.877332068 +0100 @@ -0,0 +1,232 @@ +# -*- coding: iso-8859-1 -*- +# ----------------------------------------------------------------------- +# Plugin for watching youtube videos +# ----------------------------------------------------------------------- +# $Id: youtube.py 11862 2011-08-07 11:56:13Z adam $ +# +# ----------------------------------------------------------------------- +# +# Freevo - A Home Theater PC framework +# Copyright (C) 2002 Krister Lagerstrom, et al. +# Please see the file freevo/Docs/CREDITS for a complete list of authors. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MER- +# CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.video.plugins.ytflashplayer") +import os +import re +import socket +import urllib2 + +from BeautifulSoup import BeautifulSoup +import urlparse + +import childapp +import config # Configuration handler. reads config file. +import util # Various utilities +import rc # The RemoteControl class. +import plugin +import dialog + +import util.httpserver +import util.webbrowser as webbrowser + +from event import * + +local_server = None + +RE_YOUTUBE_URL = m = re.compile('^http://localhost:[0-9]+/youtube/(.+)$') + +class PluginInterface(plugin.Plugin): + """ + Youtube flash player plugin. + + This plugin requires either Chromium or Chrome to work and the Adobe flash plugin. + + To activate this plugin: + | CHROME_PATH='/path/to/chrome' + | plugin.activate('video.ytflashplayer') + + """ + def __init__(self): + plugin.Plugin.__init__(self) + if hasattr(config, 'CHROME_PATH') and config.CHROME_PATH: + plugin.register(YTFlashPlayer(), plugin.VIDEO_PLAYER, True) + else: + print 'Youtube Flash Player disabled, CHROME_PATH is not set!' + + + +class YTFlashPlayer: + """ + the main class to control mplayer + """ + def __init__(self): + """ + init the mplayer object + """ + self.name = 'ytflashplayer' + + self.event_context = 'video' + self.local_server = util.httpserver.get_local_server() + self.local_server.register_handler('^(http://www.youtube.com/watch\?v=.+)$', self.__html_handler) + print 'PROXY:', self.local_server.get_url('/') + + + def rate(self, item): + """ + How good can this player play the file: + 2 = good + 1 = possible, but not good + 0 = unplayable + """ + if not item.url: + return 0 + + if RE_YOUTUBE_URL.match(item.url): + return 1000 + return 0 + + + def play(self, options, item): + """ + play a videoitem + """ + m = RE_YOUTUBE_URL.match(item.url) + if not m: + return + + url = 'http://www.youtube.com/watch?v=%s' % m.group(1) + + self.options = options + self.item = item + self.item_info = None + self.item_length = -1 + self.item.elapsed = 0 + + self.paused = False + self.app = webbrowser.start_web_browser(url, self.__exited) + rc.add_app(self) + Event(PLAY_START, item).post() + + + def stop(self): + """ + Stop mplayer + """ + if not self.app: + return + + self.app.stop() + + + def __exited(self, code): + rc.remove_app(self) + Event(PLAY_END).post() + + + + def eventhandler(self, event, menuw=None): + """ + eventhandler for mplayer control. If an event is not bound in this + function it will be passed over to the items eventhandler + """ + _debug_('%s.eventhandler(event=%s)' % (self.__class__, event)) + + if not self.app: + return self.item.eventhandler(event) + + if event in (STOP, PLAY_END, USER_END): + self.stop() + return self.item.eventhandler(event) + + if event == TOGGLE_OSD: + dialog.show_play_state(dialog.PLAY_STATE_INFO, self.item, self.get_time_info) + return True + + if event == PAUSE or event == PLAY: + self.paused = not self.paused + + if self.paused: + dialog.show_play_state(dialog.PLAY_STATE_PAUSE, self.item, self.get_time_info) + webbrowser.ipc.pauseVideo() + else: + dialog.show_play_state(dialog.PLAY_STATE_PLAY, self.item, self.get_time_info) + webbrowser.ipc.playVideo() + return True + + if event == SEEK: + self.paused = False + webbrowser.ipc.seekVideo(event.arg) + return True + + if event == 'WEB_IPC': + if event.arg['event'] == 'error': + self.stop() + return True + if event.arg['event'] == 'state': + if event.arg['data'] == 0: + self.stop() + return True + return True + + # nothing found? Try the eventhandler of the object who called us + return self.item.eventhandler(event) + + + def get_html(self, url): + u = urllib2.urlopen(url+'&has_verified=1') + yt_page = u.read() + u.close() + + soup = BeautifulSoup(yt_page) + embed = soup.find(id='movie_player') + if embed is None: + print '%s: failed to movie_player element' + filename = url.replace('http://www.youtube.com/watch?v=', '') + f = open('/tmp/youtube-' + filename,'w') + f.write(yt_page) + f.close() + embed = str(embed) + + embed = re.sub('width="[0-9]+"', 'width="%d"' % (config.CONF.width-2), embed) + embed = re.sub('height="[0-9]+"', 'height="%d"' % (config.CONF.height-2), embed) + + f = open(os.path.join(webbrowser.HTML_DIR, 'ytflashplayer.html')) + html = f.read() + f.close() + + return html.replace('$EMBED$', embed) + + + + def __html_handler(self, request, url): + html = self.get_html(url) + + request.send_response(200) + request.send_header('mime-type', 'text/html') + request.send_header('content-length', '%d' % len(html)) + request.end_headers() + + request.wfile.write(html) + request.wfile.flush() + + + def get_time_info(self): + return webbrowser.ipc.getTimes() + + diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/video/videoitem.py svn/src/video/videoitem.py --- freevo-1.9.2b2~upstream/src/video/videoitem.py 2010-12-05 21:41:53.000000000 +0100 +++ svn/src/video/videoitem.py 2011-11-19 18:31:27.989311502 +0100 @@ -2,7 +2,7 @@ # ----------------------------------------------------------------------- # Item for video objects # ----------------------------------------------------------------------- -# $Id: videoitem.py 11759 2010-12-05 20:41:53Z adam $ +# $Id: videoitem.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # @@ -33,6 +33,8 @@ """ Item for video objects. """ +import logging +logger = logging.getLogger("freevo.video.videoitem") import os import re diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/www/configlib.py svn/src/www/configlib.py --- freevo-1.9.2b2~upstream/src/www/configlib.py 2008-02-21 21:49:20.000000000 +0100 +++ svn/src/www/configlib.py 2011-11-19 18:31:27.017816043 +0100 @@ -3,7 +3,7 @@ # ----------------------------------------------------------------------- # Update plugin settings in local_conf.py # ----------------------------------------------------------------------- -# $Id: configlib.py 10410 2008-02-21 20:49:20Z duncan $ +# $Id: configlib.py 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -28,6 +28,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.www.configlib") import sys, time import urllib diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/www/htdocs/config.rpy svn/src/www/htdocs/config.rpy --- freevo-1.9.2b2~upstream/src/www/htdocs/config.rpy 2008-05-12 19:25:40.000000000 +0200 +++ svn/src/www/htdocs/config.rpy 2011-11-19 18:31:27.013815705 +0100 @@ -3,7 +3,7 @@ # ----------------------------------------------------------------------- # web interface to edit local_config.py # ----------------------------------------------------------------------- -# $Id: config.rpy 10721 2008-05-12 17:25:40Z duncan $ +# $Id: config.rpy 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -28,6 +28,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.www.htdocs.config.") # Displays a webpages to allow the user to edit settings in the local_conf.py ! # diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/www/htdocs/configedit.rpy svn/src/www/htdocs/configedit.rpy --- freevo-1.9.2b2~upstream/src/www/htdocs/configedit.rpy 2008-02-20 21:52:22.000000000 +0100 +++ svn/src/www/htdocs/configedit.rpy 2011-11-19 18:31:27.009815017 +0100 @@ -3,7 +3,7 @@ # ----------------------------------------------------------------------- # Web interface to display local_config.py # ----------------------------------------------------------------------- -# $Id: configedit.rpy 10391 2008-02-20 20:52:22Z duncan $ +# $Id: configedit.rpy 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -34,6 +34,8 @@ # local_conf.py CONFIG_REALTIME_UPDATE = True , try to setting the var, if kinda sketchy on this one. # # Todo: FIX CONFIG file name STUFF. +import logging +logger = logging.getLogger("freevo.www.htdocs.configedit.") diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/www/htdocs/encoding_web.rpy svn/src/www/htdocs/encoding_web.rpy --- freevo-1.9.2b2~upstream/src/www/htdocs/encoding_web.rpy 2008-11-17 22:34:29.000000000 +0100 +++ svn/src/www/htdocs/encoding_web.rpy 2011-11-19 18:31:27.009815017 +0100 @@ -3,7 +3,7 @@ # ----------------------------------------------------------------------- # Web interface to encoding server # ----------------------------------------------------------------------- -# $Id: encoding_web.rpy 11173 2008-11-17 21:34:29Z duncan $ +# $Id: encoding_web.rpy 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -28,6 +28,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.www.htdocs.encoding_web.") import sys import time diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/www/htdocs/help/wiki/faq.html svn/src/www/htdocs/help/wiki/faq.html --- freevo-1.9.2b2~upstream/src/www/htdocs/help/wiki/faq.html 2005-01-09 12:07:12.000000000 +0100 +++ svn/src/www/htdocs/help/wiki/faq.html 2011-11-19 18:31:26.981311333 +0100 @@ -1,3 +1,5 @@ +import logging +logger = logging.getLogger("freevo.www.htdocs.help.wiki.faq.h") FrequentlyAskedQuestions - Freevo Wiki diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/www/htdocs/library.rpy svn/src/www/htdocs/library.rpy --- freevo-1.9.2b2~upstream/src/www/htdocs/library.rpy 2011-02-03 14:36:30.000000000 +0100 +++ svn/src/www/htdocs/library.rpy 2011-11-19 18:31:27.009815017 +0100 @@ -3,7 +3,7 @@ # ----------------------------------------------------------------------- # Web interface to display and modify your video library # ----------------------------------------------------------------------- -# $Id: library.rpy 11812 2011-02-03 13:36:30Z adam $ +# $Id: library.rpy 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: -allow for an imdb popup @@ -29,6 +29,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.www.htdocs.library.") import sys, os, stat, string, urllib, re, types, socket from twisted.web import static diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/www/htdocs/pluginconfig.rpy svn/src/www/htdocs/pluginconfig.rpy --- freevo-1.9.2b2~upstream/src/www/htdocs/pluginconfig.rpy 2008-05-12 19:25:40.000000000 +0200 +++ svn/src/www/htdocs/pluginconfig.rpy 2011-11-19 18:31:27.005811466 +0100 @@ -3,7 +3,7 @@ # ----------------------------------------------------------------------- # Web interface update plugin settings in local_conf.py # ----------------------------------------------------------------------- -# $Id: pluginconfig.rpy 10721 2008-05-12 17:25:40Z duncan $ +# $Id: pluginconfig.rpy 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -28,6 +28,8 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- +import logging +logger = logging.getLogger("freevo.www.htdocs.pluginconfig.") import sys, time import urllib diff --unidirectional-new-file -x .svn -ur freevo-1.9.2b2~upstream/src/www/htdocs/youtube.rpy svn/src/www/htdocs/youtube.rpy --- freevo-1.9.2b2~upstream/src/www/htdocs/youtube.rpy 2008-03-22 12:42:02.000000000 +0100 +++ svn/src/www/htdocs/youtube.rpy 2011-11-19 18:31:27.009815017 +0100 @@ -3,7 +3,7 @@ # ----------------------------------------------------------------------- # Web interface to youtube # ----------------------------------------------------------------------- -# $Id: youtube.rpy 10559 2008-03-22 11:42:02Z duncan $ +# $Id: youtube.rpy 11905 2011-11-14 21:54:46Z adam $ # # Notes: # Todo: @@ -30,6 +30,8 @@ # ----------------------------------------------------------------------- # # Edit Date - Oct 2, 2007 6:31am +import logging +logger = logging.getLogger("freevo.www.htdocs.youtube.") import sys import time debian/patches/imdb-html5lib.patch0000644000000000000000000003240511331267450014275 0ustar #Bug: http://sourceforge.net/tracker/?func=detail&aid=2924872&group_id=46652&atid=446895 #Author: Duncan Webb #Origin: upstream SVN r11651 Index: src/helpers/imdb.py =================================================================== --- x/src/helpers/imdb.py (revision 11608) +++ x/src/helpers/imdb.py (working copy) @@ -53,19 +53,19 @@ parser = OptionParser(version='%prog 1.0', conflict_handler='resolve', usage=""" Search IMDB for a movie or a TV show -freevo imdb [options] [