Add ebooks #22
@ -4,13 +4,20 @@ This is a toy I built so I wouldn't have to check the [Grand Forks 311](http://w
|
|||||||
app/website all the time.
|
app/website all the time.
|
||||||
|
|
||||||
It currently toots to Mastodon at [@hackgfk_311@botsin.space](https://botsin.space/@hackgfk_311).
|
It currently toots to Mastodon at [@hackgfk_311@botsin.space](https://botsin.space/@hackgfk_311).
|
||||||
Toots are converted to Tweets ([@hackgfk_311](https://twitter.com/hackgfk_311)) with @renatolond's wonderful
|
Toots are converted to tweets ([@hackgfk_311](https://twitter.com/hackgfk_311)) with @renatolond's wonderful
|
||||||
crossposter: https://crossposter.masto.donte.com.br ([source code](https://github.com/renatolond/mastodon-twitter-poster)).
|
crossposter: https://crossposter.masto.donte.com.br ([source code](https://github.com/renatolond/mastodon-twitter-poster)).
|
||||||
|
|
||||||
Written in R because I'm much quicker at that than Python, and it seemed like a fun use case.
|
Written in R because I'm much quicker at that than Python, and it seemed like a fun use case.
|
||||||
|
|
||||||
Pull requests always welcome!
|
Pull requests always welcome!
|
||||||
|
|
||||||
|
# 311_ebooks
|
||||||
|
|
||||||
|
In Python (because why stay consistent?), this script takes the corpus out of the local 311 database
|
||||||
|
and builds an [ebooks-style](https://en.wikipedia.org/wiki/Horse_ebooks) toot using Markovify.
|
||||||
|
|
||||||
|
Currently tooting at [@hackgfk_311_ebooks@botsin.space](https://botsin.space/@hackgfk_311_ebooks).
|
||||||
|
|
||||||
-----
|
-----
|
||||||
# Hack Grand Forks
|
# Hack Grand Forks
|
||||||
|
|
||||||
|
5
auth.ini.default
Normal file
5
auth.ini.default
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[mastodon]
|
||||||
|
#needs trailing slash
|
||||||
|
server = https://botsin.space/
|
||||||
|
email = heck@yeah.com
|
||||||
|
password = ReallyGoodPassword
|
61
bin/311_ebooks.py
Normal file
61
bin/311_ebooks.py
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
|
||||||
|
|
||||||
|
import markovify #https://github.com/jsvine/markovify
|
||||||
|
import sqlite3 #to read db
|
||||||
|
from mastodon import Mastodon
|
||||||
|
from configparser import ConfigParser
|
||||||
|
import os.path
|
||||||
|
|
||||||
|
# Open the db
|
||||||
|
conn = sqlite3.connect('requests.sqlite')
|
||||||
|
c = conn.cursor()
|
||||||
|
|
||||||
|
def get_descriptions():
|
||||||
|
c.execute('SELECT description FROM requests')
|
||||||
|
data = c.fetchall()
|
||||||
|
return(data)
|
||||||
|
|
||||||
|
# Get descriptions and convert to strings from tuples
|
||||||
|
b = ["".join(str(x).replace("\\r\\n","")) for x in get_descriptions()]
|
||||||
|
|
||||||
|
# Build the model.
|
||||||
|
text_model = markovify.Text(b)
|
||||||
|
|
||||||
|
# Print three randomly-generated sentences of no more than 280 characters
|
||||||
|
#for i in range(3):
|
||||||
|
# print(text_model.make_short_sentence(280))
|
||||||
|
|
||||||
|
# Next up use this to toot: https://github.com/halcy/Mastodon.py
|
||||||
|
|
||||||
|
# parse existing file
|
||||||
|
config = ConfigParser()
|
||||||
|
config.read('auth.ini')
|
||||||
|
|
||||||
|
# read values from a section
|
||||||
|
server = config.get('hackgfk_311_ebooks', 'server')
|
||||||
|
email = config.get('hackgfk_311_ebooks', 'email')
|
||||||
|
password = config.get('hackgfk_311_ebooks', 'password')
|
||||||
|
|
||||||
|
# Register the app (once)
|
||||||
|
if not os.path.isfile('hackgfk_311_ebooks_clientcred.secret'):
|
||||||
|
Mastodon.create_app(
|
||||||
|
'hackgfk_311_ebooks',
|
||||||
|
api_base_url = server,
|
||||||
|
to_file = 'hackgfk_311_ebooks_clientcred.secret'
|
||||||
|
)
|
||||||
|
|
||||||
|
# Log in
|
||||||
|
mastodon = Mastodon(
|
||||||
|
client_id = 'hackgfk_311_ebooks_clientcred.secret',
|
||||||
|
api_base_url = server,
|
||||||
|
)
|
||||||
|
mastodon.log_in(
|
||||||
|
email,
|
||||||
|
password,
|
||||||
|
to_file = 'hackgfk_311_ebooks_usercred.secret'
|
||||||
|
)
|
||||||
|
|
||||||
|
# Send toot
|
||||||
|
toot = text_model.make_short_sentence(280)
|
||||||
|
print(toot)
|
||||||
|
mastodon.toot(toot)
|
Reference in New Issue
Block a user