当前位置:网站首页>[v2.0] automatic update system based on motion step API (support disconnection reconnection and data compensation)
[v2.0] automatic update system based on motion step API (support disconnection reconnection and data compensation)
2022-06-25 06:17:00 【Mike Zhou, exclusive musician of Netease】
【V2.0】 Based on the number of motion steps API Automatic update system of ( Support disconnection and reconnection 、 Data compensation )
above :
https://blog.csdn.net/weixin_53403301/article/details/122882366
Resources and APP:
Adopt millet sport API Realize the modification of wechat steps and other data And added GUI It's done APP You can set the number of steps to update automatically Support disconnection and reconnection 、 Data compensation
The interface is as shown in the figure ( Packaged as APP):
quote :https://blog.csdn.net/chinaherolts2008/article/details/119921976
https://blog.csdn.net/Jaeger_Java/article/details/109631118
There is no user information when running for the first time , Click remember user , Automatically stored in the program directory “steps.txt” In file , Easy to read next time
The step number range is used to update the step number If the number of steps is not set Or set the minimum number of wrong steps - Maximum value For random updates
Click Update steps You can update the number of steps If not filled Or it is filled in incorrectly Random size
The auto update function needs to set the number of starting steps Number of single steps and number of cycles The default is 0 6 1 namely 0 Step on Every time 3 Second loop 1 Time Co cycle 1 Time Each time 6 Step
The number of steps added each time is a random number ± N/6 That is to say, by default 6 Words Show 5-7

Finally, you can set TG Of BOT_TOKEN and USER_ID For pushing Click Set push You can start pushing when the number of steps is updated
After closing the window Turn on terminal mode But the function is much less Only users can be filled in Then fill in the number of steps If you don't fill in Is the random number of steps Pictured :

Demonstration of automatic update function :

During the automatic update process , The step number column will display the current step number result
Reconnection function demonstration :
After reconnection Every time 30s Notify once After automatic reconnection Auto calibration steps and Cycles Continue to cycle

Set random step update mode The range display can be updated You can also click the update steps directly after filling in The input box will be automatically calibrated :

