#!/usr/bin/env python # -*- coding: utf-8 -*- import HTMLParser, tweepy, os, sqlite3, datetime, dateutil.parser, time user = "Twitter Handle (without @)" cke = "Consumer Key" cse = "Consumer Secret" ato = "Access Token" ase = "Access Secret" database_filename = "Database.db" search = "@" + user auth = tweepy.OAuthHandler(cke, cse) auth.set_access_token(ato, ase) api = tweepy.API(auth) sql_conn = sqlite3.connect(database_filename) cur = sql_conn.cursor() try: cur.execute("SELECT max(tweet_id) FROM tweets") savepoint = int(cur.fetchone()[0]) except: savepoint = "" print "No savepoint found. Trying to get as many results as possible." while True: timeline = tweepy.Cursor(api.search, q=search, since_id=savepoint).items() for status in timeline: if status.text.find("@" + user) > 1: continue text = status.text.encode("UTF-8")[status.text.find(" ")+1:].strip() sender = status.user.screen_name.encode("UTF-8") twid = int(status.id) try: if "-" in text: loc = text.find("-") date = dateutil.parser.parse(text[:loc-1]) comment = HTMLParser.HTMLParser().unescape(text[loc+1:]).strip() else: date = dateutil.parser.parse(text) comment = "" except ValueError: api.update_status("@%s Sorry, ich verstehe deinen Tweet nicht... :(" % sender, twid) continue cur.execute("INSERT INTO tweets VALUES(%i,'%s','%s','%s',0)" % (twid,date.strftime("%Y-%m-%dT%H:%M:%S"),sender,comment)) sql_conn.commit() savepoint = twid time.sleep(60)