def check_popularity(): people = dbs.query(Person).filter(Person.count == None).all() pb = ProgressBar(people.__len__()) for person in people: pb.update_print(people.index(person)) references = dbs.query( PeopleRel.count).filter(PeopleRel.person == person.name).all() count = sum(i[0] for i in references) person.count = int(count) dbs.commit()
def link_people(): date = dbs.query(LastRun.date).order_by(LastRun.id.desc()).first()[0] articles = dbs.query(Article.url).filter(Article.date > date).all() pb = ProgressBar(articles.__len__()) for article in articles: pb.update_print(articles.index(article)) people = dbs.query( PeopleRel.person).filter(PeopleRel.article == article[0]).all() people = [x[0] for x in people] people_rel = [] for x in range(people.__len__()): for y in range(x + 1, people.__len__()): people_rel.append([people[x], people[y]]) for rel in people_rel: p1, p2 = rel[0], rel[1] a = dbs.query(PersonRel).filter( or_(and_(PersonRel.person1 == p1, PersonRel.person2 == p2), and_(PersonRel.person1 == p2, PersonRel.person2 == p1))).first() if a: a.count += 1 else: dbs.add(PersonRel(person1=p1, person2=p2, count=1)) dbs.commit()