Python
安装
sh
pip install lnu_elytra使用
py
from lnu_elytra import Client
client = Client()
client.login("账号", "密码")
client.init()
# 教学班示例:(2025-2026-2)-77101504-02
# 使用精确的教学班查询能能减少教务系统返回的数据量,有利于加快抢课。
course = client.fetch_course("教学班")
# 只有当使用精确教学班查询时,才适合直接调用 try_select_o
course.try_select_0(client)最佳实践
例如在抢课开始前提前10分钟就登入系统,并等到抢课时间开始时在手动控制脚本继续运行(也可以通过断点调试、Cookie登录实现
py
from lnu_elytra import Client
client = Client()
client.login("账号", "密码")
input("在抢课时间开始时回车键继续")
# 最好使用while True和try block 避免脚本被错误打断。
client.init() # 如果当前不在选课时间,init会抛出错误
while True:
try:
course = client.fetch_course("教学班")
course.try_select_0(client)
break
except Exception as e:
print(e)可参考以下模板让python能够显示tracing提示
py
from lnu_elytra.tracing import Tracing, GlobalTracingConfig, BatchConfig, subscriber, layers
from lnu_elytra import Client;
import asyncio
cfg = GlobalTracingConfig(
BatchConfig(
subscriber.Config(
layers.file.Config(
file_path=None,
pretty=True,
filter="info",
json=False,
)
)
)
)
def main():
client = Client()
u = input("请输入用户名:")
p = input("请输入密码:")
tgs = input("请输入教学班(多个用逗号分割):")
tgs = tgs.split(",")
try:
client.login(u, p)
except Exception as e:
print(f"登陆失败,请检查用户名或者密码是否正确:{e}")
return
while True:
try:
client.init()
except Exception as e:
print(f"初始化失败,正在重试:{e}")
asyncio.sleep(1)
continue
print("初始化成功")
break
for tg in tgs:
while True:
try:
result = client.select_course(tg)
if result.flag == "1":
print(f"选课成功:{result.message}")
else:
print(f"选课失败:{result.message}")
continue
except Exception as e:
print(f"选课失败:{e}")
asyncio.sleep(1)
continue
break
if __name__ == "__main__":
async def async_main():
async with Tracing(cfg):
main()
pass
asyncio.run(async_main())效果
PS E:\> python .\main.py
请输入用户名:1
请输入密码:1
请输入教学班(多个用逗号分割):1
2026-05-25T17:56:06.681647Z INFO lnu_elytra::method::login: 正在登录...
at src\method\login.rs:17
2026-05-25T17:56:07.493952Z ERROR lnu_elytra::method::login: 登录失败,未找到用户名
at src\method\login.rs:71
登陆失败,请检查用户名或者密码是否正确:LoginFailed异步
py
from lnu_elytra.tracing import Tracing, GlobalTracingConfig, BatchConfig, subscriber, layers
from lnu_elytra import AsyncClient;
import asyncio
cfg = GlobalTracingConfig(
BatchConfig(
subscriber.Config(
layers.file.Config(
file_path=None,
pretty=True,
filter="info",
json=False,
)
)
)
)
client = AsyncClient()
async def main():
u = input("请输入用户名:")
p = input("请输入密码:")
tgs = input("请输入教学班(多个用逗号分割):")
tgs = tgs.split(",")
try:
await client.login(u, p)
except Exception as e:
print(f"登陆失败,请检查用户名或者密码是否正确:{e}")
return
while True:
try:
await client.init()
except Exception as e:
print(f"初始化失败,正在重试:{e}")
asyncio.sleep(1)
continue
print("初始化成功")
break
for tg in tgs:
while True:
try:
result = await client.select_course(tg)
if result.flag == "1":
print(f"选课成功:{result.message}")
else:
print(f"选课失败:{result.message}")
continue
except Exception as e:
print(f"选课失败:{e}")
asyncio.sleep(1)
continue
break
if __name__ == "__main__":
async def async_main():
async with Tracing(cfg):
await main()
pass
asyncio.run(async_main())