61 lines
1.9 KiB
Python
Executable file
61 lines
1.9 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
#Curious Greg - Curious Cat to Mastodon crossposter
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
import requests, sqlite3, json
|
|
from mastodon import Mastodon
|
|
from flask import Flask, render_template, request, session, redirect, url_for
|
|
|
|
cfg = json.load(open("meta.json"))
|
|
|
|
db = sqlite3.connect("database.db")
|
|
c = db.cursor()
|
|
c.execute("CREATE TABLE IF NOT EXISTS `data` (username VARCHAR NOT NULL, appid VARCHAR NOT NULL, appsecret VARCHAR NOT NULL, secret VARCHAR NOT NULL, latest_post VARCHAR)")
|
|
|
|
app = Flask(cfg['name'])
|
|
app.secret_key = cfg['flask_key']
|
|
|
|
@app.route('/')
|
|
def main():
|
|
if 'acct' not in session:
|
|
return render_template("landing_page.html")
|
|
else:
|
|
return redirect(url_for('home'))
|
|
|
|
@app.route('/home')
|
|
def home():
|
|
return render_template("home.html")
|
|
|
|
@app.route('/internal/auth_a')
|
|
def internal_auth_a():
|
|
|
|
client_id = "abc"
|
|
client_secret = "123"
|
|
instance_url = request.args.get('url', default='mastodon.social', type=str)
|
|
if not instance_url.startswith("https://"):
|
|
instance_url = "https://{}".format(instance_url)
|
|
|
|
# client_id, client_secret = Mastodon.create_app(cfg['name'],
|
|
# api_base_url=instance_url,
|
|
# scopes="write:statuses",
|
|
# website=cfg['website'])
|
|
|
|
#example URL:
|
|
#https://fedi.lynnesbian.space/oauth/authorize?scope=read:favourites&response_type=code&redirect_uri=https://t5.codesections.com&client_id=CLIENT_ID_HERE&client_secret=CLIENT_SECRET_HERE
|
|
|
|
# client_info = {
|
|
# "client_id": client_id,
|
|
# "client_secret":client_secret,
|
|
# "scopes":"write:statuses",
|
|
# "website": cfg['website']
|
|
# }
|
|
|
|
url = "{}/oauth/authorize?scope=write:statuses&response_type=code&redirect_url=https://lynnesbian.space/cg/internal/auth_b&client_id={}&client_secret={}".format(
|
|
instance_url, client_id, client_secret
|
|
)
|
|
|
|
return url
|
|
|
|
# return(json.dumps(client_info))
|