From ba0c8d73e585d7ff249dd90684254bc7fa025544 Mon Sep 17 00:00:00 2001 From: Fushihara <1039534+fushihara@users.noreply.github.com> Date: Mon, 23 Sep 2024 15:19:25 +0900 Subject: commit --- src/app/iframe/page.tsx | 52 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/app/iframe/page.tsx (limited to 'src/app/iframe') diff --git a/src/app/iframe/page.tsx b/src/app/iframe/page.tsx new file mode 100644 index 0000000..e26e921 --- /dev/null +++ b/src/app/iframe/page.tsx @@ -0,0 +1,52 @@ +'use client' +import Link from "next/link"; +import { useEffect, useState } from "react"; +type PageType = { + searchParams: Record, + params: { + articleId: string, + } +} +export default function Page(context: PageType) { + const [iframeUrl, setIframeUrl] = useState("abount:blank"); + const [iaSearchPageUrl, setIaSearchPageUrl] = useState("abount:blank"); + useEffect(() => { + const paramString = new URL(document.location.href).searchParams.get("src") ?? ""; + const showOriginalUrl = parseParam(paramString); + if (showOriginalUrl != null) { + const iaUrlKey = `20241001000000`;// 同じURLで記事が更新されている場合もあるので、最終版であろう2024/10/01 00:00:00を指定 + const iframeUrl = `https://web.archive.org/web/${iaUrlKey}if_/${showOriginalUrl}`; + setIframeUrl(iframeUrl); + const iaSeachPageUrlStr = `https://web.archive.org/web/*/${showOriginalUrl}`; + setIaSearchPageUrl(iaSeachPageUrlStr); + } + }, []); + return ( +
+
InternetArchiveの検索結果のURL: {iaSearchPageUrl}
+
iframeのURL: {iframeUrl}
+
※アキバ総研のページをIneternetArchiveで見る時はJavascriptを無効化しないと、強制的にリダイレクトされてしまいます
+
+
以下のページはInternetArchiveに保存されている内容です。
+ +
+
+ ); +} +function parseParam(paramString: string) { + let m: RegExpMatchArray | null = null; + if (m = paramString.match(/^article-(\d+)$/)) { + return `https://akiba-souken.com/article/${m[1]}/` + } else if (m = paramString.match(/^article-(\d+)-(\d+)$/)) { + return `https://akiba-souken.com/article/${m[1]}/?page=${m[2]}` + } else if (m = paramString.match(/^anime-(\d+)$/)) { + return `https://akiba-souken.com/anime/${m[1]}/`; + } else if (m = paramString.match(/^anime-(\d+)-review$/)) { + return `https://akiba-souken.com/anime/${m[1]}/review/`; + } else if (m = paramString.match(/^anime-(\d+)-review-p(\d+)$/)) { + return `https://akiba-souken.com/anime/${m[1]}/review/?page=${m[2]}`; + } else if (m = paramString.match(/^anime-(\d+)-review-(\d+)$/)) { + return `https://akiba-souken.com/anime/${m[1]}/review/${m[2]}/`; + } + return null; +} -- cgit v1.2.3