lazysdk 0.1.115__tar.gz → 0.1.117__tar.gz
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.
- {lazysdk-0.1.115 → lazysdk-0.1.117}/PKG-INFO +1 -1
- lazysdk-0.1.117/lazysdk/lazy_input.py +35 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazyexcel.py +7 -2
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazywebhook.py +47 -2
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk.egg-info/PKG-INFO +1 -1
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk.egg-info/SOURCES.txt +1 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/setup.py +1 -1
- {lazysdk-0.1.115 → lazysdk-0.1.117}/LICENSE +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/README.md +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/__init__.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazyCrypto.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazy_header.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazy_id_card.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazybase64.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazycache.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazychromedriver.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazydecode.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazydict.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazyenv.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazyfile.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazyflask.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazyhtml.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazyid.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazyinfo.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazyip.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazyjson.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazylist.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazym3u8.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazymd5.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazypath.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazyprocess.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazyproxies.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazyrandom.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazyre.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazyredis.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazyrequests.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazytext.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazytime.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazyua.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazyurl.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazywifi.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/lazyxml.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk/showdata.py +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk.egg-info/dependency_links.txt +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk.egg-info/requires.txt +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/lazysdk.egg-info/top_level.txt +0 -0
- {lazysdk-0.1.115 → lazysdk-0.1.117}/setup.cfg +0 -0
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
# coding = utf8
|
3
|
+
from lazysdk import showdata
|
4
|
+
|
5
|
+
|
6
|
+
def convert2dict(header_str: str):
|
7
|
+
header_temp = header_str.split('\n')
|
8
|
+
header_dict = dict()
|
9
|
+
for each in header_temp:
|
10
|
+
if len(each) == 0:
|
11
|
+
continue
|
12
|
+
else:
|
13
|
+
each_split = each.split(': ')
|
14
|
+
header_dict[each_split[0]] = each_split[1]
|
15
|
+
return header_dict
|
16
|
+
|
17
|
+
|
18
|
+
def get_lines():
|
19
|
+
lines = []
|
20
|
+
print("请输入多行数据,以空行结束:")
|
21
|
+
while True:
|
22
|
+
line = input()
|
23
|
+
if line:
|
24
|
+
lines.append(line)
|
25
|
+
else:
|
26
|
+
break
|
27
|
+
|
28
|
+
print("您输入的多行数据是:")
|
29
|
+
return "\n".join(lines)
|
30
|
+
|
31
|
+
|
32
|
+
if __name__ == '__main__':
|
33
|
+
test_lines = get_lines()
|
34
|
+
showdata.show_dict(convert2dict(header_str=test_lines))
|
35
|
+
|
@@ -233,7 +233,8 @@ def save_xlsx(
|
|
233
233
|
datetime_cols: list = None,
|
234
234
|
num_cols: list = None,
|
235
235
|
col_name_dict: dict = None,
|
236
|
-
col_name_sort: list = None
|
236
|
+
col_name_sort: list = None,
|
237
|
+
cell_number_format: dict = None
|
237
238
|
):
|
238
239
|
"""
|
239
240
|
如果输入的value是乱序,将重新排序
|
@@ -244,6 +245,7 @@ def save_xlsx(
|
|
244
245
|
:param num_cols: 数字列列表
|
245
246
|
:param col_name_dict: 自定义列名的对照关系,规则为:{'旧名称1':'新名称1', '旧名称2':'新名称2'}
|
246
247
|
:param col_name_sort: 自定义列名排序,将按照列表顺序排,如果不在列表中,将随机
|
248
|
+
:param cell_number_format: 自定义列数据格式,例如{"a": "0.00", "b": "0.00%"}
|
247
249
|
将输出保存后的文件绝对路径
|
248
250
|
"""
|
249
251
|
if os.path.isabs(file): # 判断是否为绝对路径
|
@@ -339,11 +341,14 @@ def save_xlsx(
|
|
339
341
|
value = each.get(key)
|
340
342
|
if isinstance(value, dict) or isinstance(value, list):
|
341
343
|
value = json.dumps(value, ensure_ascii=False)
|
342
|
-
sheet.cell(
|
344
|
+
cell = sheet.cell(
|
343
345
|
row=row_num,
|
344
346
|
column=col_num,
|
345
347
|
value=value
|
346
348
|
)
|
349
|
+
value_cell_number_format = cell_number_format.get(key)
|
350
|
+
if value_cell_number_format:
|
351
|
+
cell.number_format = value_cell_number_format # 设置单元格数据格式
|
347
352
|
col_num += 1
|
348
353
|
row_num += 1
|
349
354
|
else:
|
@@ -259,7 +259,7 @@ def send_text(
|
|
259
259
|
return response
|
260
260
|
time.sleep(1)
|
261
261
|
elif webhook_hostname == 'open.feishu.cn':
|
262
|
-
lazyrequests.lazy_requests(
|
262
|
+
return lazyrequests.lazy_requests(
|
263
263
|
url=webhook,
|
264
264
|
method="POST",
|
265
265
|
headers={"Content-Type": "application/json"},
|
@@ -267,9 +267,54 @@ def send_text(
|
|
267
267
|
)
|
268
268
|
elif webhook_hostname == 'api.day.app':
|
269
269
|
# 支持简单的Bark推送
|
270
|
-
lazyrequests.lazy_requests(
|
270
|
+
return lazyrequests.lazy_requests(
|
271
271
|
url=webhook,
|
272
272
|
method="GET"
|
273
273
|
)
|
274
274
|
else:
|
275
275
|
return {'errcode': -2, 'errmsg': '暂不支持此webhook'}
|
276
|
+
|
277
|
+
|
278
|
+
def send(
|
279
|
+
msg: str = None,
|
280
|
+
|
281
|
+
env_file_name: str = None,
|
282
|
+
webhook: str = None,
|
283
|
+
webhooks: list = None,
|
284
|
+
at_ids: list = None,
|
285
|
+
at_mobiles: list = None,
|
286
|
+
is_at: bool = None,
|
287
|
+
at_all: bool = None,
|
288
|
+
ensure_success: bool = False,
|
289
|
+
ensure_success_limit: int = 60
|
290
|
+
):
|
291
|
+
webhooks_all = list()
|
292
|
+
send_res = list()
|
293
|
+
if webhook:
|
294
|
+
webhooks_all.append(webhook)
|
295
|
+
if webhooks:
|
296
|
+
webhooks_all.extend(webhooks)
|
297
|
+
|
298
|
+
if not webhooks_all:
|
299
|
+
showlog.warning("无有效的webhook地址")
|
300
|
+
else:
|
301
|
+
for each_index, each_webhook in enumerate(webhooks_all):
|
302
|
+
showlog.info(f"正在发送第 {each_index+1}/{len(webhooks_all)} 条推送: \n{msg}\n")
|
303
|
+
each_send_res = send_text(
|
304
|
+
msg=msg,
|
305
|
+
env_file_name=env_file_name,
|
306
|
+
webhook=each_webhook,
|
307
|
+
at_ids=at_ids,
|
308
|
+
at_mobiles=at_mobiles,
|
309
|
+
is_at=is_at,
|
310
|
+
at_all=at_all,
|
311
|
+
ensure_success=ensure_success,
|
312
|
+
ensure_success_limit=ensure_success_limit
|
313
|
+
)
|
314
|
+
send_res.append({
|
315
|
+
"webhook": each_webhook,
|
316
|
+
"msg": msg,
|
317
|
+
"send_res": each_send_res,
|
318
|
+
})
|
319
|
+
|
320
|
+
return send_res
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|