增加:发车时间段筛选

This commit is contained in:
Breeze Chen
2019-01-27 15:34:06 +08:00
parent 696f888ad1
commit 9462e0d72c
2 changed files with 35 additions and 1 deletions

View File

@@ -142,7 +142,11 @@ QUERY_JOBS = [
"K4184"
],
'except_train_numbers': [ # 筛选车次,排除车次 train_numbers 和 except_train_numbers 不可同时存在
]
],
'period': { # 筛选时间
'from': '00:00',
'to': '24:00'
}
},
# {

View File

@@ -1,4 +1,5 @@
import sys
from datetime import timedelta
from py12306.app import app_available_check
from py12306.cluster.cluster import Cluster
@@ -28,6 +29,8 @@ class Job:
arrive_station = ''
left_station_code = ''
arrive_station_code = ''
from_time = timedelta(hours=0)
to_time = timedelta(hours=24)
account_key = 0
allow_seats = []
@@ -60,6 +63,8 @@ class Job:
INDEX_ARRIVE_STATION = 7
INDEX_ORDER_TEXT = 1 # 下单文字
INDEX_SECRET_STR = 0
INDEX_LEFT_TIME = 8
INDEX_ARRIVE_TIME = 9
def __init__(self, info, query):
self.cluster = Cluster()
@@ -84,6 +89,18 @@ class Job:
self.member_num = len(self.members)
self.member_num_take = self.member_num
self.allow_less_member = bool(info.get('allow_less_member'))
period = info.get('period')
if isinstance(period, dict):
if 'from' in period:
parts = period['from'].split(':')
if len(parts) == 2:
self.from_time = timedelta(
hours=int(parts[0]), seconds=int(parts[1]))
if 'to' in period:
parts = period['to'].split(':')
if len(parts) == 2:
self.to_time = timedelta(
hours=int(parts[0]), seconds=int(parts[1]))
def update_interval(self):
self.interval = self.query.interval
@@ -239,6 +256,13 @@ class Job:
return seat != '' and seat != '' and seat != '*'
def is_trains_number_valid(self):
train_left_time = self.get_info_of_train_left_time()
time_parts = train_left_time.split(':')
left_time = timedelta(
hours=int(time_parts[0]), seconds=int(time_parts[1]))
if left_time < self.from_time or left_time > self.to_time:
return False
if self.except_train_numbers:
return self.get_info_of_train_number().upper() not in map(str.upper, self.except_train_numbers)
if self.allow_train_numbers:
@@ -324,3 +348,9 @@ class Job:
def get_info_of_secret_str(self):
return self.ticket_info[self.INDEX_SECRET_STR]
def get_info_of_train_left_time(self):
return self.ticket_info[self.INDEX_LEFT_TIME]
def get_info_of_train_arrive_time(self):
return self.ticket_info[self.INDEX_ARRIVE_TIME]