diff --git a/env.py.example b/env.py.example index db736ea..219dd7c 100644 --- a/env.py.example +++ b/env.py.example @@ -117,8 +117,8 @@ QUERY_JOBS = [ # 'job_name': 'bj -> sz', # 任务名称,不填默认会以车站名命名,不可重复 'account_key': 0, # 将会使用指定账号下单 'left_dates': [ # 出发日期 :Array - "2019-01-25", - "2019-01-26", + "2020-01-25", + "2020-01-26", ], 'stations': { # 车站 支持多个车站同时查询 :Dict or :List 'left': '北京', diff --git a/py12306/query/job.py b/py12306/query/job.py index cc1a374..8b91c45 100644 --- a/py12306/query/job.py +++ b/py12306/query/job.py @@ -1,5 +1,6 @@ import sys from datetime import timedelta +from datetime import datetime from py12306.app import app_available_check from py12306.cluster.cluster import Cluster @@ -66,6 +67,8 @@ class Job: INDEX_LEFT_TIME = 8 INDEX_ARRIVE_TIME = 9 + max_buy_time = 32 + def __init__(self, info, query): self.cluster = Cluster() self.query = query @@ -136,11 +139,29 @@ class Job: QueryLog.add_log('\n').flush(sep='\t\t', publish=False) if Const.IS_TEST: return + def judge_date_legal(self, date): + date_now = datetime.datetime.now() + date_query = datetime.datetime.strptime(str(date), "%Y-%m-%d") + diff = (date_query - date_now).days + if date_now.day == date_query.day: + diff = 0 + if diff < 0: + msg = '乘车日期错误,比当前时间还早!!' + QueryLog.add_quick_log(msg).flush(publish=False) + raise RuntimeError(msg) + elif diff > self.max_buy_time: + msg = '乘车日期错误,超出一个月预售期!!' + QueryLog.add_quick_log(msg).flush(publish=False) + raise RuntimeError(msg) + else: + pass + def query_by_date(self, date): """ 通过日期进行查询 :return: """ + self.judge_date_legal(date) from py12306.helpers.cdn import Cdn QueryLog.add_log(('\n' if not is_main_thread() else '') + QueryLog.MESSAGE_QUERY_START_BY_DATE.format(date, self.left_station,