The code is as follows :
import requests,time,re,json,random
import os
import tkinter as tk
from tkinter import ttk
from tkinter.filedialog import *
import tkinter.messagebox
import threading
TG_BOT_TOKEN = "" # telegram bot token Apply for
TG_USER_ID = "" # telegram user ID
global now
now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
headers = {
'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 9; MI 6 MIUI/20.6.18)'
}
# Push function
def telegram_bot(title, content):
try:
tg_bot_token = TG_BOT_TOKEN
tg_user_id = TG_USER_ID
if "TG_BOT_TOKEN" in os.environ and "TG_USER_ID" in os.environ:
tg_bot_token = os.environ["TG_BOT_TOKEN"]
tg_user_id = os.environ["TG_USER_ID"]
if not tg_bot_token or not tg_user_id:
print("Telegram Push the TG_BOT_TOKEN perhaps TG_USER_ID Not set !!")
return
print("Telegram Push start ")
send_data = {
"chat_id": tg_user_id, "text": title +
'\n\n'+content, "disable_web_page_preview": "true"}
response = requests.post(
url='https://api.telegram.org/bot%s/sendMessage' % (tg_bot_token), data=send_data)
print(response.text)
except:
print("Error")
# Get login code
def get_code(location):
code_pattern = re.compile("(?<=access=).*?(?=&)")
code = code_pattern.findall(location)[0]
return code
# Sign in
def login(user,password):
url1 = "https://api-user.huami.com/registrations/+86" + user + "/tokens"
headers = {
"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8",
"User-Agent":"MiFit/4.6.0 (iPhone; iOS 14.0.1; Scale/2.00)"
}
data1 = {
"client_id":"HuaMi",
"password":f"{
password}",
"redirect_uri":"https://s3-us-west-2.amazonaws.com/hm-registration/successsignin.html",
"token":"access"
}
r1 = requests.post(url1,data=data1,headers=headers,allow_redirects=False)
location = r1.headers["Location"]
try:
code = get_code(location)
except:
return 0,0
#print("access_code To be successful !")ste
#print(code)
url2 = "https://account.huami.com/v2/client/login"
data2 = {
"app_name":"com.xiaomi.hm.health",
"app_version":"4.6.0",
"code":f"{
code}",
"country_code":"CN",
"device_id":"2C8B4939-0CCD-4E94-8CBA-CB8EA6E613A1",
"device_model":"phone",
"grant_type":"access_token",
"third_name":"huami_phone",
}
r2 = requests.post(url2,data=data2,headers=headers).json()
login_token = r2["token_info"]["login_token"]
#print("login_token To be successful !")
#print(login_token)
userid = r2["token_info"]["user_id"]
#print("userid To be successful !")
#print(userid)
return login_token,userid
# The main function
def step_main(user, passwd, step, min_num, max_num):
user = str(user)
password = str(passwd)
step = str(step)
if user == '' or password == '':
print (" Incorrect user name or password !")
return
if step == '':
print (" Set to random steps ("+str(min_num)+"-"+str(max_num)+")")
step = str(random.randint(min_num,max_num))
login_token = 0
login_token,userid = login(user,password)
if login_token == 0:
print(" Login failed !")
return "login fail!"
t = get_time()
app_token = get_app_token(login_token)
today = time.strftime("%F")
data_json = '%5B%7B%22data_hr%22%3A%22%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F9L%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FVv%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F0v%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F9e%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F0n%5C%2Fa%5C%2F%5C%2F%5C%2FS%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F0b%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F1FK%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FR%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F9PTFFpaf9L%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FR%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F0j%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F9K%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FOv%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2Fzf%5C%2F%5C%2F%5C%2F86%5C%2Fzr%5C%2FOv88%5C%2Fzf%5C%2FPf%5C%2F%5C%2F%5C%2F0v%5C%2FS%5C%2F8%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FSf%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2Fz3%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F0r%5C%2FOv%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FS%5C%2F9L%5C%2Fzb%5C%2FSf9K%5C%2F0v%5C%2FRf9H%5C%2Fzj%5C%2FSf9K%5C%2F0%5C%2F%5C%2FN%5C%2F%5C%2F%5C%2F%5C%2F0D%5C%2FSf83%5C%2Fzr%5C%2FPf9M%5C%2F0v%5C%2FOv9e%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FS%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2Fzv%5C%2F%5C%2Fz7%5C%2FO%5C%2F83%5C%2Fzv%5C%2FN%5C%2F83%5C%2Fzr%5C%2FN%5C%2F86%5C%2Fz%5C%2F%5C%2FNv83%5C%2Fzn%5C%2FXv84%5C%2Fzr%5C%2FPP84%5C%2Fzj%5C%2FN%5C%2F9e%5C%2Fzr%5C%2FN%5C%2F89%5C%2F03%5C%2FP%5C%2F89%5C%2Fz3%5C%2FQ%5C%2F9N%5C%2F0v%5C%2FTv9C%5C%2F0H%5C%2FOf9D%5C%2Fzz%5C%2FOf88%5C%2Fz%5C%2F%5C%2FPP9A%5C%2Fzr%5C%2FN%5C%2F86%5C%2Fzz%5C%2FNv87%5C%2F0D%5C%2FOv84%5C%2F0v%5C%2FO%5C%2F84%5C%2Fzf%5C%2FMP83%5C%2FzH%5C%2FNv83%5C%2Fzf%5C%2FN%5C%2F84%5C%2Fzf%5C%2FOf82%5C%2Fzf%5C%2FOP83%5C%2Fzb%5C%2FMv81%5C%2FzX%5C%2FR%5C%2F9L%5C%2F0v%5C%2FO%5C%2F9I%5C%2F0T%5C%2FS%5C%2F9A%5C%2Fzn%5C%2FPf89%5C%2Fzn%5C%2FNf9K%5C%2F07%5C%2FN%5C%2F83%5C%2Fzn%5C%2FNv83%5C%2Fzv%5C%2FO%5C%2F9A%5C%2F0H%5C%2FOf8%5C%2F%5C%2Fzj%5C%2FPP83%5C%2Fzj%5C%2FS%5C%2F87%5C%2Fzj%5C%2FNv84%5C%2Fzf%5C%2FOf83%5C%2Fzf%5C%2FOf83%5C%2Fzb%5C%2FNv9L%5C%2Fzj%5C%2FNv82%5C%2Fzb%5C%2FN%5C%2F85%5C%2Fzf%5C%2FN%5C%2F9J%5C%2Fzf%5C%2FNv83%5C%2Fzj%5C%2FNv84%5C%2F0r%5C%2FSv83%5C%2Fzf%5C%2FMP%5C%2F%5C%2F%5C%2Fzb%5C%2FMv82%5C%2Fzb%5C%2FOf85%5C%2Fz7%5C%2FNv8%5C%2F%5C%2F0r%5C%2FS%5C%2F85%5C%2F0H%5C%2FQP9B%5C%2F0D%5C%2FNf89%5C%2Fzj%5C%2FOv83%5C%2Fzv%5C%2FNv8%5C%2F%5C%2F0f%5C%2FSv9O%5C%2F0ZeXv%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F1X%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F9B%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FTP%5C%2F%5C%2F%5C%2F1b%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F0%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F9N%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%22%2C%22date%22%3A%222021-08-07%22%2C%22data%22%3A%5B%7B%22start%22%3A0%2C%22stop%22%3A1439%2C%22value%22%3A%22UA8AUBQAUAwAUBoAUAEAYCcAUBkAUB4AUBgAUCAAUAEAUBkAUAwAYAsAYB8AYB0AYBgAYCoAYBgAYB4AUCcAUBsAUB8AUBwAUBIAYBkAYB8AUBoAUBMAUCEAUCIAYBYAUBwAUCAAUBgAUCAAUBcAYBsAYCUAATIPYD0KECQAYDMAYB0AYAsAYCAAYDwAYCIAYB0AYBcAYCQAYB0AYBAAYCMAYAoAYCIAYCEAYCYAYBsAYBUAYAYAYCIAYCMAUB0AUCAAUBYAUCoAUBEAUC8AUB0AUBYAUDMAUDoAUBkAUC0AUBQAUBwAUA0AUBsAUAoAUCEAUBYAUAwAUB4AUAwAUCcAUCYAUCwKYDUAAUUlEC8IYEMAYEgAYDoAYBAAUAMAUBkAWgAAWgAAWgAAWgAAWgAAUAgAWgAAUBAAUAQAUA4AUA8AUAkAUAIAUAYAUAcAUAIAWgAAUAQAUAkAUAEAUBkAUCUAWgAAUAYAUBEAWgAAUBYAWgAAUAYAWgAAWgAAWgAAWgAAUBcAUAcAWgAAUBUAUAoAUAIAWgAAUAQAUAYAUCgAWgAAUAgAWgAAWgAAUAwAWwAAXCMAUBQAWwAAUAIAWgAAWgAAWgAAWgAAWgAAWgAAWgAAWgAAWREAWQIAUAMAWSEAUDoAUDIAUB8AUCEAUC4AXB4AUA4AWgAAUBIAUA8AUBAAUCUAUCIAUAMAUAEAUAsAUAMAUCwAUBYAWgAAWgAAWgAAWgAAWgAAWgAAUAYAWgAAWgAAWgAAUAYAWwAAWgAAUAYAXAQAUAMAUBsAUBcAUCAAWwAAWgAAWgAAWgAAWgAAUBgAUB4AWgAAUAcAUAwAWQIAWQkAUAEAUAIAWgAAUAoAWgAAUAYAUB0AWgAAWgAAUAkAWgAAWSwAUBIAWgAAUC4AWSYAWgAAUAYAUAoAUAkAUAIAUAcAWgAAUAEAUBEAUBgAUBcAWRYAUA0AWSgAUB4AUDQAUBoAXA4AUA8AUBwAUA8AUA4AUA4AWgAAUAIAUCMAWgAAUCwAUBgAUAYAUAAAUAAAUAAAUAAAUAAAUAAAUAAAUAAAUAAAWwAAUAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAeSEAeQ8AcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcBcAcAAAcAAAcCYOcBUAUAAAUAAAUAAAUAAAUAUAUAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcCgAeQAAcAAAcAAAcAAAcAAAcAAAcAYAcAAAcBgAeQAAcAAAcAAAegAAegAAcAAAcAcAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcCkAeQAAcAcAcAAAcAAAcAwAcAAAcAAAcAIAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcCIAeQAAcAAAcAAAcAAAcAAAcAAAeRwAeQAAWgAAUAAAUAAAUAAAUAAAUAAAcAAAcAAAcBoAeScAeQAAegAAcBkAeQAAUAAAUAAAUAAAUAAAUAAAUAAAcAAAcAAAcAAAcAAAcAAAcAAAegAAegAAcAAAcAAAcBgAeQAAcAAAcAAAcAAAcAAAcAAAcAkAegAAegAAcAcAcAAAcAcAcAAAcAAAcAAAcAAAcA8AeQAAcAAAcAAAeRQAcAwAUAAAUAAAUAAAUAAAUAAAUAAAcAAAcBEAcA0AcAAAWQsAUAAAUAAAUAAAUAAAUAAAcAAAcAoAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAYAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcBYAegAAcAAAcAAAegAAcAcAcAAAcAAAcAAAcAAAcAAAeRkAegAAegAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAEAcAAAcAAAcAAAcAUAcAQAcAAAcBIAeQAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcBsAcAAAcAAAcBcAeQAAUAAAUAAAUAAAUAAAUAAAUBQAcBYAUAAAUAAAUAoAWRYAWTQAWQAAUAAAUAAAUAAAcAAAcAAAcAAAcAAAcAAAcAMAcAAAcAQAcAAAcAAAcAAAcDMAeSIAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcBQAeQwAcAAAcAAAcAAAcAMAcAAAeSoAcA8AcDMAcAYAeQoAcAwAcFQAcEMAeVIAaTYAbBcNYAsAYBIAYAIAYAIAYBUAYCwAYBMAYDYAYCkAYDcAUCoAUCcAUAUAUBAAWgAAYBoAYBcAYCgAUAMAUAYAUBYAUA4AUBgAUAgAUAgAUAsAUAsAUA4AUAMAUAYAUAQAUBIAASsSUDAAUDAAUBAAYAYAUBAAUAUAUCAAUBoAUCAAUBAAUAoAYAIAUAQAUAgAUCcAUAsAUCIAUCUAUAoAUA4AUB8AUBkAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAA%22%2C%22tz%22%3A32%2C%22did%22%3A%22DA932FFFFE8816E7%22%2C%22src%22%3A24%7D%5D%2C%22summary%22%3A%22%7B%5C%22v%5C%22%3A6%2C%5C%22slp%5C%22%3A%7B%5C%22st%5C%22%3A1628296479%2C%5C%22ed%5C%22%3A1628296479%2C%5C%22dp%5C%22%3A0%2C%5C%22lt%5C%22%3A0%2C%5C%22wk%5C%22%3A0%2C%5C%22usrSt%5C%22%3A-1440%2C%5C%22usrEd%5C%22%3A-1440%2C%5C%22wc%5C%22%3A0%2C%5C%22is%5C%22%3A0%2C%5C%22lb%5C%22%3A0%2C%5C%22to%5C%22%3A0%2C%5C%22dt%5C%22%3A0%2C%5C%22rhr%5C%22%3A0%2C%5C%22ss%5C%22%3A0%7D%2C%5C%22stp%5C%22%3A%7B%5C%22ttl%5C%22%3A18272%2C%5C%22dis%5C%22%3A10627%2C%5C%22cal%5C%22%3A510%2C%5C%22wk%5C%22%3A41%2C%5C%22rn%5C%22%3A50%2C%5C%22runDist%5C%22%3A7654%2C%5C%22runCal%5C%22%3A397%2C%5C%22stage%5C%22%3A%5B%7B%5C%22start%5C%22%3A327%2C%5C%22stop%5C%22%3A341%2C%5C%22mode%5C%22%3A1%2C%5C%22dis%5C%22%3A481%2C%5C%22cal%5C%22%3A13%2C%5C%22step%5C%22%3A680%7D%2C%7B%5C%22start%5C%22%3A342%2C%5C%22stop%5C%22%3A367%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A2295%2C%5C%22cal%5C%22%3A95%2C%5C%22step%5C%22%3A2874%7D%2C%7B%5C%22start%5C%22%3A368%2C%5C%22stop%5C%22%3A377%2C%5C%22mode%5C%22%3A4%2C%5C%22dis%5C%22%3A1592%2C%5C%22cal%5C%22%3A88%2C%5C%22step%5C%22%3A1664%7D%2C%7B%5C%22start%5C%22%3A378%2C%5C%22stop%5C%22%3A386%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A1072%2C%5C%22cal%5C%22%3A51%2C%5C%22step%5C%22%3A1245%7D%2C%7B%5C%22start%5C%22%3A387%2C%5C%22stop%5C%22%3A393%2C%5C%22mode%5C%22%3A4%2C%5C%22dis%5C%22%3A1036%2C%5C%22cal%5C%22%3A57%2C%5C%22step%5C%22%3A1124%7D%2C%7B%5C%22start%5C%22%3A394%2C%5C%22stop%5C%22%3A398%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A488%2C%5C%22cal%5C%22%3A19%2C%5C%22step%5C%22%3A607%7D%2C%7B%5C%22start%5C%22%3A399%2C%5C%22stop%5C%22%3A414%2C%5C%22mode%5C%22%3A4%2C%5C%22dis%5C%22%3A2220%2C%5C%22cal%5C%22%3A120%2C%5C%22step%5C%22%3A2371%7D%2C%7B%5C%22start%5C%22%3A415%2C%5C%22stop%5C%22%3A427%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A1268%2C%5C%22cal%5C%22%3A59%2C%5C%22step%5C%22%3A1489%7D%2C%7B%5C%22start%5C%22%3A428%2C%5C%22stop%5C%22%3A433%2C%5C%22mode%5C%22%3A1%2C%5C%22dis%5C%22%3A152%2C%5C%22cal%5C%22%3A4%2C%5C%22step%5C%22%3A238%7D%2C%7B%5C%22start%5C%22%3A434%2C%5C%22stop%5C%22%3A444%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A2295%2C%5C%22cal%5C%22%3A95%2C%5C%22step%5C%22%3A2874%7D%2C%7B%5C%22start%5C%22%3A445%2C%5C%22stop%5C%22%3A455%2C%5C%22mode%5C%22%3A4%2C%5C%22dis%5C%22%3A1592%2C%5C%22cal%5C%22%3A88%2C%5C%22step%5C%22%3A1664%7D%2C%7B%5C%22start%5C%22%3A456%2C%5C%22stop%5C%22%3A466%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A1072%2C%5C%22cal%5C%22%3A51%2C%5C%22step%5C%22%3A1245%7D%2C%7B%5C%22start%5C%22%3A467%2C%5C%22stop%5C%22%3A477%2C%5C%22mode%5C%22%3A4%2C%5C%22dis%5C%22%3A1036%2C%5C%22cal%5C%22%3A57%2C%5C%22step%5C%22%3A1124%7D%2C%7B%5C%22start%5C%22%3A478%2C%5C%22stop%5C%22%3A488%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A488%2C%5C%22cal%5C%22%3A19%2C%5C%22step%5C%22%3A607%7D%2C%7B%5C%22start%5C%22%3A489%2C%5C%22stop%5C%22%3A499%2C%5C%22mode%5C%22%3A4%2C%5C%22dis%5C%22%3A2220%2C%5C%22cal%5C%22%3A120%2C%5C%22step%5C%22%3A2371%7D%2C%7B%5C%22start%5C%22%3A500%2C%5C%22stop%5C%22%3A511%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A1268%2C%5C%22cal%5C%22%3A59%2C%5C%22step%5C%22%3A1489%7D%2C%7B%5C%22start%5C%22%3A512%2C%5C%22stop%5C%22%3A522%2C%5C%22mode%5C%22%3A1%2C%5C%22dis%5C%22%3A152%2C%5C%22cal%5C%22%3A4%2C%5C%22step%5C%22%3A238%7D%5D%7D%2C%5C%22goal%5C%22%3A8000%2C%5C%22tz%5C%22%3A%5C%2228800%5C%22%7D%22%2C%22source%22%3A24%2C%22type%22%3A0%7D%5D'
finddate = re.compile(r'.*?date%22%3A%22(.*?)%22%2C%22data.*?')
findstep = re.compile(r'.*?ttl%5C%22%3A(.*?)%2C%5C%22dis.*?')
data_json = re.sub(finddate.findall(data_json)[0], today, str(data_json))
data_json = re.sub(findstep.findall(data_json)[0], step, str(data_json))
url = f'https://api-mifit-cn.huami.com/v1/data/band_data.json?&t={
t}'
head = {
"apptoken": app_token,
"Content-Type": "application/x-www-form-urlencoded"
}
data = f'userid={
userid}&last_sync_data_time=1597306380&device_type=0&last_deviceid=DA932FFFFE8816E7&data_json={
data_json}'
response = requests.post(url, data=data, headers=head).json()
#print(response)
result = f"{
user[:3]}****{
user[-4:]}: [{
now}] Modify the steps ({
step})"+ response['message']
print(result)
return result
# Get the timestamp
def get_time():
url = 'http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp'
response = requests.get(url,headers=headers).json()
t = response['data']['t']
return t
# obtain app_token
def get_app_token(login_token):
url = f"https://account-cn.huami.com/v1/client/app_tokens?app_name=com.xiaomi.hm.health&dn=api-user.huami.com%2Capi-mifit.huami.com%2Capp-analytics.huami.com&login_token={
login_token}"
response = requests.get(url,headers=headers).json()
app_token = response['token_info']['app_token']
#print("app_token To be successful !")
#print(app_token)
return app_token
def gui_start():
root=Tk()
root.title(" Millet sports API")
mainfram=Frame(root,width=320, height=660)
mainfram.grid_propagate(0)
mainfram.grid()
labelName=tkinter.Label(root, text=' user name :', justify=tkinter.RIGHT, width=80)
labelName.place(x=10, y=10, width=80, height=40)
labelName=tkinter.Label(root, text=' password :', justify=tkinter.RIGHT, width=80)
labelName.place(x=10, y=50, width=80, height=40)
labelName=tkinter.Label(root, text=' Step range :', justify=tkinter.RIGHT, width=80)
labelName.place(x=10, y=130, width=80, height=40)
labelName=tkinter.Label(root, text=' to ', justify=tkinter.RIGHT, width=80)
labelName.place(x=180, y=130, width=40, height=40)
labelName=tkinter.Label(root, text=' They count :', justify=tkinter.RIGHT, width=80)
labelName.place(x=10, y=210, width=80, height=40)
labelName=tkinter.Label(root, text=' Auto update start :', justify=tkinter.RIGHT, width=80)
labelName.place(x=10, y=290, width=80, height=40)
labelName=tkinter.Label(root, text=' Number of single steps (N):', justify=tkinter.RIGHT, width=80)
labelName.place(x=10, y=330, width=80, height=40)
labelName=tkinter.Label(root, text=' cycles :', justify=tkinter.RIGHT, width=80)
labelName.place(x=10, y=370, width=80, height=40)
labelName=tkinter.Label(root, text='BOT_TOKEN:', justify=tkinter.RIGHT, width=80)
labelName.place(x=10, y=490, width=80, height=40)
labelName=tkinter.Label(root, text='USER_ID:', justify=tkinter.RIGHT, width=80)
labelName.place(x=10, y=530, width=80, height=40)
user = ''
passwd = ''
step = ''
user_list = []
passwd_list = []
setp_array = []
push = ''
auto_step = 0
auto_loops = 1
auto_solo = 6
begin_step = 0
end_step = 6
min_num = 20000
max_num = 29999
global auto_flag
auto_flag = 1
global TG_flag
TG_flag = 1
f0 = open("steps.txt", 'a')
f0.close()
f1 = open("steps.txt", 'r')
users=[]
for line in f1.readlines():
users.append(line)
if len(users)>0:
user = (users[0].split("\n")[0])
if len(users)>1:
passwd = (users[1].split("\n")[0])
f1.close()
e1 = Entry(mainfram)
#e1.grid(ipadx=50,row=0,column=1)
e1.delete(0, END) # Clear the contents of the input box
e1.insert(0, user)
e1.place(x=100, y=10, width=200, height=40)
e2 = Entry(mainfram)
#e2.grid(ipadx=50,row=1,column=1)
e2.delete(0, END) # Clear the contents of the input box
e2.insert(0, passwd)
e2.place(x=100, y=50, width=200, height=40)
e3 = Entry(mainfram)
# e3.grid(ipadx=50,row=3,column=0)
e3.delete(0, END) # Clear the contents of the input box
e3.insert(0, " Random steps ("+str(min_num)+"-"+str(max_num)+")")
e3.place(x=100, y=210, width=200, height=40)
e4 = Entry(mainfram)
# e3.grid(ipadx=50,row=3,column=0)
e4.delete(0, END) # Clear the contents of the input box
e4.insert(0, str(min_num))
e4.place(x=100, y=130, width=80, height=40)
e5 = Entry(mainfram)
# e3.grid(ipadx=50,row=3,column=0)
e5.delete(0, END) # Clear the contents of the input box
e5.insert(0, str(max_num))
e5.place(x=220, y=130, width=80, height=40)
e6 = Entry(mainfram)
# e3.grid(ipadx=50,row=3,column=0)
e6.delete(0, END) # Clear the contents of the input box
e6.insert(0, str(begin_step))
e6.place(x=100, y=290, width=200, height=40)
e7 = Entry(mainfram)
# e3.grid(ipadx=50,row=3,column=0)
e7.delete(0, END) # Clear the contents of the input box
e7.insert(0, " The default is :"+str(auto_loops)+", About N Step /3s A cycle ")
e7.place(x=100, y=370, width=200, height=40)
e8 = Entry(mainfram)
# e3.grid(ipadx=50,row=3,column=0)
e8.delete(0, END) # Clear the contents of the input box
e8.insert(0, " The default is :"+str(auto_solo)+", One cycle approx 3s, Random float ")
e8.place(x=100, y=330, width=200, height=40)
e9 = Entry(mainfram)
# e3.grid(ipadx=50,row=3,column=0)
e9.delete(0, END) # Clear the contents of the input box
e9.insert(0, str(TG_BOT_TOKEN))
e9.place(x=100, y=490, width=200, height=40)
e10 = Entry(mainfram)
# e3.grid(ipadx=50,row=3,column=0)
e10.delete(0, END) # Clear the contents of the input box
e10.insert(0, str(TG_USER_ID))
e10.place(x=100, y=530, width=200, height=40)
def start():
global TG_flag
global now
now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
user = str(e1.get())
passwd = str(e2.get())
try:
step = str(int(float(e3.get())))
except:
step = ""
try:
min_num_tem = int(float(e4.get()))
max_num_tem = int(float(e5.get()))
if min_num_tem < max_num_tem:
min_num = int(min_num_tem)
max_num = int(max_num_tem)
else:
min_num = 20000
max_num = 29999
except:
min_num = 20000
max_num = 29999
e3.delete(0, END) # Clear the contents of the input box
e3.insert(0, str(step))
if step == "":
e3.delete(0, END) # Clear the contents of the input box
e3.insert(0, " Random steps ("+str(min_num)+"-"+str(max_num)+")")
user_list = user.split('#')
passwd_list = passwd.split('#')
setp_array = step.split('-')
if len(user_list) == len(passwd_list):
push = ''
for line in range(0,len(user_list)):
if len(setp_array) == 2:
step = str(random.randint(int(setp_array[0]),int(setp_array[1])))
elif str(step) == '0':
step = ''
push += step_main(user_list[line], passwd_list[line], step, min_num, max_num) + '\n'
if TG_flag == 0:
thread2 = threading.Thread(target=telegram_bot(" Millet sports ", push))
thread2.start()
else:
TG_flag = 1
else:
print(' Incorrect number of user names and passwords ')
def save_user():
user = str(e1.get())
passwd = str(e2.get())
f2 = open("steps.txt", 'w')
f2.write(str(user))
f2.write("\n")
f2.write(str(passwd))
f2.write("\n")
f2.close()
def save_random():
try:
min_num_tem = int(float(e4.get()))
max_num_tem = int(float(e5.get()))
if min_num_tem < max_num_tem:
min_num = int(min_num_tem)
max_num = int(max_num_tem)
else:
min_num = 20000
max_num = 29999
except:
min_num = 20000
max_num = 29999
e3.delete(0, END) # Clear the contents of the input box
e3.insert(0, " Random steps ("+str(min_num)+"-"+str(max_num)+")")
def auto_steps():
global auto_flag
global TG_flag
global now
now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
time_flag = 0
auto_flag = 0
loop_flag = 0
time_over_flag = 0
time_over_step = 0
time_over_loop = 0
time_over = time.time()
if auto_flag==0:
try:
auto_loops = int(float(e7.get()))
except:
auto_loops = 1
print(" Total number of cycles :"+str(auto_loops))
try:
begin_step = int(float(e6.get()))
except:
begin_step = 0
print(" Starting steps :"+str(begin_step))
try:
auto_solo = int(float(e8.get()))
except:
auto_solo = 6
random_step = random.randint(auto_solo-int(auto_solo/6),auto_solo+int(auto_solo/6))
print(" Number of single steps :"+str(auto_solo-int(auto_solo/6))+"-"+str(auto_solo+int(auto_solo/6)))
auto_step = begin_step
end_step = auto_loops*auto_solo+begin_step
print(" Estimated update steps :"+str(begin_step)+"-"+str(end_step))
print(" Estimated time required :"+str(int(auto_loops*3/3600))+" when "+str(int(((auto_loops*3/3600)%1)*60))+" branch ")
user = str(e1.get())
passwd = str(e2.get())
user_list = user.split('#')
passwd_list = passwd.split('#')
print(" Start the cycle \n")
while True:
if time_over_step > 0:
auto_step = auto_step + time_over_step
time_over_step = 0
else:
random_step = random.randint(auto_solo-int(auto_solo/6),auto_solo+int(auto_solo/6))
auto_step = auto_step + random_step
step = str(auto_step)
setp_array = step.split('-')
if len(user_list) == len(passwd_list):
push = ''
for line in range(0,len(user_list)):
if len(setp_array) == 2:
step = str(random.randint(int(setp_array[0]),int(setp_array[1])))
elif str(step) == '0':
step = ''
try:
push += step_main(user_list[line], passwd_list[line], step, min_num, max_num) + '\n'
if time_over_flag == 1:
time_over_step = int((time.time()-time_over)*auto_solo/3)
time_flag = time_flag + int((time.time()-time_over)/3)
time_over = time.time()
time_over_flag = 0
print(" Reset successful ")
else:
time_over = time.time()
time_over_flag = 0
except:
time_over_flag = 1
time_flag = time_flag
auto_step = auto_step - random_step
time.sleep(1)
if TG_flag == 0:
thread2 = threading.Thread(target=telegram_bot(" Millet sports ", push))
thread2.start()
else:
TG_flag = 1
else:
print(' Incorrect number of user names and passwords ')
if time_over_flag == 1:
if time_over_loop == 0:
time_over_loop = time.time()
print(" Broken wire , Resetting ")
elif time.time() - time_over_loop > 30:
print(" Still disconnected , Please wait \n")
time_over_loop = 0
else:
print(" Steps updated automatically :"+str(auto_step)+" To complete the degree :"+str(int(100*(auto_step/(end_step-begin_step))))+"%")
e3.delete(0, END) # Clear the contents of the input box
e3.insert(0, str(auto_step))
print(" Number of cycles :"+str(time_flag+1))
now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(" current time :"+time.ctime()+"\n")
time.sleep(1)
if auto_flag == 1:
print(" Cycle off ")
print(" End of automatic update \n")
return 0
if time_flag+1>=auto_loops:
print(" All cycles completed ")
if auto_step < end_step:
print(" Replenishing remaining steps ")
auto_step = end_step
step = str(auto_step)
setp_array = step.split('-')
while True:
try:
push = ''+step_main(user_list[line], passwd_list[line], step, min_num, max_num) + '\n'
print(" Steps updated automatically :"+str(auto_step)+" To complete the degree :"+str(int(100*(auto_step/(end_step-begin_step))))+"%")
e3.delete(0, END) # Clear the contents of the input box
e3.insert(0, str(auto_step))
now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(" current time :"+time.ctime()+"\n")
print(" The remaining steps are completed ")
break
except:
print(" Failed to supplement the remaining steps , Retrying ")
time.sleep(1)
if auto_flag == 1:
print(" Cycle off ")
print(" End of automatic update \n")
return 0
else:
auto_flag=0
print(" End of automatic update \n")
return 0
else:
for j in range(time_flag+1,auto_loops):
if time_over_step > 0:
auto_step = auto_step + time_over_step
time_over_step = 0
else:
random_step = random.randint(auto_solo-int(auto_solo/6),auto_solo+int(auto_solo/6))
auto_step = auto_step + random_step
if auto_step > end_step:
auto_step = end_step
step = str(auto_step)
setp_array = step.split('-')
try:
push = ''+step_main(user_list[line], passwd_list[line], step, min_num, max_num) + '\n'
time_over = time.time()
time_over_flag = 0
except:
time_over_flag = 1
time_flag = j-1
auto_step = auto_step - random_step
print(" Broken wire , Resetting ")
break
if TG_flag == 0:
thread2 = threading.Thread(target=telegram_bot(" Millet sports ", push))
thread2.start()
else:
TG_flag = 1
print(" Steps updated automatically :"+str(auto_step)+" To complete the degree :"+str(int(100*(auto_step/(end_step-begin_step))))+"%")
e3.delete(0, END) # Clear the contents of the input box
e3.insert(0, str(auto_step))
print(" Number of cycles :"+str(j+1))
now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(" current time :"+time.ctime()+"\n")
if j+1 == auto_loops:
print(" All cycles completed ")
if auto_step < end_step:
print(" Replenishing remaining steps ")
auto_step = end_step
step = str(auto_step)
setp_array = step.split('-')
while True:
try:
push = ''+step_main(user_list[line], passwd_list[line], step, min_num, max_num) + '\n'
print(" Steps updated automatically :"+str(auto_step)+" To complete the degree :"+str(int(100*(auto_step/(end_step-begin_step))))+"%")
e3.delete(0, END) # Clear the contents of the input box
e3.insert(0, str(auto_step))
now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(" current time :"+time.ctime()+"\n")
print(" The remaining steps are completed ")
break
except:
print(" Failed to supplement the remaining steps , Retrying ")
time.sleep(1)
if auto_flag == 1:
print(" Cycle off ")
print(" End of automatic update \n")
return 0
else:
auto_flag=0
print(" End of automatic update \n")
return 0
if auto_flag == 1:
print(" Cycle off ")
print(" End of automatic update \n")
return 0
else:
auto_flag=0
time.sleep(1)
if loop_flag == 1:
print(" All cycles completed ")
print(" End of automatic update ")
return 0
if auto_flag == 1:
print(" Cycle off ")
print(" End of automatic update \n")
return 0
else:
print(" Cycle off ")
print(" End of automatic update \n")
return 0
def start_thread():
thread0 = threading.Thread(target=start)
thread0.start()
def auto_thread():
global auto_flag
auto_flag=0
thread1 = threading.Thread(target=auto_steps)
thread1.start()
def auto_close():
global auto_flag
auto_flag=1
print(" Turning off automatic updates ")
def TG_set():
global TG_BOT_TOKEN
global TG_USER_ID
global TG_flag
TG_flag=0
TG_BOT_TOKEN=e9.get()
TG_USER_ID=e10.get()
print(" Push... Has been set ")
def TG_close():
global TG_BOT_TOKEN
global TG_USER_ID
global TG_flag
TG_flag=1
TG_BOT_TOKEN=""
TG_USER_ID=""
print(" Push turned off ")
button0=Button(mainfram,width=30,text=" Remember users ",command=save_user).place(x=100, y=90, width=200, height=40)
button1=Button(mainfram,width=30,text=" Update steps ",command=start_thread).place(x=100, y=250, width=200, height=40)
button2=Button(mainfram,width=30,text=" Update random step range display ",command=save_random).place(x=100, y=170, width=200, height=40)
button3=Button(mainfram,width=30,text=" Auto update steps ",command=auto_thread).place(x=100, y=410, width=200, height=40)
button4=Button(mainfram,width=30,text=" Turn off automatic updates ",command=auto_close).place(x=100, y=450, width=200, height=40)
button5=Button(mainfram,width=30,text=" Set push ",command=TG_set).place(x=100, y=570, width=200, height=40)
button6=Button(mainfram,width=30,text=" Turn off push ",command=TG_close).place(x=100, y=610, width=200, height=40)
root.mainloop()
def normal_start():
# user name ( The format of a single user is 13800138000 , Multi user # separate , for example 13800138000#13800138000#13800138000)
user = input(" user name :")
# The login password ( use # separate , for example 123456#123456#123456)
if user == "":
print(" User not logged in ")
return 0
passwd = input(" password :")
# Number of steps to modify , Directly enter the step value you want to modify , Leave blank for random steps 20000 to 29999 Between
if passwd == "":
print(" User not logged in ")
return 0
step = input(" They count ( The default is 20000-29999 The random number ):")
min_num = 20000
max_num = 29999
user_list = user.split('#')
passwd_list = passwd.split('#')
setp_array = step.split('-')
if len(user_list) == len(passwd_list):
push = ''
for line in range(0,len(user_list)):
if len(setp_array) == 2:
step = str(random.randint(int(setp_array[0]),int(setp_array[1])))
elif str(step) == '0':
step = ''
push += step_main(user_list[line], passwd_list[line], step, min_num, max_num) + '\n'
telegram_bot(" Millet sports ", push)
else:
print(' Incorrect number of user names and passwords ')
if __name__ == "__main__":
print(" A window has been opened ")
gui_start()
print(" Closed window , And turn on the terminal mode ")
while True:
normal_start()
normal_flag = input(" Whether or not to continue (Y/N)?:")
if normal_flag == "N":
print(" Program end ")
break
if normal_flag == "Y":
print(" The program continues ")
else:
print(" Program end ")
break
边栏推荐
- Global and Chinese medical protective clothing market supply and demand research and investment value proposal report 2022-2028
- Research Report on marketing channel analysis and competitive strategy of China's polycarbonate industry 2022
- Highway
- Tutorial 35 of SAP ui5 application development - how to deploy locally developed SAP ui5 applications to ABAP server for trial reading
- What is SAP sup - Sybase unwired platform
- DF command – displays disk space usage
- Trial version of routing history and routing back and history of SAP ui5
- Analysis report on production and sales demand and sales prospect of global and Chinese phosphating solution Market 2022-2028
- The locally developed SAP ui5 application is deployed to the ABAP server to perform error analysis
- 【LeetCode】40. Combined summation II (2 strokes of wrong questions)
猜你喜欢

