chore: Init
This commit is contained in:
commit
e55cf2c275
|
@ -0,0 +1 @@
|
|||
token.dat
|
|
@ -0,0 +1,72 @@
|
|||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <deque>
|
||||
#include <string>
|
||||
#include <random>
|
||||
#include <ctime>
|
||||
|
||||
using namespace std;
|
||||
using prefix = deque<string>;
|
||||
|
||||
constexpr int NPREF = 2;
|
||||
constexpr int MAXGEN = 10000;
|
||||
const string NOWORD = "\n";
|
||||
|
||||
static map<prefix, vector<string>> statetab;
|
||||
|
||||
void add(prefix& p, const string& s)
|
||||
{
|
||||
if (p.size() == NPREF) {
|
||||
statetab[p].emplace_back(s);
|
||||
p.pop_front();
|
||||
}
|
||||
p.emplace_back(s);
|
||||
}
|
||||
|
||||
void build(prefix& p, istream& in)
|
||||
{
|
||||
string buf;
|
||||
|
||||
while (in >> buf)
|
||||
add(p, buf);
|
||||
}
|
||||
|
||||
void generate(const int nwords)
|
||||
{
|
||||
prefix p;
|
||||
int i;
|
||||
|
||||
mt19937_64 rng;
|
||||
rng.seed(unsigned(time(nullptr)));
|
||||
|
||||
for (i = 0; i < NPREF; ++i)
|
||||
add(p, NOWORD);
|
||||
|
||||
for (i = 0; i < nwords; ++i) {
|
||||
const vector<string>& suf = statetab[p];
|
||||
const string& w = suf[rng() % suf.size()];
|
||||
|
||||
if (w == NOWORD)
|
||||
break;
|
||||
cout << w << "\n";
|
||||
p.pop_front();
|
||||
p.emplace_back(w);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
constexpr int nwords = MAXGEN;
|
||||
prefix current;
|
||||
|
||||
for (int i = 0; i < NPREF; ++i)
|
||||
add(current, NOWORD);
|
||||
|
||||
build(current, cin);
|
||||
add(current, NOWORD);
|
||||
generate(nwords);
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
#!/home/naiji/mastodon/maritalk-bot/venv/bin/python
|
||||
import sys
|
||||
import numpy as np
|
||||
|
||||
from mastodon import Mastodon
|
||||
|
||||
# --------------------------------------------------
|
||||
|
||||
def main():
|
||||
|
||||
mastodon = Mastodon(
|
||||
access_token = 'token.dat',
|
||||
api_base_url = 'https://udongein.xyz/'
|
||||
)
|
||||
|
||||
text = open('source.dat', encoding='utf8').read()
|
||||
|
||||
# ORIGINAL IMPLEMENTATION:
|
||||
# https://gist.github.com/bpshaver/840d53222b72d2612ddf6702ef020274#file-markov_text_sim-py
|
||||
|
||||
source = text.split()
|
||||
|
||||
def make_pairs(source):
|
||||
for i in range(len(source)-1):
|
||||
yield (source[i], source[i+1])
|
||||
|
||||
pairs = make_pairs(source)
|
||||
|
||||
word_dict = {}
|
||||
|
||||
for left_w, right_w in pairs:
|
||||
if left_w in word_dict.keys():
|
||||
word_dict[left_w].append(right_w)
|
||||
else:
|
||||
word_dict[left_w] = [right_w]
|
||||
|
||||
first_word = np.random.choice(source)
|
||||
while first_word.islower():
|
||||
first_word = np.random.choice(source)
|
||||
|
||||
chain = [first_word]
|
||||
|
||||
ch = ''
|
||||
|
||||
while not ch.endswith('.'):
|
||||
ch = np.random.choice(word_dict[chain[-1]])
|
||||
chain.append(ch)
|
||||
|
||||
toot = ' '.join(chain)
|
||||
mastodon.status_post(toot, media_ids=None, visibility='unlisted')
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
|
@ -0,0 +1,38 @@
|
|||
acme==1.1.0
|
||||
certbot==0.40.0
|
||||
certbot-nginx==0.40.0
|
||||
certifi==2019.11.28
|
||||
chardet==3.0.4
|
||||
ConfigArgParse==0.13.0
|
||||
configobj==5.0.6
|
||||
cryptography==2.8
|
||||
dbus-python==1.2.16
|
||||
distro==1.4.0
|
||||
distro-info===0.23ubuntu1
|
||||
future==0.18.2
|
||||
idna==2.8
|
||||
josepy==1.2.0
|
||||
mock==3.0.5
|
||||
netifaces==0.10.4
|
||||
parsedatetime==2.4
|
||||
pbr==5.4.5
|
||||
PyGObject==3.36.0
|
||||
pymacaroons==0.13.0
|
||||
PyNaCl==1.3.0
|
||||
pyOpenSSL==19.0.0
|
||||
pyparsing==2.4.6
|
||||
pyRFC3339==1.1
|
||||
python-apt==2.0.0+ubuntu0.20.4.1
|
||||
python-debian===0.1.36ubuntu1
|
||||
pytz==2019.3
|
||||
PyYAML==5.3.1
|
||||
requests==2.22.0
|
||||
requests-toolbelt==0.8.0
|
||||
six==1.14.0
|
||||
ubuntu-advantage-tools==20.3
|
||||
ufw==0.36
|
||||
urllib3==1.25.8
|
||||
zope.component==4.3.0
|
||||
zope.event==4.4
|
||||
zope.hookable==5.0.0
|
||||
zope.interface==4.7.1
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash
|
||||
source venv/bin/activate
|
||||
python3 post.py
|
||||
deactivate
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue