paint-brush
Um gerador de bibliografia a partir de marcadores do navegador: como funcionapor@bobnoxious
1,293 leituras
1,293 leituras

Um gerador de bibliografia a partir de marcadores do navegador: como funciona

por Bob Wright5m2023/11/27
Read on Terminal Reader

Muito longo; Para ler

Um gerador de bibliografia simples usa um arquivo de marcadores do navegador como conteúdo de origem. O banco de dados em si é na verdade um arquivo objeto JSON que podemos salvar e usar localmente. Isso me dá o mesmo conjunto de favoritos no Chrome, Edge e Firefox, por exemplo, sem que o navegador salve meus dados de favoritos. Editamos a pasta de favoritos para extrair os únicos favoritos que queremos usar.
featured image - Um gerador de bibliografia a partir de marcadores do navegador: como funciona
Bob Wright HackerNoon profile picture
0-item

Um gerador de bibliografia simples que usa um arquivo JSON Browser Bookmarks como conteúdo de origem.

Pré-requisitos e Código

O primeiro requisito para o funcionamento do gerador de bibliografia é uma fonte de seus dados de conteúdo que consiste em um objeto JSON criado por um aplicativo gerenciador de favoritos do navegador denominado xbrowserSync . Este aplicativo é um gerenciador de favoritos independente do navegador em duas partes.


Uma parte é uma extensão do navegador e a outra é uma API de servidor que gerencia os dados dos marcadores como um arquivo de dados MongoDB . Tudo o que precisamos saber sobre a API do servidor é sua URL. A extensão do navegador pode ser encontrada em “lojas” de aplicativos online como o Google Play para o navegador Chrome.


A ideia básica é que o aplicativo xbrowserSync armazene os dados dos seus favoritos em um banco de dados criptografado que é armazenado no servidor API. O banco de dados em si é na verdade um arquivo objeto JSON que podemos salvar e usar localmente e que pode ser usado por qualquer navegador que tenha nossa extensão de aplicativo instalada adequadamente.


Isso me dá o mesmo conjunto de favoritos no Chrome, Edge e Firefox, por exemplo, sem que o navegador salve meus dados de favoritos. O APP e a fonte da API para xbrowserSync estão em um repositório GitHub.


O segundo requisito para o gerador de bibliografia é o código do programa que é executado em node.js em uma janela de comando em minha máquina Windows 10 . A seguir, está este programa de nó simples chamado 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>&nbsp;<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) // ------------------


O arquivo de favoritos no formato JSON

No menu de extensão do navegador xbrowserSync , podemos optar por salvar um backup dos dados de nossos favoritos. O backup é salvo como um arquivo JSON. Para nosso exemplo aqui, todos os favoritos estão em uma pasta de favoritos chamada “MuskArticle”.


Editamos o JSON de favoritos para extrair apenas a pasta de favoritos que queremos usar em nossa bibliografia. Este arquivo JSON é mostrado aqui a seguir.

 { "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 } ] }


O arquivo bibliográfico

Se enviarmos o arquivo JSON acima para nosso programa manipulador node.js , ele gerará a seguinte listagem bibliográfica em formato HTML.


Conclusão

Então, vimos como podemos aproveitar o uso do xbrowserSync como gerenciador de favoritos para gerar bibliografias a partir de nossos dados de favoritos. Obrigado pela leitura e espero que esta informação seja útil para você. Como sempre, comentários, sugestões e críticas são bem-vindos.