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

Last change on this file was 5102, checked in by jrpelegrina, 3 years ago

Updated changelog. Fix some bugs in helpers

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