Add a slug argument to the new-photo-post script

This commit is contained in:
Eryn Wells 2023-04-23 22:08:32 +09:00
parent 2501cac13a
commit 29c402c3ec

View file

@ -8,6 +8,7 @@ New script.
import argparse
import datetime
import os.path
import re
import shutil
import subprocess
from PIL import Image
@ -15,10 +16,14 @@ from PIL.ExifTags import TAGS
PHOTOS_CONTENT_DIR = 'content/photos'
def slugify(s):
return re.sub(r'\s+', '-', s.strip().lower())
def parse_args(argv, *a, **kw):
parser = argparse.ArgumentParser(*a, **kw)
parser.add_argument('-n', '--dry-run', action='store_true')
parser.add_argument('-t', '--title', type=str)
parser.add_argument('-t', '--title')
parser.add_argument('-s', '--slug')
parser.add_argument('photos', nargs='+')
args = parser.parse_args(argv)
return args
@ -47,7 +52,12 @@ def main(argv):
year = earliest_exif_date.year
month = earliest_exif_date.month
name = args.title if args.title else os.path.splitext(os.path.basename(photo))[0]
if args.slug:
name = args.slug
elif args.title:
name = slugify(args.title)
else:
name = os.path.splitext(os.path.basename(photo))[0]
post_path_year = os.path.join(PHOTOS_CONTENT_DIR, f'{year:04}', name)
post_path_year_month = os.path.join(PHOTOS_CONTENT_DIR, f'{year:04}', f'{month:02}', name)
@ -74,6 +84,24 @@ def main(argv):
print(f'Failed to create new Hugo post', file=sys.stderr)
return -1
if args.title:
# The hugo command can't set a title for a post so I need to do it myself.
index_file_path = os.path.join(post_path, 'index.md')
with open(index_file_path) as index_file:
index_file_contents = index_file.readlines()
for i in range(len(index_file_contents)):
line = index_file_contents[i]
if not line.startswith('title:'):
continue
updated_line = f'title: "{args.title}"\n'
index_file_contents[i] = updated_line
with open(index_file_path, 'w') as index_file:
index_file.writelines(index_file_contents)
for photo in args.photos:
print(f'Copy {photo} -> {post_path}')
try: