mirror of
https://github.com/rottenwheel/revuo-weekly.git
synced 2024-10-01 04:35:37 -04:00
f3207b7a7d
Added a new Python script to automate the creation of new weekly issues for the site. The script determines the latest issue number, generates a new one, and includes creation of a cover image with relevant dates. This streamlines the weekly update process and ensures consistency. This script is work in progress and will get additional features.
52 lines
1.6 KiB
Python
Executable File
52 lines
1.6 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import subprocess
|
|
import pathlib
|
|
import argparse
|
|
import datetime
|
|
import tempfile
|
|
import tomllib
|
|
|
|
def create_issue(issue_number):
|
|
subprocess.run(['hugo', 'new', f'weekly/issue-{issue_number}/_index.md'])
|
|
|
|
def create_issue_image(site_title, issue_number, period_start, period_end):
|
|
with open('assets/img/cover-template.svg') as f:
|
|
cover_template = f.read()
|
|
|
|
cover_template = cover_template.replace('__SITE__', site_title)
|
|
cover_template = cover_template.replace('__ISSUE__', issue_number)
|
|
cover_template = cover_template.replace('__DATE__', f'{period_start} - {period_end}')
|
|
|
|
with tempfile.TemporaryDirectory() as tempdir:
|
|
cover_path = pathlib.Path(tempdir) / 'cover.svg'
|
|
with open(cover_path, 'w') as f:
|
|
f.write(cover_template)
|
|
|
|
subprocess.run(['inkscape', str(cover_path), '-e', f'content/weekly/issue-{issue_number}/cover.png'])
|
|
|
|
|
|
def get_latest_issue():
|
|
issues = list(pathlib.Path('content/weekly').iterdir())
|
|
latest_issue = max(issues, key=lambda x: int(x.name.split('-')[1]))
|
|
return latest_issue.name.split('-')[1]
|
|
|
|
if __name__ == '__main__':
|
|
with open('hugo.toml', "rb") as f:
|
|
hugo_config = tomllib.load(f)
|
|
|
|
parser = argparse.ArgumentParser(description='Create a new issue')
|
|
parser.add_argument('--issue', type=int, help='Issue number')
|
|
args = parser.parse_args()
|
|
|
|
if args.issue:
|
|
new_issue = args.issue
|
|
else:
|
|
latest_issue = get_latest_issue()
|
|
new_issue = int(latest_issue) + 1
|
|
|
|
period_start = datetime.datetime.now().strftime('%Y-%m-%d')
|
|
period_end = (datetime.datetime.now() + datetime.timedelta(days=7)).strftime('%Y-%m-%d')
|
|
|
|
create_issue(new_issue)
|
|
|