From 0dbcd54df5678addda00c6756d69af73464fc23d Mon Sep 17 00:00:00 2001 From: Richard Dern Date: Mon, 10 Nov 2025 16:57:38 +0100 Subject: [PATCH] =?UTF-8?q?Gestion=20des=20liens=20int=C3=A9ressants=20sim?= =?UTF-8?q?plifi=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/known_links.yaml | 96 ------------------------------------------- tools/add_link.js | 46 +++++++++++++-------- 2 files changed, 29 insertions(+), 113 deletions(-) delete mode 100644 data/known_links.yaml diff --git a/data/known_links.yaml b/data/known_links.yaml deleted file mode 100644 index c2b8f25f..00000000 --- a/data/known_links.yaml +++ /dev/null @@ -1,96 +0,0 @@ -"48940057": content/interets/liens-interessants/2023/08/22/48940057 -"79347191": content/interets/liens-interessants/2023/04/28/79347191 -"81965751": content/interets/liens-interessants/2023/10/02/81965751 -1755cc4e: content/interets/liens-interessants/2022/03/09/1755cc4e -f71dac00: content/interets/liens-interessants/2022/03/09/f71dac00 -bed52095: content/interets/liens-interessants/2022/03/13/bed52095 -98fa6882: content/interets/liens-interessants/2022/03/17/98fa6882 -60632c04: content/interets/liens-interessants/2022/03/20/60632c04 -24d2f499: content/interets/liens-interessants/2022/03/24/24d2f499 -a0419e22: content/interets/liens-interessants/2022/04/03/a0419e22 -a95b2646: content/interets/liens-interessants/2022/04/07/a95b2646 -dcf6350f: content/interets/liens-interessants/2022/04/17/dcf6350f -eb290b9d: content/interets/liens-interessants/2022/04/20/eb290b9d -880ad1aa: content/interets/liens-interessants/2022/04/25/880ad1aa -7fe1f197: content/interets/liens-interessants/2022/04/30/7fe1f197 -db211ab2: content/interets/liens-interessants/2022/04/30/db211ab2 -020a0de7: content/interets/liens-interessants/2022/05/02/020a0de7 -3ce2f43d: content/interets/liens-interessants/2022/05/10/3ce2f43d -"98660e45": content/interets/liens-interessants/2022/05/13/98660e45 -564196c4: content/interets/liens-interessants/2022/05/14/564196c4 -c647da3a: content/interets/liens-interessants/2022/05/22/c647da3a -7a84865a: content/interets/liens-interessants/2022/05/23/7a84865a -d37ef948: content/interets/liens-interessants/2022/05/23/d37ef948 -ad6e8f37: content/interets/liens-interessants/2022/05/24/ad6e8f37 -161df027: content/interets/liens-interessants/2022/05/27/161df027 -beff8361: content/interets/liens-interessants/2022/05/27/beff8361 -9bfcaf3c: content/interets/liens-interessants/2022/05/28/9bfcaf3c -208cc403: content/interets/liens-interessants/2022/06/13/208cc403 -b2fdb2ff: content/interets/liens-interessants/2022/06/15/b2fdb2ff -16be2908: content/interets/liens-interessants/2022/06/17/16be2908 -2b970d43: content/interets/liens-interessants/2022/06/22/2b970d43 -cbbe32ec: content/interets/liens-interessants/2022/07/04/cbbe32ec -536ac204: content/interets/liens-interessants/2022/07/06/536ac204 -c0765dc0: content/interets/liens-interessants/2022/07/06/c0765dc0 -2de4426d: content/interets/liens-interessants/2022/07/09/2de4426d -a6bed7d5: content/interets/liens-interessants/2022/07/13/a6bed7d5 -a905d2b5: content/interets/liens-interessants/2022/07/13/a905d2b5 -"7133e484": content/interets/liens-interessants/2022/07/20/7133e484 -ecd6018d: content/interets/liens-interessants/2022/08/01/ecd6018d -705a0002: content/interets/liens-interessants/2022/08/03/705a0002 -7c59c7ba: content/interets/liens-interessants/2022/08/10/7c59c7ba -b80eb480: content/interets/liens-interessants/2022/08/26/b80eb480 -a17f18de: content/interets/liens-interessants/2022/09/01/a17f18de -9bc0b132: content/interets/liens-interessants/2022/09/23/9bc0b132 -5f6856b8: content/interets/liens-interessants/2022/10/05/5f6856b8 -9d1e2a45: content/interets/liens-interessants/2022/10/10/9d1e2a45 -56bd6010: content/interets/liens-interessants/2022/10/22/56bd6010 -8bf67997: content/interets/liens-interessants/2022/11/25/8bf67997 -08dde607: content/interets/liens-interessants/2022/12/05/08dde607 -a8d63150: content/interets/liens-interessants/2022/12/23/a8d63150 -f56d3ee9: content/interets/liens-interessants/2023/01/03/f56d3ee9 -99b5481b: content/interets/liens-interessants/2023/01/10/99b5481b -5e29c1c8: content/interets/liens-interessants/2023/01/15/5e29c1c8 -81d40971: content/interets/liens-interessants/2023/01/22/81d40971 -d789e49c: content/interets/liens-interessants/2023/02/06/d789e49c -72f33e07: content/interets/liens-interessants/2023/02/07/72f33e07 -c4783d77: content/interets/liens-interessants/2023/02/22/c4783d77 -"5e029191": content/interets/liens-interessants/2023/03/08/5e029191 -e59f0452: content/interets/liens-interessants/2023/03/17/e59f0452 -6d41dadc: content/interets/liens-interessants/2023/03/20/6d41dadc -77f1e9d4: content/interets/liens-interessants/2023/04/09/77f1e9d4 -09769bd4: content/interets/liens-interessants/2023/04/17/09769bd4 -8b249d95: content/interets/liens-interessants/2023/04/23/8b249d95 -09b47bf6: content/interets/liens-interessants/2023/04/26/09b47bf6 -a8530aa9: content/interets/liens-interessants/2023/04/28/a8530aa9 -3c06184a: content/interets/liens-interessants/2023/05/15/3c06184a -baedfe20: content/interets/liens-interessants/2023/05/18/baedfe20 -019970ac: content/interets/liens-interessants/2023/05/21/019970ac -25aa8925: content/interets/liens-interessants/2023/06/04/25aa8925 -31f3880e: content/interets/liens-interessants/2023/06/04/31f3880e -bd8036cc: content/interets/liens-interessants/2023/06/09/bd8036cc -36f27db6: content/interets/liens-interessants/2023/06/16/36f27db6 -4da14199: content/interets/liens-interessants/2023/06/23/4da14199 -a8972f33: content/interets/liens-interessants/2023/06/23/a8972f33 -7bffdf31: content/interets/liens-interessants/2023/07/21/7bffdf31 -b141fc2c: content/interets/liens-interessants/2023/07/22/b141fc2c -3ebdad4c: content/interets/liens-interessants/2023/08/11/3ebdad4c -c115201e: content/interets/liens-interessants/2023/08/15/c115201e -42a02e30: content/interets/liens-interessants/2023/08/17/42a02e30 -fd35e58b: content/interets/liens-interessants/2023/09/05/fd35e58b -efc348f6: content/interets/liens-interessants/2023/09/13/efc348f6 -b2002762: content/interets/liens-interessants/2023/09/15/b2002762 -3606b246: content/interets/liens-interessants/2023/09/23/3606b246 -ef3047b0: content/interets/liens-interessants/2023/10/31/ef3047b0 -b6b440cc: content/interets/liens-interessants/2024/01/29/b6b440cc -2dbbc8d2: content/interets/liens-interessants/2024/02/14/2dbbc8d2 -de37fe6f: content/interets/liens-interessants/2024/02/15/de37fe6f -1992436f: content/interets/liens-interessants/2024/02/22/1992436f -ad911ebf: content/interets/liens-interessants/2024/02/22/ad911ebf -b84f6ada: content/interets/liens-interessants/2024/03/01/b84f6ada -63a52c6e: content/interets/liens-interessants/2024/03/25/63a52c6e -0836adc7: content/interets/liens-interessants/2025/04/07/0836adc7 -5639e4f1: content/interets/liens-interessants/2025/05/28/5639e4f1 -3add12ff: content/interets/liens-interessants/2025/07/07/3add12ff -bbe27b49: content/interets/liens-interessants/2025/09/08/bbe27b49 -64ed6c52: content/interets/liens-interessants/2025/11/09/64ed6c52 diff --git a/tools/add_link.js b/tools/add_link.js index d62b7da5..b29a92dd 100644 --- a/tools/add_link.js +++ b/tools/add_link.js @@ -9,7 +9,7 @@ const YAML = require("yaml"); const { getArchiveUrl, saveToArchive } = require("./lib/archive"); const { scrapePage } = require("./lib/puppeteer"); -const KNOWN_LINKS_FILE = "data/known_links.yaml"; // YAML file with { hash: path } +const LINKS_ROOT = path.join("content", "interets", "liens-interessants"); if (process.argv.length < 3) { console.error("Usage: add_link.js [optional: YYYY-MM-DD]"); @@ -22,22 +22,38 @@ const customDate = process.argv[3] || null; // Generate an MD5 hash of the URL const urlHash = crypto.createHash("md5").update(url).digest("hex").slice(0, 8); -// Ensure the known_links file is stored at the correct location const hugoRoot = path.resolve(process.cwd()); -const knownLinksPath = path.join(hugoRoot, KNOWN_LINKS_FILE); +const interestingLinksRoot = path.join(hugoRoot, LINKS_ROOT); -// Load known links from YAML -let knownLinks = {}; -if (fs.existsSync(knownLinksPath)) { - try { - knownLinks = YAML.parse(fs.readFileSync(knownLinksPath, "utf8")) || {}; - } catch (err) { - console.error(`❌ Unable to parse ${KNOWN_LINKS_FILE}: ${err.message}`); - process.exit(1); +function findExistingLinkBundle(hash) { + if (!fs.existsSync(interestingLinksRoot)) { + return null; } + const stack = [interestingLinksRoot]; + while (stack.length > 0) { + const current = stack.pop(); + if (path.basename(current) === hash) { + return current; + } + let entries = []; + try { + entries = fs.readdirSync(current, { withFileTypes: true }); + } catch (error) { + continue; + } + for (const entry of entries) { + if (entry.isDirectory()) { + stack.push(path.join(current, entry.name)); + } + } + } + return null; } -if (knownLinks[urlHash]) { - console.log(`⚠ Link already exists: ${url}`); + +const duplicateBundlePath = findExistingLinkBundle(urlHash); +if (duplicateBundlePath) { + const relative = path.relative(hugoRoot, duplicateBundlePath); + console.log(`⚠ Link already exists at ${relative}: ${url}`); process.exit(0); } @@ -177,10 +193,6 @@ file: "images/screenshot.png" fs.writeFileSync(metadataPath, metadataContent); console.log(`✔ Metadata saved: ${metadataPath}`); - // Append the hash to known_links.yaml - knownLinks[urlHash] = path.relative(hugoRoot, bundlePath); - fs.writeFileSync(knownLinksPath, YAML.stringify(knownLinks)); - console.log(`🎉 Link successfully added! Bundle path: ${bundlePath}`); console.log(bundlePath); })();