Automatically refreshes Miniflux feeds
Från och med
// ==UserScript==
// @name Miniflux automatically refresh feeds
// @namespace https://reader.miniflux.app/
// @version 2
// @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 = 600000; // time in miliseconds that must pass before it refreshes the feeds. 3600000 = 1 hour. 300000 = 5 minutes. 600000 = 10 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();