-
-
Save arulrajnet/fb71169c35180f9d9abd to your computer and use it in GitHub Desktop.
#/bin/bash | |
# Shell script to get a Live cricket score from www.espncricinfo.com | |
# To help Cricket fan DevOPS see the score on his Terminal. | |
# Thanks to ESPN SPORTS MEDIA LTD for their RSS feed. | |
# | |
# Author : Arul <mailto:[email protected]> | |
function get_html() { | |
local html=$(curl -k -L -s $1) | |
echo "$html" | |
} | |
function get_score() { | |
while true; | |
do | |
get_html $1 | grep -oP '(?<=<title>).*?(?=</title>)' | |
sleep 1m; | |
done; | |
} | |
function list_live_matches() { | |
local live_rss=http://static.cricinfo.com/rss/livescores.xml | |
local rss_content=$(get_html $live_rss) | |
local rss_file_name="cricinfo_livescores.xml" | |
echo "$rss_content" > $rss_file_name | |
no_of_matches=$(xmllint --xpath 'count(/rss/channel/item)' $rss_file_name) | |
echo "Live Cricket Matches" | |
echo "--------------------" | |
for ((i = 1; i <= no_of_matches; i++)); do | |
title=$(xmllint --xpath '/rss/channel/item['$i']/title/text()' $rss_file_name) | |
echo "$i: $title" | |
done | |
echo -n "Enter the match number : " | |
read number | |
if is_integer $number; then | |
selected_title=$(xmllint --xpath '/rss/channel/item['$number']/title/text()' $rss_file_name 2>/dev/null) | |
if [[ -z $selected_title ]]; then | |
echo "Please give correct match number"; | |
rm -f $rss_file_name; | |
exit 1 | |
else | |
echo "Selected Match is : $selected_title" | |
match_link=$(xmllint --xpath '/rss/channel/item['$number']/link/text()' $rss_file_name) | |
rm -f $rss_file_name | |
get_score $match_link | |
fi | |
else | |
echo "Please give number" | |
rm -f $rss_file_name | |
exit 1 | |
fi | |
rm -f $rss_file_name | |
} | |
function is_integer() { | |
printf "%d" $1 > /dev/null 2>&1 | |
return $? | |
} | |
function main() { | |
if [[ -z $1 ]]; then | |
list_live_matches | |
else | |
get_score $1 | |
fi | |
} | |
main $* |
not working on 16.04, @ravindragullapalli you got any solution ?
@ravindragullapalli @siddharthsharmahy you have to install libxml2-utils and curl.
apt-get update
apt-get install curl libxml2-utils -y
amazing work @arulrajnet cheers.
if you are using this script on Android device via Termux
you need to install curl & libxml2-utils
- Curl
pkg install curl
- libxml2-utils
pkg install libxml2-utils
its Fixed by adding grep
Package
pkg install grep
How can I get a notif whenever the score changes using this script ?
Is this still working?
@arulrajnet - When I try to execute I am getting this error -
livecricketscore.sh: 8: Syntax error: "(" unexpected
I tried to install curl by this cmd - Sudo apt-get install curl libxml2-utils -y
but I got this below the message.
Reading package lists... Done
Building dependency tree
Reading state information... Done
curl is already the newest version (7.65.3-1ubuntu3).
libxml2-utils is already the newest version (2.9.4+dfsg1-7ubuntu3).
0 upgraded, 0 newly installed, 0 to remove and 35 not upgraded
On mac, changing
get_html $1 | grep -oe '(?<=<title>).*?(?=</title>)'
with
get_html $1 | perl -nle'print if m{(?<=<title>).*?(?=</title>)}' | sed -ne 's/<title>//;s/ - Live -.*//p'
worked!
On mac, changing
get_html $1 | grep -oe '(?<=<title>).*?(?=</title>)'
with
get_html $1 | perl -nle'print if m{(?<=<title>).*?(?=</title>)}' | sed -ne 's/<title>//;s/ - Live -.*//p'
worked!
This method not working in ubuntu 19.10 :(
Tested with Ubuntu 18.04.3 LTS
working as expected.
Tested in docker version of ubuntu:19.10 . There also its working.
@menporulporiayalan Did you ran from bash shell?
@arulrajnet. Yes, I ran from the bash shell.
@arulrajnet. It is working, Thanks!
Getting this error - /usr/bin/livecricketscore: 8: /usr/bin/livecricketscore: Syntax error: "(" unexpected