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)
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)
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))
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))
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))
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))