2つのブコメを比較
by
Lhankor_Mhy
2022-11-18 [2022/11/18 18:09:55]
比較したいブコメページを入力→コメントがユーザーごとに並ぶ
@@ -8,17 +8,14 @@
(async () => {
document.documentElement.scrollTop = document.documentElement.scrollHeight
- 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 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 = (await (await fetch('https://b.hatena.ne.jp/entry/jsonlite/?url=' + encodeURIComponent(BtoURL(prompt('比較ブクマURL', ''))))).json()).bookmarks;
+ const {bookmarks,eid} = (await (await fetch('https://b.hatena.ne.jp/entry/jsonlite/?url=' + encodeURIComponent(BtoURL(prompt('比較ブクマURL', ''))))).json())
bookmarks.forEach(bookmark => {
- const targetElement = document.querySelector(`.is-active.bookmarks-sort-panel [data-user-name="${bookmark.user}"] .entry-comment-text`);
- targetElement ?
- (targetElement.style.display = "grid", targetElement.style.grid = "none / 1fr 1fr", targetElement.style.gap = "5px") :
- null;
- targetElement?.insertAdjacentHTML?.('beforeend', `<div style="background:wheat;">${bookmark.comment}</div>`);
- });
+ const targetElement = document.querySelector(`.is-active.bookmarks-sort-panel [data-user-name="${bookmark.user}"] .entry-comment-text`)
+ targetElement?.insertAdjacentHTML?.('beforeend', `<a href="/entry/${eid}/comment/${bookmark.user}" class="entry-comment-text js-bookmark-comment" target="_blank" style="display:block;background-color:wheat">${bookmark.comment}</a>`)
+ })
})()
/*
* @title 2つのブコメを比較
* @description 比較したいブコメページを入力→コメントがユーザーごとに並ぶ
* @include https://b.hatena.ne.jp/entry/*
* @license CC0
* @javascript_url
*/
(async () => {
document.documentElement.scrollTop = document.documentElement.scrollHeight
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())
bookmarks.forEach(bookmark => {
const targetElement = document.querySelector(`.is-active.bookmarks-sort-panel [data-user-name="${bookmark.user}"] .entry-comment-text`)
targetElement?.insertAdjacentHTML?.('beforeend', `<a href="/entry/${eid}/comment/${bookmark.user}" class="entry-comment-text js-bookmark-comment" target="_blank" style="display:block;background-color:wheat">${bookmark.comment}</a>`)
})
})()
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。