paloma blog

NWエンジニアやってます。主に自宅環境のお遊びを書きます。Pythonもちょっと。タイトルは好きなカクテルから。

映画視聴記録として静的サイトジェネレータってどうだろう

前回のAPIの記事の続きですが、twitter APIがfreeだとPOST/DELETEしかできなくなりました。
映画視聴記録として使っていたのですが、このままでは読み(GET)ができません。
この映画見たっけなという感じで使っていたので気軽に使えないのでは不便です。

こんな感じね。(もう動かないけど)

(movies2) masashi@PC-ubuntu:~/movietweet$ python gettw.py --year=2022 | grep -P '2022-(0[7-9]|1[0-2])' | nl
     1  2022-12-25 22:55:21 Old School
     2  2022-12-25 09:35:17 The Batman
     3  2022-12-18 21:11:57 Charlie's Angels
     4  2022-12-17 23:36:10 The Ruthless
     5  2022-12-11 22:56:49 The Whole Nine Yards

他のSNSに移し替えてもいいんですがいつかまた同じ流れになるとも限りません。
ここはエンジニアとして食べている身として自分で何とかしましょう。

メモ帳とかDokuwikiとかに記録するというので十分事足りるのですが、もう少しエンジニアらしいもので記録したいです。

といっても映画タイトルとその他ちょっとのテキストのみの情報をわざわざWordpressとかのソフトウェアまで使うのかというとオーバーですよね。
じゃあDBに突っ込んどくかと言って成形したものをわざわざSQLiteとかに入れるのも違う感じがします。

そんな時昔見つけたjekyllという静的サイトジェネレータの存在を思い出しました。

jekyllrb.com

Webサーバの形を保ちつつテキストファイル配置のみで記事更新できる。
やりたいことにマッチしそうです。
静的サイトジェネレータで検索するとたくさん出てきて使い慣れてるpythonでもできそうですが、ご縁を信じてjekyllを触ってみます。

とりあえずお試しでスタンドアロンで作ります。
jekyllはruby製で詳しくありませんがフレームワーク本体をカスタムするわけでもなし、なんとかなるでしょう。

環境

サブwindows機のwslで試します。

masashi@DESKTOP-5RSN5EI:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.1 LTS
Release:        22.04
Codename:       jammy
masashi@DESKTOP-5RSN5EI:~$ ruby -v
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu]
masashi@DESKTOP-5RSN5EI:~$ jekyll -v
jekyll 4.3.2

jekyllインストール

お試しで環境構築済みなので割愛。

こんなコマンドです。

gem install jekyll builder
jekyll new myblog
bundle exec jekyll server

movieというディレクトリでサイト作成。

masashi@DESKTOP-5RSN5EI:/mnt/c/Users/masashi/jekyll$ jekyll new movie

…

New jekyll site installed in /mnt/c/Users/masashi/jekyll/movie.

デフォルトのツリー構成です。

masashi@DESKTOP-5RSN5EI:/mnt/c/Users/masashi/jekyll/movie$ tree
.
├── 404.html
├── Gemfile
├── Gemfile.lock
├── _config.yml
├── _posts
│   └── 2023-07-21-welcome-to-jekyll.markdown
├── about.markdown
└── index.markdown

1 directory, 7 files

テンプレhtml等は触らず

jekyllの動きを見るだけなのでとりあえずテンプレートとなるhtmlや処理系は触らずデフォルトでいきます。

立ち上げてブラウザで見るとこんな感じ。

一応オートリロードで起動しました。
でもこれだけだとpost配下においても記事が読み込まれません。
ほかのオプションがあるのでしょうか。

masashi@DESKTOP-5RSN5EI:/mnt/c/Users/masashi/jekyll/movie$ jekyll serve -q --livereload &

postのテスト

投稿のテストします。
日付、タイトルの命名フォーマットはありますが、mdファイルとして配置すればいい感じにレンダリングしてくれます。
デフォルトで作成されるファイルを消して直近見た5ファイルを配置。

:がファイル名に使えないのでタイトルにあるものは除外してます。(John wick2とか)

masashi@DESKTOP-5RSN5EI:/mnt/c/Users/masashi/jekyll/movie$ tree _posts/
_posts/
├── 2023-07-02-Never Back Down 2 The Beatdown.md
├── 2023-07-03-John Wick chapter2.md
├── 2023-07-09-Gold Brick.md
├── 2023-07-17-The Guilt Trip.md
└── 2023-07-17-The Irishman.md

0 directories, 5 files

ファイルの中身です。(アイリッシュマン)

masashi@DESKTOP-5RSN5EI:/mnt/c/Users/masashi/jekyll/movie$ cat _posts/
2023-07-17-The\ Irishman.md
---
title: The Irishman
---

2023-07-17に「The Irishman」を視聴しました。

\``` # 記事の記法と被るのでエスケープしてます
Infomation
---
Year: 2019
Genre: Biography, Crime, Drama
Director: Martin Scorsese
Actors: Robert De Niro, Al Pacino, Joe Pesci
Production: N/A
---
\```
タイトルページ

いわゆるトップページです。
配置した記事ファイルが更新され謳い文句の通りブログっぽい感じになりました。

中身

アイリッシュマンのページを見てみます。

味気ない感じはありますがいいですね。
このままでも今までのTwitter投稿と同じで用途としてはokですがデザイン修正や感想のフィールドなど置いてもう少し見栄えよくなるといいかも。

mdファイル配置が記事の更新になるのでomdb APIから引っ張ったあとファイル生成の機能を作らないといけませんね。

これは次回やりたいと思います。

まとめ

Twitter投稿ツールの代わりに静的サイトジェネレータを触ってみました。
LAMPサーバと違いテキストファイルを置くだけで記事が更新されるという仕組みでお手軽です。
ちょうど自分でカスタムするようなWebサーバを触りたかったところで、かと言ってDBまで設計するといつまでも完成しない…と思っていたのでjekyllは今の自分のニーズにマッチするOSSだと思います。

今までの視聴データを乗せ換えてしばらく使ってみたいと思います。
自ラボのコンテナに乗せるかどこかのホスティングサービスに乗せるかは考え中…。