A command-line tool for astrophotographers to find optimal viewing times for deep sky objects
Project description
StarTeller-CLI
A comprehensive command-line tool for astrophotographers and telescope enthusiasts to find optimal viewing times for deep sky objects throughout the year.
Given your location, StarTeller calculates when each object in the NGC/IC/Messier catalogs reaches its highest point during astronomical darkness. It accounts for altitude, direction, and dark sky conditions to help you plan observation sessions.
Installation
Install from PyPI (Recommended)
pip install starteller-cli
starteller
That's it! The starteller command will be available in your terminal.
Install from Source (Development)
If you want to modify the code or install the latest development version:
git clone https://github.com/ConnRaus/StarTeller-CLI.git
cd StarTeller-CLI
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install .
starteller
Or run directly without installing:
git clone https://github.com/ConnRaus/StarTeller-CLI.git
cd StarTeller-CLI
pip install -r requirements.txt
python src/starteller_cli.py
How it works
- Enter your coordinates (or use a saved location)
- Set your output directory (or use a saved preference)
- Set minimum altitude and optional direction filter
- Get a CSV with optimal viewing times for ~13,000 deep sky objects
The first run downloads the NGC catalog and Addendum (~4MB) and calculates night darkness times for the year. Both are cached, so subsequent runs are fast.
Output
Results go to starteller_output/ by default, or a custom directory you set on first run. The CSV includes:
| Column | Description |
|---|---|
| Object | NGC/IC/Messier ID |
| Name | Common name if available |
| Type | Galaxy, Nebula, Cluster, etc. |
| Messier | Messier number if applicable (e.g., M31) |
| Right_Ascension | Right Ascension in degrees (J2000) |
| Declination | Declination in degrees (J2000) |
| Major_Axis_arcmin | Major axis angular size in arcminutes |
| Minor_Axis_arcmin | Minor axis angular size in arcminutes |
| Position_Angle_deg | Position angle of major axis (N through E) |
| Best_Date | Date when object is highest at midnight |
| Best_Time_Local | Time of peak altitude |
| Max_Altitude_deg | Maximum altitude reached |
| Azimuth_deg | Azimuth at peak altitude (0°=N, 90°=E, etc.) |
| Rise_Time_Local | When it rises above your minimum altitude |
| Rise_Direction_deg | Azimuth when rising |
| Set_Time_Local | When it drops below minimum altitude |
| Set_Direction_deg | Azimuth when setting |
| Observing_Duration_Hours | Total time above minimum altitude |
| Visible_Nights_Per_Year | Nights meeting altitude/direction criteria |
| Dark_Start_Local | Start of astronomical darkness |
| Dark_End_Local | End of astronomical darkness |
| Timezone | Timezone used for local times |
Options
Filters:
- Minimum altitude (default 20°) - objects must reach this altitude during dark time
- Direction filter - azimuth range, e.g.,
90,180for objects in the East to South
Included catalogs:
The output includes all ~13,000 objects from NGC, IC, Messier, Caldwell, and other catalogs from OpenNGC.
Python API
You can also use StarTeller programmatically:
from src.starteller_cli import StarTellerCLI
st = StarTellerCLI(
latitude=40.7,
longitude=-74.0,
elevation=10
)
results = st.find_optimal_viewing_times(min_altitude=25)
results = st.find_optimal_viewing_times(direction_filter=(90, 180)) # East to South
File locations
Data and settings are stored in platform-specific directories:
Windows: %LOCALAPPDATA%\StarTeller-CLI\
Linux: ~/.local/share/starteller-cli/
macOS: ~/Library/Application Support/StarTeller-CLI/
This includes the NGC catalog, your saved location, and output directory preference. Cache (night calculations) goes to the platform's cache directory. Output CSVs go to your configured output directory (default: ./starteller_output/).
Requirements
- Python 3.8+
- Internet connection (first run only, to download catalog)
Dependencies: pandas, numpy, pytz, timezonefinder, tqdm
Data source
Catalog data comes from OpenNGC by Mattia Verga, licensed under CC-BY-SA-4.0.
License
AGPL-3.0-or-later (GNU Affero General Public License v3). See LICENSE.
The NGC catalog data is CC-BY-SA-4.0.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file starteller_cli-1.2.1.tar.gz.
File metadata
- Download URL: starteller_cli-1.2.1.tar.gz
- Upload date:
- Size: 36.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06c05b8474350fb5d9910933b5585cad57cbeb9aff29c4b88f9a268b6cd7a540
|
|
| MD5 |
714c17d4b31f8fd65c721ed49420c9e5
|
|
| BLAKE2b-256 |
fc12618d1ec01c99bd5ec9651443ac1537709a6aee3ed65e5c06074660ff8468
|
File details
Details for the file starteller_cli-1.2.1-py3-none-any.whl.
File metadata
- Download URL: starteller_cli-1.2.1-py3-none-any.whl
- Upload date:
- Size: 31.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e069be7ede5deddfed76a9bd5f2b1b4d77aa63b83175137d1c617da55f52d0a
|
|
| MD5 |
c6f4beb4479468dd0a9b31956abdac57
|
|
| BLAKE2b-256 |
167e2239d74f4f3b8da3f3cb7d862cb9b038113b3055bfb65b178eb7e1e9a1f3
|