reywechat 1.0.27__py3-none-any.whl → 1.0.28__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- reywechat/__init__.py +1 -0
- reywechat/rall.py +1 -0
- reywechat/rcache.py +46 -0
- reywechat/rdb.py +17 -21
- reywechat/rlog.py +28 -2
- reywechat/rreceive.py +34 -71
- reywechat/rsend.py +3 -21
- reywechat/rwechat.py +4 -39
- {reywechat-1.0.27.dist-info → reywechat-1.0.28.dist-info}/METADATA +1 -1
- reywechat-1.0.28.dist-info/RECORD +17 -0
- reywechat-1.0.27.dist-info/RECORD +0 -16
- {reywechat-1.0.27.dist-info → reywechat-1.0.28.dist-info}/WHEEL +0 -0
- {reywechat-1.0.27.dist-info → reywechat-1.0.28.dist-info}/licenses/LICENSE +0 -0
reywechat/__init__.py
CHANGED
reywechat/rall.py
CHANGED
reywechat/rcache.py
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# !/usr/bin/env python
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
|
4
|
+
"""
|
5
|
+
@Time : 2025-08-13 22:58:31
|
6
|
+
@Author : Rey
|
7
|
+
@Contact : reyxbo@163.com
|
8
|
+
@Explain : Cache methods.
|
9
|
+
"""
|
10
|
+
|
11
|
+
|
12
|
+
from reykit.ros import FileCache
|
13
|
+
|
14
|
+
from .rbase import BaseWeChat
|
15
|
+
from .rwechat import WeChat
|
16
|
+
|
17
|
+
|
18
|
+
__all__ = (
|
19
|
+
'WeChatCache',
|
20
|
+
)
|
21
|
+
|
22
|
+
|
23
|
+
class WeChatCache(BaseWeChat, FileCache):
|
24
|
+
"""
|
25
|
+
WeChat file cache type.
|
26
|
+
"""
|
27
|
+
|
28
|
+
|
29
|
+
def __init__(
|
30
|
+
self,
|
31
|
+
wechat: WeChat
|
32
|
+
) -> None:
|
33
|
+
"""
|
34
|
+
Build instance attributes.
|
35
|
+
|
36
|
+
Parameters
|
37
|
+
----------
|
38
|
+
wechat : `WeChatClient` instance.
|
39
|
+
"""
|
40
|
+
|
41
|
+
# Set attribute.
|
42
|
+
self.wechat = wechat
|
43
|
+
self.cache = FileCache(self.wechat.project_dir)
|
44
|
+
self.folder = self.cache.folder
|
45
|
+
self.index = self.cache.index
|
46
|
+
self.store = self.cache.store
|
reywechat/rdb.py
CHANGED
@@ -13,7 +13,7 @@ from typing import Any, Literal, overload
|
|
13
13
|
from json import loads as json_loads
|
14
14
|
from reydb.rdb import Database
|
15
15
|
from reykit.rbase import throw
|
16
|
-
from reykit.ros import Folder
|
16
|
+
from reykit.ros import File, Folder
|
17
17
|
from reykit.rtime import to_time, time_to, sleep
|
18
18
|
from reykit.rwrap import wrap_thread
|
19
19
|
|
@@ -56,10 +56,10 @@ class WeChatDatabase(BaseWeChat):
|
|
56
56
|
self.wechat = wechat
|
57
57
|
match rdatabase:
|
58
58
|
case Database():
|
59
|
-
self.rdatabase_wechat = self.rdatabase_file = rdatabase
|
59
|
+
self.rdatabase_wechat: Database = self.rdatabase_file = rdatabase
|
60
60
|
case dict():
|
61
|
-
self.rdatabase_wechat = rdatabase.get('wechat')
|
62
|
-
self.rdatabase_file = rdatabase.get('file')
|
61
|
+
self.rdatabase_wechat: Database = rdatabase.get('wechat')
|
62
|
+
self.rdatabase_file: Database = rdatabase.get('file')
|
63
63
|
if (
|
64
64
|
self.rdatabase_wechat
|
65
65
|
or self.rdatabase_file
|
@@ -972,26 +972,18 @@ class WeChatDatabase(BaseWeChat):
|
|
972
972
|
File save path and file name.
|
973
973
|
"""
|
974
974
|
|
975
|
-
#
|
975
|
+
# Information.
|
976
976
|
file_info = self.rdatabase_file.file.query(file_id)
|
977
|
-
file_name = file_info['name']
|
978
977
|
file_md5 = file_info['md5']
|
978
|
+
file_name = file_info['name']
|
979
979
|
|
980
|
-
#
|
981
|
-
|
982
|
-
pattern = f'^{file_md5}$'
|
983
|
-
cache_path = rfolder.search(pattern)
|
980
|
+
# Cache.
|
981
|
+
cache_path = self.wechat.cache.index(file_md5, file_name, True)
|
984
982
|
|
985
|
-
|
983
|
+
## Download.
|
986
984
|
if cache_path is None:
|
987
|
-
|
988
|
-
|
989
|
-
file_md5
|
990
|
-
)
|
991
|
-
self.rdatabase_file.file.download(
|
992
|
-
file_id,
|
993
|
-
cache_path
|
994
|
-
)
|
985
|
+
file_bytes = self.rdatabase_file.file.download(file_id)
|
986
|
+
cache_path = self.wechat.cache.store(file_bytes, file_name)
|
995
987
|
|
996
988
|
return cache_path, file_name
|
997
989
|
|
@@ -1055,7 +1047,7 @@ class WeChatDatabase(BaseWeChat):
|
|
1055
1047
|
send_type = WeChatSendEnum(type_)
|
1056
1048
|
parameter: dict = json_loads(parameter)
|
1057
1049
|
|
1058
|
-
##
|
1050
|
+
## File.
|
1059
1051
|
if file_id is not None:
|
1060
1052
|
file_path, file_name = self.__download_file(file_id)
|
1061
1053
|
parameter['file_path'] = file_path
|
@@ -1243,8 +1235,12 @@ class WeChatDatabase(BaseWeChat):
|
|
1243
1235
|
file_name: str = params.pop('file_name')
|
1244
1236
|
else:
|
1245
1237
|
file_name = None
|
1238
|
+
|
1239
|
+
## Cache.
|
1240
|
+
cache_path = self.wechat.cache.store(file_path, file_name)
|
1241
|
+
|
1246
1242
|
file_id = self.rdatabase_file.file.upload(
|
1247
|
-
|
1243
|
+
cache_path,
|
1248
1244
|
file_name,
|
1249
1245
|
'WeChat'
|
1250
1246
|
)
|
reywechat/rlog.py
CHANGED
@@ -9,8 +9,8 @@
|
|
9
9
|
"""
|
10
10
|
|
11
11
|
|
12
|
-
from os.path import join as os_join
|
13
12
|
from reykit.rlog import Log
|
13
|
+
from reykit.ros import Folder, join_path
|
14
14
|
|
15
15
|
from .rbase import BaseWeChat
|
16
16
|
from .rreceive import WeChatMessage
|
@@ -44,6 +44,9 @@ class WeChatLog(BaseWeChat):
|
|
44
44
|
# Set attribute.
|
45
45
|
self.wechat = wechat
|
46
46
|
|
47
|
+
# Make directory.
|
48
|
+
self.folder = self.__make_dir()
|
49
|
+
|
47
50
|
# Logger.
|
48
51
|
self.rrlog = Log('WeChat')
|
49
52
|
self.rrlog_print = Log('WeChat.WeChatPrint')
|
@@ -53,6 +56,29 @@ class WeChatLog(BaseWeChat):
|
|
53
56
|
self.__add_handler()
|
54
57
|
|
55
58
|
|
59
|
+
def __make_dir(self) -> Folder:
|
60
|
+
"""
|
61
|
+
Make directory 'project_dir/log'.
|
62
|
+
|
63
|
+
Parameters
|
64
|
+
----------
|
65
|
+
project_dir: Project directory.
|
66
|
+
|
67
|
+
Returns
|
68
|
+
-------
|
69
|
+
Folder instance.
|
70
|
+
"""
|
71
|
+
|
72
|
+
# Set parameter.
|
73
|
+
dir_path = join_path(self.wechat.project_dir, 'log')
|
74
|
+
|
75
|
+
# Make.
|
76
|
+
folder = Folder(dir_path)
|
77
|
+
folder.make()
|
78
|
+
|
79
|
+
return folder
|
80
|
+
|
81
|
+
|
56
82
|
def __add_handler(self) -> None:
|
57
83
|
"""
|
58
84
|
Add log handler.
|
@@ -74,7 +100,7 @@ class WeChatLog(BaseWeChat):
|
|
74
100
|
self.rrlog_print.add_print(format_=format_)
|
75
101
|
|
76
102
|
## Add handler file.
|
77
|
-
file_path =
|
103
|
+
file_path = self.wechat.log.folder + 'wechat'
|
78
104
|
self.rrlog_file.add_file(
|
79
105
|
file_path,
|
80
106
|
time='m',
|
reywechat/rreceive.py
CHANGED
@@ -12,7 +12,6 @@
|
|
12
12
|
from __future__ import annotations
|
13
13
|
from typing import Any, TypedDict, Literal, overload
|
14
14
|
from collections.abc import Callable
|
15
|
-
from os.path import join as os_join
|
16
15
|
from queue import Queue
|
17
16
|
from json import loads as json_loads
|
18
17
|
from bs4 import BeautifulSoup as BSBeautifulSoup
|
@@ -1116,68 +1115,43 @@ class WechatReceiver(BaseWeChat):
|
|
1116
1115
|
"""
|
1117
1116
|
|
1118
1117
|
# Download.
|
1119
|
-
folder = Folder(self.wechat.dir_cache)
|
1120
|
-
generate_path = None
|
1121
1118
|
match message.type:
|
1122
1119
|
|
1123
1120
|
## Image.
|
1124
1121
|
case 3:
|
1125
|
-
|
1126
|
-
|
1127
|
-
|
1128
|
-
|
1129
|
-
|
1130
|
-
file_size = int(file_size)
|
1131
|
-
|
1132
|
-
### Exist.
|
1133
|
-
pattern = f'^{file_md5}$'
|
1134
|
-
cache_path = folder.search(pattern)
|
1135
|
-
|
1136
|
-
### Generate.
|
1122
|
+
pattern = r' md5="([\da-f]{32})"'
|
1123
|
+
file_md5: str = search(pattern, message.data)
|
1124
|
+
cache_path = self.wechat.cache.index(file_md5, copy=True)
|
1125
|
+
|
1126
|
+
### Download.
|
1137
1127
|
if cache_path is None:
|
1138
1128
|
self.wechat.client.download_file(message.id)
|
1139
|
-
|
1129
|
+
download_path = '%swxhelper/image/%s.dat' % (
|
1140
1130
|
self.wechat.client.login_info['account_data_path'],
|
1141
1131
|
message.id
|
1142
1132
|
)
|
1143
1133
|
|
1144
1134
|
## Voice.
|
1145
1135
|
case 34:
|
1136
|
+
cache_path = None
|
1146
1137
|
|
1147
|
-
###
|
1148
|
-
file_name = f'{message.id}.amr'
|
1149
|
-
pattern = r'length="(\d+)"'
|
1150
|
-
file_size = int(search(pattern, message.data))
|
1151
|
-
file_md5 = None
|
1152
|
-
|
1153
|
-
### Generate.
|
1138
|
+
### Download.
|
1154
1139
|
self.wechat.client.download_voice(
|
1155
1140
|
message.id,
|
1156
|
-
self.wechat.
|
1157
|
-
)
|
1158
|
-
generate_path = '%s/%s.amr' % (
|
1159
|
-
self.wechat.dir_cache,
|
1160
|
-
message.id
|
1141
|
+
self.wechat.cache.folder.path
|
1161
1142
|
)
|
1143
|
+
download_path = self.wechat.cache.folder + f'{message.id}.amr'
|
1162
1144
|
|
1163
1145
|
## Video.
|
1164
1146
|
case 43:
|
1147
|
+
pattern = r' md5="([\da-f]{32})"'
|
1148
|
+
file_md5: str = search(pattern, message.data)
|
1149
|
+
cache_path = self.wechat.cache.index(file_md5, copy=True)
|
1165
1150
|
|
1166
|
-
###
|
1167
|
-
file_name = f'{message.id}.mp4'
|
1168
|
-
pattern = r'length="(\d+)"'
|
1169
|
-
file_size = int(search(pattern, message.data))
|
1170
|
-
pattern = r'md5="([\da-f]{32})"'
|
1171
|
-
file_md5 = search(pattern, message.data)
|
1172
|
-
|
1173
|
-
### Exist.
|
1174
|
-
pattern = f'^{file_md5}$'
|
1175
|
-
cache_path = folder.search(pattern)
|
1176
|
-
|
1177
|
-
### Generate.
|
1151
|
+
### Download.
|
1178
1152
|
if cache_path is None:
|
1179
1153
|
self.wechat.client.download_file(message.id)
|
1180
|
-
|
1154
|
+
download_path = '%swxhelper/video/%s.mp4' % (
|
1181
1155
|
self.wechat.client.login_info['account_data_path'],
|
1182
1156
|
message.id
|
1183
1157
|
)
|
@@ -1187,26 +1161,21 @@ class WechatReceiver(BaseWeChat):
|
|
1187
1161
|
|
1188
1162
|
### Check.
|
1189
1163
|
pattern = r'^.+? : \[文件\](.+)$'
|
1190
|
-
file_name = search(pattern, message.display)
|
1191
|
-
if
|
1192
|
-
|
1193
|
-
|
1164
|
+
file_name: str | None = search(pattern, message.display)
|
1165
|
+
if (
|
1166
|
+
file_name is None
|
1167
|
+
or '<type>6</type>' not in message.data
|
1168
|
+
):
|
1194
1169
|
return
|
1195
1170
|
|
1196
|
-
### Get attribute.
|
1197
|
-
pattern = r'<totallen>(\d+)</totallen>'
|
1198
|
-
file_size = int(search(pattern, message.data))
|
1199
1171
|
pattern = r'<md5>([\da-f]{32})</md5>'
|
1200
|
-
file_md5 = search(pattern, message.data)
|
1201
|
-
|
1202
|
-
### Exist.
|
1203
|
-
pattern = f'^{file_md5}$'
|
1204
|
-
cache_path = folder.search(pattern)
|
1172
|
+
file_md5: str = search(pattern, message.data)
|
1173
|
+
cache_path = self.wechat.cache.index(file_md5, file_name, copy=True)
|
1205
1174
|
|
1206
|
-
###
|
1175
|
+
### Download.
|
1207
1176
|
if cache_path is None:
|
1208
1177
|
self.wechat.client.download_file(message.id)
|
1209
|
-
|
1178
|
+
download_path = '%swxhelper/file/%s_%s' % (
|
1210
1179
|
self.wechat.client.login_info['account_data_path'],
|
1211
1180
|
message.id,
|
1212
1181
|
file_name
|
@@ -1216,35 +1185,29 @@ class WechatReceiver(BaseWeChat):
|
|
1216
1185
|
case _:
|
1217
1186
|
return
|
1218
1187
|
|
1219
|
-
if
|
1188
|
+
if cache_path is None:
|
1220
1189
|
|
1221
1190
|
## Wait.
|
1222
1191
|
wait(
|
1223
1192
|
os_exists,
|
1224
|
-
|
1193
|
+
download_path,
|
1225
1194
|
_interval = 0.05,
|
1226
1195
|
_timeout=3600
|
1227
1196
|
)
|
1228
1197
|
sleep(0.2)
|
1229
1198
|
|
1230
|
-
##
|
1231
|
-
|
1232
|
-
if file_md5 is None:
|
1233
|
-
file_md5 = rfile.md5
|
1234
|
-
pattern = f'^{file_md5}$'
|
1235
|
-
cache_path = folder.search(pattern)
|
1236
|
-
if cache_path is None:
|
1237
|
-
cache_path = os_join(self.wechat.dir_cache, file_md5)
|
1238
|
-
rfile.move(cache_path)
|
1199
|
+
## Cache.
|
1200
|
+
cache_path = self.wechat.cache.store(download_path, file_name, delete=True)
|
1239
1201
|
|
1240
1202
|
# Set parameter.
|
1241
|
-
file
|
1203
|
+
file = File(cache_path)
|
1204
|
+
message_file: MessageParameterFile = {
|
1242
1205
|
'path': cache_path,
|
1243
|
-
'name':
|
1244
|
-
'md5':
|
1245
|
-
'size':
|
1206
|
+
'name': file.name,
|
1207
|
+
'md5': file.md5,
|
1208
|
+
'size': file.size
|
1246
1209
|
}
|
1247
|
-
message.file =
|
1210
|
+
message.file = message_file
|
1248
1211
|
|
1249
1212
|
|
1250
1213
|
def start(self) -> None:
|
reywechat/rsend.py
CHANGED
@@ -286,15 +286,6 @@ class WeChatSender(BaseWeChat):
|
|
286
286
|
sendparam : `WeChatSendParameter` instance.
|
287
287
|
"""
|
288
288
|
|
289
|
-
# File rename to new.
|
290
|
-
if (
|
291
|
-
(file_path := sendparam.params.get('file_path')) is not None
|
292
|
-
and (file_name := sendparam.params.get('file_name')) is not None
|
293
|
-
):
|
294
|
-
file = File(file_path)
|
295
|
-
file_old_name = file.name
|
296
|
-
file_path_rename = file.rename(file_name)
|
297
|
-
|
298
289
|
# Send.
|
299
290
|
match sendparam.send_type:
|
300
291
|
|
@@ -317,21 +308,21 @@ class WeChatSender(BaseWeChat):
|
|
317
308
|
case WeChatSendEnum.SEND_FILE:
|
318
309
|
self.wechat.client.send_file(
|
319
310
|
sendparam.receive_id,
|
320
|
-
|
311
|
+
sendparam.params['file_path']
|
321
312
|
)
|
322
313
|
|
323
314
|
## Image.
|
324
315
|
case WeChatSendEnum.SEND_IMAGE:
|
325
316
|
self.wechat.client.send_image(
|
326
317
|
sendparam.receive_id,
|
327
|
-
|
318
|
+
sendparam.params['file_path']
|
328
319
|
)
|
329
320
|
|
330
321
|
## Emotion.
|
331
322
|
case WeChatSendEnum.SEND_EMOTION:
|
332
323
|
self.wechat.client.send_emotion(
|
333
324
|
sendparam.receive_id,
|
334
|
-
|
325
|
+
sendparam.params['file_path']
|
335
326
|
)
|
336
327
|
|
337
328
|
## Pat.
|
@@ -364,15 +355,6 @@ class WeChatSender(BaseWeChat):
|
|
364
355
|
case send_type:
|
365
356
|
throw(ValueError, send_type)
|
366
357
|
|
367
|
-
# File rename to old.
|
368
|
-
if (
|
369
|
-
file_path is not None
|
370
|
-
and file_name is not None
|
371
|
-
):
|
372
|
-
sleep(1)
|
373
|
-
file = File(file_path_rename)
|
374
|
-
file.rename(file_old_name)
|
375
|
-
|
376
358
|
|
377
359
|
def add_handler(
|
378
360
|
self,
|
reywechat/rwechat.py
CHANGED
@@ -11,10 +11,9 @@
|
|
11
11
|
|
12
12
|
from typing import Literal
|
13
13
|
from os import getcwd as os_getcwd
|
14
|
-
from os.path import join as os_join
|
15
14
|
from reydb.rdb import Database
|
16
15
|
from reykit.rbase import block
|
17
|
-
from reykit.ros import
|
16
|
+
from reykit.ros import Folder, join_path
|
18
17
|
|
19
18
|
from .rbase import BaseWeChat
|
20
19
|
|
@@ -63,6 +62,7 @@ class WeChat(BaseWeChat):
|
|
63
62
|
"""
|
64
63
|
|
65
64
|
# Import.
|
65
|
+
from .rcache import WeChatCache
|
66
66
|
from .rclient import WeChatClient
|
67
67
|
from .rdb import WeChatDatabase
|
68
68
|
from .rlog import WeChatLog
|
@@ -70,14 +70,12 @@ class WeChat(BaseWeChat):
|
|
70
70
|
from .rschedule import WeChatSchedule
|
71
71
|
from .rsend import WeChatSender
|
72
72
|
|
73
|
-
# Make directory.
|
74
|
-
project_dir = project_dir or os_getcwd()
|
75
|
-
self.dir_cache, self.dir_log = self.__make_subdir(project_dir)
|
76
|
-
|
77
73
|
# Set attribute.
|
74
|
+
self.project_dir = project_dir or os_getcwd()
|
78
75
|
|
79
76
|
## Instance.
|
80
77
|
self.client = WeChatClient(self)
|
78
|
+
self.cache = WeChatCache(self)
|
81
79
|
self.log = WeChatLog(self)
|
82
80
|
self.receiver = WechatReceiver(self, max_receiver)
|
83
81
|
self.trigger = self.receiver.trigger
|
@@ -117,39 +115,6 @@ class WeChat(BaseWeChat):
|
|
117
115
|
self.schedule_resume = self.schedule.resume
|
118
116
|
|
119
117
|
|
120
|
-
def __make_subdir(
|
121
|
-
self,
|
122
|
-
project_dir: str
|
123
|
-
) -> tuple[str, str]:
|
124
|
-
"""
|
125
|
-
Make project subdirectory, 'project_dir/cache' and 'project_dir/cache'.
|
126
|
-
|
127
|
-
Parameters
|
128
|
-
----------
|
129
|
-
project_dir: Project directory.
|
130
|
-
|
131
|
-
Returns
|
132
|
-
-------
|
133
|
-
Subdirectorys path.
|
134
|
-
"""
|
135
|
-
|
136
|
-
# Set parameter.
|
137
|
-
dir_names = (
|
138
|
-
'cache',
|
139
|
-
'log'
|
140
|
-
)
|
141
|
-
dir_dict = {
|
142
|
-
dir_name: os_join(project_dir, dir_name)
|
143
|
-
for dir_name in dir_names
|
144
|
-
}
|
145
|
-
|
146
|
-
# Create.
|
147
|
-
paths = dir_dict.values()
|
148
|
-
reykit_make_dir(*paths)
|
149
|
-
|
150
|
-
return dir_dict['cache'], dir_dict['log']
|
151
|
-
|
152
|
-
|
153
118
|
def start(self) -> None:
|
154
119
|
"""
|
155
120
|
Start all methods.
|
@@ -0,0 +1,17 @@
|
|
1
|
+
reywechat/__init__.py,sha256=BL4PUpTguszJ612qsZf4-sOXxRIsiYRQ_m__FGMd1RQ,513
|
2
|
+
reywechat/rall.py,sha256=zEW-mLL2uP8aT2_foCMFGmMi_3RCrGl8qutnSVkmY1E,397
|
3
|
+
reywechat/rbase.py,sha256=0NunIUIXra2ML2N6odwMk5oENTE0r6VSBHWXUvgI-lc,1124
|
4
|
+
reywechat/rcache.py,sha256=yPGOaotZJ-Ps_6hKXm0jtQXAkdIEHLqr2nR-42syzmQ,856
|
5
|
+
reywechat/rclient.py,sha256=gtTYaoqhgh9kRFslETKjBJiAAdzJfeOxIJbdCkGAFhM,22577
|
6
|
+
reywechat/rdb.py,sha256=WOIdaDp6KENu5Pq9Nbd4uZlSh_SV8SSWcGbL-mu3WZI,40299
|
7
|
+
reywechat/rlog.py,sha256=zbdhPAL5fkJ0HKQuz9DBonJ1dxJ1N8GKROHvBmA6UaE,5262
|
8
|
+
reywechat/rreceive.py,sha256=byrT8MeIKELDRd9CLakk1WfOvxvpMeMiv2SIdcfkLAE,31158
|
9
|
+
reywechat/rschedule.py,sha256=fn11rH0HqxbnJYxARCBBiSdzBpYfQFhcjNmkvihVMTc,1854
|
10
|
+
reywechat/rsend.py,sha256=ShQLsKF6YXXD8SjixMFgqY1VGtIKt4f3odkXvP2dVDk,13746
|
11
|
+
reywechat/rtrigger.py,sha256=GHfkhNrS8rV4uXWC3N54UTjak7nKGfqJWX6pe57Hsgg,4953
|
12
|
+
reywechat/rwechat.py,sha256=tsCwtZN7YVmgrHti0qVoifjC2XcIkjBYYWDK-ZP-YfM,4811
|
13
|
+
reywechat/data/client_api.dll,sha256=H9uj-x9Ztg0jFZK0yY6NsnyH5_119dQRFfoVVMidxRs,592384
|
14
|
+
reywechat-1.0.28.dist-info/METADATA,sha256=Brbyp2S4e_9JJg1mYEeioYkTvDCaOvSYWAV_ZkQv75Y,1551
|
15
|
+
reywechat-1.0.28.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
16
|
+
reywechat-1.0.28.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
|
17
|
+
reywechat-1.0.28.dist-info/RECORD,,
|
@@ -1,16 +0,0 @@
|
|
1
|
-
reywechat/__init__.py,sha256=CBcaezJsuYnBzunuzRoRwz-q_HDQq7XsGKtNxCWAQoY,488
|
2
|
-
reywechat/rall.py,sha256=KAHdmzvrmDel_ttvZKR0tkfg21Amm3sKMvGJDkNA14U,374
|
3
|
-
reywechat/rbase.py,sha256=0NunIUIXra2ML2N6odwMk5oENTE0r6VSBHWXUvgI-lc,1124
|
4
|
-
reywechat/rclient.py,sha256=gtTYaoqhgh9kRFslETKjBJiAAdzJfeOxIJbdCkGAFhM,22577
|
5
|
-
reywechat/rdb.py,sha256=JBrJw-Xev9BNogOg2G31-da80y7edpSjtAzFHZkDs3g,40313
|
6
|
-
reywechat/rlog.py,sha256=rIl3fy1SFuAAiUnxVnOFJv-gK51AunDljJgsFUx6I50,4745
|
7
|
-
reywechat/rreceive.py,sha256=pgo--mHTSpCtb_ScIreoiiWAtIVsqe2Tut88W7MrBc8,32403
|
8
|
-
reywechat/rschedule.py,sha256=fn11rH0HqxbnJYxARCBBiSdzBpYfQFhcjNmkvihVMTc,1854
|
9
|
-
reywechat/rsend.py,sha256=q1stNggg40WPqI5h8_coAXsbFRM6M6dxsDxq2-L3CJs,14286
|
10
|
-
reywechat/rtrigger.py,sha256=GHfkhNrS8rV4uXWC3N54UTjak7nKGfqJWX6pe57Hsgg,4953
|
11
|
-
reywechat/rwechat.py,sha256=Niu2TTyElpzXtb6fn-xzwa1QjkwrvLwFyP3U-2ALrl4,5595
|
12
|
-
reywechat/data/client_api.dll,sha256=H9uj-x9Ztg0jFZK0yY6NsnyH5_119dQRFfoVVMidxRs,592384
|
13
|
-
reywechat-1.0.27.dist-info/METADATA,sha256=Y9h0Dr56SY6w5krZ163ufW6FdT3-kgdUkOD5jw6O7JM,1551
|
14
|
-
reywechat-1.0.27.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
15
|
-
reywechat-1.0.27.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
|
16
|
-
reywechat-1.0.27.dist-info/RECORD,,
|
File without changes
|
File without changes
|