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

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

WIP in fix some bugs in zero-center

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