La première condition requise pour le fonctionnement du générateur de bibliographie est une source de données de contenu qui consiste en un objet JSON créé par une application de gestion de favoris de navigateur nommée xbrowserSync . Cette application est un gestionnaire de favoris indépendant du navigateur en deux parties.
Une partie est une extension de navigateur et l'autre est une API de serveur qui gère les données des signets en tant que fichier de données MongoDB . Tout ce que nous devons savoir sur l'API du serveur est son URL. L'extension de navigateur peut être trouvée dans les « magasins » d'applications en ligne comme Google Play pour le navigateur Chrome.
L'idée de base est que l'application xbrowserSync stocke les données de vos favoris dans une base de données cryptée qui est stockée sur le serveur API. La base de données elle-même est en fait un fichier objet JSON que nous pouvons enregistrer et utiliser localement, et qui peut être utilisé par n'importe quel navigateur sur lequel notre extension d'application est correctement installée.
Cela me donne le même ensemble de favoris sur Chrome, Edge et Firefox, par exemple, sans que le navigateur enregistre les données de mes favoris. L'APP et la source API pour xbrowserSync se trouvent chacune dans un référentiel GitHub.
La deuxième exigence pour le générateur de bibliographie est son code de programme qui s'exécute sous node.js dans une fenêtre de commande sur ma machine Windows 10 . Voici ci-dessous ce simple programme de nœud nommé handler.js .
#!/usr/bin/env node // --------------------------------- // Simple bibliography file handler Node Server API // --------------------------------- const fs = require('fs') const path = require('path') //const dn = require('./dirname'); var filePath = './bibliotest.json'; //the biblio bookmark file var biblio = ''; var str = ''; var searchValue = 'url:'; // -------------- // read and parse biblio JSON file // ---------------- const jsonReader = () => { return new Promise(resolve => { str = fs.readFile(filePath, (err, fd) => { object = JSON.parse(fd); str = object.children; // strip outer layer biblio = str; // count biblio array elements count = biblio.length; resolve (str); //return str; }) }) } // async function performAsyncFunctions(){ // list of promises to execute sequentially const firstRequest = await jsonReader(); //console.log('\nAll tasks complete.'); console.log('==== function complete ====\n') console.log('count = ', count) var html = '<html><lang = en><head></head><body>'; for (let i = 0; i < count; i++) { html = html + '<h3><i>id'+[i]+':</i> <a href='+biblio[i].url+'>'+biblio[i].title+'</a></h3><p>'+biblio[i].description+'</p>\n'; } html = html + '</body></html>'; console.info(html); const content = html try { const data = fs.writeFileSync('./bibliotest.html', content) //file written successfully } catch (err) { console.error(err) }} // --------------- performAsyncFunctions(); // console.log('biblio = ', object) // ------------------
Dans le menu de l'extension du navigateur xbrowserSync , nous pouvons choisir de sauvegarder une sauvegarde des données de nos favoris. La sauvegarde est enregistrée sous forme de fichier JSON. Pour notre exemple ici, tous les signets se trouvent dans un dossier de signets nommé « MuskArticle ».
Nous éditons les signets JSON pour extraire uniquement le dossier de signets que nous souhaitons utiliser dans notre bibliographie. Ce fichier JSON est présenté ci-dessous.
{ "title": "__MuskArticle", "children": [ { "title": "Musk's X caught throttling outbound links to websites he doesn't like", "url": "https://www.msn.com/en-us/news/technology/musk-sx-caught-throttling-outbound-links-to-websites-he-doesn-t-like/ar-AA1fmbYw?ocid=windirect&cvid=3ff1100b6fba4172b3b0b8b9c6bbc7e0&ei=185", "description": "Elon Musk claims that he bought Twitter, now called X, to preserve free speech. He claimed that everyone's voice should be heard. This is a great thing for free speech and must surely be a coincidence, right? Elon Musk's X was this week caught throttling outbound links to several sites, coincidentally ones that the billionaire has complained about or feuded with in the past.… Links directing users of the website formerly…", "id": 6643 }, { "title": "Mark Cuban takes another jab at Elon Musk's business practices", "url": "https://www.msn.com/en-us/money/companies/mark-cuban-takes-another-jab-at-elon-musk-s-business-practices/ar-AA1fmrNQ?ocid=windirect&cvid=528ef4be846842fa87342b96d92d0dfa&ei=35", "description": "These two billionaires are not best buds.", "id": 6664 }, { "title": "Twitter now makes you PAY to access one of its most popular features", "url": "https://www.msn.com/en-us/money/technology/twitter-now-makes-you-pay-to-access-one-of-its-most-popular-features/ar-AA1flk5Y?ocid=windirect&cvid=ee4ba03e4c414849a910c7f25dbfd759&ei=27", "description": "X (formerly Twitter) has started diverting users to a paid-subscription sign-up page when they try to access TweetDeck.", "id": 6665 }, { "title": "NYU Professor Locked Out of Twitter After Reportedly Declining to Meet With Elon Musk", "url": "https://www.msn.com/en-us/news/technology/nyu-professor-locked-out-of-twitter-after-reportedly-declining-to-meet-with-elon-musk/ar-AA1fmedB?ocid=windirect&cvid=a7973a74a0d24f2287ea421bbd70f5ea&ei=42", "description": "New York University professor and Kara Swisher's podcasting buddy Scott Galloway voiced his outrage at being banned from posting on Twitter in a Threads post on Tuesday. Galloway claims he's been locked out of Twitter (aka X) two days after allegedly declining an invitation to meet with the chief…", "id": 6666 }, { "title": "A federal judge wondered if Elon Musk was trying to 'cozy up' to Trump by trying to inform him about a search warrant into his social media account", "url": "https://www.msn.com/en-us/news/politics/a-federal-judge-wondered-if-elon-musk-was-trying-to-cozy-up-to-trump-by-trying-to-inform-him-about-a-search-warrant-into-his-social-media-account/ar-AA1flSZV?ocid=windirect&cvid=ee4ba03e4c414849a910c7f25dbfd759&ei=51", "description": "In January, federal prosecutors obtained a search warrant to obtain information from Trump's personal Twitter account.", "id": 6667 } ] }
Si nous soumettons le fichier JSON ci-dessus à notre programme de gestion node.js , il générera la liste bibliographique au format HTML suivante.
Nous avons donc vu comment tirer parti de l'utilisation de xbrowserSync comme gestionnaire de favoris pour générer des bibliographies à partir de nos données de favoris. Merci d'avoir lu et j'espère que ces informations vous seront utiles. Comme toujours, les commentaires, suggestions et critiques sont les bienvenus.