#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys, urllib, smtplib, BeautifulSoup

NORMALMSG = u'現在、平常通り運転しています。'
AREAS = {'tohoku': u'東北エリア', 'kanto': u'関東エリア', 'shinetsu': u'信越エリア'}
TRAININFO = 'http://traininfo.jreast.co.jp/train_info/%s.aspx'

FROMADDR = 'jreastcheck@your.domain'

def get_url(a):
    if a in AREAS.keys():
        return TRAININFO % a, AREAS[a]
    else:
        sys.exit('AREA must be in %s.' % ', '.join(AREAS.keys()))

def get_msg(u):
    f = urllib.urlopen(u)
    p = f.read()
    f.close()

    soup = BeautifulSoup.BeautifulSoup(p)
    msgs = soup.findAll('font', {'class': 'px12', 'size': '3'})
    o = []
    for m in msgs:
        if m.string:
            o.append(m.string.strip())

    msg = u' '.join(o)

    return msg.replace(' ', '')

def send_mail(addrs, a, m):
    for addr in addrs:
        msg = u'From: ' + FROMADDR + '\r\n'
        msg += u'To: ' + addr + '\r\n'
        msg += u'Subject: ' + a + u'の運行情報\r\n\r\n'
        msg += m

        server = smtplib.SMTP('localhost')
        server.sendmail(FROMADDR, addr, msg.encode('iso-2022-jp', 'ignore'))
        server.quit()

def _main():
    if len(sys.argv) < 3:
        sys.exit('Usage: jreastcheck.py AREA ADDR1 ADDR2 ...')

    url, area = _get_url(sys.argv[1])
    addrs = sys.argv[2:]
    msg = _get_msg(url)

    if msg == NORMALMSG:
        sys.exit()

    _send_mail(addrs, area, msg)

if __name__ == '__main__':
    _main()