# 真 · 云运动 一键跑步脚本
## 写在前面
### 免责声明
一切代码仅供研究学习,请勿用于非法用途。
使用中造成的一切后果,本人概不负责。
### 一些规则
#### 打卡点的选取规则
绝大部分的数据来自于服务器的返回值,包括打卡点。以合工大为例,服务器将返回一串打卡点,而程序将从中随机选取` raDislikes`个作为本次跑步所有的打卡点。
其中部分打卡点由于太靠近学校边缘,有时会导航到校外(例如合工大的 117.209175,31.774432 打卡点),需要手动去除。点位需要抓包获取,确保完全一致。
#### 路线的规划规则
成功获取一定数量的打卡点后,依次将打卡点置入任务列表,同时计算路径距离、消耗时间,若总距离在置入`raMinDislikes`个点位之前已达到了用户配置的`min_distance`,之后的打卡点将不作处理;反之,继续放置点位,若超出`raDislikes`个,则从头开始放置,即“回跑”。
由于高德地图路径规划的精度有限,致使导航终点与实际打卡点存在偏差,可能出现”瞬移“。
## 使用方法
### ~~1. 给项目star~~
### 2. 获取高德地图开发者密钥
脚本使用高德地图API规划跑步路径,故需要获取开发者密钥。有能力的可以自己尝试更精确的路径规划哦
登录 https://console.amap.com/dev/key/app

点击右上角的创建新应用,应用名称随便,应用类型选择出行。
创建完毕后,点击应用上方的添加按钮,
<img src="https://github.com/kontori/images/raw/main/yun-2.png" alt="" width="450">
Key名称随便,服务平台选择**Web服务**,IP白名单留空即可。你将会得到一个Key,这就是我们的开发者密钥。**(不是安全密钥!)**
### 3. 将项目下载到本地
### 4. 配置
你需提前在config.ini文件中完成一些简单的配置。**不要随意删除配置字段。**
```
[Yun]
# 云运动服务器的完整Url,一般来说不需要更改
yun_host = http://81.70.49.179:8080
# 学校服务器的完整url,例如合工大的为http://210.45.246.53:8080,请一定不要遗漏 http://
# 如选择在初次启动时登录,会自动获取该地址,可留空
# 注:有些学校服务器的ip为内网ip,可能需要使用校园网
school_host = http://210.45.246.53:8080
# 云运动的加密密钥
key = YUNZHIEE
# 云运动app版本
app_edition = 2.1.1
[User]
# 用户token,可通过抓包获取。如果你不知道怎么获得,请留空,运行时会引导登录
token =
# 设备id,可通过抓包获取(每次登录都是不同的设备id,我怀疑它就是个随机数,不要尝试用抓包以外的方法获取),
# 可留空,运行时会自动生成15位随机数
device_id =
# 高德地图开发者密钥
map_key =
# 设备名称
device_name = Xiaomi(Mi10)
# 安卓系统版本(大版本号)ios用户自行抓包分析哦
sys_edition = 12
[Run]
# 初始位置经纬度,精确到小数点后6位,可修改
point = 117.205608,31.772887
# 去除指定打卡点,用于解决路径异常的问题。但注意,即使删除失败,程序仍将继续。数组类型
exclude_points = ["117.209175,31.774432"]
# 最少公里数,float
min_distance = 2
# 以下两个配置只会影响单点配速,即决定路线是绿色、黄色还是红色,最终配速总会是4.0左右
# 具体范围见云运动公告
# 最小配速偏移量,float
single_mileage_min_offset = 1
# 最大配速偏移量,float
single_mileage_max_offset = -1
# 最小步频偏移量,int
cadence_min_offset = 60
# 最大步频偏移量,int
cadence_max_offset = -100
# 单次发送split_point个数,如果你不知道这个是什么,就不要修改
split_count = 10
```
### 5. 运行
测试环境:Python 3.9.5
#### 安装依赖
```
pip install -r requirements
```
#### run
确保config.ini文件与main.py处于同级目录,然后
```
python main.py
```
按照提示操作即可。
### 6. 退出登录
每次运行、任务执行结束时,可选择退出登录,以避免系统检测出多设备登录。若Token为抓包获取,确保与真机一致时,一般来说,可无需退出。