Skip to content

Instantly share code, notes, and snippets.

@kkung
Created January 22, 2012 03:48
Show Gist options
  • Save kkung/1655379 to your computer and use it in GitHub Desktop.
Save kkung/1655379 to your computer and use it in GitHub Desktop.
귀경 대작전
#-*- encoding: utf-8 -*-
FROM_ADDR = ''
TO_ADDR = ''
GMAIL_ID = ''
GMAIL_PW = ''
DEBUG = False
def process(force_mail=False, second_page=False):
print 'Start(force mail? %s)' % (force_mail)
import requests
import json
using_file = "pr.pr21100.sw_pr21111_i1Svt.har"
if second_page:
using_file = "pr.pr21100.sw_pr21111_i1Svt.har2"
data = json.load(open(using_file))
headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7', 'content-type': 'application/x-www-form-urlencoded'}
url = 'http://www.korail.com/servlets/pr.pr21100.sw_pr21111_i1Svt'
_r = requests.post(url, data=data['request']['postData']['text'], headers=headers).content
from lxml.html import fromstring
from lxml.html import tostring as htmlPrint
import re
html = fromstring(_r)
table = html.find_class('list-view')[0]
rows = table.findall('tr')
mail_subject = u'티켓 상황'
mail_body = u''
sendmail_force = force_mail
for row in rows:
cells = row.findall('td')
t_type, t_no, t_st, t_ed, t_sp, t_na = [ cells[0], cells[1], cells[2], cells[3], cells[4], cells[5] ]
is_apply = t_na.getchildren()[0].tag == 'a'
t_class = t_no.attrib['title']
if DEBUG:
print 'Ticket list - %s [%s - %s]' % ( t_class, t_st.text_content().strip().replace('\n',' '), t_ed.text_content().strip().replace('\n', ' ') )
if is_apply:
line = 'Ticket Available - %s [%s - %s]' % ( t_class, t_st.text_content().strip().replace('\n',' '), t_ed.text_content().strip().replace('\n', ' ') )
print '>>> %s' % line
mail_body = mail_body + line + "\r\n"
start_time = re.search("\\d{2}\\:\\d{2}", t_st.text_content()).group()
if start_time not in ["07:10", "07:45", "08:29", "09:56", "10:42"]:
sendmail_force = True
mail_subject = u'예약할 티켓 있음! 티켓 상황'
if sendmail_force is True:
import smtplib
fromaddr = FROM_ADDR
toaddr = TO_ADDR
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(GMAIL_ID,GMAIL_PW)
raw_mail_body = u'From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n%s' % (fromaddr, toaddr, mail_subject, mail_body)
server.sendmail(fromaddr, toaddr, raw_mail_body.encode('utf-8'))
server.quit()
if __name__ == '__main__':
from apscheduler.scheduler import Scheduler
import time
sched = Scheduler()
sched.start()
sched.add_interval_job(process, minutes=1, args=(False,False))
sched.add_interval_job(process, minutes=30, args=(True,False))
sched.add_interval_job(process, minutes=1, args=(False,True))
sched.add_interval_job(process, minutes=30, args=(True,True))
while 1:
sched.print_jobs()
time.sleep(60)
APScheduler==2.0.2
certifi==0.0.6
lxml==2.3.3
requests==0.9.3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment