当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »

typecho开发板更新提醒python脚本

2018-12-22T21:42:00

小白写的请大佬指点
请自行安装所需模块
自行修改smtp信息
只在Windows python3.7下测试

# -*- coding: utf-8 -*-
import requests
import os
from bs4 import BeautifulSoup
import re
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr

url='http://typecho.org/download'
headers = {'user-agent':'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
#获取版本
res=requests.get(url, headers).text
soup = BeautifulSoup(res, 'html.parser')
tags = soup.find('div',{'class':'post-content fmt'})
a = tags.find('a',attrs={"href":re.compile(r'^https:')})
link = 'GitHub地址:' + a.get('href')
text = '版本号:' +  a.get_text()
url1 =  a.get('href')
#更新时间
resp = requests.get(url=url1, headers=headers).text
soup1 = BeautifulSoup(resp,'html.parser')
#div = soup1.find('div',{'class':'flex-self-start no-wrap'})
div = soup1.find('relative-time')
time = '更新时间:' + div.get_text() 
#print(text)

fp = open("test.txt",'r') #创建文件
txt = fp.read()
#判断版本
if txt == a.get_text():
    fp.close()
    print("未更新")
else:
    fp = open("test.txt",'w')
    fp.write(str(a.get_text()))
    fp.close()
    print("有新版")
     #smtp发信
    my_sender='1111@529i.com'    # 发件人邮箱账号
    my_pass = 'sssssja'     # 发件人邮箱密码(当时申请smtp给的口令)
    my_user='1111@qq.com'      # 收件人邮箱账号,我这边发送给自己

    ret=True
    try:
        msg=MIMEText('<p>' + (time) + '</p>' + '<p>' + (text) + '</p>' + '<p>' + (link) + '</p>','html','utf-8')
        msg['From']=formataddr(["发件人昵称",my_sender])  # 括号里的对应发件人邮箱昵称、发件人邮箱账号
        msg['To']=formataddr(["收件人昵称",my_user])              # 括号里的对应收件人邮箱昵称、收件人邮箱账号
        msg['Subject']="typecho升级提醒"                # 邮件的主题,也可以说是标题

        server=smtplib.SMTP_SSL("smtp.qq.com", 465)  # 发件人邮箱中的SMTP服务器,端口是465
        server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱密码
        server.sendmail(my_sender,[my_user,],msg.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
        server.quit()# 关闭连接
    except Exception:# 如果 try 中的语句没有执行,则会执行下面的 ret=False
        ret=False

    if ret:
        print("邮件发送成功")
    else:
        print("邮件发送失败")

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »