()
| 436 | |
| 437 | |
| 438 | def run(): |
| 439 | # 加载 cookies |
| 440 | cookie_cn, cookie_en = load_cookies() |
| 441 | spider = Spider(cookie_cn, cookie_en) |
| 442 | |
| 443 | # 是否刷新所有题目 |
| 444 | refresh_all = load_refresh_config() |
| 445 | |
| 446 | question_details = {} |
| 447 | if not refresh_all: |
| 448 | for item in load_result(): |
| 449 | slug = item.get("question_title_slug") |
| 450 | if slug: |
| 451 | question_details[slug] = item |
| 452 | |
| 453 | for q in spider.get_all_questions_v2(retry=6): |
| 454 | try: |
| 455 | slug = q["stat"]["question__title_slug"] |
| 456 | qid = q["stat"]["frontend_question_id"] |
| 457 | except: |
| 458 | slug = q["titleSlug"] |
| 459 | qid = int(q["frontendQuestionId"]) |
| 460 | if slug in question_details: |
| 461 | continue |
| 462 | detail = spider.get_question_detail( |
| 463 | slug, retry=4 |
| 464 | ) or spider.get_question_detail_en(slug, retry=8) |
| 465 | if not detail: |
| 466 | continue |
| 467 | time.sleep(1) |
| 468 | question_details[slug] = Spider.format_question_detail( |
| 469 | detail, str(qid).zfill(4) |
| 470 | ) |
| 471 | |
| 472 | # 周赛场次列表 |
| 473 | contest_list = get_contests(refresh_all) |
| 474 | cls = [] |
| 475 | for contest in contest_list: |
| 476 | contest_title = contest["contest_title"] |
| 477 | contest_title_en = contest["contest_title_en"] |
| 478 | contest_question_list = [] |
| 479 | for slug in contest["question_slugs"]: |
| 480 | if slug in question_details: |
| 481 | detail = question_details.get(slug) |
| 482 | # 给题目详情添加周赛信息 |
| 483 | detail["md_table_row_cn"][4] = contest_title |
| 484 | detail["md_table_row_en"][4] = contest_title_en |
| 485 | |
| 486 | # 给周赛信息添加题目详情 |
| 487 | add = [ |
| 488 | detail["frontend_question_id"], |
| 489 | detail["title_cn"], |
| 490 | detail["title_en"], |
| 491 | detail["relative_path_cn"], |
| 492 | detail["relative_path_en"], |
| 493 | ] |
| 494 | contest_question_list.append(add) |
| 495 |
no test coverage detected