CLI tool untuk menampilkan jadwal shalat otomatis berdasarkan lokasi
Project description
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
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 bangkah_jadwal_shalat-1.1.0.tar.gz.
File metadata
- Download URL: bangkah_jadwal_shalat-1.1.0.tar.gz
- Upload date:
- Size: 90.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6899deccf77f3be503c43e1c78fdc6e56b71291d3c5abb1ebe36d8b76e8cde96
|
|
| MD5 |
8a173ce6de75d784ef8712aab88d7aae
|
|
| BLAKE2b-256 |
352e0a0b5aef9442ccc48b12e6051a3d1a4ae241edfd415eaa84ab3d2a687ef4
|
File details
Details for the file bangkah_jadwal_shalat-1.1.0-py3-none-any.whl.
File metadata
- Download URL: bangkah_jadwal_shalat-1.1.0-py3-none-any.whl
- Upload date:
- Size: 10.2 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 |
9a8480bfc8240618516c2af0abe68973039e3dd0a2208dad60d21528f5a25975
|
|
| MD5 |
b9308dd1fb1e71a970539cea745ad115
|
|
| BLAKE2b-256 |
46012203fb4f7f65c301c92e7d6ce1e1bf2bbad0d6c7563f5ce15bb3644addc4
|