Browse Source

Upload files to ''

天问 4 years ago
parent
commit
ab2961b754
1 changed files with 80 additions and 0 deletions
  1. 80 0
      listen_12306.py

+ 80 - 0
listen_12306.py

@@ -0,0 +1,80 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+'''
+@Author  :   liuyuqi
+@Contact :   liuyuqi.gov@msn.cn
+@Time    :   2019/11/18 03:21:04
+@Version :   1.0
+@License :   (C)Copyright 2019
+@Desc    :   12306余票查询
+'''
+
+import requests
+import json
+import smtplib
+import sys
+import time
+from random import randint
+from email.mime.text import MIMEText
+from email.header import Header
+class tl12306:
+    def __init__(self):
+        self.num = 1
+        # 替换为你要查询的url地址
+        self.url = 'https://kyfw.12306.cn/otn/leftTicket/queryA?leftTicketDTO.train_date=2018-09-30&leftTicketDTO.from_station=IZQ&leftTicketDTO.to_station=CBQ&purpose_codes=ADULT'
+    def getlist(self):
+        try:
+            r = requests.get(self.url)
+            if r.status_code == 200:
+                j    = json.loads(r.text)
+                k    = j['data']
+                str1 = ""
+
+                strData = ["G6305","D7501","G6325","D7521","D7533","D7529","D2381","G6337","D7525","G6321","D7513","G6313","G1607","G6309","D7533","D7517","G6329","D7505","G6345","G6341"]
+
+                for r in k['result']:
+                    for cs in strData:
+                        if "|" + cs+"|" in r:
+                            if r.split('|')[-7] != '无': #二等座
+                                str1 = str1 + cs + ',有票啦~~\n'
+                if len(str1)>5:
+                    print(str1)
+                    self.send_mail(str1)
+
+
+                sys.stdout.write('\r')
+                sys.stdout.write('已查询%d次~' % self.num)
+                sys.stdout.flush()
+                self.num+=1
+            else:
+                msg = '获取车票信息失败~~'
+                print(msg)
+                self.send_mail(msg)
+        except Exception as e:
+            print(e)
+    def send_mail(self,str):
+        # 第三方 SMTP 服务
+        mail_host = "smtp.qq.com"  # 设置服务器
+        mail_user = "********@qq.com"  # 用户名 发送者的邮箱
+        mail_pass = "****************"  # 口令 登录邮箱开启POP3/SMTP服务,输入授权码
+        sender = '********@qq.com' #  发送者的邮箱
+        receivers = ['********@qq.com']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
+        message = MIMEText(str, 'plain', 'utf-8')
+        message['From'] = Header("肥肥", 'utf-8') 
+        message['To'] = Header("圆圆", 'utf-8')
+        message['Subject'] = Header("余票提醒", 'utf-8')
+        try:
+            smtpObj = smtplib.SMTP()
+            smtpObj.connect(mail_host, 25)  # 25 为 SMTP 端口号
+            smtpObj.login(mail_user, mail_pass)
+            smtpObj.sendmail(sender, receivers, message.as_string())
+            print("邮件发送成功")
+        except smtplib.SMTPException:
+            print("Error: 无法发送邮件")
+
+if __name__ == '__main__':
+    c = tl12306()
+    print('监控中~')
+    while True:
+        c.getlist()
+        time.sleep(randint(5,10))