Greasy Fork

Greasy Fork is available in English.

Miniflux detect deleted Bluesky posts

Makes the External Link unclickable if the bsky post was deleted because opening a deleted post is a waste of time.

当前为 2025-01-30 提交的版本,查看 最新版本

// ==UserScript==
// @name         Miniflux detect deleted Bluesky posts
// @namespace    https://reader.miniflux.app/
// @version      1
// @description  Makes the External Link unclickable if the bsky post was deleted because opening a deleted post is a waste of time.
// @author       Tehhund
// @match        *://*.miniflux.app/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=miniflux.app
// @run-at       document-start
// @grant        GM.xmlHttpRequest
// @license MIT
// ==/UserScript==

const detect = async () => {
  const links = [...document.getElementsByTagName(`a`)];
  for (const link of links) {
    if (link.href.includes(`bsky.app`)) {
      const repo = link.href.split(`/`)[4];
      const collection = `app.bsky.richtextpost`;
      const rkey = link.href.split(`/`)[6];
      const url = `https://bsky.social/xrpc/com.atproto.repo.getRecord?repo=${repo}&collection=app.bsky.richtextpost&rkey=${rkey}`;
      GM.xmlHttpRequest({
        method: "GET",
        url: url,
        headers: {
          "User-Agent": "Mozilla/5.0",    // If not specified, navigator.userAgent will be used.
          "Accept": "text/xml"            // If not specified, browser defaults will be used.
        },
        onload: function (response) {
          if (response.responseText.includes`RecordNotFound`) {
            const newSpan = document.createElement(`span`);
            newSpan.textContent = `No ${link.textContent}`;
            link.insertAdjacentElement(`beforebegin`, newSpan);
            link.remove();
          }
        }
      });
    }
  }
}

window.addEventListener("DOMContentLoaded", detect);