class Autobuy: lc = None #main_filter = 'low-risk2' saved_filters = None main_filters = [] main_filter_ids = [8641686, 9061019] def __init__(self, email = None, password = None, filter_ids = None): if filter_ids != None: self.main_filter_ids = filter_ids self.lc = LendingClub(email, password) self.lc.authenticate() self.saved_filters = self.lc.get_saved_filters() self.main_filters = \ filter(lambda x: x.id in self.main_filter_ids, self.saved_filters) def lc(self): self.lc def run_all(self): loan_ids = [] for f in self.main_filters: loan_ids = list(set(loan_ids) | set(self.run(f))) if len(loan_ids) > 0: order = self.lc.start_order() order.add_batch(loan_ids, 25) order.execute() print "%s loans processed" % len(loan_ids) return len(loan_ids) print "No loans processed" return False def run(self, _filter = None, just_loans = True): if _filter is None: raise Exception("No filter specified") results = self.lc.search(_filter) if results[u'totalRecords'] > 30: raise Exception("Filter probably broken, returning > 30 results") elif results[u'totalRecords'] == 0: return [] if not just_loans: order = self.lc.start_order() loans = [] for result in results[u'loans']: loan_id = result[u'loan_id'] additional_details = self.lc.loan_details(loan_id) if additional_details[u'currentJobTitle'] == u'n/a': continue rate = float(re.findall(r"\d+\.\d+|\d+", additional_details[u'rate'])[0]) term = int(additional_details[u'loanLength']) if (term == 36 and rate < 0.19) or rate < 0.22: continue loans.append(loan_id) if len(loans) > 0: if just_loans: return loans order.add_batch(loans, 25) order.execute() return True print "No loans found" if just_loans: return [] else: return True def __str__(self): print "Autobuyer"