|
You last visited: Today at 11:21
Advertisement
InetGet passt ned richtig ?!
Discussion on InetGet passt ned richtig ?! within the AutoIt forum part of the Coders Den category.
09/02/2012, 20:06
|
#1
|
elite*gold: 100
Join Date: Feb 2012
Posts: 2,341
Received Thanks: 207
|
InetGet passt ned richtig ?!
Huhu,
Code:
$download = InputBox ("AdminPanal", "Was wollen sie downloaden?")
If $download = "testdatei1.txt" Then
InetGet ( "https://rapidshare.com/files/47496018/testdatei1.txt", "testdatei1.txt" )
EndIf
Hier in der .txt sollte eigentlich testdatei1 drinne stehen, aber wenn man die Datei durch das Script runterlädt, dann steht das hier in der .txt.
Quote:
|
<script type="text/javascript">location="https://rapidshare.com/#!download|366p1|47496018|testdatei1.txt|0|0|0";</script>
|
Warum & wie kann ich das beheben ?
|
|
|
09/02/2012, 20:57
|
#2
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by xKnixXeD
Huhu,
Code:
$download = InputBox ("AdminPanal", "Was wollen sie downloaden?")
If $download = "testdatei1.txt" Then
InetGet ( "https://rapidshare.com/files/47496018/testdatei1.txt", "testdatei1.txt" )
EndIf
Hier in der .txt sollte eigentlich testdatei1 drinne stehen, aber wenn man die Datei durch das Script runterlädt, dann steht das hier in der .txt.
Warum & wie kann ich das beheben ?
|
rapidshare bietet keine direkt downloads an...
|
|
|
09/02/2012, 21:00
|
#3
|
elite*gold: 100
Join Date: Feb 2012
Posts: 2,341
Received Thanks: 207
|
Achsooo.. o.O
Welche Seite bietet das denn zb an ?
|
|
|
09/02/2012, 21:36
|
#4
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by xKnixXeD
Achsooo.. o.O
Welche Seite bietet das denn zb an ?
|
jeder beliebige webspace...
alle one-click-hoster haben die eigenschaft, das mindestens ein klick nötig ist, zum downloaden/uploaden
|
|
|
09/02/2012, 23:47
|
#5
|
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
|
Du kannst dir einen Webspace, wie zum Beispiel bei Kili.de, zulegen. Benutze schon seit ca. 1 Jahr meinen FTP-Server bei Kilu und kann mich nicht beklagen.
Gebe dir hier gleich mal eine Download Funktion mit. Hatte diese mal aus Langeweile gescripted. Die Funktion nennt sich _Update, weil diese eigentlich für meine Bot´s gedacht war.
Code:
;Author(s) : Logtetsch
;Functions : _Update ($szUrl, $szFilename)
;Definition : $szUrl = Downloadseite
; : $szFilename = Wie die Datei am ende heißen soll
;Fehler : 0 = keine Fehler
; : 1 = Download wurde unterbrochen. Es liegen keine Informationen vor. (Wohlmöglich stimmt die angegebene Downloadseite nicht!)
; : 2 = Download konnte nicht gestartet werden. Dateigröße konnte nicht festgestellt werden. (Wohlmöglich stimmt die angegebene Downloadseite nicht!)
#include-once
Func _Update($szUrl, $szFilename)
Local $Url = $szUrl
Local $FileName = $szFilename
Local $szFileSize = InetGetSize ($Url) / 1024 / 1024
Local $hDownload = InetGet ($Url, $FileName, 1, 1)
If $szFileSize > 0 Then
if FileExists ($FileName) Then
FileDelete ($FileName)
EndIf
ProgressOn ("Download Update", "Download: ")
While True
Local $nInfo = InetGetInfo ($hDownload)
if IsArray ($nInfo) Then
Local $nDownloadPercent = $nInfo[0] * 100 / $szFileSize
ProgressSet ($nDownloadPercent / 1000000, Round ($nInfo[0] / 1024 / 1024, 2) & " mb von " & Round ($szFileSize, 2) & " mb")
Else
ProgressOff()
Return SetError (1,"",False)
EndIf
if IsArray ($nInfo) Then
if $nInfo[2] Then
ExitLoop
EndIf
EndIf
WEnd
ProgressOff ()
MsgBox (64,"Download","Download wurde erfolgreich abgeschlossen!")
Return True
Else
Return SetError (2, "", False)
EndIf
EndFunc
Ist noch etwas ausbaufährig was die Abfragen betrifft, aber an sich sollte diese Funktion ihre Aufgabe gut erfüllen.
Achja, bevor ich noch von jemand besimmten angepöbelt werde, die Idee mit der Progressbar kam von KDeluxe´s UDF.
|
|
|
09/03/2012, 00:25
|
#6
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Die UDF habe ich nur bei deinem Scripts verwendet, sollte daher niemand kennen.
Allerdings stell ich mir schon die Frage, warum du es verschlimmbessert hast. Den Download sollte man z. B. erst nach der Prüfung der Dateigröße starten.
Code:
;=================================================================================================
; Function: _DownloadUpdate($szUrl, $szFileName)
; Parameter(s): $szUrl - URL of the file to download.
; $szFileName - Local filename to download to.
; Requirement(s): A valid download URL and filepath.
; Return Value(s): On Success - Returns true
; On Failure - Returns false
; @Error - 0 = No error.
; 1 = Invalid download URL.
; 2 = Failed to download the file.
; Author(s): KDeluxe
;=================================================================================================
Func _DownloadUpdate($szUrl, $szFileName)
$nInetFileSize = InetGetSize($szUrl)
If $nInetFileSize > 0 Then
If FileExists($szFileName) Then FileDelete($szFileName)
$nInetFileSizeMB = $nInetFileSize / 1024 / 1024
$hDownload = InetGet($szUrl, $szFileName, 1, 1)
ProgressOn("Updater", "Download: ")
While True
$aInetFileInfo = InetGetInfo($hDownload)
If $aInetFileInfo[4] Then
ProgressOff()
InetClose($hDownload)
Return SetError(2, $aInetFileInfo[4], False)
EndIf
$nPercentComplete = $aInetFileInfo[0] * 100 / $nInetFileSize
ProgressSet($nPercentComplete, Round($nPercentComplete, 2) & " % from " & Round($nInetFileSizeMB, 2) & " MB")
If $aInetFileInfo[2] Then ExitLoop
Sleep(250)
WEnd
ProgressOff()
InetClose($hDownload)
MsgBox(64, "Updater", "Download complete!")
Return SetError(0, "", True)
Else
Return SetError(1, "", False)
EndIf
EndFunc
|
|
|
09/03/2012, 07:33
|
#7
|
elite*gold: 100
Join Date: Feb 2012
Posts: 2,341
Received Thanks: 207
|
Wie kann ich es dann schaffen, das das Script Zugang erhält ?
Weil zum ftp gibts ja eig immer ein Password.. :S
|
|
|
09/03/2012, 15:58
|
#8
|
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
|
Nunja, ich hab ja deine UDF nicht 1:1 nachgescriptet, sonst hätte es ja keinen Sinn. Ich hatte selbst den Drang mir eine eigene zu coden. Allerdings kam die Idee mit der Progressbar besser. Wie ich bereits gesagt habe, kann man die Abfragen nach belieben ändern bzw. verbessern. Ob nun die Dateigröße während dem Downloaden, oder vor dem Downloaden, angezeigt wird, spielt doch letzendlich keine Rolle. Die Funktion an sich sollte klappen
Einen Zugang braucht man nicht unbedingt. Durch ein .php oder ein .html Dokument sollte es auch funktionieren.
#.html Dokument auf dem FTP Server
Code:
<Version>1.0</Version>
#.au3 Code
Code:
Global $myVersion = "0.9"
Local $Site = "http://www.ftpserver.de/Version.html"
Local $Info = BinaryToString (InetRead( $Site ))
Local $newVersion = _StringBetween ($Info, "<Version>","</Version>")
if IsArray ($newVersion) Then
if $newVersion[0] <> Then
_Update (....)
EndIf
EndIf
|
|
|
09/03/2012, 18:06
|
#9
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Die Downloadgröße wird vor dem Download in beiden Scripts nicht "angezeigt". In deinem Script wird die Abfrage schlichtweg nicht optimal genutzt. Die Zeile mit FileDelete() hat in deinem Script ebenfalls nichts zu suchen. Theoretisch könnte die Zeile dafür verantwortlich sein, dass die Datei nach dem Download sofort wieder gelöscht wird und somit nicht "weiterverarbeitet" werden kann. Wobei du die Ressourcen nie freigibst, wodurch der Zugriff zum Löschen verweigert werden kann. Eine zweimalige Abfrage für exakt das selbe (IsArray) ist ebenfalls unnötig und unperformant. "Sollte" ist nicht ausreichend.
Mal zur eigentlichen Frage zurück, in der Hilfe steht die Antwort:
Quote:
|
Originally Posted by F1-Hilfe
To use a username and password when connecting simply prefix the servername with "username:password@", e.g.
"http://myuser:  "
|
Die Versionsüberprüfung wäre auch in einer Zeile lösbar:
Code:
$LocalVersion = "1.0"
$Source = BinaryToString(InetRead("http://www.somesite.com/path/version.html"))
$CurrentVersion = _StringBetween($Source, "<version>", "</version>")
If IsArray($CurrentVersion) And $CurrentVersion[0] <> $LocalVersion Then _Update()
|
|
|
09/03/2012, 18:28
|
#10
|
elite*gold: 100
Join Date: Feb 2012
Posts: 2,341
Received Thanks: 207
|
[IMG]  [/IMG]
Läuft soweit alles, nur wenn ich die MsgBox bestätige, dann kommt die Datei einfach ned in den Ordner wo mein Script liegt.. ?!
|
|
|
09/03/2012, 23:03
|
#11
|
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
|
Nun, wie ich schon gesagt hatte, ist diese Funktion ausbaufähig. Ich zieh mich vorsichtshalber etwas zurück.
Zum eigentlichen Thema. Versuch es mal so:
Code:
$hDownload = InetGet ($url, $fileName, 1+8, 1)
While True
$szInfo = InetGetInfo ($hDownload)
if IsArray ($szInfo) And $szInfo[2] = True Then
MsgBox (64,"Download","Download wurde beendet!")
ExitLoop
EndIf
WEnd
|
|
|
09/03/2012, 23:53
|
#12
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Was man (fast) immer machen kann: @error abfragen.
Weshalb probierst du es überhaupt per FTP? Hat doch hier überhaupt keinen Nutzen.
Relativ einfach gelöst:
Code:
$SaveFile = @ScriptDir & "\Bla.txt"
$FileName = InputBox("Download", "Dateiname:", "testdatei1.txt")
If $FileName <> "" Then
For $i = 1 To 5
If $FileName = "testdatei" & $i & ".txt" Then
If FileExists($SaveFile) Then FileDelete($SaveFile)
InetGet("http://knixxed.kn.funpic.de/Dowmloader/" & $FileName, $SaveFile, 1)
If @error Then MsgBox(32, "Fehler", '"' & $FileName & '" konnte nicht heruntergeladen werden!')
MsgBox(64, "Info", '"' & $FileName & '" wurde unter' & @LF & @LF & '"' & $SaveFile & '"' & @LF & @LF & "gespeichert.")
Exit
EndIf
Next
MsgBox(32, "Fehler", '"' & $FileName & '" ist nicht auf dem Server vorhanden!')
Else
MsgBox(32, "Fehler", "Es wurde kein gültiger Dateiname angegeben!")
EndIf
|
|
|
09/04/2012, 14:38
|
#13
|
elite*gold: 100
Join Date: Feb 2012
Posts: 2,341
Received Thanks: 207
|
Quote:
Originally Posted by KDeluxe
Was man (fast) immer machen kann: @error abfragen.
Weshalb probierst du es überhaupt per FTP? Hat doch hier überhaupt keinen Nutzen.
Relativ einfach gelöst:
Code:
$SaveFile = @ScriptDir & "\Bla.txt"
$FileName = InputBox("Download", "Dateiname:", "testdatei1.txt")
If $FileName <> "" Then
For $i = 1 To 5
If $FileName = "testdatei" & $i & ".txt" Then
If FileExists($SaveFile) Then FileDelete($SaveFile)
InetGet("http://knixxed.kn.funpic.de/Dowmloader/" & $FileName, $SaveFile, 1)
If @error Then MsgBox(32, "Fehler", '"' & $FileName & '" konnte nicht heruntergeladen werden!')
MsgBox(64, "Info", '"' & $FileName & '" wurde unter' & @LF & @LF & '"' & $SaveFile & '"' & @LF & @LF & "gespeichert.")
Exit
EndIf
Next
MsgBox(32, "Fehler", '"' & $FileName & '" ist nicht auf dem Server vorhanden!')
Else
MsgBox(32, "Fehler", "Es wurde kein gültiger Dateiname angegeben!")
EndIf
|
Warum ? Weil es sone Art Selbsttest ist/war.
Meine Frage is jetzt warum man da soviel drum herum machen muss, er soll ja einfach nur die Dateien von dem ftp runterladen ?
|
|
|
09/04/2012, 17:10
|
#14
|
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
|
Muss man nicht, aber es ist angemessen. So kann man einfache Fehler vermeiden. Allerdings gilt KDeluxe´s Methode nur für die ersten fünf bzw. überhaupt nur für die Dateien, die den Namen "testdatei" entsprechen. So ist man unflexibel. Eine vielleicht etwas einfachere Variante wäre dann wohl diese:
Code:
#include <String.au3>
Local $DownloadUrl = "Downloadurlauseinemftpserver"
Local $url = "deinhtmldokument"
Local $szData = BinaryToString (InetRead ($url))
Local $szUserDownloadPanel = _StringBetween ($szData, "<Dokumente>", "</Dokumente>")
Global $szDocument, $hStatus = 0
if IsArray ($szUserDownloadPanel) And $szUserDownloadPanel[0] <> "" Then
$szDocument = StringSplit($szUserDownloadPanel[0], "|")
if IsArray ($szDocument) Then
Local $hInput = InputBox ("Datei","Geben Sie einen Dateinamen ein!")
if $hInput <> "" Then
For $i = 0 to UBound ($szDocument)
if $hInput = $szDocument[$i] Then
$hStatus = 1
ExitLoop
Else
MsgBox (46,"Fehler","Datei konnte nicht gefunden werden, oder Sie haben nicht die benötigte Rechte!", 5)
Exit
EndIf
Next
Local $hDownload = InetGet ($DownloadUrl, $FileName, 1+8, 1)
if not @error Then
While True
Local $szDownloadInfo = InetGetInfo ($hDownload)
if IsArray ($szDownloadInfo) and $szDownloadInfo[2] = True Then
MsgBox (64,"Info","Download wurde erfolgreich abgeschlossen!")
Exit
EndIf
WEnd
EndIf
EndIf
EndIf
EndIf
Das musst du natürlich ebenfalls mit einem .html Dokument verknüfpen. Es gibt noch weite Möglichkeiten, habe aber momentan wenig Zeit (wegen meiner Ausbildung), um diese aufzuzählen bzw. zeigen. Habe das ganze auf die schnelle gemacht, deshalb hoffe ich, dass es keine Fehler gibt
Achja, das ganze sollte inetwa so aussehen. #.html Dokumet
Code:
<Dokumente>Datei1.txt|Datei2.txt|blödsinn.txt|pipapo.txt|binNunflexibel.exe</Dokumente>
So kannst du bestimmen, was User downloaden können und was nicht.
|
|
|
09/04/2012, 17:29
|
#15
|
elite*gold: 100
Join Date: Feb 2012
Posts: 2,341
Received Thanks: 207
|
Noch mehr Text.. :S
Mir sieht das da alles ziemlich komplex aus, kann man das auch sonst ziemlich einfach machen ?
Weil sonst muss ich mich davor jetzt noch n parr Tage mit For Schleifen & dem ganzem anderem Zeug beschäftigen..
|
|
|
 |
