首页 > 系统相关 >进程表自动机 1.0 by xiezheyuan

进程表自动机 1.0 by xiezheyuan

时间:2023-02-18 11:24:13浏览次数:47  
标签:www 1.0 get luogu headers session xiezheyuan 自动机 data

安装依赖

首先保证您的电脑里有 Python 3,且 Python 在环境变量中。

运行:

Windows

python -m pip install requests
python -m pip install bs4

NOI Linux

python3 -m pip install requests
python3 -m pip install bs4

使用方法

  • 将代码中的 账号名密码账户ID截止时间 设置成自己想要的。
  • 输入验证码时,工作目录下会生成 captcha.jpg 中,您可以打开查看。
  • 结束后,请查看工作目录下的 进程表.md

代码

import requests, re, urllib, json, bs4
import time as tim

账号名 = ""
账户ID = 
密码 = ""

headers = {
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.70",
    "referer" : "https://www.luogu.com.cn/"
}

session = requests.session()
main = session.get("http://www.luogu.com.cn/", headers=headers).text
headers["x-csrf-token"] = bs4.BeautifulSoup(main, "html.parser").select_one("meta[name=\"csrf-token\"]").attrs["content"]

data = session.get("https://www.luogu.com.cn/auth/login", headers=headers).text

def get_data(text):
    return json.loads(urllib.parse.unquote(re.findall(r"JSON.parse\(decodeURIComponent\(\".*\"\)\)", text)[0].split("\"")[1].split("\"")[0]))

data = get_data(data)

captcha = session.get("https://www.luogu.com.cn/api/verify/captcha?_t=" + str(
    data["currentTime"]
), headers=headers).content

with open("captcha.jpg", "wb") as f:
    f.write(captcha)

captcha = input("输入验证码:")

syncToken = session.post("https://www.luogu.com.cn/api/auth/userPassLogin", headers=headers, json={
    "username" : 账号名,
    "password" : 密码,
    "captcha" : captcha
}).json()
print(syncToken)

syncToken=syncToken["syncToken"]

session.post("https://www.luogu.org/api/auth/syncLogin", headers, json = {"syncToken" : syncToken})

page = 1
end = True

截止日期 = "2023-01-08"
endtime = tim.mktime(tim.strptime(截止日期, "%Y-%m-%d"))

problems = {}

while end:
    print("https://www.luogu.com.cn/record/list?user=%d&page=%d&status=12" % (账户ID, page))
    data = get_data(session.get("https://www.luogu.com.cn/record/list?user=%d&page=%d&status=12" % (账户ID, page), headers=headers).text)["currentData"]
    record = data["records"]["result"]
    if len(record) == 0:
        break
    for i in record:
        time = i["submitTime"]
        if time < endtime:
            end = False
            break
        date = tim.strftime("%Y 年 %m 月 %d 日", tim.localtime(time))
        if problems.get(date) is None:
            problems[date] = []
        problems[date].append({
            "name" : i["problem"]["pid"] + " " + i["problem"]["title"],
            "difficulty" : i["problem"]["difficulty"],
            "link" : "https://www.luogu.com.cn/problem/%s" % i["problem"]["pid"]
        })

    page += 1

difficulties = ["暂无评定", "入门", "普及-", "普及/提高-", "普及+/提高", "提高+/省选-", "省选/NOI-", "NOI/NOI+/CTSC"]

maps = dict()

with open("进程表.md", "w", encoding="utf-8") as f:
    for i in problems:
        pro = []
        for j in problems[i]:
            if maps.get(j["name"]) is None:
                pro.append(j)
                maps[j["name"]]=114514
        f.write("\n\n## %s\n\n" % i)
        if len(pro) == 0:
            continue
        f.write("| 题目名 | 难度 | 备注 |\n| :--: | :--: | :--: |\n")
        for j in pro:
            f.write("| [%s](%s) | %s |  |\n" % (j["name"], j["link"], difficulties[j["difficulty"]]))

标签:www,1.0,get,luogu,headers,session,xiezheyuan,自动机,data
From: https://www.cnblogs.com/zheyuanxie/p/schedule-automaton.html

相关文章

  • MASA Stack 1.0 发布会 —— 社区问题解答
    MASAStack1.0圆桌讨论Q1: 全职开源的团队,你们的收入是什么?1.首先感谢我们的金主朗诗德公司,朗诗德是一家大型的净水器研发、生产、销售的公司,我们的产品也在朗诗德公......
  • 网络调试助手|网络调试助手(CM精装版) V4.1.0 绿色版
    http://www.winwin7.com/soft/16987.html#xiazai网络调试助手软件功能1、支持UDP,TCP协议2、支持单播/广播,集成TCP服务器和客户端3、支持ASCII/Hex发送,发送和接收的数据......
  • ON1 NoNoise AI 2023 for mac(ai摄影降噪软件)v17.1.0.13508中文版
    ON1NoNoiseAIMac破解版是一款去除图像噪点的应用,特别对于摄影师来说,它是比较专业的摄影降噪软件。使用AI人工智能驱动的NoNoiseAI快速去除噪点并获得照片中最清晰......
  • ​​面试题 01.05. 一次编辑​
    字符串有三种编辑操作:插入一个英文字符、删除一个英文字符或者替换一个英文字符。给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。链接: ​​https:/......
  • vuluhub_jangow-01-1.0.1
    前言靶机:jangow-01-1.0.1攻击机:kalilinux2022.4靶机描述打靶ing靶机探测使用nmap扫描网段点击查看代码┌──(root㉿kali)-[/home/kali]└─#nmap192.168.70......
  • jQuery1.0.3<3.5.0xss漏洞
    起因: 升级方法:1.找到jQuery文件,我的路径为:/src/main/webapp/plugin/jquery/js/jquery.min.js2.下载需要升级的jQuery文件到指定目录,建议与升级前的jQuery文件同目录。下......
  • MASA Stack 1.0 发布会讲稿——生态篇
    2022年运营回顾贡献者首先感谢贡献者们为MASAStack社区所作的积极贡献,这些贡献者给我们提出了很多宝贵的建议,更是积极的提交PR帮助我们一起让产品更健壮,更完善,还在各种......
  • The POM for xxxxxx:jar:1.0-SNAPSHOT is missing, no dependency information availa
    解决方案:该错误表示的是pom文件中相应依赖找不到进入pom文件中删除"相应错误"的依赖。   衍生问题:既然idea显示找不到相应的依赖,那为什么在maven刷......
  • Avalonia 11.0.0-preview5中的一些更新
    在升级到11.0.0-preview5的过程中,有以下几个破坏性更新需要手动调整。首先需要先确保项目内所有Avalonia相关的依赖都升级到了11.0.0preview5https://github.com/Aval......
  • 移植openssh-7.5p1(包括openssl-1.0.2l、zlib-1.2.11)到HISI3520d(编译篇)
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。前置说明  本文作为本人csdnblog的主站的备份。(BlogID......