2つのブコメを比較

    @@ -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 です。

History

  1. 2022/11/18 18:09:55 - 2022-11-18
  2. 2021/11/10 17:03:37 - 2021-11-10
  3. 2021/11/10 16:56:13 - 2021-11-10
  4. 2021/10/13 11:41:50 - 2021-10-13
  5. 2021/10/13 11:22:05 - 2021-10-13
  6. 2021/10/13 11:15:09 - 2021-10-13
  7. 2021/10/13 11:12:17 - 2021-10-13