Skip to content

Commit

Permalink
Feat: add message push
Browse files Browse the repository at this point in the history
  • Loading branch information
tychxn committed Feb 5, 2020
1 parent c85753c commit 12644e6
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 4 deletions.
10 changes: 9 additions & 1 deletion config.ini
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,12 @@ payment_pwd =
[config]
eid =
fp =
timeout =
# 查询库存请求超时(秒),默认10秒
timeout =

[messenger]
# 使用了Server酱的推送服务
# 如果想开启下单成功后消息推送,则将 enable 设置为 True,默认为 False 不开启推送
# 开启消息推送必须填入 sckey,如何获取请参考 http://sc.ftqq.com/3.version。感谢Server酱~
enable = False
sckey =
13 changes: 10 additions & 3 deletions jd_assistant.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from config import global_config
from exception import AsstException
from log import logger
from messenger import Messenger
from timer import Timer
from util import (
USER_AGENT,
Expand Down Expand Up @@ -54,12 +55,15 @@ def __init__(self):
self.eid = global_config.get('config', 'eid') or DEFAULT_EID
self.fp = global_config.get('config', 'fp') or DEFAULT_FP
self.track_id = DEFAULT_TRACK_ID
self.timeout = float(global_config.get('config', 'timeout')) or DEFAULT_TIMEOUT
self.timeout = float(global_config.get('config', 'timeout') or DEFAULT_TIMEOUT)

self.seckill_init_info = dict()
self.seckill_order_data = dict()
self.seckill_url = dict()

self.send_message = global_config.get('messenger', 'enable').strip() in ['True', 'true', '1']
self.messenger = Messenger() if self.send_message else None

try:
self._load_cookies()
except Exception:
Expand Down Expand Up @@ -452,7 +456,7 @@ def get_single_item_stock(self, sku_id, num, area):
try:
resp = requests.get(url=url, params=payload, headers=headers, timeout=self.timeout)
except requests.exceptions.Timeout:
logger.error('查询 %s 库存信息超时(%ss)', self.timeout)
logger.error('查询 %s 库存信息超时(%ss)', sku_id, self.timeout)
return False
except requests.exceptions.RequestException as e:
raise AsstException('查询 %s 库存信息异常:%s' % (sku_id, e))
Expand Down Expand Up @@ -929,7 +933,10 @@ def submit_order(self):
# {'overSea': False, 'orderXml': None, 'cartXml': None, 'noStockSkuIds': '', 'reqInfo': None, 'hasJxj': False, 'addedServiceList': None, 'sign': None, 'pin': 'xxx', 'needCheckCode': False, 'success': True, 'resultCode': 0, 'orderId': 8740xxxxx, 'submitSkuNum': 1, 'deductMoneyFlag': 0, 'goJumpOrderCenter': False, 'payInfo': None, 'scaleSkuInfoListVO': None, 'purchaseSkuInfoListVO': None, 'noSupportHomeServiceSkuList': None, 'msgMobile': None, 'addressVO': None, 'msgUuid': None, 'message': None}

if resp_json.get('success'):
logger.info('订单提交成功! 订单号:%s', resp_json.get('orderId'))
order_id = resp_json.get('orderId')
logger.info('订单提交成功! 订单号:%s', order_id)
if self.send_message:
self.messenger.send(text='jd-assistant 订单提交成功', desp='订单号:%s' % order_id)
return True
else:
message, result_code = resp_json.get('message'), resp_json.get('resultCode')
Expand Down
43 changes: 43 additions & 0 deletions messenger.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/usr/bin/env python
# -*- encoding=utf8 -*-
import datetime
import json

import requests

from config import global_config
from exception import AsstException
from log import logger


class Messenger(object):
"""消息推送类"""

def __init__(self):
sc_key = global_config.get('messenger', 'sckey').strip()
if not sc_key:
raise AsstException('sc_key can not be empty')

self.sc_key = sc_key

def send(self, text, desp=''):
if not text.strip():
logger.error('Text of message is empty!')
return

now_time = str(datetime.datetime.now())
desp = '[{0}]'.format(now_time) if not desp else '{0} [{1}]'.format(desp, now_time)

try:
resp = requests.get(
'https://sc.ftqq.com/{}.send?text={}&desp={}'.format(self.sc_key, text, desp)
)
resp_json = json.loads(resp.text)
if resp_json.get('errno') == 0:
logger.info('Message sent successfully [text: %s, desp: %s]', text, desp)
else:
logger.error('Fail to send message, reason: %s', resp.text)
except requests.exceptions.RequestException as req_error:
logger.error('Request error: %s', req_error)
except Exception as e:
logger.error('Fail to send message [text: %s, desp: %s]: %s', text, desp, e)

0 comments on commit 12644e6

Please sign in to comment.