はてなブログから古い記事を移した
新しい記事 blog.aoirint.com へ投稿しつつ、 古い記事は aoirint.hatenablog.com に残っていましたが、 古い記事を blog.aoirint.com に移しました。
古い記事にはリダイレクトと移動先へのリンクを設置しています。
blogsyncで記事を取得したあと、以下のようなスクリプトでfrontmatterを変換しました。
以前の移行時の作業ミスでMarkdown記事がHTMLになってしまっていたので、 手動でMarkdownに書き戻しました。
import globimport yamlfrom datetime import datetimefrom pathlib import Pathimport frontmatter as FMfor path in glob.glob('**/*.md', recursive=True):if path.startswith('output'):continueprint(path)with open(path, 'r') as fp:frontmatter = FM.load(fp)# docs = yaml.safe_load_all(fp)# frontmatter = next(docs)# body = next(docs)body = frontmatter.contentprint(frontmatter)print(body)title = frontmatter['Title']if title.startswith('(移動済)'):print(f'Skipped: {title}')continueprint(f'Processing: {title}')original_url = frontmatter['URL']date: datetime = frontmatter['Date']draft = frontmatter.get('Draft', False)tags = frontmatter.get('Category')category = tags[0] if tags else Nonenew_frontmatter = {'title': title,'date': date.strftime('%Y-%m-%d %H:%M:%S'),'draft': draft,'channel': '技術ノート',}if category:new_frontmatter['category'] = categoryif tags:new_frontmatter['tags'] = tagsoutput = yaml.dump(new_frontmatter, default_flow_style=False, sort_keys=False, allow_unicode=True)output_lines = output.split('\n')output_lines.insert(0, f'---')output_lines.insert(1, f'# moved from {original_url}')output_lines.insert(-1, f'---')output = '\n'.join(output_lines)output += f'# {title}\n\n' + body + '\n'dest = Path('output', path)dest.parent.mkdir(parents=True, exist_ok=True)with open(dest, 'w') as fp:fp.write(output)