Metadata-Version: 2.4
Name: autotd-buaa
Version: 0.1.2
Summary: BUAA TD automation command line utility
Author: autoTD maintainers
Keywords: buaa,td,cli
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.10
Description-Content-Type: text/markdown

# AutoTD

`autoTD` 是一个可安装的命令行工具包。安装后提供 `autotd` 命令，用于初始化本地配置目录、管理用户和图片、运行 TD 打卡流程、查询服务器返回的本学期锻炼次数，以及在后台进行定时检测。

## PyPI 安装

> 要求：python >= 3.10

```bash
pip install autotd-buaa==0.1.2
```

## 本地开发

本项目采用标准 `pyproject.toml` 包结构：

```bash
python3 -m pip install -e .
autotd --help
```

构建本地 wheel/sdist：

```bash
python3 -m build
```

内部测试发布可使用 TestPyPI：

```bash
python3 -m twine upload --repository testpypi dist/*
```

## 初始化

所有运行数据存储在 `~/.autoTD` 下。测试或临时运行时可用 `AUTOTD_HOME` 覆盖：

```bash
autotd init
autotd init --from ./autoTD
```

目录结构：

```text
~/.autoTD/
├── config.json
├── users.json
├── settings.json
├── state.json
├── images/
└── logs/
    └── YYYY-MM-DD-daytime-log.txt
```

## 用户管理

```bash
autotd user add 22375080 --entrance 2 --exit 6 --entrance-image image3.jpg --exit-image image2.jpg
autotd user add 22375080 --quick 沙河
autotd user add 22375080 --quick 学院路
autotd user list
autotd user show 22375080
autotd user update 22375080 --card-id CARDID --entrance 3 --exit 7 --entrance-image image1.jpg --exit-image image2.jpg
autotd user delete 22375080
autotd user count 22375080
```

`card_id` 为空时会自动使用学号的 16 进制大写形式。

使用 `--quick` 时，只需要指定校区：

- `--quick 沙河`: 随机选择沙河入口机 `8/9/10`、沙河出口机 `11/12/13`，并从 `~/.autoTD/images/` 随机选择入口/出口图片。
- `--quick 学院路`: 随机选择学院路/本部入口机 `2/3/4`、学院路/本部出口机 `5/6/7`，并从 `~/.autoTD/images/` 随机选择入口/出口图片。
- 其他字段使用默认值：`rounds=3`、`wait_time_min=180`、`wait_time_max=240`、`card_id` 自动生成。

## 图片管理

```bash
autotd image add ./image3.jpg
autotd image add ./photo.jpg --name entrance.jpg
autotd image add ./photo.jpg --name entrance.jpg --overwrite
autotd image list
```

图片会复制到 `~/.autoTD/images/`。用户配置中引用的是图片文件名。

## 立即运行

立即执行一次所有用户：

```bash
autotd run --once
```

`autotd run --once` 会在当前终端前台执行并打印汇总。执行时某个用户失败会记录日志并继续后续用户。

## 定时运行

`autotd run` 会启动后台定时检测进程，终端会立即返回，不持续展示运行日志。日志写入 `~/.autoTD/logs/`。

```bash
autotd schedule show
autotd schedule set --poll-seconds 60 --windows "07:30-10:00,11:30-14:00,15:30-20:00"
autotd run
autotd --stop
```

`autotd run` 会自动启用定时开关。需要停止后台定时检测时运行 `autotd --stop`。只想关闭定时触发但保留后台进程时，可使用 `autotd schedule disable`。

默认时间段为：

- 07:30 - 10:00
- 11:30 - 14:00
- 15:30 - 20:00

定时模式按北京时间判断日期。一天只会做一次定时批量尝试；无论成功或失败，当天都不会自动重试。

## 连接失败排查

如果日志中出现 `Connection refused` 或 `无法连接 TD 服务器`，先检查：

```bash
cat ~/.autoTD/config.json
```

`server.ip` 应为可访问的 TD 服务器地址，例如默认模板中的 `10.212.28.38`，端口为 `8888`。如果现有配置仍是 `127.0.0.1`，请编辑 `~/.autoTD/config.json`，或重新导入已有项目配置：

```bash
autotd init --from /path/to/autoTD
```

同时确认当前网络可访问校园网或已连接 VPN。

## 测试

```bash
/opt/homebrew/anaconda3/envs/autotd/bin/python -m unittest discover -s tests -v
```
