application.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:acmicpc.cc 作者: MoonHyuk 项目源码 文件源码
def update_rank(event, context):
    with application.app_context():
        my_kwargs = event.get("kwargs")
        date = datetime.datetime.utcnow().strftime('%Y/%m/%d')
        for i in range(my_kwargs["start"], my_kwargs["end"]):
            url = "https://www.acmicpc.net/ranklist/" + str(i)
            soup = get_soup_from_url(url)
            table = soup.find(id='ranklist')
            trs = table.tbody.find_all('tr')
            boj_ids = list()
            boj_ranks = list()
            for tr in trs:
                tds = tr.find_all('td')
                if int(tds[3].a.string.strip()) <= 19:
                    break
                boj_ids.append(''.join(tds[1].find_all(text=True, recursive=True)).strip())
                boj_ranks.append(int(tds[0].string))

            api = request_koo_api("user", boj_ids)
            koo_ranks = list(user["ranking"] for user in api)
            for _ in range(len(boj_ids)):
                boj_id = boj_ids[_]
                boj_rank = boj_ranks[_]
                if koo_ranks[_] == None:
                    koo_rank = 0
                else:
                    koo_rank = koo_ranks[_] + 1
                data = {date: [boj_rank, koo_rank]}
                if not Ranking.query.filter_by(boj_id=boj_id).scalar():
                    ranking = Ranking(boj_id=boj_id, ranking=data)
                    db.session.add(ranking)
                    db.session.commit()
                else:
                    user = Ranking.query.filter_by(boj_id=boj_id)
                    new_ranking = user.first().ranking
                    new_ranking.update(data)
                    user.first().ranking = new_ranking
                    db.session.commit()

                print("{0} {1} {2}".format(boj_id, boj_rank, koo_rank))
    return "OK"
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号