[Xfce4-commits] [panel-plugins/xfce4-genmon-plugin] 01/01: Add twit (Twitter Timeline Notifier) script

noreply at xfce.org noreply at xfce.org
Sun Mar 5 20:36:21 CET 2017


This is an automated email from the git hooks/post-receive script.

ToZ pushed a commit to branch master
in repository panel-plugins/xfce4-genmon-plugin.

commit d8258a0b59452cf96e9ff1ea7c1c78984cc0c711
Author: ToZ <tony.paulic at gmail.com>
Date:   Sun Mar 5 14:36:02 2017 -0500

    Add twit (Twitter Timeline Notifier) script
---
 scripts/twit | 193 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 193 insertions(+)

diff --git a/scripts/twit b/scripts/twit
new file mode 100755
index 0000000..3664973
--- /dev/null
+++ b/scripts/twit
@@ -0,0 +1,193 @@
+#!/bin/bash
+#   Twitter Timeline Notifier with tooltip tweet display
+#     - will send notification of all new tweets 
+#     - tooltip will show new and (optionally) recent tweets to a max of NUM_TOOLTIP_TWEETS
+#     - plugin will change icon if new tweets detected
+#     - clicking on plugin will: 
+#        option 1: execute configurable command
+#        option 2: display the saved recent tweets timeline
+#        option 3: compose and send a tweet (untested)
+#   
+#   Requires:  xfce4-genmon
+#              t (https://github.com/sferik/t/blob/master/README.md)
+#              yad
+#
+#  NOTE: you must set up t (command line twitter client) properly for this script to work. 
+#        Instructions in link above.
+#
+#   xfce4-genmon-plugin properties:
+#       Command = path to and name of this script
+#       Label = optional label before icon (better unchecked)
+#       Period = Time in seconds to check for new tweets (to run this script)
+#       Default Font = (your choice)
+#
+##############################################
+### configurable parameters
+
+  # debug mode (logged to /tmp/twit-log if set to 1)
+DEBUG=0
+
+  # location of t
+TWIT_CMD="/home/toz/.gem/ruby/2.4.0/bin/t"
+
+  # number of tweets to show in tooltip
+NUM_TOOLTIP_TWEETS=12
+
+  # have tooltip display new tweets only (1=yes, 0=also display recents tweets)
+TOOLTIP_NEW_TWEETS_ONLY=1
+
+  # icons
+NOTWEETS="/home/toz/.icons/t1.png"
+NEWTWEETS="/home/toz/.icons/t2.png"
+
+  # notify-send icon
+NOTIFICATION_ICON="/home/toz/.icons/twitter.svg"
+
+  # On-click action (what to do when plugin icon is clicked)
+  #
+  # 1. Run a program (open twitter in browser window)
+#CLICK_ACTION="xdg-open https://www.twitter.com"
+
+  # 2. display list of recent tweets in yad dialog
+cat /tmp/.twit-all | awk '{ printf("%s %- 16s", $4, $5); out=$6; for(i=7;i<=NF;i++){out=out" "$i}; print out}' > /tmp/.twit-all-output
+CLICK_ACTION="yad --title Recent\ Twitter\ Timeline --center --width=1200 --height=500 --text-info --show-uri --filename=/tmp/.twit-all-output"
+
+  # 3. compose a new tweet (untested)
+#TWEET=$(yad --title "Compose a new message..." --height=200 --width=300 --text-info --editable --wrap)
+#CLICK_ACTION="t update '$TWEET'"
+
+##############################################
+
+##############################################
+# don't change anything below
+##############################################
+
+# get last processed ID and timeline
+if [ -s /tmp/.lastid ]
+then
+   LASTID=$(cat /tmp/.lastid)
+   $TWIT_CMD timeline -lr -s $LASTID > /tmp/.twit
+else
+   $TWIT_CMD timeline -lr > /tmp/.twit
+fi
+               [ $DEBUG -eq 1 ] && echo "01 .lastid=$(cat /tmp/.lastid)" > /tmp/twit-log
+               [ $DEBUG -eq 1 ] && echo "02 LASTID=$LASTID" >> /tmp/twit-log
+
+sleep 1
+
+# save the last processed ID
+cat /tmp/.twit | tail -1 | awk '{print $1}' > /tmp/.lastid
+if [ ! -s /tmp/.lastid ] 
+then
+   echo $LASTID > /tmp/.lastid
+fi
+               [ $DEBUG -eq 1 ] && echo "03 new.lastid=$(cat /tmp/.lastid)" >> /tmp/twit-log
+
+# get number of new tweets
+num_tweets=$(cat /tmp/.twit | wc -l)
+               [ $DEBUG -eq 1 ] && echo "04 num_tweets=$num_tweets" >> /tmp/twit-log
+
+# get the contents of the new tweets
+mapfile -t ids < <(awk '{print $1}' /tmp/.twit)
+mapfile -t from < <(awk '{print $5}' /tmp/.twit)
+mapfile -t text < <(awk '{for(i=6;i<=NF;i++){printf "%s ", $i}; printf "\n"}' /tmp/.twit)
+toolstr=$(for (( i=0; i<$num_tweets; i++ )); do echo "${from[i]} >> ${text[i]}";  echo ""; done)
+               [ $DEBUG -eq 1 ] && echo "05 toolstr=$toolstr" >> /tmp/twit-log
+
+##### set default plugin icon file and notify of new tweets
+#set default icon file to no new emails
+ICON_FILE="$NOTWEETS"
+               [ $DEBUG -eq 1 ] && echo "06 ICON_FILE=$ICON_FILE" >> /tmp/twit-log
+
+if [ $num_tweets -gt 0 ]; then
+               [ $DEBUG -eq 1 ] && echo "07 num_tweets > 0" >> /tmp/twit-log
+    # set icon file to new emails image
+    ICON_FILE="$NEWTWEETS"
+               [ $DEBUG -eq 1 ] && echo "08 ICON_FILE=$ICON_FILE" >> /tmp/twit-log
+    for (( i=0; i<$num_tweets; i++ ))
+    do 
+               [ $DEBUG -eq 1 ] && echo "09 sending notification" >> /tmp/twit-log    
+      notify-send -i "$NOTIFICATION_ICON" "$(echo ${from[i]} | sed -r 's/[&]+/&/g')" "$(echo ${text[i]} | sed -r 's/[&]+/&/g')"
+    done
+fi
+
+# append current to the all file
+cat /tmp/.twit /tmp/.twit-all > /tmp/.twit-tmp && mv /tmp/.twit-tmp /tmp/.twit-all
+
+# get last checked time stamp
+last_checked=$(date)
+
+# prepare tooltip string (to show last NUM_TOOLTIP_TWEETS)
+if [ -s /tmp/.twit-all ]
+then
+   mapfile -t from2 < <(awk '{print $5}' /tmp/.twit-all)
+   mapfile -t text2 < <(awk '{for(i=6;i<=NF;i++){printf "%s ", $i}; printf "\n"}' /tmp/.twit-all)
+   toolstr2=$(for (( i=$num_tweets; i<$NUM_TOOLTIP_TWEETS; i++ )); do if [ "${from2[i]}" != "" ]; then echo "${from2[i]} >> ${text2[i]}";  echo ""; fi; done)
+fi 
+               [ $DEBUG -eq 1 ] && echo "10 toolstr2=$toolstr2" >> /tmp/twit-log  
+
+##### do the genmon
+if [ $TOOLTIP_NEW_TWEETS_ONLY -eq 0 ]
+then
+
+if [ $num_tweets -gt 0 ]
+then
+                 [ $DEBUG -eq 1 ] && echo "11 genmon:num_tweets > 0" >> /tmp/twit-log
+
+echo "<img>$ICON_FILE</img>
+<click>$CLICK_ACTION</click>
+<tool>New tweets:
+
+$toolstr
+
+Recent tweets:
+    
+$toolstr2
+
+Last checked: $last_checked</tool>"
+
+else
+               [ $DEBUG -eq 1 ] && echo "12 genmon:num_tweets = 0" >> /tmp/twit-log
+
+echo "<img>$ICON_FILE</img>
+<click>$CLICK_ACTION</click>
+<tool>Recent tweets:
+    
+$toolstr2
+
+Last checked: $last_checked</tool>"
+
+fi
+
+else
+   
+if [ $num_tweets -gt 0 ]
+then
+                 [ $DEBUG -eq 1 ] && echo "11 genmon:num_tweets > 0" >> /tmp/twit-log
+
+echo "<img>$ICON_FILE</img>
+<click>$CLICK_ACTION</click>
+<tool>New tweets:
+
+$toolstr
+
+Last checked: $last_checked</tool>"
+
+else
+               [ $DEBUG -eq 1 ] && echo "12 genmon:num_tweets = 0" >> /tmp/twit-log
+
+echo "<img>$ICON_FILE</img>
+<click>$CLICK_ACTION</click>
+<tool>No new tweets.
+
+Last checked: $last_checked</tool>"
+
+fi
+   
+fi      
+
+               [ $DEBUG -eq 1 ] && echo "13 $(date)" >> /tmp/twit-log
+
+unset ids from text from2 text2
+exit 0
+

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list