You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.6 KiB
57 lines
1.6 KiB
import requests |
|
import time |
|
|
|
def get_jd_time(): |
|
url = "https://api.m.jd.com/" |
|
payload={} |
|
headers = { |
|
'User-Agent': 'Apifox/1.0.0 (https://apifox.com)', |
|
'Accept': '*/*', |
|
'Host': 'api.m.jd.com', |
|
'Connection': 'keep-alive' |
|
} |
|
|
|
response = requests.request("GET", url, headers=headers, data=payload) |
|
delay_time = int(response.elapsed.total_seconds()*1000) |
|
jd_timestamp = int(response.headers['X-API-Request-Id'][-13:]) |
|
|
|
print(jd_timestamp, time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(jd_timestamp/1000)), ', 响应时间:', int(response.elapsed.total_seconds()*1000), 'ms') |
|
|
|
return jd_timestamp, delay_time |
|
|
|
def jd_timer(target): |
|
target_timestamp = int(time.mktime(time.strptime(target, '%Y-%m-%d %H:%M:%S'))*1000) |
|
print(target_timestamp) |
|
jd_ts, delay = get_jd_time() |
|
while jd_ts < target_timestamp: |
|
delta = target_timestamp - jd_ts |
|
if delta > 3600*1000: |
|
time.sleep(3600) |
|
elif delta > 600*1000: |
|
time.sleep(600) |
|
elif delta > 120*1000: |
|
time.sleep(60) |
|
elif delta > 60*1000: |
|
time.sleep(30) |
|
elif delta > 30*1000: |
|
time.sleep(30) |
|
elif delta > 10*1000: |
|
time.sleep(1) |
|
elif delta > 3*1000: |
|
time.sleep(0.5) |
|
elif delta > 1*1000: |
|
time.sleep(0.2) |
|
else: |
|
if delta <= delay: |
|
break |
|
else: |
|
sleep_val = delta - delay - 5 |
|
time.sleep(sleep_val/1000) |
|
jd_ts, delay = get_jd_time() |
|
print('done') |
|
|
|
|
|
if __name__ == '__main__': |
|
target = '2025-01-21 12:17:00' |
|
jd_timer(target) |
|
|
|
|