markey/generate.py
will 5605a39104 Add features
- Bot now logs its output to avoid repeat posts
- Added description of features to README
2024-05-20 18:47:04 -06:00

74 lines
No EOL
1.5 KiB
Python
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import chain
import sys
import requests
import json
import os
import secrets__
import config__
dir_path = os.path.dirname(os.path.realpath(__file__))
# Import previous post log
log_path = dir_path + "/posts_log.json"
try:
with open(log_path, "r") as infile:
posts_log = json.loads(infile.read())
except FileNotFoundError:
with open(log_path, "w") as outfile:
outfile.write('[""]')
posts_log = []
# Import Markov model
with open(dir_path + "/" + config__.model_file) as model_f:
model = chain.Text.from_json(model_f.read())
# Generate sentence
generated = False
text = None
while not generated:
text = model.make_short_sentence(config__.character_limit, tries=900, min_words=3)
generated = text is not None
if generated:
if text in posts_log:
generated = False
# Output
posts_log.append(text)
with open(log_path, "w") as outfile:
outfile.write(json.dumps(posts_log[-config__.log_length:]))
text = text.replace('@','@').replace('#','#')
print(text)
# Post to instance
apicreate = "https://" + config__.instance_url + "/api/notes/create"
if(config__.cw == ""):
requests.post(apicreate, json={
'i': secrets__.TOKEN,
'visibility': 'home',
'noExtractMentions': True,
'noExtractHashtags': True,
'text': text,
})
else:
requests.post(apicreate, json={
'i': secrets__.TOKEN,
'visibility': 'home',
'noExtractMentions': True,
'noExtractHashtags': True,
'text': text,
'cw': config__.cw
})