def post(self, collectionname): name = tornado.escape.url_unescape(collectionname) _log().info('reloading {}'.format(name)) cdb = self.settings['session'].query(orm.Collection)\ .filter(orm.Collection.name == name)\ .first() cdb.status = 'ready' self.settings['session'].commit() if not cdb: _log().warning('collection {} not found' .format(name)) self.send_error(404) return for dbg in cdb.games: found = False for v in dbg.variants: vfile = filenames.variant(self.settings['home'], v) if os.path.exists(vfile): found = True if found: dbg.status = 'ok' else: dbg.status = 'missing' self.write(json.dumps({'result': True}))
def scrap_missing(self): l = [] for v in self.session.query(orm.Variant): nfofile = filenames.nfo(self.home, v) if os.path.exists(nfofile): _log().debug('scrapper skipping {}, found {}' .format(v.name, nfofile)) continue romfile = filenames.variant(self.home, v) if not os.path.exists(romfile): _log().debug('scrapper skipping {}, rom not found {}' .format(v.name, romfile)) continue l.append(self.scrap(v, nfofile)) if len(l) > 5: yield l l = [] if len(l) > 0: yield l
def file_import(self, filepath): try: with open(filepath, mode='rb') as fd: crc = binascii.crc32(fd.read()) & 0xffffffff fcrc = '%08X' % crc except Exception as e: return False, 'error: ' + str(e) status = 'irrelevant' for r in self.session.query(orm.Rom)\ .filter(orm.Rom.crc == fcrc): v = r.variant dst = filenames.variant(self.home, v) mkdir_p(os.path.dirname(dst)) shutil.copyfile(filepath, dst) status = 'moved' _log().info('mv {} {}'.format(filepath, dst)) v.game.status = 'ok' if status == 'moved': os.unlink(filepath) self.session.commit() return True, status