forked from V-I-C-T-O-R/12306
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfuckeverything.py
137 lines (121 loc) · 5.7 KB
/
fuckeverything.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
import os
import time
from conf.constant import SEAT_TYPE
from configure import *
from train.login.Login import Login
from train.query.Query import Query
from train.submit.Submit import Submit
from utils import TrainUtils
from utils import Utils, deadline
from utils.Log import Log
from utils.email_tool import send_mail
from utils.sms import send_sms
from spider.get_free_proxy import GetFreeProxy
from net import init_ip_pool
from utils.sqllite_handle import Sqlite
address = os.path.dirname(os.path.realpath(__file__)) + '/'
def working(username=USER_NAME, password=USER_PWD, id_cards=PASSENGERS_ID, day=TRAIN_DATE, from_station=FROM_STATION,
to_station=TO_STATION,
seats=SEAT_TYPE_CODE, types=PASSENGER_TYPE_CODE, train_no=TRAINS_NO, polocy=POLICY_BILL,
tour_flag=TOUR_FLAG, refersh=QUERY_TICKET_REFERSH_INTERVAL):
GetFreeProxy.getAllProxy(THREAD_POOL_SIZE, THREAD_OR_PROCESS, IS_REFASH_IP_POOL)
init_ip_pool()
login = Login()
Log.v('正在登录...')
result, msg = login.login(username, password, IS_AUTO_CHECK_CAPTHCA)
if not Utils.check(result, msg):
Log.e(msg)
return
Log.v('%s,登录成功' % msg)
seatTypesCode = seats if seats else [SEAT_TYPE[key] for key in SEAT_TYPE.keys()]
passengerTypeCode = types if types else '1'
count = 0
while True:
# 死循环一直查票,直到下单成功
try:
nowTime, status = deadline.do_fix_time()
if status:
Log.v('当前时间:%s 处于23点到6点之间,12306处于维护状态,暂不处理下单业务' % nowTime)
continue
count += 1
Log.v('第%d 次访问12306网站' % count)
print('-' * 40)
ticketDetails = Query.loopQuery(day, from_station, to_station,
TrainUtils.passengerType2Desc(passengerTypeCode),
train_no,
seatTypesCode, id_cards, polocy, refersh)
Log.v('已为您查询到可用余票:%s' % ticketDetails)
ticketDetails.passengersId = id_cards
ticketDetails.ticketTypeCodes = passengerTypeCode
ticketDetails.tourFlag = tour_flag if tour_flag else 'dc'
submit = Submit(ticketDetails)
if submit.submit(CHOOSE_SEATS):
status, contents = submit.showSubmitInfoPretty()
if status:
flag = send_mail(mail_user, mailto_list, '12306订票结果通知', mail_host, mail_user, mail_pass, contents)
if flag:
Log.v("邮件发送成功!")
else:
Log.v("邮件发送失败!")
sms_id = send_sms(ACCOUNT_SID, AUTO_TOKEN, FROM_NUM, TO_NUM, '小机机已经成功拿到小票票,请主人记得在30分钟内完成支付!!!')
if sms_id:
Log.v("短信提醒发送成功!")
else:
Log.v("短信提醒发送成功!")
break
time.sleep(1)
except Exception as e:
Log.w("提交操作异常:" + e)
print(login.loginOut())
def main():
GetFreeProxy.getAllProxy(THREAD_POOL_SIZE, THREAD_OR_PROCESS, IS_REFASH_IP_POOL)
init_ip_pool()
login = Login()
Log.v('正在登录...')
result, msg = login.login(USER_NAME, USER_PWD, IS_AUTO_CHECK_CAPTHCA)
if not Utils.check(result, msg):
Log.e(msg)
return
Log.v('%s,登录成功' % msg)
seatTypesCode = SEAT_TYPE_CODE if SEAT_TYPE_CODE else [SEAT_TYPE[key] for key in SEAT_TYPE.keys()]
passengerTypeCode = PASSENGER_TYPE_CODE if PASSENGER_TYPE_CODE else '1'
count = 0
while True:
# 死循环一直查票,直到下单成功
try:
nowTime, status = deadline.do_fix_time()
if status:
Log.v('当前时间:%s 处于23点到6点之间,12306处于维护状态,暂不处理下单业务' % nowTime)
continue
count += 1
Log.v('第%d次访问12306网站' % count)
print('-' * 40)
ticketDetails = Query.loopQuery(TRAIN_DATE, FROM_STATION, TO_STATION,
TrainUtils.passengerType2Desc(passengerTypeCode),
TRAINS_NO,
seatTypesCode, PASSENGERS_ID, POLICY_BILL, QUERY_TICKET_REFERSH_INTERVAL)
Log.v('已为您查询到可用余票:%s' % ticketDetails)
ticketDetails.passengersId = PASSENGERS_ID
ticketDetails.ticketTypeCodes = passengerTypeCode
ticketDetails.tourFlag = TOUR_FLAG if TOUR_FLAG else 'dc'
submit = Submit(ticketDetails)
if submit.submit(CHOOSE_SEATS):
status, contents = submit.showSubmitInfoPretty()
if status:
flag = send_mail(mail_user, mailto_list, '12306订票结果通知', mail_host, mail_user, mail_pass, contents)
if flag:
Log.v("邮件发送成功!")
else:
Log.v("邮件发送失败!")
sms_id = send_sms(ACCOUNT_SID,AUTO_TOKEN,FROM_NUM,TO_NUM,'小机机已经成功拿到小票票,请主人记得在30分钟内完成支付!!!')
if sms_id:
Log.v("短信提醒发送成功!")
else:
Log.v("短信提醒发送成功!")
break
time.sleep(1)
except Exception as e:
Log.w(e)
print(login.loginOut())
if __name__ == '__main__':
main()