2つのブコメを比較(はてな記法版)
by
Lhankor_Mhy
2022-11-22 [2022/11/22 15:18:45]
比較したいブコメページを入力→コメントを比較したテキストをはてな記法で出力
@@ -12,13 +12,13 @@
const BtoURL = s => s.replace(regexp, (_, p1, p2) => (p1 ? "https://" : "http://") + p2)
const { bookmarks, eid } = (await (await fetch('https://b.hatena.ne.jp/entry/jsonlite/?url=' + encodeURIComponent(BtoURL(prompt('比較ブクマURL', ''))))).json())
- const { bookmarks:origBookmarks, eid:origEid } = (await (await fetch('https://b.hatena.ne.jp/entry/jsonlite/?url=' + encodeURIComponent(BtoURL(location.href)))).json())
+ const { bookmarks: origBookmarks, eid: origEid } = (await (await fetch('https://b.hatena.ne.jp/entry/jsonlite/?url=' + encodeURIComponent(BtoURL(location.href)))).json())
- const blob = new Blob([
- bookmarks.flatMap(bookmark => {
- const origBookmark = origBookmarks.find(origBookmark=>origBookmark.user===bookmark.user)
- if (!origBookmark) return []
- return [`<pre>
+ const html = bookmarks.flatMap(bookmark => {
+ const origBookmark = origBookmarks.find(origBookmark=>origBookmark.user===bookmark.user)
+ if (!origBookmark) return []
+ return [`
+<pre>
* ${bookmark.user}
>>
${bookmark.comment}
@@ -28,10 +28,11 @@
${origBookmark.comment}
https://b.hatena.ne.jp/entry/${origEid}/comment/${origBookmark.user}
<<
- </pre>`]
- }).join('')
-
- ], { type: "text/html;charset=utf-8" })
+</pre>
+ `]
+ }).join('')
+
+ const blob = new Blob([html], { type: "text/html;charset=utf-8" })
const url = URL.createObjectURL(blob)
window.open(url)
URL.revokeObjectURL(url)
/*
* @title 2つのブコメを比較(はてな記法版)
* @description 比較したいブコメページを入力→コメントを比較したテキストをはてな記法で出力
* @include https://b.hatena.ne.jp/entry/*
* @license CC0
* @javascript_url
*/
(async () => {
const regexpEscape = s => s.replace(/[\\^$.*+?()[\]{}|]/g, '\\$&')
const regexp = new RegExp(regexpEscape("https://b.hatena.ne.jp/entry/") + "(s/)*(.+)")
const BtoURL = s => s.replace(regexp, (_, p1, p2) => (p1 ? "https://" : "http://") + p2)
const { bookmarks, eid } = (await (await fetch('https://b.hatena.ne.jp/entry/jsonlite/?url=' + encodeURIComponent(BtoURL(prompt('比較ブクマURL', ''))))).json())
const { bookmarks: origBookmarks, eid: origEid } = (await (await fetch('https://b.hatena.ne.jp/entry/jsonlite/?url=' + encodeURIComponent(BtoURL(location.href)))).json())
const html = bookmarks.flatMap(bookmark => {
const origBookmark = origBookmarks.find(origBookmark=>origBookmark.user===bookmark.user)
if (!origBookmark) return []
return [`
<pre>
* ${bookmark.user}
>>
${bookmark.comment}
https://b.hatena.ne.jp/entry/${eid}/comment/${bookmark.user}
<<
>>
${origBookmark.comment}
https://b.hatena.ne.jp/entry/${origEid}/comment/${origBookmark.user}
<<
</pre>
`]
}).join('')
const blob = new Blob([html], { type: "text/html;charset=utf-8" })
const url = URL.createObjectURL(blob)
window.open(url)
URL.revokeObjectURL(url)
})()
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。