宥马运动Crack之全自动Run

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

前言:

在Crack完成后愈发懒惰,想着能否实现全自动,而我只需输入三个旗子的坐标,以及Run Finished后距离不够询问是否还要再次输入一个经纬度来Run一段.

嗯~就是懒

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

思路:

使用百度地图路线规划提供的API返回的json数据,解析后得到经纬度坐标,通过计算App的Run时的五个参数,来确定每次修改定位的Sleep,至于修改定位用逍遥提供的命令即可

from requests import get
from os import system
from time import sleep
# 对百度地图提供的API发起请求,参数: Ak , 起点经纬度 , 终点经纬度
def Request(Start_Point, End_Point):
    RespOne = get(f'https://api.map.baidu.com/directionlite/v1/walking?origin={Start_Point}&destination={End_Point}&ak=SVTGvOGqoo7YgD7KOgsSfTVLIFGD6sc6')
    return RespOne.json(), RespOne.status_code   # 返回响应的json文件

#   对请求百度地图API步行路线规划返回的数据进行粗加工
def data_handle_rough_machining(RespOne_json):
    Request_status = list(RespOne_json.values())[0]     # 数据加工得到请求状态码,用于后续判断程序是否进行
    Request_result_duration_total = list(list(list(RespOne_json.values())[2].values())[2][0].values())[1]   # 数据加工得到路线规划总时间
    Request_result_distances_total = list(list(list(RespOne_json.values())[2].values())[2][0].values())[0]  # 数据加工得到路线规划总距离

    Request_result_routes_steps = list(list(list(RespOne_json.values())[2].values())[2][0].values())[2]  # 数据加工得到每段路线规划的数据

    return Request_status, Request_result_distances_total, Request_result_duration_total, Request_result_routes_steps   # 返回含有粗加工后数据的元组

# 对粗加工函数返回的每段路线规划的数据进行细加工
def data_handle_Fine_machining(Request_result_routes_steps):
    Step_Path = []
    for item in Request_result_routes_steps:    # 遍历含有每段路线规划数据(以字典在列表中每一项存在)的列表
        item = list(item.values())[4].split(';')    # 以';'为分割得到含有步行的每个经纬度
        Step_Path.append(item)  # 将每段步行路线添加到列表中 , 以后续遍历使用
    return Step_Path
def execute_command(Step_Path):
    for Outer in Step_Path:
        for Lnner in Outer:
            Lnner = Lnner.split(',')
            system(f'memuc setgps -i 2 {Lnner[1]} {Lnner[0]}')
            sleep(5)
def request_of_flags(flage_):
    global Start_Point, FlagOne_Point, FlagTwo_Point, FlagThree_Point
    Start_Point = ''
    FlagOne_Point = ''
    FlagTwo_Point = ''
    FlagThree_Point = ''
    if flage_ == 1:
        Start_Point = input('起点经纬度(小数点不超过六位)(如:40.01116,116.339303):>')
        FlagOne_point = input('第一旗经纬度(格式同上):>')
        Response_json_and_statucode = Request(Start_Point, FlagOne_point)
        return Response_json_and_statucode
    elif flage_ == 2:
        FlagTwo_Point = input('第二旗经纬度(格式同上):>')
        Response_json_and_statucode = Request(FlagOne_Point, FlagTwo_Point)
        return Response_json_and_statucode
    elif flage_ == 3:
        FlagThree_Point = input('第三旗经纬度(格式同上):>')
        Response_json_and_statucode = Request(FlagTwo_Point, FlagThree_Point)
        return Response_json_and_statucode

if __name__ == "__main__":
    for flage in range(1, 4):
        Response_json_and_statucode = request_of_flags(flage)
        if Response_json_and_statucode[1] == 200:
            Rough_Machined_Product_tuple = data_handle_rough_machining(Response_json_and_statucode[0])
            if Rough_Machined_Product_tuple[0] == 0:
                Fine_Machined_Product = data_handle_Fine_machining(Rough_Machined_Product_tuple[3])
                execute_command(Fine_Machined_Product)
            else:
                print('状态码异常')
                break
        else:
            print('百度地图API请求状态码异常')
            break

拙劣代码,还请见谅(因为是自用,所以一些大的Bug就没管),只要能用就行

Code 2022.3.25 记录

这个需求需要涉及到定位和跑步的知识,需要在具体场景中实现。以下是一个基本的思路: 1. 获取当前位置,可以使用GPS或其他定位技术。 2. 判断当前位置是否在指定范围内,可以使用坐标距离算法。 3. 如果不在范围内,则提示用户走到指定范围内。 4. 如果在范围内,则开始计时并自动跑步两公里,可以使用跑步机或者其他跑步设备,并且需要通过设备API控制跑步机的速度和距离。 5. 如果跑步距离达到两公里,则结束跑步并提示用户。 以下是一个伪代码实现: ```python import location import time import run_device # 指定的位置范围 target_latitude = 39.1234 target_longitude = 116.5678 target_radius = 100 # 米 # 获取当前位置 current_latitude, current_longitude = location.get_current_location() # 判断当前位置是否在指定范围内 distance = location.get_distance(current_latitude, current_longitude, target_latitude, target_longitude) if distance > target_radius: print("请走到指定范围内") else: # 开始跑步 run_device.start() start_time = time.time() # 监测跑步距离 while True: current_distance = run_device.get_distance() if current_distance >= 2: break # 结束跑步 run_device.stop() end_time = time.time() elapsed_time = end_time - start_time print("跑步完成,用时%.2f秒" % elapsed_time) ``` 需要注意的是,以上代码仅为参考,需要根据具体场景进行修改和完善。同时在实现过程中也需要考虑安全和隐私问题。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王观天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值