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
d Copy DOI
p Open PDF link
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.3.tar.gz (11.8 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.3-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ads_tui-0.1.3.tar.gz
  • Upload date:
  • Size: 11.8 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.3.tar.gz
Algorithm Hash digest
SHA256 bbb034e75c9bc2d792371283852409879837fb274b45e0124df77d8129e38a1e
MD5 fb5ed70e3d68ba645b67ef130cb62d6c
BLAKE2b-256 b382da3d2f597dc258f493e9957e42c65d03ca334bad8c3ebf6c598840d87bea

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ads_tui-0.1.3-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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 70fe4bd0a9838d30b350469f7614fd399615d1a2160b52dd6dcc1b002929d91c
MD5 ca228fb6318f807fd79d5eb2e133e4de
BLAKE2b-256 0f303103202e3bafd2ad31933d862db1cb25e1cb34e9380bb96a9b3893ccec1b

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