Files
Esmart/esmart.py
lychang 37af6c33ee init
2025-09-16 01:54:46 +08:00

117 lines
3.9 KiB
Python

import json
import time
from access_token import SmartSheet
from lib import WXworkBaseAPI
class ESmart:
def __init__(self, time_out: int = 10 * 60):
self.time_out = time_out
self.timestamp = int(time.time())
self.report_sheet = SmartSheet(
"dc48YTUb9gNYCpIWg5v90-U5HIWT72bm3Fkw9Jvi33_sP3I0H32QEDFNOf69TS1bbUjdsYLmvArqqUootD34nm8Q", "L1wFol")
self.user_sheet = SmartSheet(
"dc1zao6J8YnS9p86FKKvKQadukmFXlXv3dU1qVQrgcjB81zdSVI7qoi9a7K_OpN4BTyXc8EbYVXxpnQNUUTMWwIw",
"8vVxEx")
self.notice_sheet = SmartSheet(
"dc1zao6J8YnS9p86FKKvKQadukmFXlXv3dU1qVQrgcjB81zdSVI7qoi9a7K_OpN4BTyXc8EbYVXxpnQNUUTMWwIw", "2943X5")
self.user_log_sheet = SmartSheet(
"dcqzSDHPl2ZWoLkEB3Id1wMMaW0meMSwGLjfnuHD0VMh0DVidKdal-3wYfsh7Zb1pGn9moDuzjvhtlRZAXoO-Hjg", "g6dTI2")
self.base_sheet = SmartSheet(
"dcqzSDHPl2ZWoLkEB3Id1wMMaW0meMSwGLjfnuHD0VMh0DVidKdal-3wYfsh7Zb1pGn9moDuzjvhtlRZAXoO-Hjg", "1gTulR")
self._base_data = None
self._user_info = None
@staticmethod
def _convert_user_info(data):
_data = {}
for i in data["data"]:
if "来源对象ID#eid" in i:
v = {
"eid": i["来源对象ID#eid"],
"name": i["名称#name"],
"value": i["数值#value"],
"type": i["类型"],
"_rid": i["_rid"],
}
k = v["name"].split("_")
k = k[0] if len(k) > 0 else ""
_data[k] = v
return _data
@property
def base_data(self):
if self._base_data is None:
self._base_data = self.base_sheet.to_json()
if self._check_timeout():
self._base_data = self.base_sheet.to_json()
return self._base_data
@property
def user_info(self):
if self._user_info is None:
self._user_info = self._convert_user_info(self.user_sheet.to_json())
if self._check_timeout():
self._user_info = self._convert_user_info(self.user_sheet.to_json())
return self._user_info
def get_user_info(self, user_id):
now = int(time.time())
if now - self.timestamp > self.time_out:
print("refresh")
self.timestamp = now
def _check_timeout(self):
now = int(time.time())
if now - self.timestamp > self.time_out:
print("refresh")
self.timestamp = now
return True
else:
return False
def refresh(self):
self._base_data = self.base_sheet.to_json()
if __name__ == '__main__':
esmart = ESmart()
# with open("package.json", "w",encoding="utf-8") as f:
# f.write(json.dumps(esmart.user_info,ensure_ascii=False))
with open("package.json", "r",encoding="utf-8") as f:
u_mapping = json.loads(f.read())
cache_mapping = {v["深交所上市公司代码"]: [u_mapping.get(j,{}).get('_rid') for j in v.get("跟进负责人",[]) if u_mapping.get(j)] for v in esmart.base_data["data"]}
print(cache_mapping)
# user_sheet.search({
# "conjunction": "CONJUNCTION_AND",
# "conditions": [{
# "field_id": 'fmTMGx',
# "field_type": "FIELD_TYPE_TEXT",
# "operator": "OPERATOR_CONTAINS",
# "string_value": {
# "value": [
# ""
# ]
# }
# }]
# })
# for i in m["data"]:
# print(i)
#
# data = {
# "*发布日期": time.strftime("%Y-%m-%d", time.localtime()),
# "*栏目#gName": "",
# "状态": "待发布",
# "*摘要#subject": "",
# "置顶#isTop": False,
# "*详情#content": "",
# "*标题#title": "",
# "消息类型#msgType": "中性",
# "*消息接收对象#sendList": [
# ""
# ]
# }
# print(data)
#