Advertisement
Interknet

Notificator

Feb 25th, 2017
986
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.95 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Feel free to redistribute!
  4.  
  5. Version=1.1.5b
  6.  
  7. cd "${0%/*}"
  8. ScriptName=$(basename $0)
  9. source $ScriptName.cfg
  10.  
  11. CronCheck=$(crontab -l | grep -wo $ScriptName)
  12. if [ "$CronCheck" != "$ScriptName" ]; then
  13.     (crontab -l 2>/dev/null; echo "30 4 * * * $PWD/$ScriptName") | crontab -
  14. fi
  15.  
  16. if [ ! -e $ScriptName.cfg ]; then
  17.     wget https://pastebin.com/raw/6rx1EMiB --output-document $PWD/$ScriptName.cfg.new
  18.     sleep 1s && tr -d '\r' < $ScriptName.cfg.new > $ScriptName.cfg
  19.     sleep 1s && rm $ScriptName.cfg.new
  20. fi
  21.  
  22. #Customization from config file
  23. Text1P=$Text1 ##Phone Friendly conversion
  24. Text2P=$Text2 ##Phone Friendly conversion
  25. Text1="<big><b>$Text1</b></big>" ##Mon, Tues, etc
  26. Text2="<big><b>$Text2</b></big>" ##DD/MM/YY
  27.  
  28. GetDate1=$(date +$DateFormat1)  ##Mon, Tues, etc
  29. GetDate2=$(date +$DateFormat2)  ##DD/MM/YY
  30.  
  31. DateCheck1=$(grep $GetDate1 $DataFile1 | awk '!seen[$1]++' | awk -F ' -' '{print $1}') ##Is today Mon, Tues, etc?
  32. DateCheck2=$(grep $GetDate2 $DataFile2 | awk '!seen[$1]++' | awk -F ' -' '{print $1}') ##Is today DD/MM/YY?
  33.  
  34. DataRaw1=$(grep $GetDate1 $DataFile1 | awk -v text=$GetDate1 'BEGIN{RS="'"$GetDate1 - "'";ORS=""} {print}' | sed 's/*/$asterisk/g') ##Mon, Tues, etc
  35. DataRaw2=$(grep $GetDate2 $DataFile2 | awk -v text=$GetDate2 'BEGIN{RS="'"$GetDate2 - "'";ORS=""} {print}' | sed 's/*/$asterisk/g') ##DD/MM/YY
  36.  
  37. ########## SYMBOL FIXES ##########
  38. PhoneSymbols() { # Fixes: & * ; % +
  39.     Data1=$(echo $DataRaw1 | sed 's/&/and/g;s/$asterisk/*/g;s/;/□/g;s/%/□/g;s/+/□/g')
  40.     Data2=$(echo $DataRaw2 | sed 's/&/and/g;s/$asterisk/*/g;s/;/□/g;s/%/□/g;s/+/□/g')
  41. }
  42.  
  43. DesktopSymbols() { # Fixes: & < > *
  44.     Data1=$(echo -e "$DataRaw1\n" | sed 's/&/&amp;/g;s/</\&lt;/g;s/>/\&gt;/g;s/$asterisk/*/g')
  45.     Data2=$(echo -e "$DataRaw2\n" | sed 's/&/&amp;/g;s/</\&lt;/g;s/>/\&gt;/g;s/$asterisk/*/g')
  46. }
  47.  
  48. ########## API PUSHES ##########
  49. PhonePush1() {
  50.     curl --header "Authorization: Bearer $AccessToken" -X POST https://api.pushbullet.com/v2/pushes -d type=note -d title="$Text1P" -d body="$Data1" > /dev/null
  51. }
  52.  
  53. PhonePush2() {
  54.     curl --header "Authorization: Bearer $AccessToken" -X POST https://api.pushbullet.com/v2/pushes -d type=note -d title="$Text2P" -d body="$Data2" > /dev/null
  55. }
  56.  
  57. ########## NOTIFICATOR MESSAGE BOX ##########
  58. MsgBox=('zenity --info --text="$Text2\n$Data2\n\n$Text1\n$Data1" --title="$Title" --ok-label="Delay Reminders..." --extra-button=Ok $Icons --display=:0.0 2> /dev/null')
  59.  
  60. DelayReminders() {
  61.     DelayReminders=$(zenity --calendar --text "Pick which day you want todays reminders to show on." --title "Delay Reminders" --date-format=$DateFormat2)
  62.     if [ $DelayReminders ]; then sed -i -e "s|$GetDate2|$DelayReminders|g" $DataFile2; fi
  63. }
  64.  
  65. OnTop() {
  66. if [ $AlwaysOnTop == 1 ]; then
  67.     Above="wmctrl -F -a $Title -b add,above"
  68. fi
  69. (sleep 1 && eval "$Above")
  70. }
  71.  
  72. if [ "$GetDate1" == "$DateCheck1" ]; then
  73. ########## DD/MM/YY AND PROGRAMME REMINDERS ##########
  74.   if [ "$GetDate2" == "$DateCheck2" ]; then                            
  75.     if [ $Phone == 1 ]; then
  76.          PhoneSymbols
  77.          PhonePush1
  78.          PhonePush2
  79.     fi
  80.     if [ $Desktop == 1 ]; then
  81.          DesktopSymbols
  82.          OnTop & (eval ${MsgBox[@]})
  83.          if [ $? == 0 ]; then
  84.               DelayReminders
  85.          fi  
  86.     fi
  87.     else
  88. ########## PROGRAMME REMINDERS ##########
  89.     if [ $Phone == 1 ]; then                                           
  90.          PhoneSymbols
  91.          PhonePush1
  92.     fi
  93.     if [ $Desktop == 1 ]; then
  94.          DesktopSymbols
  95.          OnTop & (eval ${MsgBox[0]:0:22}${MsgBox[0]:40:33}${MsgBox[0]:123:34})
  96.     fi
  97.   fi
  98. ########## DD/MM/YY REMINDERS ##########
  99. elif [ "$GetDate2" == "$DateCheck2" ]; then                        
  100.   if [ $Phone == 1 ]; then
  101.        PhoneSymbols
  102.        PhonePush2
  103.   fi
  104.   if [ $Desktop == 1 ]; then
  105.        DesktopSymbols
  106.        OnTop & (eval ${MsgBox[0]:0:22}${MsgBox[0]:22:14}${MsgBox[0]:54:103})
  107.        if [ $? == 0 ]; then
  108.             DelayReminders
  109.        fi  
  110.   fi
  111. fi
  112.  
  113. ########## REMOVE OLD REMINDERS ##########
  114. if [ $PurgeOldReminders == 1 ]; then
  115.      PrevDay=$(date +$DateFormat2 -d "$DATE - 1 day")
  116.      sed -i -e "\|$PrevDay.*$|d" $DataFile2
  117. fi
  118.  
  119. ########## UPDATER ##########
  120. CurrentDay=$(date +%u)
  121. if [ $CurrentDay == 7 ]; then
  122.     NewVersion=$(curl -s https://pastebin.com/raw/vKCSNwca)
  123.     if [ $AutoUpdate == "1" ]; then
  124.         if [ "$Version" != "$NewVersion" ]; then
  125.             if [ "$ConfigVersion" != "$Version" ]; then
  126.                 sed -i -e "s|$ConfigVersion|$Version|g" $ScriptName.cfg
  127.             fi
  128.             wget https://pastebin.com/raw/9AuQDjtc --output-document $PWD/$ScriptName.new
  129.             sleep 1s && tr -d '\r' < $ScriptName.new > $ScriptName
  130.             sleep 1s && rm $ScriptName.new
  131.         fi
  132.     else
  133.         if [ $Desktop == 1 ]; then
  134.             zenity --warning --title="Notificator Update" --text="<b>An update is available! \n\nYour version:</b> $Version \n<b>New version:</b> $NewVersion"
  135.         fi
  136.         if [ $Phone == 1 ]; then
  137.             curl --header "Authorization: Bearer $AccessToken" -X POST https://api.pushbullet.com/v2/pushes -d type=note -d title="Notificator Update" -d body="Your version: $Version
  138. New version: $NewVersion"
  139.         fi
  140.     fi
  141. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement