pages update

pull/304/head
Norman Köhring 1 year ago
parent 8e38ec2fdb
commit c8940dc343

@ -1,64 +1,71 @@
import { retryFetch } from './toolkit.ts' import { retryFetch } from "./toolkit.ts";
const STATUS_URL = 'http://localhost:8383/api/runs/' const STATUS_URL = "http://localhost:8383/api/runs/";
const RESULT_URL = 'http://localhost:8383/api/results/' const RESULT_URL = "http://localhost:8383/api/results/";
const METRIC_DEFAULTS = { const METRIC_DEFAULTS = {
device: 'desktop', device: "desktop",
waitForResponse: false, waitForResponse: false,
screenshot: true, screenshot: true,
} };
// requests metrics and returns runId // requests metrics and returns runId
export async function requestMetricsRun (url:string): Promise<string|null> { export async function requestMetricsRun(url: string): Promise<string | null> {
const body = JSON.stringify({ const body = JSON.stringify({
url, url,
...METRIC_DEFAULTS, ...METRIC_DEFAULTS,
}) });
const response = await fetch(STATUS_URL, { const response = await fetch(STATUS_URL, {
method: "POST", method: "POST",
headers: [ headers: [
["Content-Type", "application/json"], ["Content-Type", "application/json"],
["User-Agent", "250kb-club"] ["User-Agent", "250kb-club"],
], ],
body, body,
}) });
if (response.ok) { if (response.ok) {
const json: { runId: string } = await response.json() const json: { runId: string } = await response.json();
return json.runId return json.runId;
} else { } else {
const err = await response.text() const err = await response.text();
console.error(`Failed to request metrics run for ${url}: ${err}`) console.error(`Failed to request metrics run for ${url}: ${err}`);
return null return null;
} }
} }
export async function checkStatus (runId: string, retries = 3): Promise<Status> { export async function checkStatus(runId: string): Promise<Status> {
const json = await retryFetch(`${STATUS_URL}${runId}`) const json = await retryFetch(`${STATUS_URL}${runId}`);
if (!json) return { url: '', status: 'failed' } if (!json) return { url: "", status: "failed" };
const url = json.params.url const url = json.params.url;
const status = json.status.statusCode const status = json.status.statusCode;
return { url, status } return { url, status };
} }
export async function retrieveMetrics (runId: string): Promise<Metric|null> { export async function retrieveMetrics(runId: string): Promise<Metric | null> {
const json = await retryFetch(`${RESULT_URL}${runId}`) const json = await retryFetch(`${RESULT_URL}${runId}`);
if (!json) return null if (!json) return null;
return { return {
scores: { scores: {
pageWeight: json.scoreProfiles.generic.categories.pageWeight.categoryScore, pageWeight:
json.scoreProfiles.generic.categories.pageWeight.categoryScore,
requests: json.scoreProfiles.generic.categories.requests.categoryScore, requests: json.scoreProfiles.generic.categories.requests.categoryScore,
domComplexity: json.scoreProfiles.generic.categories.domComplexity.categoryScore, domComplexity:
javascriptComplexity: json.scoreProfiles.generic.categories.javascriptComplexity.categoryScore, json.scoreProfiles.generic.categories.domComplexity.categoryScore,
badJavascript: json.scoreProfiles.generic.categories.badJavascript.categoryScore, javascriptComplexity:
json.scoreProfiles.generic.categories.javascriptComplexity
.categoryScore,
badJavascript:
json.scoreProfiles.generic.categories.badJavascript.categoryScore,
jQuery: json.scoreProfiles.generic.categories.jQuery.categoryScore, jQuery: json.scoreProfiles.generic.categories.jQuery.categoryScore,
cssComplexity: json.scoreProfiles.generic.categories.cssComplexity.categoryScore, cssComplexity:
json.scoreProfiles.generic.categories.cssComplexity.categoryScore,
badCSS: json.scoreProfiles.generic.categories.badCSS.categoryScore, badCSS: json.scoreProfiles.generic.categories.badCSS.categoryScore,
fonts: json.scoreProfiles.generic.categories.fonts.categoryScore, fonts: json.scoreProfiles.generic.categories.fonts.categoryScore,
serverConfig: json.scoreProfiles.generic.categories.serverConfig.categoryScore, serverConfig:
json.scoreProfiles.generic.categories.serverConfig.categoryScore,
globalScore: json.scoreProfiles.generic.globalScore, globalScore: json.scoreProfiles.generic.globalScore,
}, },
metrics: { metrics: {
@ -74,6 +81,6 @@ export async function retrieveMetrics (runId: string): Promise<Metric|null> {
webfontSize: json.toolsResults.phantomas.metrics.webfontSize, webfontSize: json.toolsResults.phantomas.metrics.webfontSize,
base64Size: json.toolsResults.phantomas.metrics.base64Size, base64Size: json.toolsResults.phantomas.metrics.base64Size,
otherSize: json.toolsResults.phantomas.metrics.otherSize, otherSize: json.toolsResults.phantomas.metrics.otherSize,
} },
} };
} }

@ -1,74 +1,101 @@
import { parse as tomlParse, stringify as tomlStringify } from "https://deno.land/std@0.130.0/encoding/toml.ts" import {
parse as tomlParse,
stringify as tomlStringify,
} from "https://deno.land/std@0.130.0/encoding/toml.ts";
const reFrontmatter = /^\+\+\+([\s\S]*)^\+\+\+$([\s\S]*)/m; const reFrontmatter = /^\+\+\+([\s\S]*)^\+\+\+$([\s\S]*)/m;
export function url2title (url: string): string { export function url2title(url: string): string {
return url return url
.replace(/^https?:\/\//, '') // remove leading http(s):// .replace(/^https?:\/\//, "") // remove leading http(s)://
.replace(/\/$/, '') // remove trailing slash .replace(/\/$/, ""); // remove trailing slash
} }
// gets an URL like https://foo.bar and returns ./content/foo_baz.md // gets an URL like https://foo.bar and returns ./content/foo_baz.md
function url2filepath (url: string, output_path: string): string { function url2filepath(url: string, output_path: string): string {
const filename = url2title(url) const filename = url2title(url).replaceAll(/[\.\/]/g, "_"); // replace dots and slashes with underscores
.replaceAll(/[\.\/]/g, '_') // replace dots and slashes with underscores return `${output_path}/${filename}.md`;
return `${output_path}/${filename}.md`
} }
// deprecated in deno std, but also simple to replicate // deprecated in deno std, but also simple to replicate
// see: https://deno.land/std@0.130.0/fs/exists.ts // see: https://deno.land/std@0.130.0/fs/exists.ts
async function exists (path: string): Promise<boolean> { async function exists(path: string): Promise<boolean> {
try { try {
return !!(await Deno.lstat(path)) return !!(await Deno.lstat(path));
} catch (err) { } catch (err) {
if (err instanceof Deno.errors.NotFound) return false if (err instanceof Deno.errors.NotFound) return false;
throw err throw err;
} }
} }
// checks if URL has a record already and returns time since last check or null // checks if URL has a record already and returns time since last check or null
export async function getPageRecord (url: string, output_path: string): Promise<PageRecord|null> { export async function getPageRecord(
const path = url2filepath(url, output_path) url: string,
const hasRecord = await exists(path) output_path: string
): Promise<PageRecord | null> {
const path = url2filepath(url, output_path);
const hasRecord = await exists(path);
if (!hasRecord) return null if (!hasRecord) return null;
const fileContents = await Deno.readTextFile(path) const fileContents = await Deno.readTextFile(path);
const match = fileContents.match(reFrontmatter) const match = fileContents.match(reFrontmatter);
if (!match) return null // that should never happen but who knows if (!match) return null; // that should never happen but who knows
return tomlParse(match[1].trim()) as PageRecord return tomlParse(match[1].trim()) as PageRecord;
} }
export async function writeRecord (record: PageRecord, url: string, output_path: string): Promise<boolean> { export async function writeRecord(
const path = url2filepath(url, output_path) record: PageRecord,
const toml = tomlStringify(record) url: string,
output_path: string
): Promise<boolean> {
const path = url2filepath(url, output_path);
const toml = tomlStringify(record);
try { try {
await Deno.writeTextFile(path, `+++\n${toml}+++\n`) await Deno.writeTextFile(path, `+++\n${toml}+++\n`);
return true return true;
} catch { } catch {
return false return false;
} }
} }
function delay (ms: number): Promise<unknown> { export async function removeRecord(url: string, output_path: string) {
return new Promise(resolve => setTimeout(resolve, ms)); const path = url2filepath(url, output_path);
const hasRecord = await exists(path);
if (!hasRecord) return false;
try {
await Deno.remove(path);
return true;
} catch {
return false;
}
}
function delay(ms: number): Promise<unknown> {
return new Promise((resolve) => setTimeout(resolve, ms));
} }
export async function retryFetch (url: string, retries=3, msDelay=1000): Promise<any> { export async function retryFetch(
url: string,
retries = 3,
msDelay = 1000
): Promise<any> {
try { try {
const response = await fetch(url) const response = await fetch(url);
if (!response.ok) return false if (!response.ok) return false;
const json = await response.json() const json = await response.json();
return json return json;
} catch (err) { } catch (err) {
if (retries > 0) { if (retries > 0) {
console.warn(`Failed to fetch ${url}, retrying in ${msDelay}ms.`) console.warn(`Failed to fetch ${url}, retrying in ${msDelay}ms.`);
await delay(msDelay) await delay(msDelay);
return retryFetch(url, retries - 1, msDelay) return retryFetch(url, retries - 1, msDelay);
} else { } else {
console.error(`Fetching ${url} failed too often. Giving up.`) console.error(`Fetching ${url} failed too often. Giving up.`);
return false return false;
} }
} }
} }

@ -1,11 +1,11 @@
+++ +++
title = "0xedward.io" title = "0xedward.io"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 3838 weight = 4574
[extra] [extra]
source = "https://0xedward.io/" source = "https://0xedward.io/"
ratio = 82 ratio = 63
size = 4 size = 4
+++ +++

@ -1,7 +1,7 @@
+++ +++
title = "0xff.nu" title = "0xff.nu"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 3890 weight = 3890
[extra] [extra]

@ -1,8 +1,8 @@
+++ +++
title = "10kbclub.com" title = "10kbclub.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-26" updated = "2023-01-31"
weight = 7838 weight = 8155
[extra] [extra]
source = "https://10kbclub.com/" source = "https://10kbclub.com/"

@ -1,8 +1,8 @@
+++ +++
title = "1kb.lejtzen.dev" title = "1kb.lejtzen.dev"
date = "2022-11-28" date = "2022-11-28"
updated = "2022-11-28" updated = "2023-01-31"
weight = 981 weight = 983
[extra] [extra]
source = "https://1kb.lejtzen.dev" source = "https://1kb.lejtzen.dev"

@ -1,11 +1,11 @@
+++ +++
title = "1mb.club" title = "1mb.club"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-26" updated = "2023-01-31"
weight = 17253 weight = 17500
[extra] [extra]
source = "https://1mb.club/" source = "https://1mb.club/"
ratio = 85 ratio = 86
size = 17 size = 17
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "250kb.club" title = "250kb.club"
date = "2022-02-22" date = "2022-02-22"
updated = "2022-11-26" updated = "2023-01-31"
weight = 12145 weight = 12214
[extra] [extra]
source = "https://250kb.club/" source = "https://250kb.club/"
ratio = 58 ratio = 57
size = 12 size = 12
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "25kb.xyz" title = "25kb.xyz"
date = "2022-03-23" date = "2022-03-23"
updated = "2022-11-28" updated = "2023-01-31"
weight = 1404 weight = 66703
[extra] [extra]
source = "https://25kb.xyz/" source = "https://25kb.xyz/"
ratio = 100 ratio = 11
size = 1 size = 65
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "512kb.club" title = "512kb.club"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-26" updated = "2023-01-31"
weight = 14001 weight = 15550
[extra] [extra]
source = "https://512kb.club/" source = "https://512kb.club/"
ratio = 83 ratio = 83
size = 14 size = 15
+++ +++

@ -1,8 +1,8 @@
+++ +++
title = "abridge.netlify.app" title = "abridge.netlify.app"
date = "2022-11-26" date = "2022-11-26"
updated = "2022-11-26" updated = "2023-01-31"
weight = 12452 weight = 12426
[extra] [extra]
source = "https://abridge.netlify.app/" source = "https://abridge.netlify.app/"

@ -1,11 +1,11 @@
+++ +++
title = "ache.one" title = "ache.one"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 20294 weight = 21237
[extra] [extra]
source = "https://ache.one/" source = "https://ache.one/"
ratio = 18 ratio = 17
size = 20 size = 21
+++ +++

@ -1,11 +0,0 @@
+++
title = "ajroach42.com"
date = "2022-06-10"
updated = "2022-11-28"
weight = 26186
[extra]
source = "http://ajroach42.com/"
ratio = 9
size = 26
+++

@ -1,11 +0,0 @@
+++
title = "alexanderobenauer.com"
date = "2022-03-22"
updated = "2022-11-27"
weight = 1078233
[extra]
source = "https://alexanderobenauer.com"
ratio = 1
size = 1053
+++

@ -1,11 +1,11 @@
+++ +++
title = "alexschroeder.ch" title = "alexschroeder.ch"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 58642 weight = 40705
[extra] [extra]
source = "https://alexschroeder.ch/" source = "https://alexschroeder.ch/"
ratio = 92 ratio = 89
size = 57 size = 40
+++ +++

@ -1,8 +1,8 @@
+++ +++
title = "allien.work" title = "allien.work"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 114767 weight = 114799
[extra] [extra]
source = "https://allien.work/" source = "https://allien.work/"

@ -1,11 +1,11 @@
+++ +++
title = "ampersandia.net" title = "ampersandia.net"
date = "2022-04-11" date = "2022-04-11"
updated = "2022-11-28" updated = "2023-01-31"
weight = 47278 weight = 51161
[extra] [extra]
source = "https://ampersandia.net/" source = "https://ampersandia.net/"
ratio = 6 ratio = 5
size = 46 size = 50
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "annaaurora.eu" title = "annaaurora.eu"
date = "2022-11-28" date = "2022-11-28"
updated = "2022-11-28" updated = "2023-01-31"
weight = 151453 weight = 36314
[extra] [extra]
source = "https://annaaurora.eu/" source = "https://annaaurora.eu/"
ratio = 1 ratio = 6
size = 148 size = 35
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "antranigv.am" title = "antranigv.am"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 18517 weight = 77915
[extra] [extra]
source = "https://antranigv.am/" source = "https://antranigv.am/"
ratio = 43 ratio = 11
size = 18 size = 76
+++ +++

@ -1,7 +1,7 @@
+++ +++
title = "arfer.net" title = "arfer.net"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 7495 weight = 7495
[extra] [extra]

@ -1,11 +1,11 @@
+++ +++
title = "armaanb.net" title = "armaanb.net"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 17968 weight = 18423
[extra] [extra]
source = "https://armaanb.net/" source = "https://armaanb.net/"
ratio = 9 ratio = 10
size = 18 size = 18
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "aroace.space" title = "aroace.space"
date = "2022-06-10" date = "2022-06-10"
updated = "2022-11-28" updated = "2023-01-31"
weight = 160507 weight = 147855
[extra] [extra]
source = "https://aroace.space/" source = "https://aroace.space/"
ratio = 3 ratio = 3
size = 157 size = 144
+++ +++

@ -1,8 +1,8 @@
+++ +++
title = "artemislena.eu" title = "artemislena.eu"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 3594 weight = 3585
[extra] [extra]
source = "https://artemislena.eu/" source = "https://artemislena.eu/"

@ -1,8 +1,8 @@
+++ +++
title = "bcachefs.org" title = "bcachefs.org"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 8434 weight = 8497
[extra] [extra]
source = "https://bcachefs.org/" source = "https://bcachefs.org/"

@ -1,11 +1,11 @@
+++ +++
title = "beh.uk" title = "beh.uk"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 69438 weight = 68194
[extra] [extra]
source = "https://beh.uk/" source = "https://beh.uk/"
ratio = 8 ratio = 9
size = 68 size = 67
+++ +++

@ -1,7 +1,7 @@
+++ +++
title = "benharr.is" title = "benharr.is"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 4192 weight = 4192
[extra] [extra]

@ -1,11 +1,11 @@
+++ +++
title = "benovermyer.com" title = "benovermyer.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 22253 weight = 22719
[extra] [extra]
source = "https://benovermyer.com/" source = "https://benovermyer.com/"
ratio = 9 ratio = 10
size = 22 size = 22
+++ +++

@ -1,8 +1,8 @@
+++ +++
title = "berkshirehathaway.com" title = "berkshirehathaway.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 72411 weight = 72635
[extra] [extra]
source = "https://berkshirehathaway.com" source = "https://berkshirehathaway.com"

@ -1,11 +1,11 @@
+++ +++
title = "bernsteinbear.com" title = "bernsteinbear.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 31959 weight = 31934
[extra] [extra]
source = "https://bernsteinbear.com/" source = "https://bernsteinbear.com/"
ratio = 11 ratio = 12
size = 31 size = 31
+++ +++

@ -1,8 +1,8 @@
+++ +++
title = "bestmotherfucking.website" title = "bestmotherfucking.website"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 3321 weight = 3338
[extra] [extra]
source = "https://bestmotherfucking.website/" source = "https://bestmotherfucking.website/"

@ -1,8 +1,8 @@
+++ +++
title = "bettermotherfuckingwebsite.com" title = "bettermotherfuckingwebsite.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 23734 weight = 23594
[extra] [extra]
source = "http://bettermotherfuckingwebsite.com/" source = "http://bettermotherfuckingwebsite.com/"

@ -1,11 +1,11 @@
+++ +++
title = "binyam.in" title = "binyam.in"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 76233 weight = 39343
[extra] [extra]
source = "https://binyam.in/" source = "https://binyam.in/"
ratio = 3 ratio = 5
size = 74 size = 38
+++ +++

@ -1,8 +1,8 @@
+++ +++
title = "blakehawkins.com/blog" title = "blakehawkins.com/blog"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 57545 weight = 57374
[extra] [extra]
source = "https://blakehawkins.com/blog" source = "https://blakehawkins.com/blog"

@ -1,7 +1,7 @@
+++ +++
title = "blog.bshah.in" title = "blog.bshah.in"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 10417 weight = 10417
[extra] [extra]

@ -1,8 +1,8 @@
+++ +++
title = "blog.circuitsofimagination.com" title = "blog.circuitsofimagination.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 158829 weight = 158822
[extra] [extra]
source = "https://blog.circuitsofimagination.com/" source = "https://blog.circuitsofimagination.com/"

@ -1,11 +1,11 @@
+++ +++
title = "blog.fefe.de" title = "blog.fefe.de"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 11296 weight = 6731
[extra] [extra]
source = "https://blog.fefe.de" source = "https://blog.fefe.de"
ratio = 100 ratio = 100
size = 11 size = 7
+++ +++

@ -1,7 +1,7 @@
+++ +++
title = "blog.fossterer.com" title = "blog.fossterer.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 16062 weight = 16062
[extra] [extra]

@ -1,11 +1,11 @@
+++ +++
title = "bnolet.me" title = "bnolet.me"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 158341 weight = 158190
[extra] [extra]
source = "https://bnolet.me" source = "https://bnolet.me"
ratio = 3 ratio = 3
size = 155 size = 154
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "boehs.org" title = "boehs.org"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 84670 weight = 85560
[extra] [extra]
source = "https://boehs.org/" source = "https://boehs.org/"
ratio = 2 ratio = 2
size = 83 size = 84
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "box.matto.nl" title = "box.matto.nl"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 7291 weight = 7349
[extra] [extra]
source = "https://box.matto.nl" source = "https://box.matto.nl"
ratio = 61 ratio = 62
size = 7 size = 7
+++ +++

@ -1,8 +1,8 @@
+++ +++
title = "bridge.simplefin.org" title = "bridge.simplefin.org"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 7656 weight = 7675
[extra] [extra]
source = "https://bridge.simplefin.org" source = "https://bridge.simplefin.org"

@ -1,8 +1,8 @@
+++ +++
title = "buchh.org" title = "buchh.org"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 2230 weight = 2195
[extra] [extra]
source = "https://buchh.org/" source = "https://buchh.org/"

@ -1,7 +1,7 @@
+++ +++
title = "bvnf.space" title = "bvnf.space"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 3419 weight = 3419
[extra] [extra]

@ -1,11 +1,11 @@
+++ +++
title = "casperlefantom.net" title = "casperlefantom.net"
date = "2022-04-11" date = "2022-04-11"
updated = "2022-11-28" updated = "2023-01-31"
weight = 175376 weight = 177301
[extra] [extra]
source = "https://casperlefantom.net/" source = "https://casperlefantom.net/"
ratio = 8 ratio = 8
size = 171 size = 173
+++ +++

@ -1,7 +1,7 @@
+++ +++
title = "cat-v.org" title = "cat-v.org"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 10115 weight = 10115
[extra] [extra]

@ -1,8 +1,8 @@
+++ +++
title = "ccsleep.net" title = "ccsleep.net"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 2500 weight = 2489
[extra] [extra]
source = "https://ccsleep.net/" source = "https://ccsleep.net/"

@ -1,8 +1,8 @@
+++ +++
title = "chad.hirsch.host" title = "chad.hirsch.host"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 25280 weight = 25298
[extra] [extra]
source = "https://chad.hirsch.host" source = "https://chad.hirsch.host"

@ -1,11 +1,11 @@
+++ +++
title = "chrisportela.com" title = "chrisportela.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 149589 weight = 142481
[extra] [extra]
source = "https://chrisportela.com" source = "https://chrisportela.com"
ratio = 2 ratio = 2
size = 146 size = 139
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "christine.website" title = "christine.website"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 55298 weight = 65907
[extra] [extra]
source = "https://christine.website/" source = "https://christine.website/"
ratio = 6 ratio = 5
size = 54 size = 64
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "cleberg.io" title = "cleberg.io"
date = "2022-06-10" date = "2022-06-10"
updated = "2022-11-28" updated = "2023-01-31"
weight = 883 weight = 6189
[extra] [extra]
source = "https://cleberg.io/" source = "https://cleberg.io/"
ratio = 100 ratio = 52
size = 1 size = 6
+++ +++

@ -1,7 +1,7 @@
+++ +++
title = "cnx.srht.site" title = "cnx.srht.site"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 3538 weight = 3538
[extra] [extra]

@ -1,8 +1,8 @@
+++ +++
title = "codelayer.de" title = "codelayer.de"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 139115 weight = 139124
[extra] [extra]
source = "https://codelayer.de" source = "https://codelayer.de"

@ -1,7 +1,7 @@
+++ +++
title = "codevoid.de" title = "codevoid.de"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 7721 weight = 7721
[extra] [extra]

@ -1,8 +1,8 @@
+++ +++
title = "codingbobby.xyz" title = "codingbobby.xyz"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 92784 weight = 93149
[extra] [extra]
source = "https://codingbobby.xyz/" source = "https://codingbobby.xyz/"

@ -1,7 +1,7 @@
+++ +++
title = "codingotaku.com" title = "codingotaku.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 9859 weight = 9859
[extra] [extra]

@ -1,11 +1,11 @@
+++ +++
title = "colean.cc" title = "colean.cc"
date = "2022-03-23" date = "2022-03-23"
updated = "2022-11-28" updated = "2023-01-31"
weight = 1886 weight = 1840
[extra] [extra]
source = "https://colean.cc/" source = "https://colean.cc/"
ratio = 65 ratio = 64
size = 2 size = 2
+++ +++

@ -1,8 +1,8 @@
+++ +++
title = "concise-encoding.org" title = "concise-encoding.org"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 27568 weight = 27527
[extra] [extra]
source = "https://concise-encoding.org/" source = "https://concise-encoding.org/"

@ -1,8 +1,8 @@
+++ +++
title = "consoom.soy" title = "consoom.soy"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 182821 weight = 182980
[extra] [extra]
source = "https://consoom.soy/" source = "https://consoom.soy/"

@ -1,8 +1,8 @@
+++ +++
title = "coolmathgames.tech" title = "coolmathgames.tech"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 62485 weight = 62552
[extra] [extra]
source = "http://coolmathgames.tech/" source = "http://coolmathgames.tech/"

@ -1,7 +1,7 @@
+++ +++
title = "cosmo.red" title = "cosmo.red"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 1028 weight = 1028
[extra] [extra]

@ -1,11 +1,11 @@
+++ +++
title = "cronokirby.com" title = "cronokirby.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 244320 weight = 244127
[extra] [extra]
source = "https://cronokirby.com" source = "https://cronokirby.com"
ratio = 2 ratio = 2
size = 239 size = 238
+++ +++

@ -1,8 +1,8 @@
+++ +++
title = "customformats.com" title = "customformats.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 249250 weight = 249194
[extra] [extra]
source = "https://customformats.com/" source = "https://customformats.com/"

@ -1,11 +1,11 @@
+++ +++
title = "cycloneblaze.net" title = "cycloneblaze.net"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 24557 weight = 22335
[extra] [extra]
source = "https://cycloneblaze.net/" source = "https://cycloneblaze.net/"
ratio = 7 ratio = 7
size = 24 size = 22
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "daniel-siepmann.de" title = "daniel-siepmann.de"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-06-08" updated = "2023-01-31"
weight = 16903 weight = 18023
[extra] [extra]
source = "https://daniel-siepmann.de/" source = "https://daniel-siepmann.de/"
ratio = 74 ratio = 76
size = 17 size = 18
+++ +++

@ -1,11 +0,0 @@
+++
title = "danielcuttridge.com"
date = "2022-03-22"
updated = "2022-11-28"
weight = 940946
[extra]
source = "https://danielcuttridge.com/"
ratio = 2
size = 919
+++

@ -1,11 +1,11 @@
+++ +++
title = "danielsada.tech" title = "danielsada.tech"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 139211 weight = 138544
[extra] [extra]
source = "https://danielsada.tech/" source = "https://danielsada.tech/"
ratio = 3 ratio = 2
size = 136 size = 135
+++ +++

@ -1,8 +1,8 @@
+++ +++
title = "danluu.com" title = "danluu.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-26" updated = "2023-01-31"
weight = 5037 weight = 5030
[extra] [extra]
source = "https://danluu.com" source = "https://danluu.com"

@ -1,11 +1,11 @@
+++ +++
title = "davidjenei.com" title = "davidjenei.com"
date = "2022-06-08" date = "2022-06-08"
updated = "2022-11-28" updated = "2023-01-31"
weight = 13100 weight = 13208
[extra] [extra]
source = "https://davidjenei.com" source = "https://davidjenei.com"
ratio = 9 ratio = 10
size = 13 size = 13
+++ +++

@ -1,8 +1,8 @@
+++ +++
title = "decentnet.github.io" title = "decentnet.github.io"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 10688 weight = 10721
[extra] [extra]
source = "https://decentnet.github.io/" source = "https://decentnet.github.io/"

@ -1,11 +1,11 @@
+++ +++
title = "dotfilehub.com" title = "dotfilehub.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-26" updated = "2023-01-31"
weight = 2655 weight = 2948
[extra] [extra]
source = "https://dotfilehub.com" source = "https://dotfilehub.com"
ratio = 35 ratio = 31
size = 3 size = 3
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "dpldocs.info/this-week-in-d/Blog.html" title = "dpldocs.info/this-week-in-d/Blog.html"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 113574 weight = 117668
[extra] [extra]
source = "http://dpldocs.info/this-week-in-d/Blog.html" source = "http://dpldocs.info/this-week-in-d/Blog.html"
ratio = 75 ratio = 76
size = 111 size = 115
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "drewdevault.com" title = "drewdevault.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 30161 weight = 30366
[extra] [extra]
source = "https://drewdevault.com/" source = "https://drewdevault.com/"
ratio = 51 ratio = 52
size = 29 size = 30
+++ +++

@ -1,8 +1,8 @@
+++ +++
title = "dusanmitrovic.xyz" title = "dusanmitrovic.xyz"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 14464 weight = 14461
[extra] [extra]
source = "https://dusanmitrovic.xyz/" source = "https://dusanmitrovic.xyz/"

@ -1,11 +1,11 @@
+++ +++
title = "dyremyhr.no" title = "dyremyhr.no"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 70770 weight = 8321
[extra] [extra]
source = "https://dyremyhr.no/" source = "https://dyremyhr.no/"
ratio = 4 ratio = 16
size = 69 size = 8
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "editions-du-26-octobre.com" title = "editions-du-26-octobre.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 91938 weight = 92485
[extra] [extra]
source = "https://editions-du-26-octobre.com/" source = "https://editions-du-26-octobre.com/"
ratio = 16 ratio = 17
size = 90 size = 90
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "emersion.fr" title = "emersion.fr"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 185283 weight = 226021
[extra] [extra]
source = "https://emersion.fr/" source = "https://emersion.fr/"
ratio = 1 ratio = 1
size = 181 size = 221
+++ +++

@ -1,8 +1,8 @@
+++ +++
title = "fabioartuso.com" title = "fabioartuso.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 1608 weight = 1578
[extra] [extra]
source = "https://fabioartuso.com/" source = "https://fabioartuso.com/"

@ -1,8 +1,8 @@
+++ +++
title = "fanael.github.io" title = "fanael.github.io"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 9820 weight = 9837
[extra] [extra]
source = "https://fanael.github.io/" source = "https://fanael.github.io/"

@ -1,11 +1,11 @@
+++ +++
title = "feather.wiki" title = "feather.wiki"
date = "2022-06-10" date = "2022-06-10"
updated = "2022-11-28" updated = "2023-01-31"
weight = 251343 weight = 198184
[extra] [extra]
source = "https://feather.wiki/" source = "https://feather.wiki/"
ratio = 70 ratio = 97
size = 245 size = 194
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "felt.dev" title = "felt.dev"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-06-08" updated = "2023-01-31"
weight = 81018 weight = 87039
[extra] [extra]
source = "https://felt.dev/" source = "https://felt.dev/"
ratio = 3 ratio = 4
size = 79 size = 85
+++ +++

@ -1,8 +1,8 @@
+++ +++
title = "flatpackapps.com" title = "flatpackapps.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 19098 weight = 19122
[extra] [extra]
source = "https://flatpackapps.com" source = "https://flatpackapps.com"

@ -1,7 +1,7 @@
+++ +++
title = "fmarier.org" title = "fmarier.org"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 111216 weight = 111216
[extra] [extra]

@ -1,8 +1,8 @@
+++ +++
title = "fossdd.codeberg.page" title = "fossdd.codeberg.page"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 6454 weight = 6431
[extra] [extra]
source = "https://fossdd.codeberg.page/" source = "https://fossdd.codeberg.page/"

@ -1,11 +1,11 @@
+++ +++
title = "foxwells.garden" title = "foxwells.garden"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 41238 weight = 40816
[extra] [extra]
source = "https://foxwells.garden/" source = "https://foxwells.garden/"
ratio = 14 ratio = 13
size = 40 size = 40
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "free.mg" title = "free.mg"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 9294 weight = 66576
[extra] [extra]
source = "https://free.mg/" source = "https://free.mg/"
ratio = 28 ratio = 4
size = 9 size = 65
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "freesolitaire.win" title = "freesolitaire.win"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 89034 weight = 84070
[extra] [extra]
source = "https://freesolitaire.win/" source = "https://freesolitaire.win/"
ratio = 23 ratio = 24
size = 87 size = 82
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "frontaid.io" title = "frontaid.io"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 128708 weight = 149452
[extra] [extra]
source = "https://frontaid.io" source = "https://frontaid.io"
ratio = 2 ratio = 2
size = 126 size = 146
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "fullstackpython.com" title = "fullstackpython.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 5581 weight = 5690
[extra] [extra]
source = "https://fullstackpython.com" source = "https://fullstackpython.com"
ratio = 100 ratio = 100
size = 5 size = 6
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "funnylookinhat.com" title = "funnylookinhat.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 3535 weight = 3552
[extra] [extra]
source = "https://funnylookinhat.com/" source = "https://funnylookinhat.com/"
ratio = 75 ratio = 76
size = 3 size = 3
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "gallant.dev" title = "gallant.dev"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 42910 weight = 40266
[extra] [extra]
source = "https://gallant.dev/" source = "https://gallant.dev/"
ratio = 25 ratio = 30
size = 42 size = 39
+++ +++

@ -1,8 +1,8 @@
+++ +++
title = "gennext.net.au" title = "gennext.net.au"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 53524 weight = 53560
[extra] [extra]
source = "https://gennext.net.au/" source = "https://gennext.net.au/"

@ -1,11 +1,11 @@
+++ +++
title = "gerikson.com" title = "gerikson.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 2333 weight = 2377
[extra] [extra]
source = "http://gerikson.com/" source = "http://gerikson.com/"
ratio = 40 ratio = 41
size = 2 size = 2
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "gerikson.com/hnlo" title = "gerikson.com/hnlo"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 29474 weight = 37038
[extra] [extra]
source = "http://gerikson.com/hnlo/" source = "http://gerikson.com/hnlo/"
ratio = 78 ratio = 83
size = 29 size = 36
+++ +++

@ -1,11 +1,11 @@
+++ +++
title = "getindiekit.com" title = "getindiekit.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 182340 weight = 255632
[extra] [extra]
source = "https://getindiekit.com/" source = "https://getindiekit.com/"
ratio = 3 ratio = 2
size = 178 size = 250
+++ +++

@ -1,7 +1,7 @@
+++ +++
title = "grapheneos.org" title = "grapheneos.org"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 4471 weight = 4471
[extra] [extra]

@ -1,7 +1,7 @@
+++ +++
title = "gtrr.artemislena.eu" title = "gtrr.artemislena.eu"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 2957 weight = 2957
[extra] [extra]

@ -1,8 +1,8 @@
+++ +++
title = "guts.plus" title = "guts.plus"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 39618 weight = 39664
[extra] [extra]
source = "https://guts.plus/" source = "https://guts.plus/"

@ -1,8 +1,8 @@
+++ +++
title = "huyngo.envs.net" title = "huyngo.envs.net"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-28" updated = "2023-01-31"
weight = 11111 weight = 11112
[extra] [extra]
source = "https://huyngo.envs.net" source = "https://huyngo.envs.net"

@ -1,8 +1,8 @@
+++ +++
title = "iain.in" title = "iain.in"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 131955 weight = 131953
[extra] [extra]
source = "https://iain.in/" source = "https://iain.in/"

@ -1,11 +1,11 @@
+++ +++
title = "ianmobbs.com" title = "ianmobbs.com"
date = "2022-03-22" date = "2022-03-22"
updated = "2022-11-27" updated = "2023-01-31"
weight = 191532 weight = 215921
[extra] [extra]
source = "https://ianmobbs.com" source = "https://ianmobbs.com"
ratio = 1 ratio = 1
size = 187 size = 211
+++ +++

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save