def cached(self, intr, db): Log("Hit cached method") pid = self.parameters['pid'] pname = self.parameters['pname'] codes = ('pid', 'name', 'shortname', 'othername', 'type', 'pic', 'url') names = ', '.join([code for code in codes if code != '']) ruleholder = (pid and 'pid=%s' or '(name=%s OR shortname=%s OR othername=%s)') rulevalues = (pid and [pid] or [pname, pname, pname]) rows = db.select('ptb', names, ruleholder + " AND status&8", *rulevalues) if len(rows) > 1: raise adb.resp.AniDBInternalError( "It shouldn't be possible for database to return more than 1 " "line for PRODUCER cache" ) elif not len(rows): return None else: resp = adb.resp.ProducerResponse(self, None, '245', 'CACHED PRODUCER', [list(rows[0])]) resp.parse() return resp
def cached(self, intr, db): Log("Hit cached method") lid = self.parameters['lid'] fid = self.parameters['fid'] size = self.parameters['size'] ed2k = self.parameters['ed2k'] aid = self.parameters['aid'] aname = self.parameters['aname'] gid = self.parameters['gid'] gname = self.parameters['gname'] epno = self.parameters['epno'] names = ', '.join([ code for code in adb.resp.MylistResponse(None, None, None, None, []).codetail if code != '' ]) if lid: ruleholder = "lid=%s" rulevalues = [lid] elif fid or size or ed2k: resp = intr.file(fid=fid, size=size, ed2k=ed2k) if resp.rescode != '220': resp = adb.resp.NoSuchMylistFileResponse( self, None, '321', 'NO SUCH ENTRY (FILE NOT FOUND)', []) resp.parse() return resp fid = resp.datalines[0]['fid'] ruleholder = "fid=%s" rulevalues = [fid] else: resp = intr.anime(aid=aid, aname=aname) if resp.rescode != '230': resp = adb.resp.NoSuchFileResponse( self, None, '320', 'NO SUCH ENTRY (ANIME NOT FOUND)', []) resp.parse() return resp aid = resp.datalines[0]['aid'] resp = intr.group(gid=gid, gname=gname) if resp.rescode != '250': resp = adb.resp.NoSuchFileResponse( self, None, '321', 'NO SUCH ENTRY (GROUP NOT FOUND)', []) resp.parse() return resp gid = resp.datalines[0]['gid'] resp = intr.episode(aid=aid, epno=epno) if resp.rescode != '240': resp = adb.resp.NoSuchFileResponse( self, None, '321', 'NO SUCH ENTRY (EPISODE NOT FOUND)', []) resp.parse() return resp eid = resp.datalines[0]['eid'] ruleholder = "aid=%s AND eid=%s AND gid=%s" rulevalues = [aid, eid, gid] rows = db.select('ltb', names, ruleholder + " AND status&8", *rulevalues) if len(rows) > 1: # TODO: Handle "322 "Cached Multiple Files Found. See history # for original details. return None elif not len(rows): return None else: resp = adb.resp.MylistResponse(self, None, '221', 'CACHED MYLIST', [list(rows[0])]) resp.parse() return resp