2018-11-01 14:25:47 +00:00
#!/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/.
2018-11-02 02:35:40 +00:00
import requests , sqlite3 , json
2018-11-01 14:25:47 +00:00
from mastodon import Mastodon
2018-11-04 23:17:28 +00:00
from flask import Flask , render_template , request , session , redirect , url_for
2018-11-01 14:25:47 +00:00
2018-11-02 02:35:40 +00:00
cfg = json . load ( open ( " meta.json " ) )
2018-11-01 14:25:47 +00:00
db = sqlite3 . connect ( " database.db " )
c = db . cursor ( )
2018-11-01 15:17:02 +00:00
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) " )
2018-11-02 02:59:29 +00:00
app = Flask ( cfg [ ' name ' ] )
2018-11-02 03:13:08 +00:00
app . secret_key = cfg [ ' flask_key ' ]
2018-11-02 02:59:29 +00:00
2018-11-02 03:13:08 +00:00
@app.route ( ' / ' )
def main ( ) :
2018-11-04 23:17:28 +00:00
if ' acct ' not in session :
return render_template ( " landing_page.html " )
else :
return redirect ( url_for ( ' home ' ) )
@app.route ( ' /home ' )
def home ( ) :
2018-11-04 23:19:01 +00:00
return render_template ( " home.html " )
2018-11-02 02:59:29 +00:00
@app.route ( ' /internal/auth_a ' )
def internal_auth_a ( ) :
2018-11-04 11:36:25 +00:00
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 )
2018-11-02 07:52:33 +00:00
# client_id, client_secret = Mastodon.create_app(cfg['name'],
# api_base_url=instance_url,
# scopes="write:statuses",
# website=cfg['website'])
2018-11-04 12:19:38 +00:00
#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
2018-11-04 23:17:28 +00:00
# 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
2018-11-02 07:52:33 +00:00
2018-11-04 23:17:28 +00:00
# return(json.dumps(client_info))