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-cachesaat butuh data baru. - API Aladhan dengan dukungan pemilihan metode (
--method kemenag|mwl|...). - Jadwal lengkap + countdown shalat berikutnya, termasuk lintas hari.
- Timezone akurat berkat modul
zoneinfobuiltin Python 3.9+. - Error handling & timeout agar CLI tetap responsif.
- Siap dikemas ke AUR, Snap, maupun instalasi manual.
Screenshot
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
- 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.
- Deteksi lokasi & timezone (GeoIP, Nominatim, atau lokasi terakhir).
- Ambil jadwal shalat dari API Aladhan untuk tanggal terkait dan simpan ke cache.
- Hitung countdown jadwal berikutnya; jika hari sudah berganti, ambil jadwal besok.
- 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_KEYatau gunakan--ipspeed-keyuntuk 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
- Fork repo
- Buat branch baru
- Commit perubahan
- 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)
| File | Size | Uploaded | |
|---|---|---|---|
| bangkah_jadwal_shalat-1.1.0.tar.gz | 90.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|