文献目録ジェネレーターの操作の最初の要件は、 xbrowserSyncという名前のブラウザー ブックマーク マネージャー アプリケーションによって作成された JSON オブジェクトで構成されるコンテンツ データのソースです。このアプリケーションは、ブラウザに依存しないブックマーク マネージャーであり、2 つの部分から構成されています。
1 つはブラウザ拡張機能で、もう 1 つはブックマーク データをMongoDBデータ ファイルとして管理するサーバー API です。サーバー API について知っておく必要があるのは、その URL だけです。ブラウザ拡張機能は、Chrome ブラウザのGoogle Playなどのオンライン アプリ「ストア」で見つけることができます。
基本的な考え方は、 xbrowserSyncアプリケーションが、API サーバーに保存されている暗号化されたデータベースにブックマーク データを保存するというものです。データベース自体は実際には JSON オブジェクト ファイルであり、ローカルに保存して使用でき、アプリケーション拡張機能が適切にインストールされているブラウザーで使用できます。
これにより、ブラウザーにブックマーク データを保存させることなく、たとえば Chrome、Edge、Firefox で同じブックマークのセットを取得できます。 xbrowserSyncの APP と API ソースはそれぞれGitHub リポジトリにあります。
文献目録ジェネレーターの 2 番目の要件は、 Windows 10マシンのコマンド ウィンドウのnode.jsで実行されるプログラム コードです。以下は、 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) // ------------------
xbrowserSyncブラウザ拡張機能メニューから、ブックマーク データのバックアップを保存することを選択できます。バックアップは JSON ファイルとして保存されます。ここの例では、すべてのブックマークは「MuskArticle」という名前のブックマーク フォルダーにあります。
ブックマーク JSON を編集して、参考文献で使用するブックマーク フォルダーのみを抽出します。この JSON ファイルを次に示します。
{ "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 } ] }
上記の JSON ファイルをnode.jsハンドラープログラムに送信すると、次の HTML 形式の参考文献リストが生成されます。
ここまで、xbrowserSync をブックマーク マネージャーとして利用して、ブックマーク データから参考文献を生成する方法を見てきました。読んでいただきありがとうございます。この情報がお役に立てば幸いです。いつものように、コメント、提案、批判を歓迎します。