Friday, March 18, 2011

天气预报代码

# -*- coding:utf-8 -*-
# file:weather.py
# by Lee, 2010-1-11
"""
抓取天气预报信息,并通过pyfetion发送短信通知
"""
import os
import re
import urllib
import sys
import time
from PyFetion import *

def GetWeather():
    try:
        # 获取网页源文件
        sock = urllib.urlopen("http://qq.ip138.com/weather/guangdong/DongGuan.htm")
        strhtml = sock.read()
        strhtml = unicode(strhtml, 'gb2312','ignore').encode('utf-8','ignore')
        # 正则式取温度信息
        theGrades = re.findall('''(\d+)℃''', strhtml)
        # 获取天气描述信息
        weathers = re.findall('''
(.*)''',strhtml)
        # 定义时间格式
        this_date = str(time.strftime("%Y/%m/%d %a"))
        now = int(time.time())
        sec = 24*60*60
        day_today = "今天(%s号)" % str(time.strftime("%d", time.localtime(now+0*sec)))
        day_tommo = "明天(%s号)" % str(time.strftime("%d", time.localtime(now+1*sec)))
        day_aftom = "后天(%s号)" % str(time.strftime("%d", time.localtime(now+2*sec)))
        # 定义短信正文
        sms = [this_date]
        sms.append("东莞天气")
        sms.append("%s:%s, %s-%s℃" % (day_today, weathers[0], theGrades[1], theGrades[0]))
        sms.append("%s:%s, %s-%s℃" % (day_tommo, weathers[1], theGrades[3], theGrades[2]))
        sms.append("%s:%s, %s-%s℃" % (day_aftom, weathers[2], theGrades[5], theGrades[4]))
        sms.append("天气有冷暖,关怀永不变!")
        #sms.append("测试中,收到请MSN回复我,谢谢~~")
        #sms.append("欢迎对短信格式和每天定点发送时间提出宝贵意见")
        smscontent = '\n'.join(sms)
        #print len(smscontent)  # check length of sms fetion
        return smscontent  #.decode('utf-8').encode('gb2312')
    except:
        return "There is sth wrong with the weather forecast, please inform the author. thx~"

def SendSMS(sms):
    myphone = '1589xxxxx67'  # 手机号
    mypwd = 'xxxx'  # 登录密码
    destphone = ["62487xxxx", "70078xxxx", "69451xxxx"]  # 发送对象飞信号
    # 发送目的地改为飞信号,之前用的手机号做目的地发送,别人的收不到短信
    print "\nwaiting for login fetion..."
    fetion = PyFetion(myphone, mypwd, 'TCP')
    fetion.login(FetionHidden)
    for phone in destphone:
        print "sending to", phone
        fetion.send_sms(sms, phone, True)
        print "OK"
    fetion.logout()
    return True

def main():
    print "getting out the weather code..."
    msg = GetWeather()
    print "\n", msg
#    SendSMS("测试天气预报")
    SendSMS(msg)
    print "Done."

if __name__ == "__main__":
    sys.exit(main())

Powered by Blogger Skins. Theme: TheBuckmaker | Free Wordpress Templates. Presents HD TV Futurama Streaming. Featured on Wedding Dresses.