57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
#!/usr/bin/env python3
|
|
import click
|
|
|
|
from BDSM import app, db
|
|
from BDSM.models import Settings, Toot, Other
|
|
from BDSM.toot import app_login, toot_process
|
|
from mastodon import MastodonNotFoundError
|
|
|
|
|
|
@app.cli.command()
|
|
@click.option('--drop', is_flag=True, help='Create after drop.')
|
|
def initdb(drop):
|
|
"""Initialize the database."""
|
|
if drop:
|
|
db.drop_all()
|
|
db.create_all()
|
|
click.echo('Initialized database.')
|
|
|
|
@app.cli.command()
|
|
def graball():
|
|
"""Grab all toots context"""
|
|
settings = Settings.query.first()
|
|
account = settings.account[1:]
|
|
username, domain = account.split("@")
|
|
url = "https://" + domain
|
|
mastodon, user = app_login(url)
|
|
acct = mastodon.me().acct
|
|
|
|
toots = Toot.query.filter(Toot.in_reply_to_id.isnot(None)).all()
|
|
toots_id = []
|
|
for i in toots:
|
|
if (Toot.query.get(i.in_reply_to_id) != None
|
|
or Other.query.get(i.in_reply_to_id) != None):
|
|
continue
|
|
#context api excluding itself
|
|
toots_id.append(i.id)
|
|
|
|
while(toots_id != []):
|
|
toot_id = toots_id.pop(0)
|
|
|
|
try:
|
|
context = mastodon.status_context(toot_id)
|
|
except MastodonNotFoundError:
|
|
print('NotFound!')
|
|
continue
|
|
|
|
statuses = []
|
|
statuses= context['ancestors'] + context['descendants']
|
|
|
|
for i in statuses:
|
|
if i['id'] in toots_id:
|
|
toots_id.remove(i['id'])
|
|
|
|
toot_process(statuses, acct)
|
|
db.session.commit()
|
|
|
|
print(len(toots_id))
|