PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Download in C



Tetsuo
28-06-2006, 18:43
Hallo.
Ich hab folgendes Problem.
Wir haben eine Datei (z.B. http://www.blahblub123.com/test.zip).
Die Datei wird aber oft geändert und möchte sie in einem einstellbaren Abstand herunterladen lassen. Der Name der Datei soll dabei einfach durchnummeriert werden also die alten Dateien belassen werden.
Ich habe bisher kein Programm gefunden das es wirklich kann. Also muss ich wohl selbst eins basteln. Habs auch schon mit einer batch versucht aber nicht hinbekommen (wenn es geht würde es 100% reichen!).
Jetzt zu C. In meinem tollen Buch steht alles drin nur nicht wie man Dateien downloaden kann in C. Wäre nett wenn mir einer den Code dafür erklären könnte.
Danke schonmal!

Boron
28-06-2006, 18:50
Entweder du bis echt scharf aufs Programmieren, oder du nutzt einfach wget zum Download.
Das kannst du problemlos aus jeder Art Skript aufrufen.
Das Skript kann sich dann auch um die Numerierung der Dateinamen kümmern.

peschmae
28-06-2006, 21:21
Ich hab z.B. so ein ähnliches Script um regelmässig Backups der Kommentare und Ordnung zu meinen Fotos zu machen.

Das sieht etwa so aus (ohne Wget - ist ja lokal - aber das durchnumerieren ist da - als Gedankenanstoss):


#!/bin/bash

mkdir -f backupcomments
NAME=$HOME/fotos/backupcomments/gthumb-settings.tar.bz2

tar cfvj $NAME /home/simon/.gnome2/gthumb

if [ "$(md5sum $NAME | awk '{ print $1}')" != "$(md5sum $NAME.0 | awk '{ print $1}')" ]; then
for ((i = 99; i >= 0; i--)); do
if [ -e $NAME.$i ]; then
mv $NAME.$i $NAME.$(expr $i + 1)
fi
done
mv $NAME $NAME.0
fi


Da wird jeweils ein neues Archiv erstellt und wenn sich nichts geändert hat (md5sum ist dieselbe) passiert nix. Ist die md5sum verschieden wird bei allen existierenden Dateien die Dateierweiterung um +1 erhöht und eine gthumb-settings.tar.bz2.0 wird neu erstellt.

Ok, sehe gerade du schreibst was von Bat - dann bist du wohl Windowsnutzer. In dem Fall hilft dir ein Bashscript natürlich nicht soo extrem weiter ;)
Es sei denn du installierst dir ne Bash auf deinem Windows - ist natürlich auch eine Möglichkeit :)


MfG Peschmä

Tetsuo
29-06-2006, 09:26
Erstmal danke für die Antworten.
Jo also wget ist nicht schlecht. Aber bisher habe ich kein Script gefunden das ich gebrauchen kann und selber basteln habe ich auch nicht drauf :(
Vielleicht kann mir da einer weiterhelfen.

Es muss nur das können:
Datei von URL laden.
Alle x Sekunden x Minuten wiederholen.
Dateien durchnummerieren.

Wär echt super wenn mir einer helfen könnte.
(Vielleicht kann man den/ das Thread auch verschieben weil soviel hat es nicht mehr mit C/C++ zu tun)

mcspam
29-06-2006, 12:36
Hallo Tetsuo,

ich denke dass libwww (http://www.w3.org/Library/) ist, was du suchst.
aber ich würde das wahrscheinlich eher mit einem Skript realisieren. Also Perl ;)
Dafür gibt es ein schönes libwww Modul LWP::Simple (http://search.cpan.org/~gaas/libwww-perl-5.805/lib/LWP/Simple.pm).
Das regelmäßige Abfragen und Durchnummerieren dürfte ja eh kein Problem sein, oder? :P

Gruß

quinte17
29-06-2006, 13:13
das regelmäßige abfragen würde ich den guten alten cron machen lassen.
dann brauchst du nur noch ein script, was die aktuelle datei herunterlädt und zugleich den richtigen namen hergibt..



wget http://www.google.de/intl/de_de/images/logo.gif -O `find . -type f | sort -r | head -n 1`

hier fehlt nur noch ein konstrukt nach dem head, der den zahlenanteil des dateinamens auswertet und um eins erhöt.

greetz

Joghurt
01-07-2006, 22:40
Datei von URL laden.
Alle x Sekunden x Minuten wiederholen.
Dateien durchnummerieren.
#!/bin/sh
while :; do
wget -nc http://www.blablabla.de/foo.zip
sleep 5m
doneWichtig ist "-nc"