Hallo zusammen,
es sind wieder ein paar Tage vergangen und ich bin ein gutes Stück voran gekommen. Nachdem ich nun die Hilfe , sowie hier das Forum schon durchstöbert habe , komme ich trotzdem nicht mehr weiter.
Es hakt glaube ich an den Basics , aber irgendwie will das nicht in meinen Kopf rein ....
Vielleicht ist ja jemand so nett und kann mir nochmal etwas auf die Sprünge helfen. Ich hänge mal mein bisheriges Geschreibsel an, dort habe ich die Stellen kommentiert wo ich absolut nicht weiterkomme.
Es sind bestimmt nur Kleinigkeiten , aber für einen Anfänger ist es dann wohl doch zu viel des Guten .
gruß
tippex
C
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.14.5
Author: tippex
Script Function:
Verleihshop-Tool
Es werden automatisch die Filme von der Merkliste auf www.verleihshop.de geliehen,
bzw. in den Warenkorb gepackt oder vorbestellt wenn nicht verfügbar
#ce ----------------------------------------------------------------------------
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinHttp.au3>
#include <String.au3>
#include <Array.au3>
#include <File.au3>
#include <StringConstants.au3>
#include <GuiButton.au3>
#include <GuiListView.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate(" Verleihshop-Tool ", 600, 437, 192, 124)
$downloadliste = GUICtrlCreateButton("Merkliste laden ", 32, 112, 131, 41)
GUICtrlSetFont(-1, 8, 400, 0, "Arial Rounded MT Bold")
GUICtrlSetBkColor(-1, 0xA6CAF0)
$login = GUICtrlCreateButton("Setze Logindaten", 31, 41, 131, 41)
GUICtrlSetFont(-1, 8, 400, 0, "Arial Rounded MT Bold")
GUICtrlSetBkColor(-1, 0xA6CAF0)
$List1 = GUICtrlCreateListView("", 184, 24, 369, 266)
;$List2 = GUI("", 560, 24, 361, 266)
$leihfilm = GUICtrlCreateButton("Filme Leihen", 32, 168, 129, 41)
GUICtrlSetFont(-1, 8, 400, 0, "Arial Rounded MT Bold")
GUICtrlSetBkColor(-1, 0xA6CAF0)
$vbFilm = GUICtrlCreateButton("Filme vorbestellen", 32, 232, 131, 41)
GUICtrlSetFont(-1, 8, 400, 0, "Arial Rounded MT Bold")
GUICtrlSetBkColor(-1, 0xA6CAF0)
$Label1 = GUICtrlCreateLabel("Merkliste", 315, 304, 129, 26)
GUICtrlSetFont(-1, 14, 400, 0, "Arial Rounded MT Bold")
;$Label2 = GUICtrlCreateLabel("Vorbestellbare Titel", 666, 302, 184, 26)
;GUICtrlSetFont(-1, 14, 400, 0, "Arial Rounded MT Bold")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $login ;Hiermit werden Ussername und Login in einer ini gepeichert
$sUsername=InputBox("Username angeben","Gib deinen Username an")
IniWrite("vsbot.ini","Login","username",$sUsername)
$sPassword=InputBox("Passwort angeben","Gib dein Passwort an")
IniWrite("vsbot.ini","Login","passwort",$sPassword)
Case $downloadliste ;Hiermit wird die "Merkliste" der Seite ausgelesen. Das Ergebnis soll in die Listview eingetragen werden... Todo... Hier komme ich nicht weiter
; So sieht der Inhalt der downloadliste.txt aus , jeder Titel steht in einer Zeile
;Lord of Illusions
;Der dunkle Turm
;Die Mumie
;Die Tribute von Panem - The Hunger Games
;Iron Man 3
;Weltengänger
$hSession = _WinHttpOpen("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36")
$hConnect = _WinhttpConnect($hSession, "www.verleihshop.de")
$pass = IniRead("vsbot.ini","Login","passwort","default")
$user = IniRead("vsbot.ini","Login","username","default")
$sPOST = 'password=' & $pass & '&source=loginbox&username=' & $user & '&x=44&y=5'
$sHTML = _WinHttpSimpleSSLRequest($hConnect, "POST", "login.html" , "www.verleihshop.de" , $sPOST)
_WinHttpAddRequestHeaders($hConnect, "Connection: Keep-Alive")
_WinHttpAddRequestHeaders($hConnect, "Content-Type: application/x-www-form-urlencoded")
_WinHttpSetOption($sHTML, $WINHTTP_OPTION_DISABLE_FEATURE, $WINHTTP_DISABLE_COOKIES)
FileWrite("login.html" , $sHTML)
$sText = FileRead(@ScriptDir & '\login.html')
$aOut = StringRegExp($sText, '\/\d+,merkzettel\.html', 1)
;_ArrayDisplay($aOut, 'name=', '', 64)
$sOut = ''
For $i = 0 To UBound($aOut) -1
$sOut &= $aOut[$i]
Next
$hFile = FileOpen(@ScriptDir & '\lliste.txt' ,2)
If $hFile <> -1 Then
FileWrite($hFile, $sOut)
FileClose($hFile)
EndIf
$merkliste = FileReadLine(@ScriptDir & '\lliste.txt',1)
$sHTML = _WinHttpSimpleRequest($hConnect, "GET", $merkliste )
FileWrite("downloadliste.html" , $sHTML)
$sMerk = FileRead(@ScriptDir & '\downloadliste.html')
$aAus = _StringBetween($sMerk,'class="searchlink">','</a>')
_ArrayDisplay($aAus, 'Filme', "", 64)
$sAus = ''
For $i = 0 To UBound($aAus) -1
$sAus &= $aAus[$i]
Next
$hDatei = FileOpen(@ScriptDir & '\downloadliste.txt' ,2)
If $hDatei <> -1 Then
_FileWriteFromArray($hDatei,$aAus)
EndIf
Case $leihfilm ; Hiermit werden die leihbaren Titel der Merkliste in den Warenkorb gelegt. Dies sollte nach Möglichkeit alle 2 Minuten wiederholt werden. Problem : Datei Leiliste.txt bekomme ich nicht gelöscht.
;MsgBox(0, "Filme leihen", "Es werden alle leihbaren Titel der Merkliste in den Warenkorb gelegt!")
$hSession = _WinHttpOpen("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36")
$hConnect = _WinhttpConnect($hSession, "www.verleihshop.de")
$pass = IniRead("vsbot.ini","Login","passwort","default")
$user = IniRead("vsbot.ini","Login","username","default")
$sPOST = 'password=' & $pass & '&source=loginbox&username=' & $user & '&x=44&y=5'
$sHTML = _WinHttpSimpleSSLRequest($hConnect, "POST", "login.html" , "www.verleihshop.de" , $sPOST)
_WinHttpAddRequestHeaders($hConnect, "Connection: Keep-Alive")
_WinHttpAddRequestHeaders($hConnect, "Content-Type: application/x-www-form-urlencoded")
_WinHttpSetOption($sHTML, $WINHTTP_OPTION_DISABLE_FEATURE, $WINHTTP_DISABLE_COOKIES)
FileWrite("login.html" , $sHTML)
$sText = FileRead(@ScriptDir & '\login.html')
$aOut = StringRegExp($sText, '\/\d+,merkzettel\.html', 1)
;_ArrayDisplay($aOut, 'name=', '', 64)
$sOut = ''
For $i = 0 To UBound($aOut) -1
$sOut &= $aOut[$i]
Next
$hFile = FileOpen(@ScriptDir & '\Ausgabe.txt' ,2)
If $hFile <> -1 Then
FileWrite($hFile, $sOut)
FileClose($hFile)
EndIf
$merkzettel = FileReadLine(@ScriptDir & '\Ausgabe.txt',1)
$sHTML = _WinHttpSimpleRequest($hConnect, "GET", $merkzettel )
FileWrite("merkzettel.html" , $sHTML)
$sMerk = FileRead(@ScriptDir & '\merkzettel.html')
$aAus = StringRegExp($sMerk, '\/\d+,leihen_\w+.html',3)
;_ArrayDisplay($aAus, 'name=', "", 64)
$sAus = ''
For $i = 0 To UBound($aAus) -1
$sAus &= $aAus[$i]
Next
$hDatei = FileOpen(@ScriptDir & '\Leihliste.txt' ,2)
If $hDatei <> -1 Then
_FileWriteFromArray($hDatei,$aAus)
EndIf
; In diesem Abschnitt werden nun die Titel in den Warenkorb gelegt. Keine schöne Lösung , geht bestimmt auch mit einer Schleife, da hänge ich noch in der Luft.
$leihfilm = FileReadLine(@ScriptDir & '\Leihliste.txt',0)
$sHTML = _WinHttpSimpleRequest($hConnect, "POST", $leihfilm )
Sleep(2000)
$leihfilm = FileReadLine(@ScriptDir & '\Leihliste.txt',1)
$sHTML = _WinHttpSimpleRequest($hConnect, "POST", $leihfilm )
Sleep(2000)
$leihfilm = FileReadLine(@ScriptDir & '\Leihliste.txt',2)
$sHTML = _WinHttpSimpleRequest($hConnect, "POST", $leihfilm )
Sleep(2000)
$leihfilm = FileReadLine(@ScriptDir & '\Leihliste.txt',3 )
$sHTML = _WinHttpSimpleRequest($hConnect, "POST", $leihfilm )
Sleep(2000)
$leihfilm = FileReadLine(@ScriptDir & '\Leihliste.txt',4)
$sHTML = _WinHttpSimpleRequest($hConnect, "POST", $leihfilm )
Sleep(2000)
$leihfilm = FileReadLine(@ScriptDir & '\Leihliste.txt',5)
$sHTML = _WinHttpSimpleRequest($hConnect, "POST", $leihfilm )
;FileClose ("Leihliste.txt")
;FileDelete ("Leihliste.txt") <--- klappt nicht... Denkfehler ?? Datei wird trotz Fileclose nicht gelöscht, sollte für den nächsten "Durchlauf" neu angelegt werden.
;FileMove ("Leihliste.txt","@Scriptdir\temp\Leihliste.txt", $FC_OVERWRITE + $FC_CREATEPATH)
;FileDelete ("merkzettel.html") ; <--- hier klappt das deleten
;FileDelete ("@Scriptir\Leihliste.txt")
;FileDelete ("login.html") ;<----- hier dito
;FileDelete ("Ausgabe.txt"); <--- hier dito
Sleep (20000)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hSession)
Case $vbFilm ; Hiermit werden Titel die nicht leihbar sind vorbestellt.Funktion sollte identisch mit $leihfilm funktionieren ( alle 2 Minuten aktualisieren) , siehe oben
$hSession = _WinHttpOpen("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36")
$hConnect = _WinhttpConnect($hSession, "www.verleihshop.de")
$pass = IniRead("vsbot.ini","Login","passwort","default")
$user = IniRead("vsbot.ini","Login","username","default")
$sPOST = 'password=' & $pass & '&source=loginbox&username=' & $user & '&x=44&y=5'
$sHTML = _WinHttpSimpleSSLRequest($hConnect, "POST", "login.html" , "www.verleihshop.de" , $sPOST)
_WinHttpAddRequestHeaders($hConnect, "Connection: Keep-Alive")
_WinHttpAddRequestHeaders($hConnect, "Content-Type: application/x-www-form-urlencoded")
_WinHttpSetOption($sHTML, $WINHTTP_OPTION_DISABLE_FEATURE, $WINHTTP_DISABLE_COOKIES)
FileWrite("vblogin.html" , $sHTML)
$sText = FileRead(@ScriptDir & '\vblogin.html')
$aOut = StringRegExp($sText, '\/\d+,merkzettel\.html', 1)
;_ArrayDisplay($aOut, 'name=', '', 64)
$sOut = ''
For $i = 0 To UBound($aOut) -1
$sOut &= $aOut[$i]
Next
$hFile = FileOpen(@ScriptDir & '\Ausgabe2.txt' ,2)
If $hFile <> -1 Then
FileWrite($hFile, $sOut)
FileClose($hFile)
EndIf
$merkzettel = FileReadLine(@ScriptDir & '\Ausgabe2.txt',1)
$sHTML = _WinHttpSimpleRequest($hConnect, "GET", $merkzettel )
FileWrite("vbzettel.html" , $sHTML)
$sMerk = FileRead(@ScriptDir & '\vbzettel.html')
$aAus = StringRegExp($sMerk, '\/\d+,vorbestellen_\w+.html',3)
;_ArrayDisplay($aAus, 'name=', "", 64)
$sAus = ''
For $i = 0 To UBound($aAus) -1
$sAus &= $aAus[$i]
Next
$hDatei = FileOpen(@ScriptDir & '\VBliste.txt' ,2)
If $hDatei <> -1 Then
_FileWriteFromArray($hDatei,$aAus)
EndIf
; Hier der gleiche Mist wie oben.... Geht bestimmt viel schöner und einfacher
$vbfilm = FileReadLine(@ScriptDir & '\VBliste.txt',0)
$sHTML = _WinHttpSimpleRequest($hConnect, "POST", $vbfilm )
Sleep(2000)
$vbfilm = FileReadLine(@ScriptDir & '\VBliste.txt',1)
$sHTML = _WinHttpSimpleRequest($hConnect, "POST", $vbfilm )
Sleep(2000)
$vbfilm = FileReadLine(@ScriptDir & '\VBliste.txt',2)
$sHTML = _WinHttpSimpleRequest($hConnect, "POST", $vbfilm )
Sleep(2000)
$vbfilm = FileReadLine(@ScriptDir & '\VBliste.txt',3 )
$sHTML = _WinHttpSimpleRequest($hConnect, "POST", $vbfilm )
Sleep(2000)
$vbfilm = FileReadLine(@ScriptDir & '\VBliste.txt',4)
$sHTML = _WinHttpSimpleRequest($hConnect, "POST", $vbfilm )
Sleep(2000)
$vbfilm = FileReadLine(@ScriptDir & '\VBliste.txt',5)
$sHTML = _WinHttpSimpleRequest($hConnect, "POST", $vbfilm )
FileClose ("VBliste.txt")
FileDelete ("VBliste.txt") ; <---- auch hier klappt das deleten nicht , siehe oben
FileMove ("VBliste.txt",@ScriptDir & "\temp\VBliste.txt", $FC_OVERWRITE + $FC_CREATEPATH)
FileDelete ("vbzettel.html")
FileDelete (@ScriptDir & "\temp\VBliste.txt")
FileDelete ("Ausgabe2.txt")
FileDelete ("vblogin.html")
FileDelete ("VBliste.txt")
Sleep( 15000)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hSession)
EndSwitch
WEnd
Alles anzeigen