|
Similar Threads
|
InetGet als _IE funktion erhaeltlich?
07/08/2011 - AutoIt - 6 Replies
inetGet als _IE funktion erhaeltlich?
|
Problem mit InetGet
01/31/2011 - AutoIt - 8 Replies
Hi
Ich will per InetGet() ein paar Dateien runterladen.
Die Dateien sollen aber nicht direkt in den Ordner, in dem die EXE ist, sondern in einen Unterordner.
Die Dateien werden zwar runtergeladen aber sind alle 4KB groß (sind sie in Wirklichkeit nicht) und fehlerhaft/funktionieren nicht.
|
Gui per Inetget?
09/16/2010 - AutoIt - 8 Replies
Hi.
Ich will in meinem neuen Trainer für S4League dieses bild als hintergrund
http://www.mypspwallpapers.com/uploads/200704/f/1 176278451.jpg
aber ich habe nicht wirklich lust dass in einen Ordner zu packen...
Könntet ihr mir kurz und knackig erklären wie das mit Inetget zu realisieren wäre?
|
InetGet ftw
07/13/2010 - AutoIt - 0 Replies
Hat sich erledigt ;D
Bitte löschen
|
Frage zu InetGet in Autoit
12/30/2008 - Guild Wars - 12 Replies
Hi,
hab die Helpfiles durchforstet aber nichts gefunden...
Also in AutoIT gibt es ja den Befehl InetGet. Soweit ich es verstanden habe, kann man mit diesem Befehl Datein aus dem Internet herunterladen.
Und nein, ich brauch das nicht um Trojaner,Viren und co zu machen.
Alles was ich machen will ist ein kleines Tool, mit dem man einfach den entsprechenden (public) Bot downloaden kann.(z.B. Thermalquellen, ohne lang nach der aktuellen suchen zu muessen).
MfG,
NBA
|
All times are GMT +1. The time now is 11:22.
|
|