All Projects → EivindArvesen → Dankenstein

EivindArvesen / Dankenstein

Licence: bsd-3-clause
Markov Chain Twitter Bot generator

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects
bash
514 projects

Projects that are alternatives of or similar to Dankenstein

Integrations
Connect your App to Multiple Messaging Channels with the W3C Open standard.
Stars: ✭ 721 (+516.24%)
Mutual labels:  bot, twitter
Zonkeynet
RADIO Mesh Network
Stars: ✭ 12 (-89.74%)
Mutual labels:  bot, twitter
Notify
A dead simple Go library for sending notifications to various messaging services.
Stars: ✭ 727 (+521.37%)
Mutual labels:  bot, twitter
Socialmanagertools Gui
🤖 👻 Desktop application for Instagram Bot, Twitter Bot and Facebook Bot
Stars: ✭ 293 (+150.43%)
Mutual labels:  bot, twitter
Likelo
Twitter auto like bot, Under Development👷, Pre Alpha
Stars: ✭ 64 (-45.3%)
Mutual labels:  bot, twitter
Downloadthisvideo
Twitter bot for easily downloading videos/GIFs off tweets
Stars: ✭ 530 (+352.99%)
Mutual labels:  bot, twitter
Tweety
.NET Standard Library to help in managing Twitter Webhook APIs.
Stars: ✭ 11 (-90.6%)
Mutual labels:  bot, twitter
Tradingview Webhook Bot
⚙️ Send TradingView alerts to Telegram, Discord, Slack, Twitter and/or Email.
Stars: ✭ 135 (+15.38%)
Mutual labels:  bot, twitter
Broid Kit
Bot framework powered by Broid
Stars: ✭ 58 (-50.43%)
Mutual labels:  bot, twitter
Fact Bot
Twitter bot dedicated to tweeting interesting facts daily
Stars: ✭ 40 (-65.81%)
Mutual labels:  bot, twitter
Twitter Bot Bootstrap
Twitter bot bootstrap 👢 using node and twit 🐦
Stars: ✭ 220 (+88.03%)
Mutual labels:  bot, twitter
Cat Facts
Daily cat facts! 🐱
Stars: ✭ 110 (-5.98%)
Mutual labels:  bot, twitter
Awesome Twitter Bots
🌟Resource repo for Twitter Bots 🐦
Stars: ✭ 170 (+45.3%)
Mutual labels:  bot, twitter
Trump2cash
A stock trading bot powered by Trump tweets
Stars: ✭ 6,054 (+5074.36%)
Mutual labels:  bot, twitter
Mastodon Bot
a bot for mirroring Twitter/Tumblr accounts and RSS feeds on Mastodon
Stars: ✭ 158 (+35.04%)
Mutual labels:  bot, twitter
Chir.py
twitter news bot that builds followers, posts, and bitcoin via ppc links
Stars: ✭ 10 (-91.45%)
Mutual labels:  bot, twitter
Twitter Downloader Telegram Bot
🤖 Telegram bot for download video from twitter.
Stars: ✭ 37 (-68.38%)
Mutual labels:  bot, twitter
Spam Bot 3000
Social media research and promotion, semi-autonomous CLI bot
Stars: ✭ 79 (-32.48%)
Mutual labels:  bot, twitter
Twitterbot
Golang smart Twitter bot
Stars: ✭ 111 (-5.13%)
Mutual labels:  bot, twitter
Xiaov
👰 一个 QQ 聊天机器人,她的名字叫做小薇~
Stars: ✭ 1,466 (+1152.99%)
Mutual labels:  bot

Dankenstein

Dankenstein is a Markov Chain Twitter Bot generator, based on making a mashup of different corpora.

It is described in this blogpost.

Dependencies

The software itself is implemented using Bash, Make, and Python.

You'll need a Twitter Account and a Twitter application. From the latter, you'll need a consumer key, a consumer secret, an access token and an access token secret.

Enter these into twitterCredentials.sh

To generate the supported datasets you'll need :

  • Poppler
    • brew install poppler on macOS
    • sudo apt-get install -y poppler-utils on Ubuntu

After that, you can run the importEnv.sh script in the dev-folder. This will create a Python virtual environment (conda if you have it, virtualenv otherwise) called dankenstein, and install all python-dependencies.

If you'd rather install them separately, they are: Tweepy, darklyrics, wikiquote, markovify; (optionally nltk)

Usage

Usage is based around Make. The following options are available:

make corpora:
    Builds all corpora

make list:
    Lists all available corpora

make combinations:
    Prints all possible combinations of two candidates - may include duplicates (with switched positions)

make model ARGS="corpus1 corpus2 [(scale1 scale2) stateSize overlapTotal overlapRatio tries sentences modelComplexity]":
    Generates a model based on two corpora (the only required args).

    If you define scale 1, you must define scale 2.

    All options inside the square brackets are optional.

    ARGS:
        corpus1
            string - the name of the first corpus
                no default

        corpus2
            string - the name of the second corpus
                no default

        scale1
            float/int - scale of corpus1 relative to corpus2
                defaults to 1

        scale2
            float/int - scale of corpus2 relative to corpus1
                defaults to 1

        stateSize
            int - state size of the Markov chain
                defaults to 2

        overlapTotal
            int - maximum sequential words that overlap with a sentence from the corpora
                defaults to 15

        overlapRatio
            int - maximum percentage of overlap with a sentence from the corpora
                defaults to 70

        tries
            int - attempts to make an original sentence
                defaults to 10

        sentences
            int - number of sentences
                defaults to 5

        modelComplexity
            string - naive | expert
                defaults to "naive"

    EXAMPLE:
        make model ARGS="tcm jobs 2 1 2 15 30 10 25 expert" && make sentences

make sentence:
    Outputs one sentence based on an available (previously trained) model.

make sentences:
    Outputs the amount of sentences given as an argument during model generation.

make clean:
    Deletes all corpora.

make tweet:
    Posts a tweet.

It is possible to se all combinations for a given candidate, e.g. make combinations | grep "picard +".

Deployment:

Twitter secrets are set via environment variables, e.g.

export CONSUMER_KEY="consumer_key"
export CONSUMER_SECRET="consumer_secret"
export ACCESS_KEY="access_token"
export ACCESS_SECRET="access_token_secret"

An example deployment is described in the bottom of this blogpost.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].