Skip to main content

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-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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bangkah_jadwal_shalat-1.1.0.tar.gz (90.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bangkah_jadwal_shalat-1.1.0-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

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

Hashes for bangkah_jadwal_shalat-1.1.0.tar.gz
Algorithm Hash digest
SHA256 6899deccf77f3be503c43e1c78fdc6e56b71291d3c5abb1ebe36d8b76e8cde96
MD5 8a173ce6de75d784ef8712aab88d7aae
BLAKE2b-256 352e0a0b5aef9442ccc48b12e6051a3d1a4ae241edfd415eaa84ab3d2a687ef4

See more details on using hashes here.

File details

Details for the file bangkah_jadwal_shalat-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for bangkah_jadwal_shalat-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9a8480bfc8240618516c2af0abe68973039e3dd0a2208dad60d21528f5a25975
MD5 b9308dd1fb1e71a970539cea745ad115
BLAKE2b-256 46012203fb4f7f65c301c92e7d6ce1e1bf2bbad0d6c7563f5ce15bb3644addc4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page