#!/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").split(" ")[1] sender = status.user.screen_name.encode("UTF-8") twid = int(status.id) try: if "-" in text: date = dateutil.parser.parse(text.split("-")[0]) comment = HTMLParser.HTMLParser().unescape(text.split("-")[1]) 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')" % (twid,date.strftime("%Y-%m-%dT%H:%M:%S"),sender,comment)) cur.commit() savepoint = twid time.sleep(60)