1
0
Fork 0
mirror of https://github.com/Lynnesbian/FediBooks/ synced 2024-11-25 16:48:58 +00:00

Compare commits

..

No commits in common. "001dbadf9e3b63be0d35cef869e2106de6b8940d" and "fc8be5db40ee6bdd4852e20bf62beb81b45b8f7a" have entirely different histories.

8 changed files with 7 additions and 67 deletions

View file

@ -1,6 +0,0 @@
__pycache__
config.json
planning.txt
README.md
.git
.vscode

View file

@ -1,4 +0,0 @@
FROM python:3.7-slim-buster
WORKDIR /fedibooks
COPY . fedibooks
RUN pip install -r requirements.txt

View file

@ -1,15 +0,0 @@
version: '3'
services:
fedibooks:
build: .
links:
- db
ports:
5000:5000
db:
image: mariadb/server:10.4
environment:
MARIADB_ROOT_PASSWORD: root
MARIADB_DATABASE: fedibooks
MARIADB_USER: fedibooks
MARIADB_PASSWORD: fedibooks

View file

@ -1,6 +1,6 @@
Mastodon.py==1.4.6
markovify==0.7.2
beautifulsoup4==4.8.0
markovify==0.7.1
beautifulsoup4==4.7.1
requests==2.22.0
Flask==1.1.1
flask-mysqldb==0.2.0

View file

@ -1,35 +1,11 @@
#!/usr/bin/env python3
import MySQLdb
from mastodon import Mastodon
from multiprocessing import Pool
import json
import functions
cfg = json.load(open('config.json'))
def update_icon(bot):
db = MySQLdb.connect(
host = cfg['db_host'],
user=cfg['db_user'],
passwd=cfg['db_pass'],
db=cfg['db_name'],
use_unicode=True,
charset="utf8mb4"
)
print("Updating cached icon for {}".format(bot['handle']))
client = Mastodon(
client_id = bot['client_id'],
client_secret = bot['client_secret'],
access_token = bot['secret'],
api_base_url = "https://{}".format(bot['handle'].split("@")[2])
)
avatar = client.account_verify_credentials()['avatar']
c = db.cursor()
c.execute("UPDATE bots SET icon = %s, icon_update_time = CURRENT_TIMESTAMP() WHERE handle = %s", (avatar, bot['handle']))
db.commit()
print("Establishing DB connection")
db = MySQLdb.connect(
host = cfg['db_host'],
@ -47,23 +23,12 @@ cursor.execute("DELETE FROM fedi_accounts WHERE handle NOT IN (SELECT fedi_id FR
db.commit()
print("Generating posts")
cursor.execute("SELECT handle FROM bots WHERE enabled = TRUE AND TIMESTAMPDIFF(MINUTE, last_post, CURRENT_TIMESTAMP()) >= post_frequency")
cursor.execute("SELECT handle FROM bots WHERE enabled = TRUE AND TIMESTAMPDIFF(MINUTE, last_post, CURRENT_TIMESTAMP()) > post_frequency")
bots = cursor.fetchall()
with Pool(cfg['service_threads']) as p:
p.map(functions.make_post, bots)
print("Updating cached icons")
dc = db.cursor(MySQLdb.cursors.DictCursor)
dc.execute("""
SELECT handle, instance_type, client_id, client_secret, secret
FROM bots
INNER JOIN credentials
ON bots.credentials_id = credentials.id
WHERE TIMESTAMPDIFF(HOUR, icon_update_time, CURRENT_TIMESTAMP()) > 2""")
bots = dc.fetchall()
with Pool(cfg['service_threads']) as p:
p.map(update_icon, bots)
#TODO: other cron tasks should be done here, like updating profile pictures
db.commit()

View file

@ -75,7 +75,7 @@ body {
}
.panel-text {
flex-grow: 1;
margin: 0 0 10px 15px;
margin: 0 0 10px 10px;
}
.panel-name {
font-size: 1.8em;

View file

@ -19,7 +19,7 @@
<div class="container" style="min-height: 300px;">
{% for bot in bots %}
<div class="row light">
<div class="panel-icon {{ "online" if bot['enabled'] else "offline"}}" style="{{ "background-image: url('" + bot['icon'] + "')" if bot['icon'] else "" }}"></div>
<div class="panel-icon {{ "online" if bot['enabled'] else "offline"}}"></div>
<div class="panel-text">
{% set handle_list = bot['handle'].split('@') %}
<div class="panel-name">@{{ handle_list[1] }}<span class="subtle tiny">@{{ handle_list[2] }}</span></div>

View file

@ -44,7 +44,7 @@ def home():
c.execute("SELECT COUNT(*) FROM `bots` WHERE user_id = %s AND enabled = TRUE", (session['user_id'],))
active_count = c.fetchone()[0]
dc = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
dc.execute("SELECT `handle`, `enabled`, `last_post`, `post_frequency`, `icon` FROM `bots` WHERE user_id = %s", (session['user_id'],))
dc.execute("SELECT `handle`, `enabled`, `last_post`, `post_frequency` FROM `bots` WHERE user_id = %s", (session['user_id'],))
bots = dc.fetchall()
dc.close()