Skip to main content

jadwal-shalat

CLI tool profesional untuk menampilkan jadwal shalat otomatis berdasarkan lokasi IP publik atau input manual. Output rapi, akurat, punya cache lokal, dan siap distribusi (AUR, Snap, dsb).


Fitur Utama

  • Deteksi IP publik otomatis atau input manual (--city, --lat/--lon, --timezone).
  • GeoIP offline (opsional) dengan auto-scan file GeoLite2 di ~/.config, ~/.local/share/GeoIP, /usr/share/GeoIP, dsb. Fallback ipapi.co, ipwho.is, ip-api.com, dan ipapi.ipspeed.info (butuh API key) plus lokasi tersimpan terakhir. Koordinat dari IP otomatis diperkaya lewat reverse geocoding Nominatim agar nama kota lebih akurat.
  • Cache lokal per-tanggal, bisa dimatikan via --no-cache saat butuh data baru.
  • API Aladhan dengan dukungan pemilihan metode (--method kemenag|mwl|...).
  • Jadwal lengkap + countdown shalat berikutnya, termasuk lintas hari.
  • Timezone akurat berkat modul zoneinfo builtin Python 3.9+.
  • Error handling & timeout agar CLI tetap responsif.
  • Siap dikemas ke AUR, Snap, maupun instalasi manual.

Screenshot

alt text

Instalasi

Arch Linux/AUR (direkomendasikan)

yay -S jadwal-shalat

Manual (pip)

git clone https://github.com/Bangkah/jadwal-shalat.git
cd jadwal-shalat
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
./jadwal-shalat.py --help

Cara Pakai

jadwal-shalat

Atau (manual):

python jadwal-shalat.py

Cara Kerja

  1. Ambil IP publik user (GeoIP offline/ipapi.co/ipwho.is/ip-api.com/ipapi.ipspeed.info) atau gunakan input manual/cached, lalu lakukan reverse geocoding ke Nominatim untuk memastikan nama kota/kabupaten tepat.
  2. Deteksi lokasi & timezone (GeoIP, Nominatim, atau lokasi terakhir).
  3. Ambil jadwal shalat dari API Aladhan untuk tanggal terkait dan simpan ke cache.
  4. Hitung countdown jadwal berikutnya; jika hari sudah berganti, ambil jadwal besok.
  5. Tampilkan jadwal utama + info tambahan di terminal.

Dependensi

  • Python >= 3.9 (zoneinfo built-in)
  • requests
  • geoip2 (opsional, untuk deteksi lokasi offline)
  • python-tzdata (opsional, untuk distro tertentu)

API Key Opsional

  • Atur variabel lingkungan JADWAL_SHALAT_IPSPEED_KEY atau gunakan --ipspeed-key untuk mengaktifkan fallback ipapi.ipspeed.info.
  • File GeoLite2-City.mmdb dapat ditempatkan di ./GeoLite2-City.mmdb, ~/.config/jadwal-shalat/, ~/.local/share/GeoIP/, /usr/share/GeoIP/, atau /var/lib/GeoIP/ supaya mode GeoIP offline otomatis aktif.
  • ip-api.com tidak butuh API key, tapi gratisnya dibatasi 45 permintaan/menit/IP. CLI akan memberi pesan jika limit tercapai.

Kompatibilitas

  • Arch Linux (AUR) ✅
  • Ubuntu/Debian/Fedora/macOS/Windows ✅

Struktur Project

├── jadwal-shalat.py
├── PKGBUILD
├── .SRCINFO
├── LICENSE
├── README.md
└── .github/workflows/

Roadmap

  • Auto update AUR via GitHub Actions
  • Output countdown waktu shalat berikutnya
  • Fallback API lokasi + simpan lokasi terakhir
  • Input manual kota/koordinat
  • Paket Snap (strict confinement)
  • Output JSON
  • Notifikasi waktu shalat
  • Packaging PyPI
  • Engine perhitungan offline

Keamanan & Privasi

  • Tidak menyimpan data user selain lokasi terakhir di ~/.config/jadwal-shalat/
  • Tidak mengirim data sensitif
  • Hanya menggunakan API publik (Aladhan, Nominatim, ipify)

Kontribusi

  1. Fork repo
  2. Buat branch baru
  3. Commit perubahan
  4. Pull request

Lisensi

MIT License


Author

Muhammad Dhiyaul Atha
GitHub: https://github.com/Bangkah

Metadata

Release files for bangkah-jadwal-shalat 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bangkah-jadwal-shalat 1.1.0
File Size Uploaded
bangkah_jadwal_shalat-1.1.0.tar.gz 90.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bangkah-jadwal-shalat 1.1.0
File Interpreter ABI Platform
bangkah_jadwal_shalat-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 101.1 kB

Release files / bangkah_jadwal_shalat-1.1.0.tar.gz

Download URL bangkah_jadwal_shalat-1.1.0.tar.gz
Size 90.9 kB
Tags Source
SHA-256 checksum
How to use checksums
6899deccf77f3be503c43e1c78fdc6e56b71291d3c5abb1ebe36d8b76e8cde96
BLAKE2b-256 checksum
How to use checksums
352e0a0b5aef9442ccc48b12e6051a3d1a4ae241edfd415eaa84ab3d2a687ef4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / bangkah_jadwal_shalat-1.1.0-py3-none-any.whl

Download URL bangkah_jadwal_shalat-1.1.0-py3-none-any.whl
Size 10.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9a8480bfc8240618516c2af0abe68973039e3dd0a2208dad60d21528f5a25975
BLAKE2b-256 checksum
How to use checksums
46012203fb4f7f65c301c92e7d6ce1e1bf2bbad0d6c7563f5ce15bb3644addc4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page