crawl the username only once from twitter and save to db #45

master
b3yond 2018-10-08 21:31:25 +02:00
parent cbf5502f99
commit 1f09a92c58
3 changed files with 21 additions and 9 deletions

View File

@ -50,11 +50,11 @@ class TwitterBot(Bot):
mentions = api.mentions_timeline(since_id=last_mention) mentions = api.mentions_timeline(since_id=last_mention)
user.set_last_twitter_request(time()) user.set_last_twitter_request(time())
for status in mentions: for status in mentions:
text = re.sub( # don't retweet replies - only mentions.
"(?<=^|(?<=[^a-zA-Z0-9-_\.]))@([A-Za-z]+[A-Za-z0-9-_]+)", if user.get_twitter_username() in status.extended_tweet.full_text:
"", status.text) text = re.sub(
username = "@" + api.me().screen_name "(?<=^|(?<=[^a-zA-Z0-9-_\.]))@([A-Za-z]+[A-Za-z0-9-_]+)",
if username in status.text: "", status.extended_tweet.full_text)
reports.append(report.Report(status.author.screen_name, reports.append(report.Report(status.author.screen_name,
self, self,
text, text,

1
db.py
View File

@ -90,6 +90,7 @@ class DB(object):
user_id INTEGER, user_id INTEGER,
client_id TEXT, client_id TEXT,
client_secret TEXT, client_secret TEXT,
screen_name TEXT,
active INTEGER, active INTEGER,
FOREIGN KEY(user_id) REFERENCES user(id) FOREIGN KEY(user_id) REFERENCES user(id)
); );

19
user.py
View File

@ -3,6 +3,7 @@ from bottle import response
from db import db from db import db
import jwt import jwt
from mastodon import Mastodon from mastodon import Mastodon
import tweepy
from pylibscrypt import scrypt_mcf, scrypt_mcf_check from pylibscrypt import scrypt_mcf, scrypt_mcf_check
@ -267,10 +268,15 @@ schlitz
"oauth_token_secret": request_token[1]} "oauth_token_secret": request_token[1]}
def save_twitter_token(self, access_token, access_token_secret): def save_twitter_token(self, access_token, access_token_secret):
db.execute("""INSERT INTO twitter_accounts( auth = tweepy.OAuthHandler(consumer_key=config['twitter']['consumer_key'],
user_id, client_id, client_secret consumer_secret=config['twitter']['consumer_secret'])
) VALUES(?, ?, ?);""", auth.set_access_token(access_token, access_token_secret)
(self.uid, access_token, access_token_secret)) api = tweepy.API(auth, wait_on_rate_limit=True)
username = api.me().screen_name
db.execute("""INSERT INTO (
user_id, client_id, client_secret, screen_name, active
) VALUES(?, ?, ?, ?, ?);""",
(self.uid, access_token, access_token_secret, username, 1))
db.commit() db.commit()
def get_twitter_token(self): def get_twitter_token(self):
@ -286,6 +292,11 @@ schlitz
keys.append(row[1]) keys.append(row[1])
return keys return keys
def get_twitter_username(self):
db.execute("SELECT screen_name FROM twitter_accounts WHERE user_id = ?",
(self.uid, ))
return db.fetchone()[0]
def update_telegram_key(self, apikey): def update_telegram_key(self, apikey):
db.execute("UPDATE telegram_accounts SET apikey = ? WHERE user_id = ?;", (apikey, self.uid)) db.execute("UPDATE telegram_accounts SET apikey = ? WHERE user_id = ?;", (apikey, self.uid))
db.commit() db.commit()