Miniflux automatically refresh feeds

Automatically refreshes Miniflux feeds

当前为 2023-04-21 提交的版本,查看 最新版本

// ==UserScript==
// @name         Miniflux automatically refresh feeds
// @namespace    https://reader.miniflux.app/
// @version      1
// @description  Automatically refreshes Miniflux feeds
// @author       Tehhund
// @match        *://*.miniflux.app/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=miniflux.app
// @grant        none
// ==/UserScript==

const apiKey = '';
const rateLimit = 300000; // time in miliseconds that must pass before it refreshes the feeds. 3600000 = 1 hour. 300000 = 5 minutes.

const refreshFeeds = async () => {
  if (await shouldUpdate()) {
    console.log('Miniflux: Time to refresh');
    let req = await fetch('https://reader.miniflux.app/v1/feeds/refresh', {
      method: "PUT",
      headers: {
        'X-Auth-Token': apiKey
      }
    });
    let res = await req;
    if (res.status == 204) { console.log('Successfully started refresh on all feeds.'); } else { console.log('Error, Miniflux did not return a 204 status.'); }
  } else { console.log('Miniflux: Not time to refresh yet.'); }
}

const shouldUpdate = async () => {
  let shouldUpdate = false;
  let req = await fetch('https://reader.miniflux.app/v1/feeds', {
    headers: {
      'X-Auth-Token': apiKey
    }
  });
  let res = JSON.parse(await req.text());
  let now = new Date().getTime();
  for (let feed of res) {
    let jsTime = Date.parse(feed.checked_at);
    let difference = now - jsTime; // JS stores time like Unix but miliseconds since January 01, 1970 00:00:00 UTC instead of seconds, so this subtracts miliseconds from miliseconds.
    if (difference > rateLimit) {
      shouldUpdate = true;
      break; // If even one is out-of-date, refresh. No need to keep checking
    }
  }
  return shouldUpdate;
}

// run once when the page is loaded.
refreshFeeds();