forked from ticketfrei/ticketfrei
changed twitter to work with db
This commit is contained in:
parent
f7bce8e1ba
commit
d9be9f7705
|
@ -7,7 +7,7 @@ import sendmail
|
||||||
from db import DB
|
from db import DB
|
||||||
|
|
||||||
from retootbot import RetootBot
|
from retootbot import RetootBot
|
||||||
# from retweetbot import RetweetBot
|
from retweetbot import RetweetBot
|
||||||
from mailbot import Mailbot
|
from mailbot import Mailbot
|
||||||
from trigger import Trigger
|
from trigger import Trigger
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ def get_users(db):
|
||||||
def init_bots(config, logger, db, users):
|
def init_bots(config, logger, db, users):
|
||||||
for uid in users:
|
for uid in users:
|
||||||
users[uid].append(RetootBot(config, logger, uid, db))
|
users[uid].append(RetootBot(config, logger, uid, db))
|
||||||
# users[uid].append(RetweetBot(config, uid, db))
|
users[uid].append(RetweetBot(config, logger, uid, db))
|
||||||
users[uid].append(Mailbot(config, logger, uid, db))
|
users[uid].append(Mailbot(config, logger, uid, db))
|
||||||
return users
|
return users
|
||||||
|
|
||||||
|
|
|
@ -3,11 +3,10 @@
|
||||||
import tweepy
|
import tweepy
|
||||||
import re
|
import re
|
||||||
import requests
|
import requests
|
||||||
import trigger
|
|
||||||
from time import sleep
|
from time import sleep
|
||||||
import report
|
import report
|
||||||
import backend
|
from user import User
|
||||||
import sendmail
|
|
||||||
|
|
||||||
class RetweetBot(object):
|
class RetweetBot(object):
|
||||||
"""
|
"""
|
||||||
|
@ -20,7 +19,7 @@ class RetweetBot(object):
|
||||||
last_mention: the ID of the last tweet which mentioned you
|
last_mention: the ID of the last tweet which mentioned you
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, config, history_path="last_mention"):
|
def __init__(self, config, logger, uid, db):
|
||||||
"""
|
"""
|
||||||
Initializes the bot and loads all the necessary data.
|
Initializes the bot and loads all the necessary data.
|
||||||
|
|
||||||
|
@ -29,7 +28,9 @@ class RetweetBot(object):
|
||||||
Tweet
|
Tweet
|
||||||
"""
|
"""
|
||||||
self.config = config
|
self.config = config
|
||||||
self.logger = backend.get_logger(config)
|
self.logger = logger
|
||||||
|
self.db = db
|
||||||
|
self.user = User(db, uid)
|
||||||
|
|
||||||
# initialize API access
|
# initialize API access
|
||||||
keys = self.get_api_keys()
|
keys = self.get_api_keys()
|
||||||
|
@ -39,8 +40,7 @@ class RetweetBot(object):
|
||||||
keys[3]) # access_token_secret
|
keys[3]) # access_token_secret
|
||||||
self.api = tweepy.API(auth)
|
self.api = tweepy.API(auth)
|
||||||
|
|
||||||
self.history_path = history_path
|
self.last_mention = self.user.get_seen_tweet()
|
||||||
self.last_mention = self.get_history(self.history_path)
|
|
||||||
self.waitcounter = 0
|
self.waitcounter = 0
|
||||||
|
|
||||||
def get_api_keys(self):
|
def get_api_keys(self):
|
||||||
|
@ -58,31 +58,15 @@ class RetweetBot(object):
|
||||||
|
|
||||||
:return: keys: list of these 4 strings.
|
:return: keys: list of these 4 strings.
|
||||||
"""
|
"""
|
||||||
keys = [self.config['tapp']['consumer_key'], self.config['tapp']['consumer_secret'],
|
keys = [self.config['twitter']['consumer_key'], self.config['twitter']['consumer_secret']]
|
||||||
self.config['tuser']['access_token_key'], self.config['tuser']['access_token_secret']]
|
row = self.user.get_twitter_token()
|
||||||
|
keys.append(row[0])
|
||||||
|
keys.append(row[1])
|
||||||
return keys
|
return keys
|
||||||
|
|
||||||
def get_history(self, path):
|
|
||||||
""" This counter is needed to keep track of your mentions, so you
|
|
||||||
don't double RT them
|
|
||||||
|
|
||||||
:param path: string: contains path to the file where the ID of the
|
|
||||||
last_mention is stored.
|
|
||||||
:return: last_mention: ID of the last tweet which mentioned the bot
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
with open(path, "r+") as f:
|
|
||||||
last_mention = f.read()
|
|
||||||
except IOError:
|
|
||||||
with open(path, "w+") as f:
|
|
||||||
last_mention = "0"
|
|
||||||
f.write(last_mention)
|
|
||||||
return int(last_mention)
|
|
||||||
|
|
||||||
def save_last(self):
|
def save_last(self):
|
||||||
""" Saves the last retweeted tweet in last_mention. """
|
""" Saves the last retweeted tweet in last_mention. """
|
||||||
with open(self.history_path, "w") as f:
|
self.user.save_seen_tweet(self.last_mention)
|
||||||
f.write(str(self.last_mention))
|
|
||||||
|
|
||||||
def waiting(self):
|
def waiting(self):
|
||||||
"""
|
"""
|
||||||
|
@ -198,7 +182,7 @@ class RetweetBot(object):
|
||||||
# Return Retweets for posting on other bots
|
# Return Retweets for posting on other bots
|
||||||
return all_tweets
|
return all_tweets
|
||||||
|
|
||||||
|
"""
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
config = backend.get_config()
|
config = backend.get_config()
|
||||||
|
|
||||||
|
@ -225,3 +209,4 @@ if __name__ == "__main__":
|
||||||
attachment=config['logging']['logpath'])
|
attachment=config['logging']['logpath'])
|
||||||
except:
|
except:
|
||||||
bot.logger.error('Mail sending failed', exc_info=True)
|
bot.logger.error('Mail sending failed', exc_info=True)
|
||||||
|
"""
|
14
user.py
14
user.py
|
@ -27,6 +27,15 @@ class User(object):
|
||||||
self.db.cur.execute("UPDATE seen_toots SET toot_id = ? WHERE user_id = ?;",
|
self.db.cur.execute("UPDATE seen_toots SET toot_id = ? WHERE user_id = ?;",
|
||||||
(toot_id, self.uid))
|
(toot_id, self.uid))
|
||||||
|
|
||||||
|
def get_seen_tweet(self):
|
||||||
|
self.db.cur.execute("SELECT tweet_id FROM seen_tweets WHERE user_id = ?;",
|
||||||
|
(self.uid, ))
|
||||||
|
return self.db.cur.fetchone()[0]
|
||||||
|
|
||||||
|
def save_seen_tweet(self, tweet_id):
|
||||||
|
self.db.cur.execute("UPDATE seen_tweets SET tweet_id = ? WHERE user_id = ?;",
|
||||||
|
(tweet_id, self.uid))
|
||||||
|
|
||||||
def get_mail(self):
|
def get_mail(self):
|
||||||
self.db.cur.execute("SELECT email FROM mail WHERE user_id = ?;", (self.uid, ))
|
self.db.cur.execute("SELECT email FROM mail WHERE user_id = ?;", (self.uid, ))
|
||||||
|
|
||||||
|
@ -59,6 +68,11 @@ class User(object):
|
||||||
(id, access_token, access_token_secret))
|
(id, access_token, access_token_secret))
|
||||||
self.db.conn.commit()
|
self.db.conn.commit()
|
||||||
|
|
||||||
|
def get_twitter_token(self):
|
||||||
|
self.db.cur.execute("SELECT access_token, access_token_secret FROM twitter_accouts WHERE user_id = ?;",
|
||||||
|
(self.uid, ))
|
||||||
|
return self.db.cur.fetchall()
|
||||||
|
|
||||||
def get_mastodon_app_keys(self, instance):
|
def get_mastodon_app_keys(self, instance):
|
||||||
self.db.cur.execute("SELECT client_id, client_secret FROM mastodon_instances WHERE instance = ?;", (instance, ))
|
self.db.cur.execute("SELECT client_id, client_secret FROM mastodon_instances WHERE instance = ?;", (instance, ))
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in a new issue