commit
fad8ab3392
10 changed files with 395 additions and 0 deletions
@ -0,0 +1,2 @@ |
|||||||
|
/venv/ |
||||||
|
/__pycache__/ |
@ -0,0 +1,53 @@ |
|||||||
|
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 > 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) |
||||||
|
|
@ -0,0 +1,42 @@ |
|||||||
|
from appium import webdriver |
||||||
|
from appium.options.android import UiAutomator2Options |
||||||
|
import time |
||||||
|
|
||||||
|
|
||||||
|
class JdClient: |
||||||
|
def __init__(self, device_name): |
||||||
|
self.desired_caps = { |
||||||
|
'platformName': 'Android', |
||||||
|
'deviceName': device_name, |
||||||
|
'platformVersion': '12.0', |
||||||
|
'appPackage': 'com.jingdong.app.mall', |
||||||
|
'appActivity': 'main.MainActivity', |
||||||
|
'noReset': True, |
||||||
|
'appium:automationName': 'UiAutomator2', |
||||||
|
'newCommandTimeout': 6000, |
||||||
|
'udid': device_name, |
||||||
|
} |
||||||
|
self.device =None |
||||||
|
|
||||||
|
def initial_device(self, port): |
||||||
|
print(f'设备:{self.desired_caps}') |
||||||
|
self.device = webdriver.Remote(f'http://127.0.0.1:{port}/wd/hub', options=UiAutomator2Options().load_capabilities(self.desired_caps)) |
||||||
|
time.sleep(5) |
||||||
|
x = self.device.get_window_size()['width'] |
||||||
|
y = self.device.get_window_size()['height'] |
||||||
|
print(f'{self.desired_caps["deviceName"]}屏幕尺寸:{x}x{y}') |
||||||
|
|
||||||
|
def do(self, msg_dict): |
||||||
|
self.device.set_clipboard_text(msg_dict['msg']) |
||||||
|
print(self.device.get_clipboard_text()) |
||||||
|
|
||||||
|
time.sleep(0.5) |
||||||
|
print(f'{self.desired_caps["platformName"]}点击') |
||||||
|
self.device.tap([(550, 1263)], 100) |
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__': |
||||||
|
jd_client = JdClient('127.0.0.1:16416') |
||||||
|
jd_client.initial_device(4723) |
||||||
|
jd_client.do('玩具乐器五折券') |
||||||
|
|
@ -0,0 +1,84 @@ |
|||||||
|
import uiautomator2 |
||||||
|
import threading |
||||||
|
|
||||||
|
|
||||||
|
class JdClient: |
||||||
|
def __init__(self, device): |
||||||
|
self.device = device |
||||||
|
self.dev = uiautomator2.connect(device) |
||||||
|
|
||||||
|
def close_app(self): |
||||||
|
self.dev.app_stop('com.jingdong.app.mall') |
||||||
|
|
||||||
|
def set_clipboard(self, text): |
||||||
|
self.dev.set_clipboard(text) |
||||||
|
|
||||||
|
def open_app(self): |
||||||
|
self.dev.app_start('com.jingdong.app.mall') |
||||||
|
|
||||||
|
def open_and_click(self): |
||||||
|
self.dev.app_start('com.jingdong.app.mall') |
||||||
|
|
||||||
|
n = 30 |
||||||
|
while n > 0: |
||||||
|
if self.dev(text='跳过').exists: |
||||||
|
self.dev(text='跳过').click() |
||||||
|
break |
||||||
|
else: |
||||||
|
self.dev.implicitly_wait(0.1) |
||||||
|
n -= 1 |
||||||
|
|
||||||
|
while True: |
||||||
|
if self.dev(text='立即查看').exists: |
||||||
|
print(self.device, '点击立即查看') |
||||||
|
self.dev.implicitly_wait(1) |
||||||
|
self.dev(text='立即查看').click() |
||||||
|
break |
||||||
|
else: |
||||||
|
self.dev.implicitly_wait(1) |
||||||
|
# print('等待1秒') |
||||||
|
|
||||||
|
while True: |
||||||
|
if self.dev(text='为好友助力').exists: |
||||||
|
print(self.device, '为好友助力') |
||||||
|
self.dev.implicitly_wait(1) |
||||||
|
self.dev(text='为好友助力').click() |
||||||
|
break |
||||||
|
else: |
||||||
|
self.dev.implicitly_wait(1) |
||||||
|
# print('等待1秒') |
||||||
|
|
||||||
|
def full_steps(self, text): |
||||||
|
self.set_clipboard(text) |
||||||
|
self.open_and_click() |
||||||
|
|
||||||
|
if __name__ == '__main__': |
||||||
|
device_list = [ |
||||||
|
'127.0.0.1:16416', |
||||||
|
'127.0.0.1:16448', |
||||||
|
'127.0.0.1:16480', |
||||||
|
'127.0.0.1:16512', |
||||||
|
# '127.0.0.1:16544', |
||||||
|
# '127.0.0.1:16576', |
||||||
|
'127.0.0.1:16608', |
||||||
|
# '127.0.0.1:16640', |
||||||
|
# '127.0.0.1:16672', |
||||||
|
# '127.0.0.1:16704', |
||||||
|
# 'b189a9ab', # 一加 |
||||||
|
] |
||||||
|
# device_list = ['127.0.0.1:16416', |
||||||
|
# '127.0.0.1:16448'] |
||||||
|
|
||||||
|
jd_client_list = [] |
||||||
|
|
||||||
|
for dev in device_list: |
||||||
|
jd_client = JdClient(dev) |
||||||
|
jd_client_list.append(jd_client) |
||||||
|
|
||||||
|
for jd_client in jd_client_list: |
||||||
|
t = threading.Thread(target=jd_client.close_app, args=()) |
||||||
|
t.start() |
||||||
|
|
||||||
|
for jd_client in jd_client_list: |
||||||
|
t = threading.Thread(target=jd_client.full_steps, args=('16:/¥FCWK99OZFKV¥ MU5104,⇥⤴ι🆖▾東【京东超市】分享助力赢玩具乐器五折券',)) |
||||||
|
t.start() |
@ -0,0 +1,57 @@ |
|||||||
|
from wx import get_user_message, listen_msg |
||||||
|
from jd_client import JdClient |
||||||
|
import multiprocessing, threading |
||||||
|
|
||||||
|
device_list = ['127.0.0.1:16416', |
||||||
|
'127.0.0.1:16448'] |
||||||
|
|
||||||
|
# device_list = ['127.0.0.1:16416', |
||||||
|
# '127.0.0.1:16448', |
||||||
|
# '127.0.0.1:16480', |
||||||
|
# '127.0.0.1:16512', |
||||||
|
# '127.0.0.1:16544', |
||||||
|
# '127.0.0.1:16576', |
||||||
|
# '127.0.0.1:16608', |
||||||
|
# '127.0.0.1:16640'] |
||||||
|
|
||||||
|
listen_list = ['Honey', '分身199'] |
||||||
|
# listen_list = ['Honey'] |
||||||
|
|
||||||
|
# for device in device_list: |
||||||
|
# print(f'设备:{device}') |
||||||
|
# jd_client = JdClient(device) |
||||||
|
# jd_client_list.append(jd_client) |
||||||
|
|
||||||
|
port = 4723 |
||||||
|
|
||||||
|
device_obj_list = [] |
||||||
|
|
||||||
|
for device in device_list: |
||||||
|
print(device) |
||||||
|
jd_client = JdClient(device) |
||||||
|
device_obj_list.append(jd_client) |
||||||
|
|
||||||
|
|
||||||
|
for i, jd_client in enumerate(device_obj_list): |
||||||
|
sub_port = port + i*2 |
||||||
|
print(i, sub_port) |
||||||
|
jd_client.initial_device(sub_port) |
||||||
|
# t = threading.Thread(target=jd_client.initial_device, args=(sub_port,)) |
||||||
|
# t.start() |
||||||
|
|
||||||
|
msg = listen_msg(listen_list, '玩具乐器五折券') |
||||||
|
|
||||||
|
print('准备完成,等待消息') |
||||||
|
|
||||||
|
process_list = [] |
||||||
|
|
||||||
|
for jd_client in device_obj_list: |
||||||
|
# p = multiprocessing.Process(target=jd_client.do, args=({'msg':msg},)) |
||||||
|
t = threading.Thread(target=jd_client.do, args=({'msg':msg},)) |
||||||
|
t.start() |
||||||
|
# process_list.append(p) |
||||||
|
|
||||||
|
# for p in process_list: |
||||||
|
# p.join() |
||||||
|
|
||||||
|
print('-----------------------------------') |
@ -0,0 +1,39 @@ |
|||||||
|
from wx import get_user_message, listen_msg |
||||||
|
from jd_uia import JdClient |
||||||
|
import multiprocessing, threading |
||||||
|
|
||||||
|
# device_list = ['127.0.0.1:16416', |
||||||
|
# '127.0.0.1:16448'] |
||||||
|
|
||||||
|
device_list = device_list = [ |
||||||
|
'127.0.0.1:16416', |
||||||
|
'127.0.0.1:16448', |
||||||
|
'127.0.0.1:16480', |
||||||
|
'127.0.0.1:16512', |
||||||
|
# '127.0.0.1:16544', |
||||||
|
# '127.0.0.1:16576', |
||||||
|
'127.0.0.1:16608', |
||||||
|
# '127.0.0.1:16640', |
||||||
|
# '127.0.0.1:16672', |
||||||
|
# '127.0.0.1:16704', |
||||||
|
# 'b189a9ab', # 一加 |
||||||
|
] |
||||||
|
|
||||||
|
# listen_list = ['Honey', '分身199'] |
||||||
|
listen_list = ['Honey'] |
||||||
|
|
||||||
|
|
||||||
|
jd_client_list = [] |
||||||
|
|
||||||
|
for dev in device_list: |
||||||
|
jd_client = JdClient(dev) |
||||||
|
jd_client_list.append(jd_client) |
||||||
|
t = threading.Thread(target=jd_client.close_app, args=()) |
||||||
|
t.start() |
||||||
|
|
||||||
|
msg = listen_msg(listen_list, '玩具乐器五折券') |
||||||
|
print(f'收到消息:{msg}') |
||||||
|
|
||||||
|
for jd_client in jd_client_list: |
||||||
|
t = threading.Thread(target=jd_client.full_steps, args=(msg,)) |
||||||
|
t.start() |
Binary file not shown.
@ -0,0 +1,43 @@ |
|||||||
|
from wxauto import WeChat |
||||||
|
import time |
||||||
|
|
||||||
|
wx_client = WeChat() |
||||||
|
wait = 0.5 |
||||||
|
|
||||||
|
|
||||||
|
def get_user_message(name, keyword=None): |
||||||
|
wx_client.ChatWith(name) |
||||||
|
msgs = wx_client.GetAllMessage() |
||||||
|
for msg in msgs: |
||||||
|
print(msg) |
||||||
|
if keyword in msg: |
||||||
|
print(f"找到信息:{msg}") |
||||||
|
return msg |
||||||
|
|
||||||
|
def listen_msg_by_person(keyword=None): |
||||||
|
print('准备就绪等待消息...') |
||||||
|
while True: |
||||||
|
msgs = wx_client.GetListenMessage() |
||||||
|
for chat in msgs: |
||||||
|
who = chat.who |
||||||
|
last_msgs = msgs.get(chat) |
||||||
|
for msg in last_msgs: |
||||||
|
content = msg.content |
||||||
|
print(f'{who}: {content}') |
||||||
|
if keyword in content: |
||||||
|
print(f"找到信息:{content}") |
||||||
|
return content |
||||||
|
time.sleep(wait) |
||||||
|
|
||||||
|
def listen_msg(listen_list=['Honey'], keyword=None): |
||||||
|
for person in listen_list: |
||||||
|
wx_client.AddListenChat(who=person, savepic=False) |
||||||
|
return listen_msg_by_person(keyword) |
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__': |
||||||
|
listen_list = ['Honey', '分身199'] |
||||||
|
# listen_list = ['Honey'] |
||||||
|
# get_user_message('Honey', '玩具乐器五折券') |
||||||
|
listen_msg(listen_list, '玩具乐器五折券') |
||||||
|
|
Loading…
Reference in new issue