Пример #1
0
    def __init__(self, app, entry_view, plugin, enabled=True, readonly=False):
        gobject.GObject.__init__(self)
        global BUCKET_NAME, BUCKET_NAME_SUF
        if app is not None:
            app.connect('entry-updated', self._entry_updated_cb)
            app.connect('entries-viewed', self._entries_viewed_cb)
            app.connect('new-database', self.__new_database_cb)

            self._db = app.db
        else:
            import ptvDB
            self._db = ptvDB.ptvDB()
        self._handlers = []

        if entry_view is not None:
            self.set_entry_view(entry_view)

        self._conn = None
        self._authenticated = False
        self._enabled = enabled
        self._readonly = readonly
        #diff is a dict of feed_id:readstates
        #and readstates is a dict of entry_id:readstate
        self._readstates_diff = {}
        self._operation_lock = threading.Lock()

        self._current_plugin = None
        self.load_plugin(plugin)

        def update_cb(success):
            return False

        gobject.timeout_add(20 * 60 * 1000, self.get_and_send, update_cb)
Пример #2
0
	def __init__(self, app, entry_view, plugin, enabled=True, readonly=False):
		gobject.GObject.__init__(self)
		global BUCKET_NAME, BUCKET_NAME_SUF
		if app is not None:
			app.connect('entry-updated', self._entry_updated_cb)
			app.connect('entries-viewed', self._entries_viewed_cb)
			app.connect('new-database', self.__new_database_cb)
			
			self._db = app.db
		else:
			import ptvDB
			self._db = ptvDB.ptvDB()
		self._handlers = []
		
		if entry_view is not None:
			self.set_entry_view(entry_view)	
			
		self._conn = None
		self._authenticated = False
		self._enabled = enabled		
		self._readonly = readonly
		#diff is a dict of feed_id:readstates
		#and readstates is a dict of entry_id:readstate
		self._readstates_diff = {}
		self._operation_lock = threading.Lock()
		
		self._current_plugin = None
		self.load_plugin(plugin)
		
		def update_cb(success):
			return False
		gobject.timeout_add(20 * 60 * 1000, self.get_and_send, update_cb)
Пример #3
0
    def __init__(self, remote_app, mainloop, bus, object_path="/PtvPoller"):
        dbus.service.Object.__init__(self, bus, object_path)
        logging.debug("poller startup")
        self._remote_app = remote_app

        self._db = ptvDB.ptvDB(self._polling_cb)
        self._poll_trigger = False
        self._quitting = False
        self._mainloop = mainloop

        gobject.timeout_add(15000, self._app_ping)
Пример #4
0
	def __init__(self, remote_app, mainloop, bus, object_path="/PtvPoller"):
		dbus.service.Object.__init__(self, bus, object_path)
		logging.debug("poller startup")
		self._remote_app = remote_app
		
		self._db = ptvDB.ptvDB(self._polling_cb)
		self._poll_trigger = False
		self._quitting = False
		self._mainloop = mainloop
		
		gobject.timeout_add(15000, self._app_ping)
Пример #5
0
 def _chooseFile(self, default, size, saveas, dir):
     self.total_size = size
     dated_dir = utils.get_dated_dir()
     change = 0
     if self.media["size"] != self.total_size:
         self.media["size"] = self.total_size
         change = 1
     if self.media["file"] != os.path.join(self._media_dir, dated_dir, str(default)):
         self.media["file"] = os.path.join(self._media_dir, dated_dir, str(default))
         change = 1
     if change:
         db = ptvDB.ptvDB()
         db.set_media_filename(self.media["media_id"], self.media["file"])
         db.set_media_size(self.media["media_id"], self.media["size"])
         db.finish()
         del db
     return os.path.join(self._media_dir, dated_dir, str(default))
Пример #6
0
 def _chooseFile(self, default, size, saveas, dir):
     self.total_size = size
     dated_dir = utils.get_dated_dir()
     change = 0
     if self.media['size'] != self.total_size:
         self.media['size'] = self.total_size
         change = 1
     if self.media['file'] != os.path.join(self._media_dir, dated_dir,
                                           str(default)):
         self.media['file'] = os.path.join(self._media_dir, dated_dir,
                                           str(default))
         change = 1
     if change:
         db = ptvDB.ptvDB()
         db.set_media_filename(self.media['media_id'], self.media['file'])
         db.set_media_size(self.media['media_id'], self.media['size'])
         db.finish()
         del db
     return os.path.join(self._media_dir, dated_dir, str(default))
