Advertisement
Guest User

Untitled

a guest
Apr 29th, 2025
18
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.13 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # === CONFIGURATION ===
  4. USER_NAME=debian
  5. USER_ID=$(id -u "$USER_NAME")
  6. export DISPLAY=:0
  7. export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$USER_ID/bus"
  8.  
  9. # Fungsi untuk mengirim notifikasi
  10. send_notification() {
  11. local prayer_name=$1
  12. local prayer_time=$2
  13. notify-send "Pengingat Sholat" "Waktu ($prayer_name) $prayer_time" || echo "Gagal kirim notifikasi $prayer_name" >> /tmp/prayer_notif_error.log
  14. }
  15.  
  16. # Baca waktu sholat dari script eksternal
  17. PRAYER_TIMES=$(/home/debian/.script/prayer-source.sh)
  18.  
  19. # Fungsi ekstrak waktu dari hasil grep
  20. extract_time() {
  21. local prayer_label=$1
  22. echo "$PRAYER_TIMES" | grep "$prayer_label" | awk '{print $2}' | sed 's/^[ \t]*//;s/[ \t]*$//'
  23. }
  24.  
  25. # Format dan bersihkan waktu
  26. format_time() {
  27. local time=$1
  28. if [[ "$time" =~ ^[0-9]+$ ]]; then
  29. printf "%02d:00\n" "$time"
  30. elif [[ "$time" =~ ^[0-9]{1,2}:[0-9]{2}$ ]]; then
  31. echo "$time"
  32. else
  33. echo ""
  34. fi
  35. }
  36.  
  37. # Ambil dan format semua waktu sholat
  38. FAJR=$(format_time "$(extract_time "Fajr")")
  39. DHUHR=$(format_time "$(extract_time "Zuhur")")
  40. ASR=$(format_time "$(extract_time "Asr")")
  41. MAGHRIB=$(format_time "$(extract_time "Maghrib")")
  42. ISHA=$(format_time "$(extract_time "Isha")")
  43.  
  44. # Buat array waktu sholat, hanya jika tidak kosong
  45. PRAYERS=()
  46. [[ -n "$FAJR" ]] && PRAYERS+=("Fajr|$FAJR")
  47. [[ -n "$DHUHR" ]] && PRAYERS+=("Zuhur|$DHUHR")
  48. [[ -n "$ASR" ]] && PRAYERS+=("Asr|$ASR")
  49. [[ -n "$MAGHRIB" ]] && PRAYERS+=("Maghrib|$MAGHRIB")
  50. [[ -n "$ISHA" ]] && PRAYERS+=("Isha|$ISHA")
  51.  
  52. # Dapatkan waktu saat ini
  53. CURRENT_TIME=$(date +"%H:%M")
  54. echo "Waktu saat ini: $CURRENT_TIME"
  55.  
  56. # Loop semua waktu sholat
  57. for prayer in "${PRAYERS[@]}"; do
  58. PRAYER_NAME=${prayer%%|*}
  59. PRAYER_TIME=${prayer#*|}
  60.  
  61. echo "Waktu sholat $PRAYER_NAME: $PRAYER_TIME"
  62.  
  63. if [[ -n "$PRAYER_TIME" ]]; then
  64. PRAYER_EPOCH=$(date -d "$(date +%Y-%m-%d) $PRAYER_TIME" +%s)
  65.  
  66. NOTIF_30_MIN_EPOCH=$((PRAYER_EPOCH - 30 * 60))
  67. NOTIF_20_MIN_EPOCH=$((PRAYER_EPOCH - 20 * 60))
  68. NOTIF_10_MIN_EPOCH=$((PRAYER_EPOCH - 10 * 60))
  69.  
  70. NOTIFICATION_30_MIN_TIME=$(date -d "@$NOTIF_30_MIN_EPOCH" +"%H:%M")
  71. NOTIFICATION_20_MIN_TIME=$(date -d "@$NOTIF_20_MIN_EPOCH" +"%H:%M")
  72. NOTIFICATION_10_MIN_TIME=$(date -d "@$NOTIF_10_MIN_EPOCH" +"%H:%M")
  73. NOTIFICATION_TIME=$(date -d "@$PRAYER_EPOCH" +"%H:%M")
  74.  
  75. echo "Waktu notifikasi ($PRAYER_NAME -30 menit): $NOTIFICATION_30_MIN_TIME"
  76. echo "Waktu notifikasi ($PRAYER_NAME -20 menit): $NOTIFICATION_20_MIN_TIME"
  77. echo "Waktu notifikasi ($PRAYER_NAME -10 menit): $NOTIFICATION_10_MIN_TIME"
  78. echo "Waktu notifikasi ($PRAYER_NAME -0 menit): $NOTIFICATION_TIME"
  79.  
  80. if [[ "$CURRENT_TIME" == "$NOTIFICATION_30_MIN_TIME" || "$CURRENT_TIME" == "$NOTIFICATION_20_MIN_TIME" || "$CURRENT_TIME" == "$NOTIFICATION_10_MIN_TIME" || "$CURRENT_TIME" == "$NOTIFICATION_TIME" ]]; then
  81. echo "Mengirim notifikasi untuk $PRAYER_NAME pukul $PRAYER_TIME"
  82. send_notification "$PRAYER_NAME" "$PRAYER_TIME"
  83. fi
  84. else
  85. echo "Waktu untuk $PRAYER_NAME tidak valid, dilewati."
  86. fi
  87. done
  88.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement