mirror of
https://github.com/ajayyy/SponsorBlock.git
synced 2024-11-10 01:01:55 +01:00
31 lines
No EOL
1 KiB
TypeScript
31 lines
No EOL
1 KiB
TypeScript
import { InvidiousInstance, instanceMap } from "./invidiousType"
|
|
|
|
import * as data from "../ci/invidious_instances.json";
|
|
|
|
// only https servers
|
|
const mapped: instanceMap = data
|
|
.filter((i: InvidiousInstance) => i[1]?.type === "https")
|
|
.map((instance: InvidiousInstance) => {
|
|
return {
|
|
name: instance[0],
|
|
url: instance[1].uri,
|
|
dailyRatios: instance[1].monitor.dailyRatios,
|
|
thirtyDayUptime: instance[1]?.monitor["30dRatio"].ratio,
|
|
}
|
|
});
|
|
|
|
// reliability and sanity checks
|
|
const reliableCheck = mapped
|
|
.filter(instance => {
|
|
// 30d uptime >= 90%
|
|
const thirtyDayUptime = Number(instance.thirtyDayUptime) >= 90;
|
|
// available for at least 80/90 days
|
|
const dailyRatioCheck = instance.dailyRatios.filter(status => status.label !== "black");
|
|
return thirtyDayUptime && dailyRatioCheck.length >= 80;
|
|
})
|
|
// url includes name
|
|
.filter(instance => instance.url.includes(instance.name));
|
|
|
|
export function getInvidiousList(): string[] {
|
|
return reliableCheck.map(instance => instance.name).sort()
|
|
} |