Пример #7
0
    def sync_gen(self):
        """generator yields cur item number, total, and message.  If total is -1, unmeasured progress"""
        db = ptvDB.ptvDB()
        feedlist = db.get_feedlist()
        locallist = []

        for feed in feedlist:
            if self.cancel:
                break
            entrylist = db.get_entrylist(feed[0])
            for entry in entrylist:
                if self.cancel:
                    break
                medialist = db.get_entry_media(entry[0])
                if medialist:
                    for medium in medialist:
                        yield (0, -1, _("Building file list..."), None)
                        if medium['file']:
                            if self.audio == True:
                                if medium['file'].rsplit(
                                        ".",
                                        1)[-1].upper() not in ("MP3", "OGG",
                                                               "FLAC", "WMA",
                                                               "M4A"):
                                    continue
                            try:
                                source_size = os.stat(medium['file'])[6]
                            except:
                                continue
                            locallist.append([
                                feed[1], medium['file'], source_size,
                                medium['media_id']
                            ])

        if not self.move:
            db._c.close()  #ug
            db._db.close()  #yuck

        if self.delete:
            for root, dirs, files in os.walk(self.dest_dir):
                if self.cancel: break
                i = -1
                for f in files:
                    if self.cancel: break
                    i += 1
                    if f not in [os.path.split(l[1])[1] for l in locallist]:
                        d = {'filename': os.path.join(str(root), str(f))}
                        yield (0, -1, _("Removing %(filename)s") % d, None)
                        if self.dryrun == False:
                            os.remove(os.path.join(str(root), str(f)))

        i = -1
        for f in locallist:
            i += 1
            if self.cancel: break
            filename = os.path.split(f[1])[1]
            sub_dir = os.path.join(self.dest_dir, f[0])
            sub_dir = sub_dir.replace(":", "_")
            if self.dryrun == False:
                try:
                    os.mkdir(sub_dir)
                except OSError, e:
                    if e.errno == 17:
                        pass
                    else:
                        print "couldn't create dir:" + str(sub_dir)
                        continue
            try:
                dest_size = os.stat(os.path.join(sub_dir, filename))[6]
                if f[2] == dest_size:
                    yield (i, len(locallist),
                           _("%(filename)s already exists") % d, f[3])
                    continue
            except:
                pass
            d = {'filename': filename}
            yield (i, len(locallist), _("Copying %(filename)s") % d, f[3])
            if self.dryrun == False:
                shutil.copyfile(f[1], os.path.join(sub_dir, filename))
Пример #8
0
	def sync_gen(self):
		"""generator yields cur item number, total, and message.  If total is -1, unmeasured progress"""
		db = ptvDB.ptvDB()
		feedlist = db.get_feedlist()
		locallist = []
	
		for feed in feedlist:
			if self.cancel:
				break
			entrylist = db.get_entrylist(feed[0])
			for entry in entrylist:
				if self.cancel:
					break
				medialist = db.get_entry_media(entry[0])
				if medialist:
					for medium in medialist:
						yield (0,-1,_("Building file list..."), None)
						if medium['file']:
							if self.audio == True:
								if medium['file'].rsplit(".",1)[-1].upper() not in ("MP3","OGG","FLAC","WMA","M4A"):
									continue
							try:
								source_size = os.stat(medium['file'])[6]
							except:
								continue
							locallist.append([feed[1],medium['file'],source_size, medium['media_id']])
					
		if not self.move:
			db._c.close() #ug
			db._db.close() #yuck
		
		if self.delete:
			for root,dirs,files in os.walk(self.dest_dir):
				if self.cancel: break
				i=-1
				for f in files:
					if self.cancel: break
					i+=1
					if f not in [os.path.split(l[1])[1] for l in locallist]:
						d = {'filename': os.path.join(str(root),str(f))}
						yield (0,-1,_("Removing %(filename)s") % d, None)
						if self.dryrun==False:
							os.remove(os.path.join(str(root),str(f)))
							
		i=-1
		for f in locallist:
			i+=1
			if self.cancel: break
			filename = os.path.split(f[1])[1]
			sub_dir = os.path.join(self.dest_dir,f[0])
			sub_dir = sub_dir.replace(":","_")
			if self.dryrun==False:
				try:
					os.mkdir(sub_dir)
				except OSError,e:
					if e.errno == 17:
						pass
					else:
						print "couldn't create dir:"+str(sub_dir)
						continue
			try:
				dest_size = os.stat(os.path.join(sub_dir,filename))[6]
				if f[2] == dest_size:
					yield (i, len(locallist), _("%(filename)s already exists") % d, f[3])
					continue
			except:
				pass
			d = {'filename': filename}
			yield (i, len(locallist), _("Copying %(filename)s") % d, f[3])
			if self.dryrun==False:
				shutil.copyfile(f[1], os.path.join(sub_dir,filename))