Skip to main content

A terminal user interface for searching NASA ADS papers

Project description

ads-tui

A terminal user interface for searching NASA ADS papers, selecting papers with fzf, downloading PDFs, and managing BibTeX references.

Designed for astronomers who prefer working from the terminal. This may be a preferable workflow when working with a LaTeX document using a terminal emulator for example. It is also useful for quickly searching and downloading papers without opening a web browser.


Features

  • Search NASA ADS from the command line
  • Interactive paper selection using fzf
  • Preview paper information:
    • Title
    • Authors
    • Abstract
    • DOI
    • Citation count
    • Keywords
  • Download PDFs
  • Open PDF (only opens first selection in multi mode)
  • Export BibTeX
  • Copy BibTeX to the clipboard
  • Append references to an existing .bib file
  • Copy DOI
  • Open ADS page in a browser (only opens first selection in multi mode)
  • SQLite caching of searches and metadata

Installation

Requirements

  • Python 3.11 or newer
  • pip (You may or may not be able to use your system's pip depending on your system. In the latter case, you can create a virtual environment and install ads-tui there, use a conda environment, or use uv to install it in a environment.)
  • fzf
  • xdg-open (Available on Linux systems. See note below for Other OS)
  • An web browser (for opening ADS pages and PDFs)
  • A terminal emulator with true color support (e.g. alacritty, kitty, wezterm, ghostty, gnome-terminal, konsole, etc.)

Install fzf

Debian / Ubuntu

sudo apt install fzf

Fedora

sudo dnf install fzf

Or follow the instructions at fzf GitHub.

Install xdg-open

Most Linux distributions come with xdg-open pre-installed. If not, install the xdg-utils package using your package manager.

Install ads-tui:

pip install ads-tui

Or using uv:

uv tool install ads-tui

Or for development:

git clone https://github.com/Credence473/ads-tui.git
cd ads-tui
pip install -e .

Configuration

ADS API Token

ADS requires an API token.

Create one at:

https://ui.adsabs.harvard.edu/user/settings/token

Set it temporarily:

export ADS_API_TOKEN="your_token_here"

To make it permanent:

echo 'export ADS_API_TOKEN="your_token_here"' >> ~/.bashrc

Alternatively, edit:

~/.config/ads-tui/config.toml

Example:

token = "your_token_here"

More configuration

Configuration file:

~/.config/ads-tui/config.toml

Example:

token = ""

results = 10

prefer_arxiv = true

cache_days = 30

download_dir = "~/Downloads/Paper"

default_bib = "~/Downloads/Paper/references.bib"

Usage

Search ADS papers from the terminal. The query can be a simple string or a comma-separated list of field:value pairs. For example: 'author:Smith,year:2020'. The following shorthands are also available for common fields: 'a' for author, 'fa' for first_author, 'abs' for abstract, 'y' for year, 'ft' for full text, and 'pub' for publication. Additionally, the keyword 'astro' can be used to filter results to the astronomy collection. Example: 'astro,author:Smith,year:2020'.

Search ADS

ads-tui "magneto asteroseismology"

or

ads-tui "first_author:Catala,year:2007,author:Donati,astro"

or

ads-tui "fa:Catala,y:2007,a:Donati,astro"

Change the number of results

The default is 10 papers.

For example:

ads-tui "TESS asteroseismology" -n 25

Multiple selection

Enable multi-selection:

ads-tui "PLATO stellar oscillations" --multi

Inside fzf:

Key Action
TAB Select paper
ENTER Confirm selection

Actions

After selecting one or more papers:

Key Action
b Copy BibTeX
s Save BibTeX
a Append BibTeX to references.bib
p Download PDF
o Open PDF
d Copy DOI
u Open ADS page
q Quit

Cache

SQLite cache location:

~/.cache/ads-tui/cache.sqlite

Cached data includes:

  • Search results
  • Paper metadata
  • BibTeX entries

Default cache lifetime:

cache_days = 30

Development

Run locally:

python -m ads_tui.cli "asteroseismology"

Roadmap

Planned features:

  • Search by first author, author, year, or journal
  • Citation graph exploration
  • Prefer arxiv option does not work yet. It is planned to be implemented in the future.

Notes for Other OS

  • This project is developed for Linux. It should work on MacOS if the xdg-open command is replaced with open in the code. You are free to use it that way, but I take no responsibility as I don't own a Mac to test it. If you are willing to maintain a MacOS version, please fork it.
  • If you are using windows, using ads-tui on that sluggish terminal is almost the same (I imagine) as using ADS in the browser. So, I will not try to make it work on Windows.

Acknowledgements

This project uses the NASA ADS API.

License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ads_tui-0.1.2.tar.gz (11.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ads_tui-0.1.2-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file ads_tui-0.1.2.tar.gz.

File metadata

  • Download URL: ads_tui-0.1.2.tar.gz
  • Upload date:
  • Size: 11.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"44","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ads_tui-0.1.2.tar.gz
Algorithm Hash digest
SHA256 1546cfc75977e24d8dbbcfbefd3c1e0f4a4a54620147bf6a19d4c7ecb83b4b47
MD5 d51ae74db291a1b917751f227b4312ab
BLAKE2b-256 79d304357f61be6262d07e6afdaedc9912f2a65ea4ac950926cd9b81bf9400ad

See more details on using hashes here.

File details

Details for the file ads_tui-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: ads_tui-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 15.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"44","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ads_tui-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 125c91e4583b14ac55953b449779c358abd30afe280980937ae06b4270df4c75
MD5 c22c7d6adabb75a2d0017c7d35d197ae
BLAKE2b-256 a11cafce3b5d10bb0ce8391db2ce928caf0347a274c9b7fe3de7f5087631b2d7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page