Skip to content

Instantly share code, notes, and snippets.

@jefftriplett
Last active August 22, 2018 21:46
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 jefftriplett/b618d49cbeb0df3c729380927d525888 to your computer and use it in GitHub Desktop.
Save jefftriplett/b618d49cbeb0df3c729380927d525888 to your computer and use it in GitHub Desktop.
DjangoCon US talk rename/shaping
import click
import frontmatter
import maya
from pathlib import Path
from slugify import slugify
@click.command()
@click.option('--max-length', default=40)
def main(max_length):
docs = Path('schedule').glob('*/*.md')
docs = Path('..', '2018.djangocon.us-git', '_schedule', 'talks').glob('*.md')
for doc in docs:
dirty = False
post = frontmatter.loads(doc.read_text())
slug = slugify(post['title'], max_length=max_length, word_boundary=True)
date = maya.when(post['date']).datetime(to_timezone='US/Central', naive=True)
track = post.get('track')
category = post.get('category')
presenters = post.get('presenters')
permalink = post.get('permalink')
if permalink:
permalink = '/'.join([
'',
category,
slug,
'',
])
post['permalink'] = permalink
dirty = True
if presenters:
for presenter in presenters:
presenter = presenter.copy()
presenter_name = presenter['name']
presenter_slug = slugify(presenter_name, max_length=max_length, word_boundary=True)
presenter_doc = Path('..', '2018.djangocon.us-git', '_presenters', f'{presenter_slug}.md')
presenter_post = frontmatter.loads(presenter['bio'])
del presenter['bio']
presenter['layout'] = 'base' # 'presenter-details'
presenter['permalink'] = '/'.join([
'',
'presenters',
f'{presenter_slug}',
'',
])
presenter_post.metadata = presenter
presenter_doc.write_text(frontmatter.dumps(presenter_post))
dirty = True
if dirty is True:
doc.write_text(frontmatter.dumps(post))
if track and len(track):
filename = '-'.join([
f'{date.year:04}',
f'{date.month:02}',
f'{date.day:02}',
f'{date.hour:02}',
f'{date.minute:02}',
f'{track}',
f'{slug}.md',
])
else:
filename = '-'.join([
f'{date.year:04}',
f'{date.month:02}',
f'{date.day:02}',
f'{date.hour:02}',
f'{date.minute:02}',
f'{slug}.md',
])
target = Path(doc.parent, filename)
print(target)
doc.rename(target)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment