<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Electron | Ville Langén</title><link>https://villelangen.com/tags/electron/</link><atom:link href="https://villelangen.com/tags/electron/index.xml" rel="self" type="application/rss+xml"/><description>Electron</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Wed, 13 May 2026 00:00:00 +0000</lastBuildDate><image><url>https://villelangen.com/media/icon_hu7353780716416406245.png</url><title>Electron</title><link>https://villelangen.com/tags/electron/</link></image><item><title>PubMed Abstract Listing Fetcher</title><link>https://villelangen.com/dev-work/pubmed-abstract-listing-fetcher/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://villelangen.com/dev-work/pubmed-abstract-listing-fetcher/</guid><description>&lt;p>&lt;strong>PubMed Abstract Listing Fetcher&lt;/strong> is a small &lt;strong>open-source&lt;/strong> Electron desktop application by Ville Langén, which helps you turn a plain-text bibliography into a &lt;strong>single continuous HTML page&lt;/strong> of PubMed abstracts—useful when you are drafting, reviewing, or annotating a manuscript and want the abstract text beside each matched reference. &lt;strong>Downloads&lt;/strong> (Windows and macOS installers) are on &lt;a href="https://github.com/vljlangen/pubmed-abstract-listing-fetcher/releases/latest" target="_blank" rel="noopener">GitHub Releases (latest)&lt;/a>.&lt;/p>
&lt;h3 id="the-problem">The Problem&lt;/h3>
&lt;p>When you already have a numbered reference list (for example Vancouver-style, one reference per line), pulling the matching abstracts from PubMed by hand is slow and repetitive. You might want:&lt;/p>
&lt;ul>
&lt;li>One readable document that follows the order of &lt;strong>your&lt;/strong> list&lt;/li>
&lt;li>A quick way to &lt;strong>skim&lt;/strong> or archive abstract text next to each entry&lt;/li>
&lt;li>Outputs you can share or file away (HTML, PDF, plain text) without touching your manuscript’s project folder until you choose to&lt;/li>
&lt;/ul>
&lt;h3 id="the-solution">The Solution&lt;/h3>
&lt;p>&lt;strong>&lt;a href="https://github.com/vljlangen/pubmed-abstract-listing-fetcher" target="_blank" rel="noopener">On GitHub&lt;/a>,&lt;/strong> the project is available in two forms:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Desktop app:&lt;/strong> use the &lt;strong>graphical&lt;/strong> app described on this page.&lt;/li>
&lt;li>&lt;strong>Command line:&lt;/strong> run it with Node.js (&lt;strong>node pubmed_abstracts.js&lt;/strong>—see &lt;strong>For Linux (and command-line users)&lt;/strong> below).&lt;/li>
&lt;/ul>
&lt;p>In the app, you paste references or load a &lt;strong>.txt&lt;/strong> file, run &lt;strong>Get abstracts &amp;amp; save ZIP&lt;/strong>, watch &lt;strong>terminal-style progress&lt;/strong>, and when the run finishes you pick where to save a ZIP bundle. Work is performed under the operating system’s &lt;strong>temp&lt;/strong> directory until you confirm a save path—nothing is written into your manuscript folders or elsewhere unless you choose to save it there.&lt;/p>
&lt;h3 id="use-cases">Use Cases&lt;/h3>
&lt;p>Suited for:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Dissertation preliminary examiners&lt;/strong> and other reviewers who want a compact abstract listing aligned to a reference list&lt;/li>
&lt;li>&lt;strong>Students and researchers&lt;/strong> assembling reading notes from a bibliography&lt;/li>
&lt;li>&lt;strong>Anyone&lt;/strong> who prefers a &lt;strong>local-first&lt;/strong> workflow: the app runs on your machine; you decide where exports live&lt;/li>
&lt;/ul>
&lt;p>It is &lt;strong>not&lt;/strong> marketed for regulated clinical decisions, legal filings, or guaranteed completeness of PubMed matches—always verify critical citations in the primary literature.&lt;/p>
&lt;h3 id="why-pubmed-abstract-listing-fetcher">Why PubMed Abstract Listing Fetcher?&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Order-preserving&lt;/strong>: Your list drives the document, not a separate search session&lt;/li>
&lt;li>&lt;strong>Explicit saves&lt;/strong>: Temp working files and a clear save dialog, so you are not surprised by files scattered through a project tree&lt;/li>
&lt;li>&lt;strong>Practical bundle&lt;/strong>: HTML for reading, PDF for sharing or printing, TXT for grep-friendly archives&lt;/li>
&lt;/ul>
&lt;p>Turn a static reference list into a browsable abstract companion—on your own computer, at your own pace.&lt;/p>
&lt;h3 id="key-features">Key Features&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Plain-text input&lt;/strong>: Paste into the app or load a &lt;strong>.txt&lt;/strong> file. For how each line must look, see &lt;strong>Reference list format&lt;/strong> below.&lt;/li>
&lt;li>&lt;strong>Sample list&lt;/strong>: Optional control to download a minimal &lt;strong>example references.txt&lt;/strong> you can edit and replace.&lt;/li>
&lt;li>&lt;strong>Progress feedback&lt;/strong>: Terminal-style log while each line is resolved and abstracts are fetched.&lt;/li>
&lt;li>&lt;strong>ZIP export&lt;/strong>: &lt;strong>pubmed_abstracts.html&lt;/strong>, &lt;strong>pubmed_abstracts.pdf&lt;/strong> (printed from the HTML via bundled Chromium), and &lt;strong>pubmed_abstracts.txt&lt;/strong> (plain text derived from the HTML).&lt;/li>
&lt;/ul>
&lt;h3 id="how-to-use-desktop-app">How to Use (desktop app)&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>Open the app&lt;/strong> and paste your reference list, or use the file picker to load a &lt;strong>.txt&lt;/strong> file&lt;/li>
&lt;li>Optionally download the &lt;strong>example references.txt&lt;/strong> to see the expected shape of each line&lt;/li>
&lt;li>Click &lt;strong>Get abstracts &amp;amp; save ZIP&lt;/strong> and wait until progress completes&lt;/li>
&lt;li>When prompted, choose where to save the ZIP; extract it to get HTML, PDF, and TXT&lt;/li>
&lt;/ol>
&lt;h2 id="reference-list-format-referencestxt">Reference list format (references.txt)&lt;/h2>
&lt;ul>
&lt;li>Use &lt;strong>one reference per line&lt;/strong>; empty lines are skipped.&lt;/li>
&lt;li>Leading list numbers (for example &lt;strong>1. …&lt;/strong>, &lt;strong>2. …&lt;/strong>) are fine—you do &lt;strong>not&lt;/strong> need to remove them before running this program; they are stripped internally when searching PubMed.&lt;/li>
&lt;li>References should look &lt;strong>Vancouver-like&lt;/strong> (typical numbered biomedical lists):
&lt;ul>
&lt;li>authors first (often with &lt;em>et al.&lt;/em>)&lt;/li>
&lt;li>then the article title&lt;/li>
&lt;li>then journal, year, DOI, and similar details&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>The fetcher needs a clear boundary &lt;strong>between the author block and the start of the title&lt;/strong>. Use either a &lt;strong>full stop (period)&lt;/strong> or a &lt;strong>colon&lt;/strong> there, for example:
&lt;ul>
&lt;li>&lt;em>…Lastname AB, Other CD. Title starts here…&lt;/em>&lt;/li>
&lt;li>&lt;em>…Lastname AB, et al: Title starts here…&lt;/em>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Other colons in the line, such as in volume/issue &lt;strong>14(1):179&lt;/strong> or in &lt;strong>doi:…&lt;/strong>, are ignored when choosing that split.&lt;/li>
&lt;/ul>
&lt;p>See the sample &lt;a href="https://github.com/vljlangen/pubmed-abstract-listing-fetcher/blob/main/references.txt" target="_blank" rel="noopener">&lt;strong>references.txt&lt;/strong>&lt;/a> in the project files on GitHub for real lines.&lt;/p>
&lt;h3 id="download-options">Download Options&lt;/h3>
&lt;p>Ready-built installers are on &lt;strong>GitHub Releases&lt;/strong> (latest):&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Windows (x64)&lt;/strong>: portable &lt;strong>.exe&lt;/strong> under Assets on the &lt;a href="https://github.com/vljlangen/pubmed-abstract-listing-fetcher/releases/latest" target="_blank" rel="noopener">latest release&lt;/a>. If SmartScreen warns about an unknown publisher, you may need &lt;strong>More info → Run anyway&lt;/strong>&lt;/li>
&lt;li>&lt;strong>macOS&lt;/strong>: &lt;strong>.dmg&lt;/strong> under Assets—pick &lt;strong>arm64&lt;/strong> for Apple Silicon (M1/M2/M3/…) or the &lt;strong>Intel/x64&lt;/strong> build for older Macs. Drag the app to &lt;strong>Applications&lt;/strong>; if Gatekeeper blocks the first launch, try &lt;strong>Right-click → Open&lt;/strong> once&lt;/li>
&lt;/ul>
&lt;h3 id="for-linux-and-command-line-users">For Linux (and command-line users)&lt;/h3>
&lt;p>On Linux you can skip the Electron UI and run the engine directly with &lt;strong>Node.js 20 or newer&lt;/strong>:&lt;/p>
&lt;ol>
&lt;li>Download or clone the &lt;a href="https://github.com/vljlangen/pubmed-abstract-listing-fetcher" target="_blank" rel="noopener">project from GitHub&lt;/a> and &lt;strong>cd&lt;/strong> into it&lt;/li>
&lt;li>Place your references in &lt;strong>references.txt&lt;/strong> in the working directory (or pass explicit input/output paths—see the README on GitHub)&lt;/li>
&lt;li>Run:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">node pubmed_abstracts.js
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Defaults write &lt;strong>pubmed_abstracts.html&lt;/strong> in the &lt;strong>current working directory&lt;/strong> (this path is for the script, not the desktop app’s temp-and-save flow). Optionally set &lt;strong>NCBI_API_KEY&lt;/strong> and &lt;strong>NCBI_CONTACT_EMAIL&lt;/strong> in the environment for higher rate limits and polite identification with NCBI.&lt;/p>
&lt;h3 id="technical-details">Technical Details&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Built with&lt;/strong>: Electron (desktop UI), Chromium for PDF generation, and the same JavaScript matching/fetch pipeline as &lt;strong>pubmed_abstracts.js&lt;/strong>&lt;/li>
&lt;li>&lt;strong>License&lt;/strong>: MIT (full text on GitHub and in-app via the LICENSE modal)&lt;/li>
&lt;li>&lt;strong>Data handling&lt;/strong>: Fetches use NCBI E-utilities; behavior and availability follow NCBI’s policies and limits&lt;/li>
&lt;/ul>
&lt;h3 id="development--support">Development &amp;amp; Support&lt;/h3>
&lt;p>The project is open source. Bug reports, feature ideas, and pull requests belong on &lt;strong>&lt;a href="https://github.com/vljlangen/pubmed-abstract-listing-fetcher" target="_blank" rel="noopener">GitHub&lt;/a>&lt;/strong>. &lt;strong>Questions or issues?&lt;/strong> Use the &lt;strong>Issues&lt;/strong> tab there.&lt;/p></description></item></channel></rss>