PythonでRSS 新着チェック

import feedparser
import sqlite3
from datetime import datetime

URL = 'http://imabari-news.blog.so-net.ne.jp/index.xml'

feedparser.USER_AGENT = 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko'
fdp = feedparser.parse(URL)

DATABASE = 'rss.sqlite'

#SQliteに接続
conn = sqlite3.connect(DATABASE)

conn.row_factory = sqlite3.Row
c = conn.cursor()

#テーブル生成
c.execute('CREATE TABLE IF NOT EXISTS RSSEntries (entry_id INTEGER PRIMARY KEY AUTOINCREMENT, title, link, published);')
#IF NOT EXISTS 同名のデータベースが存在しない場合のみ CREATE DATABASE が実行
#INTEGER PRIMARY KEY AUTOINCREMENT 重複なしの数字自動生成

for entry in fdp.entries:

    #リンクの重複チェック
    c.execute('SELECT entry_id from RSSEntries WHERE link=?', (entry.link,))
    #DB-API のパラメータ割り当てを使います。
    #? を変数の値を使いたいところに埋めておきます。
    #その上で、値のタプルをカーソルの execute() メソッドの第2引数として引き渡します。
    #第2引数はタプルのため要素が一つだけの場合には要素の後にカンマが必要

    if len(c.fetchall()) == 0:
        c.execute('INSERT INTO RSSEntries (title, link, published) VALUES (?,?,?)', (entry.title, entry.link, datetime.strptime(entry.published, '%a, %d %b %Y %H:%M:%S +0900')))

        #新着情報
        print(entry.title, entry.link)

conn.commit()

c.close()

14日より前のデータ削除

import sqlite3
import datetime

DATABASE = 'rss.sqlite'

conn = sqlite3.connect(DATABASE)

conn.row_factory = sqlite3.Row
c = conn.cursor()

scope = datetime.datetime.now() - datetime.timedelta(days = 14);

c.execute('DELETE FROM RSSEntries WHERE datetime(published) < datetime(?);', (scope,)) 

conn.commit()
conn.close()

cronで動かないと思ったらDATABASEで絶対アドレスじゃなかったのでエラーがでてました。

imabari.hateblo.jp