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 11:36:25 +00:00
from flask import Flask , render_template , request
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-02 07:46:49 +00:00
return render_template ( " landing_page.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-02 07:52:33 +00:00
client_info = {
" client_id " : client_id ,
" client_secret " : client_secret ,
" scopes " : " write:statuses " ,
" website " : cfg [ ' website ' ]
}
return ( json . dumps ( client_info ) )