What elements are indispensable for the development of the character? What are the stages

Getting started with Silverlight development 1

CTFSHOW

Mongodb basic concept learning - Documentation
Introduction to the main features of kyma when the cloud native application runs
Part 33 of SAP ui5 application development tutorial - trial version of responsiveness of SAP ui5 applications

Mongodb basic concept learning - set

Tablespace free space

Methods for obtaining some information of equipment
Wind farm visualization: wind farm data
随机推荐
Report on strategic suggestions on investment direction and Prospect of global and Chinese marine biological industry (2022 Edition)
Research Report on brand strategic management and marketing trends in the global and Chinese preserved fruit market 2022
Introduction to the main features of kyma when the cloud native application runs
Summary of 6 common methods of visual deep learning model architecture
Global and China chemical mechanical polishing abrasive materials market demand outlook and investment scale forecast report 2022 Edition
Es11 new methods: dynamic import(), bigint, globalthis, optional chain, and null value merging operator
Click to send text messages without response is a common problem for many users in building the elegant grass Dragonfly Q system - solve the problem of clicking to send text messages without response
Trial version of routing history and routing back and history of SAP ui5
Investment opportunities and operational risk assessment report of China's engineering consulting industry during the 14th Five Year Plan period 2022-2028
Monitoring access: how to grant minimum WMI access to the monitoring service account
Global and Chinese medical protective clothing market supply and demand research and investment value proposal report 2022-2028
Tablespace free space
Soft exam information system project manager_ Management Science (Operations Research) 2--- senior information system project manager of soft test 034
How SAP ui5 device type detection device API works
What elements are indispensable for the development of the character? What are the stages
Research Report on investment share and application prospect of 1,3-propanediol (PDO) industry in the world and China 2022
CST8227
Research Report on global and Chinese vaccine market profit forecast and the 14th five year plan development strategy 2022-2028
Mongodb basic concept learning - Documentation
Analysis report on investment and financing status and operation benefits of global and Chinese dental industry (2022 Edition)