1 | #!/bin/bash |
---|
2 | export TEXTDOMAIN="zero-center" |
---|
3 | |
---|
4 | MSG_DONWLOADED=$(gettext "is downloaded in your directory") |
---|
5 | MSG_STARTING=$(gettext "Starting to download your file") |
---|
6 | MSG_CANCELLED=$(gettext "Your dowloading has been cancelled about your file") |
---|
7 | MSG_URL_NOT_EXISTS=$(gettext "Your URL don't exists, imposible to download the file") |
---|
8 | MSG_BUTTON_OK=$(gettext "OK") |
---|
9 | MSG_BUTTON_CANCEL=$(gettext "Cancel") |
---|
10 | MSG_DONWLOADING=$(gettext "Downloading") |
---|
11 | MSG_FROM=$(gettext "from") |
---|
12 | MSG_AT=$(gettext "at") |
---|
13 | MSG_IN=$(gettext "in") |
---|
14 | MSG_EXISTS_FILE=$(gettext "exists, you have to delete it before if you want to download it again") |
---|
15 | MSG_CHECKING=$(gettext "Cheking net parameters to download ") |
---|
16 | MSG_KEEP_CALM=$(gettext "please keep calm......... ") |
---|
17 | |
---|
18 | ZEN_BUTTON_OK="--ok-label=$MSG_BUTTON_OK" |
---|
19 | ZEN_BUTTON_CANCEL_OK="--cancel-label=$MSG_BUTTON_CANCEL $ZEN_BUTTON_OK" |
---|
20 | |
---|
21 | |
---|
22 | NAME_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 | |
---|
191 | helper "$1" |
---|
192 | namefile "$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 |
---|
195 | check_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 | |
---|
198 | mainwget "$1" "$2" "$NAME_FILE" |
---|
199 | |
---|
200 | |
---|
201 | exit 0 |
---|