2009年3月6日金曜日

feedの内容をgooglegroupに自動投稿する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

参考にしたサイト




#!/usr/bin/python
BOT_ADDR = "your posting bot <sample@gmail.com>"
SENDER = 'sample@gmail.com'
PASSWORD = 'secret'
GRP_ADDR = "sample@googlegroups.com"

import urllib
import feedparser
import time
import datetime

print 'getting feed'
f = urllib.urlopen("http://sample.com/rss.php")
rss = f.read()
x = feedparser.parse(rss)

tobepost = []

now = datetime.datetime.utcnow()
for entry in x.entries:
generated = datetime.datetime(*entry.updated_parsed[:5])
delta = generated - now
if delta.days == 0 and delta.seconds < 3600:
tobepost.append(entry)

if not tobepost:
import sys
print 'no new post found'
sys.exit()

print len(tobepost), ' new posts found'

from email.MIMEText import MIMEText
from email.Utils import formatdate
tosend = []
for entry in tobepost:
msg = MIMEText(entry.summary.encode('utf-8'), 'plain', 'utf-8')
msg['Subject'] = entry.title.encode('utf-8')
msg['From'] = BOT_ADDR
msg['To'] = GRP_ADDR
msg['Date'] = formatdate()
tosend.append(msg)

import smtplib
print 'connecting to mail server.'
con = smtplib.SMTP('smtp.gmail.com')#, 587)
con.ehlo()
con.starttls()
con.ehlo()
con.login(SENDER, PASSWORD)
print 'sending',
for msg in tosend:
print '.',
con.sendmail(SENDER, GRP_ADDR, msg.as_string())
con.close()
print 'sent'
print 'done.'

0 件のコメント: