Skip to content

Instantly share code, notes, and snippets.

@vallieres
Forked from jaden/generate-articles.py
Last active November 17, 2015 18:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vallieres/b7d94ae800481dcdbad6 to your computer and use it in GitHub Desktop.
Save vallieres/b7d94ae800481dcdbad6 to your computer and use it in GitHub Desktop.
A script that generates 5000 test posts for Hugo benchmarks
# Create specified number of articles for Jekyll benchmarks
from datetime import datetime
import random
import string
from sys import argv
def generateWord():
length = random.randint(1, 10)
word = ''.join(random.choice(string.letters) for _ in range(length))
return word
def generateSentence(words):
return ' '.join([generateWord() for i in range(words)])
def getRandomDateTimeObj():
year = random.choice(range(1950, 2015))
month = random.choice(range(1, 13))
day = random.choice(range(1, 29))
hours = random.choice(range(0, 24))
minutes = random.choice(range(0, 60))
seconds = random.choice(range(0, 60))
return datetime(year, month, day, hours, minutes, seconds)
def getRandomDate():
return getRandomDateTimeObj().strftime("%Y-%m-%d")
def getRandomDateTime():
return getRandomDateTimeObj().strftime("%Y-%m-%d_%H-%M-%S")
def createPost(outputDir):
title = generateSentence(8)
desc = generateSentence(20)
cat = random.choice(categories)
slug = title.replace(' ', '-').lower()
slug = ''.join(c for c in slug if c.isalnum() or c == '-')
with open('%s/%s-%s.md' % (outputDir, getRandomDate(),slug), 'w') as f:
f.write('---\n')
f.write('layout: post\n')
f.write('title: %s\n' % title)
f.write('excerpt: "%s"\n' % desc)
f.write('category: "%s"\n' % cat)
# Use UTC time to avoid having to mess with timezones and daylight saving time
#f.write('date = %s\n' % datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S-0000"))
#f.write('permalink = "%s"\n' % slug)
f.write('---\n\n')
# Generate blocks of random words
num_paragraphs = random.randint(5, 10)
for i in range(num_paragraphs):
f.write(generateSentence(random.randint(50, 100)))
f.write('\n\n')
# Set defaults
outputDir = '_posts'
numPosts = 5000
numCategories = 10
# Generate random categories
categories = [generateWord() for i in range(numCategories)]
for i in range(numPosts):
createPost(outputDir)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment