daily_sunrise_video.sh: use \$MOVIES_DIR instead of \$BASE_DIR/movies so the override in sky-cam.conf is respected when videos live on a separate drive. capture.sh: default camera name falls back to \$SUNRISE_CAM (not the undefined \$CAM_NAME) when no argument is passed. sunrise2mm.py: also loads .env after sky-cam.conf so Mattermost credentials moved to .env are actually visible to the upload script. sunrise.py: raise a clear error message when LATITUDE/LONGITUDE/TIMEZONE are missing from sky-cam.conf instead of an opaque KeyError. 4-seasons.sh, montage-mvt.sh: capture season_info.py output before eval so a Python failure exits cleanly with a diagnostic message rather than silently continuing with undefined variables. bootstrap.sh: add system package install step (ffmpeg bc fonts-dejavu) and show the .env setup step after install.sh generates .env.example. README.md: correct Python package names and add fonts-dejavu dependency. https://claude.ai/code/session_01C4jbd3waXG3eKZYbGUjLUQ
35 lines
983 B
Python
35 lines
983 B
Python
from datetime import datetime
|
|
import pathlib
|
|
import pytz
|
|
from suntime import Sun
|
|
|
|
# Locate sky-cam.conf next to this script (works regardless of cwd).
|
|
_here = pathlib.Path(__file__).resolve().parent
|
|
|
|
def _read_conf(path):
|
|
conf = {}
|
|
with open(path) as f:
|
|
for line in f:
|
|
line = line.strip()
|
|
if line and not line.startswith('#') and '=' in line:
|
|
k, v = line.split('=', 1)
|
|
conf[k.strip()] = v.strip()
|
|
return conf
|
|
|
|
conf = _read_conf(_here / 'sky-cam.conf')
|
|
|
|
for _key in ('LATITUDE', 'LONGITUDE', 'TIMEZONE'):
|
|
if _key not in conf:
|
|
raise SystemExit(f"sunrise.py: {_key} not set in sky-cam.conf")
|
|
|
|
latitude = float(conf['LATITUDE'])
|
|
longitude = float(conf['LONGITUDE'])
|
|
tz = pytz.timezone(conf['TIMEZONE'])
|
|
|
|
sun = Sun(latitude, longitude)
|
|
now = datetime.now(tz)
|
|
sunrise_utc = sun.get_sunrise_time(now)
|
|
sunrise_time = sunrise_utc.astimezone(tz)
|
|
|
|
print(sunrise_time.strftime('%Y-%m-%d %H:%M:%S'))
|