From 4681e861efcdf9b0b73e3803e70712bc55162863 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 8 Aug 2026 10:38:18 +0900 Subject: feat(slides): improve slide controller --- .../archive-dynamic-site-with-wget/index.html | 94 +++++++++++----------- 1 file changed, 48 insertions(+), 46 deletions(-) (limited to 'services/nuldoc/public/blog/posts/2025-12-06/archive-dynamic-site-with-wget/index.html') diff --git a/services/nuldoc/public/blog/posts/2025-12-06/archive-dynamic-site-with-wget/index.html b/services/nuldoc/public/blog/posts/2025-12-06/archive-dynamic-site-with-wget/index.html index fcd39446..34f13c57 100644 --- a/services/nuldoc/public/blog/posts/2025-12-06/archive-dynamic-site-with-wget/index.html +++ b/services/nuldoc/public/blog/posts/2025-12-06/archive-dynamic-site-with-wget/index.html @@ -14,7 +14,7 @@ wget を使って動的サイトを静的サイトにアーカイブする|REPL: Rest-Eat-Program Loop - +
@@ -101,41 +101,42 @@ 今回使用したスクリプトはこちら: https://github.com/nsfisis/phperkaigi-2024-albatross-archive/blob/cc837f6d2109555e2392016e8f6820fb5fd46dd6/archive.sh

-
# 指定した URL からスタートしてリンクを辿りながら全ファイルをファイルに書き出す -
# -
# --mirror リンクを再帰的に辿ってダウンロードする -
# --page-requisites CSS や画像等も含めて HTML から参照されている全ファイルをダウンロードする -
# --convert-links リンクを相対リンクへ変換する -
# --adjust-extension URL に拡張子が無くてもいい感じに推測する -
# --no-parent 親ディレクトリは見に行かない -
# --no-wait=1 リクエスト間で 1 秒待機する -
# -P ./archive/ 指定したディレクトリに保存する -
wget \ -
--mirror \ -
--page-requisites \ -
--convert-links \ -
--adjust-extension \ -
--no-parent \ -
--wait=1 \ -
-P ./archive/ \ -
https://t.nil.ninja/phperkaigi/2024/golf/ -
-
# ディレクトリ構造を調整する -
mv ./archive/t.nil.ninja/phperkaigi/2024/golf/* ./archive -
rmdir ./archive/t.nil.ninja/phperkaigi/2024/golf/ -
rmdir ./archive/t.nil.ninja/phperkaigi/2024/ -
rmdir ./archive/t.nil.ninja/phperkaigi/ -
rmdir ./archive/t.nil.ninja/ -
-
mkdir -p ./archive/api/quizzes/{1,2,3} -
-
# 動的な API エンドポイントを叩いて結果を JSON ファイルとして保存する -
wget -O ./archive/api/quizzes/1/chart.json https://t.nil.ninja/phperkaigi/2024/golf/api/quizzes/1/chart -
wget -O ./archive/api/quizzes/2/chart.json https://t.nil.ninja/phperkaigi/2024/golf/api/quizzes/2/chart -
wget -O ./archive/api/quizzes/3/chart.json https://t.nil.ninja/phperkaigi/2024/golf/api/quizzes/3/chart -
-
# 上記 API を叩いている箇所を、落としてきた静的ファイルを参照するように変更する -
sed -i -e 's#/chart`#/chart.json`#' ./archive/assets/chart.js
+
# 指定した URL からスタートしてリンクを辿りながら全ファイルをファイルに書き出す
+#
+# --mirror  リンクを再帰的に辿ってダウンロードする
+# --page-requisites  CSS や画像等も含めて HTML から参照されている全ファイルをダウンロードする
+# --convert-links  リンクを相対リンクへ変換する
+# --adjust-extension  URL に拡張子が無くてもいい感じに推測する
+# --no-parent  親ディレクトリは見に行かない
+# --no-wait=1  リクエスト間で 1 秒待機する
+# -P ./archive/  指定したディレクトリに保存する
+wget \
+    --mirror \
+    --page-requisites \
+    --convert-links \
+    --adjust-extension \
+    --no-parent \
+    --wait=1 \
+    -P ./archive/ \
+    https://t.nil.ninja/phperkaigi/2024/golf/
+
+# ディレクトリ構造を調整する
+mv ./archive/t.nil.ninja/phperkaigi/2024/golf/* ./archive
+rmdir ./archive/t.nil.ninja/phperkaigi/2024/golf/
+rmdir ./archive/t.nil.ninja/phperkaigi/2024/
+rmdir ./archive/t.nil.ninja/phperkaigi/
+rmdir ./archive/t.nil.ninja/
+
+mkdir -p ./archive/api/quizzes/{1,2,3}
+
+# 動的な API エンドポイントを叩いて結果を JSON ファイルとして保存する
+wget -O ./archive/api/quizzes/1/chart.json https://t.nil.ninja/phperkaigi/2024/golf/api/quizzes/1/chart
+wget -O ./archive/api/quizzes/2/chart.json https://t.nil.ninja/phperkaigi/2024/golf/api/quizzes/2/chart
+wget -O ./archive/api/quizzes/3/chart.json https://t.nil.ninja/phperkaigi/2024/golf/api/quizzes/3/chart
+
+# 上記 API を叩いている箇所を、落としてきた静的ファイルを参照するように変更する
+sed -i -e 's#/chart`#/chart.json`#' ./archive/assets/chart.js
+

このように wget に適切なオプションを渡すことで、指定したページから遷移可能なページを再帰的に辿っていき、サイト内の全ページをファイルへ落とすことができる。今回のサイトにはページ遷移では辿り着けないページがあったが (管理画面など)、運用が停止している今そういったページはアーカイブしなくてもよい。 @@ -144,16 +145,17 @@ あとはこのファイルを適当にサーブしてやればよい。

-
server { -
listen 80 default; -
listen [::]:80; -
-
charset UTF-8; -
-
location /phperkaigi/2024/golf/ { -
alias /archive/; -
} -
}
+
server {
+    listen 80 default;
+    listen [::]:80;
+
+    charset UTF-8;
+
+    location /phperkaigi/2024/golf/ {
+        alias /archive/;
+    }
+}
+
-- cgit v1.3.1