Skip to main content

Command line tool for generating markov memes.

Project description

Markov Meme

PyPI version GitHub actions status

Wouldn't it be great to generate themed memes with Markov Models? Or just randomly generated text? I think so too.

Usage

Install

You can install from pypi

pip install markovmeme

or install from the repository directly:

$ git clone https://github.com/vsoch/markovmeme
$ python setup.py install

Usage

You can see the basic usage as follows. Basically, there is a "generate" command:

$ markov-meme 
usage: markov-meme [-h] {generate} ...

Markov Meme Generator

optional arguments:
  -h, --help  show this help message and exit

actions:
  actions for Markov Meme Generator

  {generate}  markovmeme actions
    generate  generate a meme

You can see the corpus available by looking at the generate help:

$ markov-meme generate --help
usage: markov-meme generate [-h] [--outfile OUTFILE] [--fontsize FONTSIZE]
                            [--font {OpenSans-Regular,Pacifico-Regular,Anton-Regular}]
                            [--corpus {hamlet,dr_seuss,trump_speech,the_office,office/stanley,office/toby,office/meredith,office/holly,office/creed,office/oscar,office/deangelo,office/david,office/dwight,office/kelly,office/phyllis,office/jim,office/nellie,office/gabe,office/clark,office/roy,office/karen,office/michael,office/andy,office/charles,office/kevin,office/pam,office/ryan,office/erin,office/robert,office/darryl,office/pete,office/jan,office/jo,office/angela}]
                            [--custom-corpus CUSTOM_CORPUS]
                            [--image CUSTOM_IMAGE] [--no-model]

optional arguments:
  -h, --help            show this help message and exit
  --outfile OUTFILE     the output file to save the image (defaults to
                        randomly generated png)
  --fontsize FONTSIZE   font size of text (if desired) defaults to 16
  --font {OpenSans-Regular,Pacifico-Regular,Anton-Regular}
                        choice of font (defaults to open sans)
  --corpus {hamlet,dr_seuss,trump_speech,the_office,office/stanley,office/toby,office/meredith,office/holly,office/creed,office/oscar,office/deangelo,office/david,office/dwight,office/kelly,office/phyllis,office/jim,office/nellie,office/gabe,office/clark,office/roy,office/karen,office/michael,office/andy,office/charles,office/kevin,office/pam,office/ryan,office/erin,office/robert,office/darryl,office/pete,office/jan,office/jo,office/angela}
                        the corpus to use to generate the meme, matches to
                        images.
  --custom-corpus CUSTOM_CORPUS
                        A custom corpus file, full path
  --image CUSTOM_IMAGE  A custom image file, full path
  --no-model            Don't generate a sentence from corpus, just randomly
                        select sentence.

Random Generation

To generate a meme from a random corpus, you can just run:

$ markov-meme generate

If the randomly selected corpus doesn't have matching images, you'll see

No images exist for corpus office/clark. Please specify --image.

Corpus and Image Selection

And you can run the same command again, or specify a specific corpus and image.

$ markov-meme generate --corpus office/michael --image markovmeme/data/images/office/michael1.png

The same can be done for specifying a custom corpus, which should be a text file with lines to generate the model from.

$ markov-meme generate --custom-corpus markovmeme/data/corpus/office/michael.txt --image markovmeme/data/images/office/michael2.png

Skip Model

If you don't want to use a model (and want real lines from some corpus) add --no-model

$ markov-meme generate --no-model

Interactive Python

For the most part, text size and number of characters are limited to fit reasonable within 1-3 lines. If you want to customize or otherwise play around with this, you can interact with the class directly:

from markovmeme.main import MemeImage
from markovmeme.text import generate_text

# corpus is absolute path, or relative to module's data/corpus folder
corpus = "office/michael"

text = generate_text(corpus=corpus, use_model=True, size=10)

# Set image to full path, or None to select based on corpus
meme = MemeImage(image=None, corpus=corpus)

# Add text generated, centered on top
meme.write_text(text, fontsize=args.fontsize, font=font)

# Leave outfile as None to generate random name
meme.save_image(None)

Support

Do you have a question? Or want to suggest a feature to make it better? Please open an issue!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

markovmeme-0.0.1.tar.gz (51.8 MB view details)

Uploaded Source

Built Distribution

markovmeme-0.0.1-py3.7.egg (51.9 MB view details)

Uploaded Source

File details

Details for the file markovmeme-0.0.1.tar.gz.

File metadata

  • Download URL: markovmeme-0.0.1.tar.gz
  • Upload date:
  • Size: 51.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for markovmeme-0.0.1.tar.gz
Algorithm Hash digest
SHA256 bd46d74dcda01f73d978a91de696b5a1a077bda9263464188ac902333e1a9752
MD5 cf8cbce9839208b11fb3b036cabcf02c
BLAKE2b-256 aecabf345eb16403330c63d66890e5814219647d95b1f7df9cf1c9a39257880c

See more details on using hashes here.

File details

Details for the file markovmeme-0.0.1-py3.7.egg.

File metadata

  • Download URL: markovmeme-0.0.1-py3.7.egg
  • Upload date:
  • Size: 51.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for markovmeme-0.0.1-py3.7.egg
Algorithm Hash digest
SHA256 8518ffaf4a430efc31d3fd5e9d2d20ca3829e8e94785eefcaed8bb489e8fbe72
MD5 454f7ba7397d0f244deb570e8dcac155
BLAKE2b-256 87e1526c8d324573ce45da47d845e27929e9d5b66dd769e108f568038c77ede3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page