#!/usr/local/bin/python2.5
# coding=utf-8

import shelve
from feedparser import parse
from twitter import Api
import socket
socket.setdefaulttimeout(20)

def rss2twitter(settingid, rssurl,
                twitteruserid='', twitterpassword='', template='',
                                                    testmode=False):
    saved_keys = shelve.open(settingid+'.dat')
    feeddata = parse(rssurl)
    for feed in feeddata['entries']:
        # 新着エントリかどうかを調べる
        if str(feed['link']) not in saved_keys:
            # 新着エントリだったのでtwitterにポストする
            api = Api()
            message = ''
            if template:
                try:
                    message = template % feed
                except:
                    pass
            if not message:
                message = feed['link']
            message = (message+' ').encode('utf-8', 'ingore')
            if not testmode:
                api.PostUpdate(twitteruserid, twitterpassword, message)
                saved_keys[str(feed['link'])] = 0
            else:
                print message
    saved_keys.close()

if __name__ == '__main__':
    rssurl = 'RSSのURL'
    twitteruserid = 'twitterのユーザ名'
    twitterpassword = 'twitterのパスーワード'
    rss2twitter('lastfm', rssurl, twitteruserid, twitterpassword,
                'Now playing ... %(title)s')
    """
    username = raw_input('username: ')
    password = raw_input('password: ')
    rssurl = raw_input('URL of RSS: ')
    tmpl = '%(title)s ... %(url)s'
    rss2twitter('tmp', rssurl, username, password, tmpl, testmode=True)
    """
