Gestion des liens intéressants simplifiée
This commit is contained in:
@@ -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
|
|
||||||
@@ -9,7 +9,7 @@ const YAML = require("yaml");
|
|||||||
const { getArchiveUrl, saveToArchive } = require("./lib/archive");
|
const { getArchiveUrl, saveToArchive } = require("./lib/archive");
|
||||||
const { scrapePage } = require("./lib/puppeteer");
|
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) {
|
if (process.argv.length < 3) {
|
||||||
console.error("Usage: add_link.js <URL> [optional: YYYY-MM-DD]");
|
console.error("Usage: add_link.js <URL> [optional: YYYY-MM-DD]");
|
||||||
@@ -22,22 +22,38 @@ const customDate = process.argv[3] || null;
|
|||||||
// Generate an MD5 hash of the URL
|
// Generate an MD5 hash of the URL
|
||||||
const urlHash = crypto.createHash("md5").update(url).digest("hex").slice(0, 8);
|
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 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
|
function findExistingLinkBundle(hash) {
|
||||||
let knownLinks = {};
|
if (!fs.existsSync(interestingLinksRoot)) {
|
||||||
if (fs.existsSync(knownLinksPath)) {
|
return null;
|
||||||
try {
|
|
||||||
knownLinks = YAML.parse(fs.readFileSync(knownLinksPath, "utf8")) || {};
|
|
||||||
} catch (err) {
|
|
||||||
console.error(`❌ Unable to parse ${KNOWN_LINKS_FILE}: ${err.message}`);
|
|
||||||
process.exit(1);
|
|
||||||
}
|
}
|
||||||
|
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);
|
process.exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,10 +193,6 @@ file: "images/screenshot.png"
|
|||||||
fs.writeFileSync(metadataPath, metadataContent);
|
fs.writeFileSync(metadataPath, metadataContent);
|
||||||
console.log(`✔ Metadata saved: ${metadataPath}`);
|
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(`🎉 Link successfully added! Bundle path: ${bundlePath}`);
|
||||||
console.log(bundlePath);
|
console.log(bundlePath);
|
||||||
})();
|
})();
|
||||||
|
|||||||
Reference in New Issue
Block a user