Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 101b959

Browse files
committed
发送视频 音频 图片
1 parent 4c3ccda commit 101b959

File tree

3 files changed

+244
-22
lines changed

3 files changed

+244
-22
lines changed

企业微信/Wechat.py

Lines changed: 53 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
import time
77
import requests
88
import json
9-
import base64
10-
import hashlib
119
from requests_toolbelt.multipart.encoder import MultipartEncoder
1210
from 企业微信.config import get_config
1311

@@ -68,25 +66,28 @@ def get_access_token(self):
6866
f.write('\t'.join([str(cur_time), access_token]))
6967
return access_token
7068

71-
def upload_image(self, file_path):
69+
def upload_media(self, file_path, file_type):
7270
"""
73-
上传图片临时素材 multipart/form-data 图片上传
71+
上传临时素材 multipart/form-data 上传
7472
参考:https://blog.csdn.net/Magician_vv/article/details/90478019?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
7573
:param file_path: 文件路径
7674
:param file_type: 文件类型
7775
:return:图片media_id
7876
"""
79-
request_url = self.upload_url.format(self.get_access_token(), "image")
77+
request_url = self.upload_url.format(self.get_access_token(), file_type)
8078
headers = {}
8179
multipart_encoder = MultipartEncoder(
8280
fields={
8381
# 这里根据服务器需要的参数格式进行修改
84-
'file': (file_path, open(file_path, 'rb'), 'image/jpeg'),
82+
'file': (file_path, open(file_path, 'rb'), file_type),
8583
},
8684
)
8785
headers['Content-Type'] = multipart_encoder.content_type
8886
response = requests.post(request_url, data=multipart_encoder, headers=headers).json()
89-
return response['media_id']
87+
if response['errmsg'] == "ok":
88+
return response['media_id']
89+
return response['errmsg']
90+
9091

9192
def send_data(self, message):
9293
send_url = self.send_url.format(self.get_access_token())
@@ -104,25 +105,28 @@ def send_data(self, message):
104105
respone = respone.json() # 当返回的数据是json串的时候直接用.json即可将respone转换成字典
105106
return respone["errmsg"]
106107

