source: zero-center/trunk/fuentes/install-files/usr/bin/zero-lliurex-wget @ 2108

Last change on this file since 2108 was 2108, checked in by Juanma, 4 years ago

WIP on notifications and installation results

  • Property svn:executable set to *
File size: 7.1 KB
Line 
1#!/bin/bash
2export TEXTDOMAIN="zero-center"
3
4MSG_DONWLOADED=$(gettext "is downloaded in your directory")
5MSG_STARTING=$(gettext "Starting to download your file")
6MSG_CANCELLED=$(gettext "Your dowloading has been cancelled about your file")
7MSG_URL_NOT_EXISTS=$(gettext "Your URL don't exists, imposible to download the file")
8
9NAME_FILE=""
10
11                function helper {
12                if [ $1 = "--help" ] || [ $1 = "-h" ]; then
13                        echo
14                        echo "----ZERO-DOWNLOADED-HELPER----"
15                        echo
16                        echo "zero-lliurex-wget <arg1> <arg2> <arg3>"
17                        echo
18                        echo "arg1: Is the URL from you download the file, with the file"
19                        echo "arg2: Is the directory to save the file."
20                        echo "arg3: It is an optional argument, you can define the name for the untested downloads"
21                        echo
22                        echo "If arg2 is blank you can restore the download when you want, and the directory to save it, it will be the actually."
23                        echo "--------------------------------------------"
24                        echo
25                        echo "example: zero-lliurex-wget http://sourceforge.net/projects/arasuite/files/arasuite_unix_2.1.sh /tmp/borrame"
26                        echo
27                        exit 1
28                fi                     
29        }
30       
31
32        #Averiguamos el nombre del fichero a descargar.
33        function namefile {
34                        #OBTENGO EL NOMBRE DEL FICHERO A DESCARGAR
35                        if [ "$3" == "" ]; then
36                                NAME_FILE=$(echo $1 | rev | cut -d "/" -f1 | rev)
37                        else
38                                NAME_FILE="$3"
39                        fi
40       
41        }
42
43        function check_parameters {
44                #Compruebo que el directorio existe
45                [ -d $2 ] || mkdir -p $2
46                #Compruebo que la direccion existe
47               
48                if  wget --spider -o /tmp/axel.log "$1"; then
49                        #Si esta instruccion funciona sigo comprobando cosas
50                        #Si el fichero ya estaba descargado no puedo descargarlo de nuevo, antes he de borrarlo
51                        TEMP_FILE="$2"/"$NAME_FILE"
52                        [ $(rm "$TEMP_FILE") ] || echo "Continue..."
53                        if [ -f "$2"/"$NAME_FILE" ] ; then
54                                echo "$2/$NAME_FILE exists, you have to delete it before if you want to download it again"
55                                zenity --error --text "$2/$NAME_FILE exists, you have to delete it before if you want to download it again"
56                                exit 1
57                        else
58                                #Todo es correcto no existe el fichero y si existe la URL puedo descargarlo
59                                echo ""
60                                echo "URL exists, downloading......."
61                                if [ -f "/tmp/axel.log" ]; then
62                                        rm /tmp/axel.log -rf
63                                fi
64                        fi
65                       
66                else
67                        echo ""
68                        echo "URL does not exist: $1"
69                        echo "Please check it."
70                        echo ""
71                        zenity --error --text "$MSG_URL_NOT_EXISTS"
72                        if [ -f "/tmp/axel.log" ]; then
73                                rm /tmp/axel.log -rf
74                        fi
75                        exit 1
76                fi
77        }
78
79
80
81        function main {
82               
83                #Creamos un fichero que nos servirá de ayuda para escribir y leer el tanto por cien del fichero descargado
84                touch /tmp/axel.log
85                #En segundo plano realizaremos la descaraga del fichero almacenando su salida en nuestro log, eliminando ést al termianr la descarga
86                (axel -o "$2" "$1" > /tmp/axel.log; if [ -f "/tmp/axel.log" ]; then rm /tmp/axel.log; fi) &
87
88                #Mientras que el fichero de ayuda existe es que estamos descargando
89                #Cuando y ano exista saldremos del while
90                rc=0
91                        while [ -f  "/tmp/axel.log" ]; do
92                                #En la variable PERCENT almacenamos el tanto por cien que llevamos de descarga
93                                #accediento a la ultima linea escrita en el fichero de ayuda y seleccionando solo el dato que necesitamos.
94                                PERCENT=$( tail -1 /tmp/axel.log  2>/dev/null  | grep % | sed 's/[^0-9.]*\([0-9.]*\).*/\1/' )
95                                #Hacemos echo de los datos que necesita el zenity
96                                echo "#Downloading $3 in $2 ...................$PERCENT%"
97                                echo "$PERCENT"
98                                #por ultimo entubamos la salida al zenity progress para que nos muestre el resultado en pantalla
99                        done | zenity --progress percentage=0 --auto-close --width 550 --title="Zero-Downloader-Helper"  > /dev/null 2>&1  || rc=1
100                       
101                        #Si se presiono cancel en la descarga matamos los procesos para finiquitarla
102                       
103                        if [ ${rc} -eq 1 ] ; then
104                               
105                                #Borramos el axel.log
106                                if [ -f "/tmp/axel.log" ]; then
107                                        rm /tmp/axel.log -rf
108                                fi
109                                #CREAMOS UNA LISTA CON LOS PID NECESARIOS Y LOS FINALIZAMOS
110                                LISTA=( $( ps -aux | grep axel | grep $1 | grep -v zero | awk '{print $2}') )
111                                #echo "The package list is....."
112                                #Comento el echo que muestra la lista
113                                #echo ${LISTA[@]}
114                                        for i in "${LISTA[@]}"; do
115                                                #echo "You cancel zero-lliurex-axel process with PID $i"
116                                                kill $i > /dev/null 2>&1
117                                        done
118                        rm $2/$NAME_FILE*
119                        notify-send -t 5000 -u normal -i /usr/share/icons/lliurex-neu/scalable/apps/zero-center.svg "Zero-Downloader-Helper" "$MSG_CANCELLED $NAME_FILE"
120                        echo "Your downloading file $1 has been cancelled"
121                        echo ""
122                        exit 1
123                        fi
124                notify-send -t 5000 -u normal -i /usr/share/icons/lliurex-neu/scalable/apps/zero-center.svg "Zero-Downloader-Helper" "$NAME_FILE $MSG_DONWLOADED $2"
125                echo "File $1 is downloaded in $2"
126        }
127       
128       
129       
130        function mainwget {
131                #Arg1: La URL del fichero a descargar
132                #Arg2: PATH de descarga del fichero
133                #Arg3: Nombre del fichero una vez descargado.
134                       
135                #Me aseguro que el nombre del fichero a descargar no es muy largo
136                NAME=$(echo "$3" | cut -c1-35)
137               
138                #variable que nos indica que se cancela o no la descarga del proceso
139                rc=0
140               
141                #intruccion de descarga del fichero:           
142                # wget outputs progress messages that look like this:
143                #      0K .......... .......... .......... .......... ..........  0%  823K 40s
144                # This function replaces each such line with the pair of lines
145                # 0%
146                # # Downloading... 823K (40s)
147                # It uses minimal buffering, so each line is output immediately
148                # and the user can watch progress as it happens.
149                # Old instruction:
150                #( wget -O "$2"/"$3" "$1" 2>&1 | grep --line-buffered -o "[0-9]*%" | sed  -u -e 's/.* \([0-9]\+%\)\ \+\([0-9.]\+.\) \(.*\)/\1\n# Downloaded \1\ from "'$NAME'"  at \2\/s, ETA \3/' | zenity  --progress percentage=0 --auto-close --auto-kill --width 600 --title="Zero-Downloader-Helper" > /dev/null 2>&1  )|| rc=1
151                ( wget -O "$2"/"$3" "$1" 2>&1 |  sed -u 's/.*\ \([0-9]\+\)%\ \+\(.*\)$/\1\n#Downloaded \1\% from "'$NAME'" at \2/' | zenity  --progress percentage=0 --auto-close --auto-kill --width 600 --title="Zero-Downloader-Helper" --text="$MSG_STARTING '$NAME' in '$2'........." > /dev/null 2>&1  )|| rc=1
152
153                #Esta parte cancela el proceso del wget si se cancela la descarga en el zenity.
154               
155                        if [ ${rc} -eq 1 ] ; then
156                               
157                                #CREAMOS UNA LISTA CON LOS PID NECESARIOS Y LOS FINALIZAMOS
158                                LISTA=( $( ps -aux | grep wget | grep $1 |  awk '{print $2}') )
159                                #echo "The package list is....."
160                                #Comento el echo que muestra la lista
161                                #echo ${LISTA[@]}
162                                        for i in "${LISTA[@]}"; do
163                                                #echo "You cancel zero-lliurex-axel process with PID $i"
164                                                kill $i > /dev/null 2>&1
165                                               
166                                        done
167                        rm "$2"/"$3"*
168                        notify-send -t 5000 -u normal -i /usr/share/icons/lliurex-neu/scalable/apps/zero-center.svg "Zero-Downloader-Helper" "$MSG_CANCELLED $1"
169                        echo "Your downloading file $1 has been cancelled"
170                        echo ""
171                        exit 1
172                        fi
173                notify-send -t 5000 -u normal -i /usr/share/icons/lliurex-neu/scalable/apps/zero-center.svg "Zero-Downloader-Helper" "$1 $MSG_DONWLOADED $2"
174                echo "File $3 is downloaded in $2"
175        }
176
177
178helper "$1"
179namefile "$1" "$2" "$3"
180
181check_parameters "$1" "$2" | zenity --progress --title="ZERO-CENTER-WGET" --pulsate --text="Cheking net parameters to download $NAME_FILE, please keep calm........." --auto-close --auto-kill --width 600 --no-cancel
182
183mainwget "$1" "$2" "$NAME_FILE"
184
185
186exit 0
Note: See TracBrowser for help on using the repository browser.