PythonでRSSをパースするライブラリ「feedparser」を使って、RSSの更新がある場合メールで知らせるスクリプトを作ってみます。
#!/usr/bin/env python3
# coding: utf-8
# rss更新確認スクリプト
import feedparser
import pprint
import time
import smtplib
from email.mime.text import MIMEText
from urllib.request import urlopen
import json
from datetime import datetime
import os
# メール送信
def send_mail(subject, message):
from_addr = "ユーザー名@yahoo.co.jp"
to_addr = "送信先メールアドレス"
user_name = from_addr
passwd = "Yahooのパスワード"
msg = MIMEText(message)
msg['Subject'] = subject
msg['From'] = from_addr
msg['To'] = to_addr
smtp = smtplib.SMTP("smtp.mail.yahoo.co.jp", 587)
smtp.login(user_name, passwd)
smtp.sendmail(from_addr, to_addr, msg.as_string())
smtp.quit()
# 明充
def main():
local_path = "./feed.txt" # 更新日付保存ファイル
old_up = ""
if os.path.exists(local_path):
with open(local_path) as f:
old_up = f.read()
url = 'https://maywork.net/feed/' # rssのアドレス
feed = feedparser.parse(url)
t = feed['updated_parsed']
new_up = time.strftime('%Y-%m-%d %H:%M:%S', t)
if (old_up != new_up):
with open(local_path, mode='w') as f:
f.write(new_up)
subject = "RSS更新の通知 - " + new_up
send_mail(subject, url)
if (__name__ == '__main__'):
main()
スクリプトでやっていることはfeedparserを使いrssを取得、updated_parsedに更新日付入っているので、それとローカルファイルに保存していた以前の更新日付と比較し、変化があればメールを送信しローカルファイルを更新しています。
メールの送信はYahooのSMTPサーバーから送信しています。
スクリプトはlinuxのcronなどで定期的に実行することを前提としております。
また、比較的更新頻度の少ないサイト向けの更新チェックを想定しています。
コメント