107-
def send_image(self, media_id, touser):
108+
def send_media_data(self, media_id, msgtype, touser):
108109
"""
109-
发送图片
110+
发送图片.音频,视频文件
111+
分别有图片(image)、语音(voice)、视频(video),普通文件(file)
110112
:param media_id: 图片media_id 可通过upload_image()获取
111113
:return:
112114
"""
113115
send_url = self.send_url.format(self.get_access_token())
114116
send_values = {
115117
"touser": touser,
116-
"msgtype": "image",
118+
"msgtype": msgtype,
117119
"agentid": self.AGENTID,
118-
"image": {
120+
msgtype: {
119121
"media_id": media_id
120122
},
121123
}
122-
send_msges = (json.dumps(send_values))
123-
respone = requests.post(send_url, send_msges)
124-
respone = respone.json() # 当返回的数据是json串的时候直接用.json即可将respone转换成字典
125-
return respone["errmsg"]
124+
send_msges = json.dumps(send_values)
125+
response = requests.post(send_url, send_msges).json()
126+
127+
if response['errmsg'] == "ok":
128+
return response
129+
return response['errmsg']
126130

127131
def get_user_id_by_phone(self, phone):
128132
"""
@@ -138,7 +142,7 @@ def get_user_id_by_phone(self, phone):
138142
}
139143
response = requests.post(request_url, data=json.dumps(request_data)).json()
140144
if response['errmsg'] == "ok":
141-
return response
145+
return response['userid']
142146
return response['errmsg']
143147

144148
def create_menu(self):
@@ -148,7 +152,7 @@ def create_menu(self):
148152
"""
149153
request_url = "https://qyapi.weixin.qq.com/cgi-bin/menu/create?access_token={}&agentid={}".format(
150154
self.get_access_token(), self.AGENTID)
151-
request_data = {
155+
request_data1 = {
152156
"button": [
153157
{
154158
"name": "扫码",
@@ -197,18 +201,45 @@ def create_menu(self):
197201
}
198202
]
199203
}
200-
204+
request_data2 = {
205+
"button": [
206+
{
207+
"type": "click",
208+
"name": "今日歌曲",
209+
"key": "V1001_TODAY_MUSIC"
210+
},
211+
{
212+
"name": "菜单",
213+
"sub_button": [
214+
{
215+
"type": "view",
216+
"name": "搜索",
217+
"url": "http://www.soso.com/"
218+
},
219+
{
220+
"type": "click",
221+
"name": "赞一下我们",
222+
"key": "V1001_GOOD"
223+
}
224+
]
225+
}
226+
]
227+
}
201228
# 传入的data需要是json格式
202-
response = requests.post(request_url, data=json.dumps(request_data)).json()
229+
response = requests.post(request_url, data=json.dumps(request_data2)).json()
203230
if response['errmsg'] == "ok":
204231
return response
205232
return response['errmsg']
206233

207234

208235
if __name__ == '__main__':
209236
wx = WeChat()
210-
res = wx.get_user_id_by_phone("15735656005")
237+
# res = wx.create_menu()
238+
userid = wx.get_user_id_by_phone("15735656005")
239+
print(userid)
240+
#
241+
media = wx.upload_media("3.mp4", 'video')
242+
print(media)
211243

212-
media = wx.upload_image("1.jpg")
213-
res2 = wx.send_image(media, "BuDa")
244+
res2 = wx.send_media_data(media, "video", userid)
214245
print(res2)

远程文件传输/link.xls

0 Bytes
Binary file not shown.

远程文件传输/old_register.py

Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
# @Time : 2020/3/15 18:57
2+
# @Author : Libuda
3+
# @FileName: register.py
4+
# @Software: PyCharm
5+
import re
6+
import werobot
7+
import xlrd
8+
import smtplib # 发送邮件 连接邮件服务器
9+
from email.mime.text import MIMEText # 构建邮件格式
10+
from xlutils.copy import copy
11+
from selenium import webdriver
12+
import time
13+
import datetime
14+
from 远程文件传输.config import get_config
15+
from selenium.webdriver.chrome.options import Options
16+
import pandas as pd
17+
from pandas import DataFrame
18+
from copy import deepcopy
19+
20+
robot = werobot.WeRoBot(token='fandengdushu')
21+
chrome_options = Options()
22+
chrome_options.add_argument('--headless')
23+
chrome_options.add_argument('--disable-gpu')
24+
chrome_options.add_argument(
25+
'user-agent="Mozilla/5.0 (iPod; U; CPU iPhone OS 2_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F137 Safari/525.20"')
26+
chrome_options.add_argument('--no-sandbox') # 这个配置很重要
27+
28+
config = get_config()
29+
driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=config['executable_path'])
30+
# driver = webdriver.Chrome(chrome_options=chrome_options, executable_path="/usr/bin/chromedriver")
31+
#
32+
user_list = ['1364826576@qq.com']
33+
34+
phone_num = 13281890000
35+
wait_time = 2 # 各个阶段等待时间
36+
time_jiange = 60 # 时间间隔 隔多长时间执行脚本一次
37+
start_date = datetime.datetime.strptime("2019-12-1 00:00:00", "%Y-%m-%d %H:%M:%S") # 起始时间
38+
end_date = datetime.datetime.strptime("2019-12-13 18:00:00", "%Y-%m-%d %H:%M:%S") # 结束时间
39+
ding_num = 5 # 链接条数报警阈值
40+
# 更换头部
41+
42+
# driver = webdriver.Chrome(chrome_options=chrome_options, executable_path='/usr/bin/chromedriver')
43+
# driver = webdriver.Chrome(config['executable_path'],options=chrome_options)
44+
45+
link_file_path = config['link_file_path']
46+
# phone_file_path = config['phone_file_path']
47+
48+
link_ecel = xlrd.open_workbook(link_file_path)
49+
link_tables = link_ecel.sheet_by_index(0)
50+
link_get_col = 2
51+
link_write_col = 3
52+
53+
# phone_excel = xlrd.open_workbook(phone_file_path)
54+
# phoe_tables = phone_excel.sheet_by_index(0)
55+
# phone_get_col = 1
56+
# phone_write_col = 2
57+
58+
# phone_can_use_index = phoe_tables.get_rows()
59+
link_can_use_index = int(config['start_link_index'])
60+
totle_break_set = set()
61+
62+
63+
def logger(msg):
64+
"""
65+
日志信息
66+
"""
67+
now = time.ctime()
68+
print("[%s] %s" % (now, msg))
69+
70+
71+
def get_keywords_data(tables, row, col):
72+
actual_data = tables.cell_value(row, col)
73+
return actual_data
74+
75+
76+
def write_to_excel(file_path, row, col, value):
77+
work_book = xlrd.open_workbook(file_path, formatting_info=False)
78+
write_to_work = copy(work_book)
79+
sheet_data = write_to_work.get_sheet(0)
80+
sheet_data.write(row, col, str(value))
81+
write_to_work.save(file_path)
82+
83+
84+
def register(phone):
85+
"""
86+
给手机号开卡 返回开卡结果及剩余链接数
87+
:param phone:
88+
:return:
89+
"""
90+
print("开卡中")
91+
res = None
92+
df = pd.read_excel(link_file_path)
93+
link_data = []
94+
for i in df.index.values: # 获取行号的索引,并对其进行遍历:
95+
# 根据i来获取每一行指定的数据 并利用to_dict转成字典
96+
row_data = df.loc[i, ['id', 'link']].to_dict()
97+
link_data.append(row_data)
98+
99+
link_data_tem = deepcopy(link_data)
100+
writer = pd.ExcelWriter(link_file_path, cell_overwrite_ok=True)
101+
dataframe = DataFrame()
102+
for index, data in enumerate(link_data):
103+
link = (data['link'])
104+
105+
driver.get(link)
106+
time.sleep(wait_time)
107+
try:
108+
text = driver.find_element_by_xpath("/html/body/div[1]/div[1]/p[1]")
109+
if text.text == "开卡失败":
110+
write_to_excel(link_file_path, index + 1, link_write_col, "已使用")
111+
print("该卡已经被使用..{}".format(link))
112+
link_data_tem.pop(0)
113+
continue
114+
except Exception as e:
115+
pass
116+
# time.sleep(wait_time)
117+
# # print(e)
118+
try:
119+
120+
time.sleep(wait_time)
121+
text = ""
122+
try:
123+
text = driver.find_element_by_xpath('//*[@id="app"]/div[1]/div[1]/p')
124+
except Exception:
125+
pass
126+
127+
print("该卡可以使用:{},正在查询可用手机号。。".format(link))
128+
if text != "":
129+
driver.get(link)
130+
time.sleep(wait_time)
131+
driver.find_element_by_xpath('//*[@id="app"]/div[1]/div[2]/div[1]/input').send_keys(phone)
132+
driver.find_element_by_xpath('//*[@id="app"]/div[1]/div[2]/div[3]/input').send_keys(phone)
133+
driver.find_element_by_xpath('//*[@id="app"]/div[1]/div[3]').click()
134+
time.sleep(wait_time)
135+
# 点击开卡
136+
driver.find_element_by_xpath('//*[@id="join-btn"]').click()
137+
# 点击开卡后页面延迟较为严重
138+
time.sleep(wait_time)
139+
try:
140+
tem = driver.find_element_by_xpath('/html/body/div[1]/div[1]/p[1]')
141+
if tem.text == "开卡失败":
142+
res = "开卡失败"
143+
print("开卡失败,您已经是樊登读书好友")
144+
if len(link_data_tem) <= 0:
145+
link_data_tem = [{"id": "", "link": ""}]
146+
147+
dataframe = dataframe.append(DataFrame(link_data_tem))
148+
dataframe.to_excel(writer, index=0)
149+
writer.save()
150+
return res, len(link_data_tem)
151+
except Exception as e:
152+
time.sleep(wait_time)
153+
try:
154+
if driver.find_element_by_xpath('/html/body/div[1]/div/h1').text == "领取成功!":
155+
print("开卡成功")
156+
res = "开卡成功"
157+
link_data_tem.pop(0)
158+
if len(link_data_tem) <= 0:
159+
link_data_tem = [{"id": "", "link": ""}]
160+
161+
dataframe = dataframe.append(DataFrame(link_data_tem))
162+
dataframe.to_excel(writer, index=0)
163+
writer.save()
164+
return res, len(link_data_tem)
165+
except Exception as e:
166+
print("开卡成功")
167+
res = "开卡成功"
168+
if len(link_data_tem) <= 0:
169+
link_data_tem = [{"id": "", "link": ""}]
170+
171+
dataframe = dataframe.append(DataFrame(link_data_tem))
172+
dataframe.to_excel(writer, index=0)
173+
writer.save()
174+
return res, len(link_data_tem)
175+
176+
177+
except Exception as e:
178+
# print(e)
179+
pass
180+
# if len(link_data_tem) <= 0:
181+
# link_data_tem = [{"id": "", "link": ""}]
182+
#
183+
# dataframe = dataframe.append(DataFrame(link_data_tem))
184+
# dataframe.to_excel(writer, index=0)
185+
# writer.save()
186+
return res, len(link_data_tem)
187+
188+
189+
if __name__ == '__main__':
190+
res, l = register("15735656005")
191+
print(res, l)

0 commit comments

Comments
 (0)