If-abfrage ändert das ganze Skript ?![edit]

  • Hallo zusammen!
    In den letzten Tagen hab ich an einem Downloader für Videos von MTV.de gearbeitet.
    Hier is ma der Code:

    [autoit]

    #include<Inet.au3>
    #include <GUIConstants.au3>
    #include<String.au3>

    [/autoit][autoit][/autoit][autoit]

    #include<ie.au3>
    #include<array.au3>

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    #Region ### START Koda GUI section ### Form=
    $Form1_1 = GUICreate("Downloader", 266, 367, 195, 127)
    $Input1 = GUICtrlCreateInput("MTV-Link", 8, 16, 241, 21)
    $Button1 = GUICtrlCreateButton("Zum Download", 8, 144, 233, 41, 0)
    $Ausgabeort = GUICtrlCreateButton("Ausgabeort wählen", 8, 80, 241, 25)
    $Radio1 = GUICtrlCreateRadio("MP3-Format", 8, 109, 113, 25)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $Radio2 = GUICtrlCreateRadio("WMV-Format", 136, 109, 113, 25)
    $Ausgabetitel = GUICtrlCreateInput("Ausgabetitel", 8, 48, 241, 21)
    $Progressbar = GUICtrlCreateProgress(8, 240, 241, 25)
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlSetBkColor(-1, 0x000000)
    $Group1 = GUICtrlCreateGroup("", 0, 0, 265, 209)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label1 = GUICtrlCreateLabel("Fortschritt:", 8, 216, 53, 17)
    $Group2 = GUICtrlCreateGroup("", 0, 208, 265, 153)
    $Label2 = GUICtrlCreateLabel("Info", 8, 272, 244, 65)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    #EndRegion ### END Koda GUI section ###

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    exit
    Case $button1

    link()

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Case $Ausgabeort

    $mp3zieladresse= FileSelectFolder("In welchen Ordner soll die Datei gespeichert werden?", "Desktop")
    If $mp3zieladresse= "Arbeitsplatz" Then
    Msgbox(0, "", "Hier kannst du die Datei nicht abspeichern!")
    endif
    if $mp3zieladresse= "" then
    msgbox(0, "", "Bitte gib an wo die Datei gespeichert werden soll")
    endif

    [/autoit][autoit][/autoit][autoit]



    EndSwitch
    WEnd
    $string1= "http://media.mtvnservices.com/mgid:uma:video:mtv.de:"
    $string2= '",'
    $videoID= _Stringbetween($Quelltext, $string1, $string2)
    $link2= "de.esperanto.mtvi.com/www/xml/flv/flvgen.jhtml?vid="
    $link3= "&hiLoPref=hi"
    $aktivierung=false

    [/autoit][autoit][/autoit][autoit]

    Func Link()
    Guictrlsetdata($label2, "Link wird generiert und geöffnet")
    Guictrlsetstate($button1, $gui_disable)
    $link= Guictrlread($Input1)

    [/autoit][autoit][/autoit][autoit]

    $url1 = "http://de.esperanto.mtvi.com/www/xml/flv/flvgen.jhtml?vid="

    [/autoit][autoit][/autoit][autoit]

    $url2 = "&hiLoPref=hi"

    [/autoit][autoit][/autoit][autoit]

    $Quelltext = _INetGetSource($link)

    [/autoit][autoit][/autoit][autoit]

    $sStart = 'var so = new SWFObject("http://media.mtvnservices.com/mgid:uma:video:mtv.de:'

    [/autoit][autoit][/autoit][autoit]

    $sEnde = '",'

    [/autoit][autoit][/autoit][autoit]

    $string = _StringBetween($Quelltext, $sStart, $sEnde)

    [/autoit][autoit][/autoit][autoit]

    $adresse = $url1 & $string[0] & $url2

    [/autoit][autoit][/autoit][autoit]

    $Quelltext2 = _INetGetSource($adresse)

    [/autoit][autoit][/autoit][autoit]

    $string2 = _StringBetween($Quelltext2, '<src>', '</src>')

    $dateiname= guictrlread($ausgabetitel)
    $tempadresse= @Scriptdir & "\video.flv"

    $zieladresse= $mp3zieladresse & "\" & $dateiname & ".mp3"
    Guictrlsetdata($label2, "Video wird als" & $tempadresse & "heruntergeladen")

    inetget($string2[0], $tempadresse,"",0)
    $groesseinternetfile= InetGetSize($string2[0])
    $groessetemporaryfile= filegetsize($tempadresse)

    [/autoit][autoit][/autoit][autoit]

    $progressbar1= ($groessetemporaryfile/$groesseinternetfile)*100
    Guictrlsetdata($label2, "Video wird als" & $tempadresse & "heruntergeladen")
    Guictrlsetdata($progressbar, $progressbar1)


    Guictrlsetdata($label2, "Video wurde zu MP3 konvertiert")

    $ffmpeg= @scriptdir & "\ffmpeg.exe"
    If winexists($ffmpeg) Then
    winsetstate($ffmpeg,"",2)
    endif
    RunWait('ffmpeg.exe -i "' & $tempadresse & '"' & ' -y "' & $zieladresse & '"')
    Guictrlsetstate($progressbar, 100)
    Guictrlsetstate($label2, "Fertig!" & $dateiname & "ist ab jetzt in" & $zieladresse & "als MP3 gespeichert")
    Guictrlsetstate($button1,$gui_enable)
    filedelete($tempadresse)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    endfunc

    [/autoit]

    Bem1: sieht für manche vielleicht ein bisschen unprofessionell aus
    Bem2: progressbar is noch net gecodet...
    edit: manche variablen werden noch net gebraucht, also nich wundern :D

    Jetzt würd ich bei dem Skript gern den Feinschliff vornehmen.
    Das heißt: Z.B. einen Linkchecker einfügen:

    [autoit]

    $link=Guictrlread($input1)
    $string1="www."
    $string2= "/"
    $stringf= _stringbetween($link, $string1, $string2)
    $string3= ".de/"
    $string4= "s/"
    $stringf2= _stringbetween($link, $string3, $string4)

    If $stringf[0]= "mtv.de" and $stringf2[0]= "video" Then
    bla()
    else
    Msgbox(0, "Fehler", "Der Link stammt nicht von MTV.de/videos/")
    endif

    [/autoit]


    Wenn ich versuche, das in den Code vom Programm einzufügen, funktioniert fast nix mehr. Arrays spacken rum und Variablen scheinen nicht definiert zu sein.
    Wie könnt ich dieses Problem beheben und so den Linkchecker einbauen?
    Wie werden diese "If @error"-teile korrekt in das Skript eingefügt?
    Ne antwort wäre nett :)

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble

    3 Mal editiert, zuletzt von Twodollarbillie (21. November 2010 um 13:41)

  • Ich würde diesen Code:

    [autoit]

    $link=Guictrlread($input1)
    $string1="www."
    $string2= "/"
    $stringf= _stringbetween($link, $string1, $string2)
    $string3= ".de/"
    $string4= "s/"
    $stringf2= _stringbetween($link, $string3, $string4)

    If $stringf[0]= "mtv.de" and $stringf2[0]= "video" Then
    bla()
    else
    Msgbox(0, "Fehler", "Der Link stammt nicht von MTV.de/videos/")
    endif

    [/autoit]


    gerne an den Anfang des größeren Skripts stellen, so dass geprüft wird, ob der Link gültig ist und ein richtiger Download stattfinden kann.
    Sobald ich dann den Linkchecker einfüg, funktioniert das ganze Ding nimmer.

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble

  • Hier. Damit kannst du Prüfen ob der Link von MTV ist.

    [autoit]

    $sLink = "http://www.mtv.de/videos/22142235-green-day-green-day-world-stage-cinema-trailer.html"
    If StringRegExp($sLink, "^(?:http:\/\/)*www\.mtv\.de\/videos") Then
    ConsoleWrite("Der link ist von MTV/video" & @CRLF)
    Else
    ConsoleWrite("Der link ist NICHT von MTV/video" & @CRLF)
    EndIf

    [/autoit]


    Kürzer und schneller.

  • Also bei mir kommt hier folgende Ausgabe: Der link ist von MTV/video

    [autoit]

    $sLink = "http://www.mtv.de/videos/21346323-last-of-the-american-girls.html"
    If StringRegExp($sLink, "^(?:http:\/\/)*www\.mtv\.de\/videos") Then
    ConsoleWrite("Der link ist von MTV/video" & @CRLF)
    Else
    ConsoleWrite("Der link ist NICHT von MTV/video" & @CRLF)
    EndIf

    [/autoit]
  • Hallo
    hm
    dieser Regex String passt besser bei mir

    [autoit]

    "^http\x3a\/\/\www\.mtv\.de\/videos"

    [/autoit]


    anders hab ich auch Probs :rolleyes:

  • Hi

    Wenn ich versuche, das in den Code vom Programm einzufügen, funktioniert fast nix mehr.


    Hab jetzt deine beiden Programmteile genommen und in ein Skript kopiert und einfach gestartet...
    Funktioniert alles Einwandfrei! 8|

    Poste mal das Skript, was bei dir nicht zu gehen scheint...

    PS:
    Sprenger120 RegEx funktioniert bei mir! ;)

  • ... ja in welchen bereich fügst den linkchecker denn ein?^^
    Edit: läuft doch ganz sauber^^

    [autoit]

    #include<Inet.au3>
    #include <GUIConstants.au3>
    #include<String.au3>

    [/autoit][autoit][/autoit][autoit]

    #include<ie.au3>
    #include<array.au3>

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    #Region ### START Koda GUI section ### Form=
    $Form1_1 = GUICreate("Downloader", 266, 367, 195, 127)
    $Input1 = GUICtrlCreateInput("MTV-Link", 8, 16, 241, 21)
    $Button1 = GUICtrlCreateButton("Zum Download", 8, 144, 233, 41, 0)
    $Ausgabeort = GUICtrlCreateButton("Ausgabeort wählen", 8, 80, 241, 25)
    $Radio1 = GUICtrlCreateRadio("MP3-Format", 8, 109, 113, 25)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $Radio2 = GUICtrlCreateRadio("WMV-Format", 136, 109, 113, 25)
    $Ausgabetitel = GUICtrlCreateInput("Ausgabetitel", 8, 48, 241, 21)
    $Progressbar = GUICtrlCreateProgress(8, 240, 241, 25)
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlSetBkColor(-1, 0x000000)
    $Group1 = GUICtrlCreateGroup("", 0, 0, 265, 209)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label1 = GUICtrlCreateLabel("Fortschritt:", 8, 216, 53, 17)
    $Group2 = GUICtrlCreateGroup("", 0, 208, 265, 153)
    $Label2 = GUICtrlCreateLabel("Info", 8, 272, 244, 65)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    #EndRegion ### END Koda GUI section ###

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    exit
    Case $button1

    linkchecker()

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Case $Ausgabeort

    $mp3zieladresse= FileSelectFolder("In welchen Ordner soll die Datei gespeichert werden?", "Desktop")
    If $mp3zieladresse= "Arbeitsplatz" Then
    Msgbox(0, "", "Hier kannst du die Datei nicht abspeichern!")
    endif
    if $mp3zieladresse= "" then
    msgbox(0, "", "Bitte gib an wo die Datei gespeichert werden soll")
    endif

    [/autoit][autoit][/autoit][autoit]



    EndSwitch
    WEnd

    [/autoit][autoit][/autoit][autoit]

    func linkchecker()

    $Link = Guictrlread($input1)
    If StringRegExp($Link, "^http\x3a\/\/\www\.mtv\.de\/videos") Then
    Link()
    Else
    Msgbox(0, "", "Der Link stammt nicht von MTV/video. Bitte gib einen gültigen Link ein")
    EndIf
    endfunc

    [/autoit][autoit][/autoit][autoit]

    Func Link()

    [/autoit][autoit][/autoit][autoit]

    Guictrlsetdata($label2, "Link wird generiert und geöffnet")
    Guictrlsetstate($button1, $gui_disable)
    $link= Guictrlread($Input1)

    [/autoit][autoit][/autoit][autoit]

    $url1 = "http://de.esperanto.mtvi.com/www/xml/flv/flvgen.jhtml?vid="

    [/autoit][autoit][/autoit][autoit]

    $url2 = "&hiLoPref=hi"

    [/autoit][autoit][/autoit][autoit]

    $Quelltext = _INetGetSource($link)

    [/autoit][autoit][/autoit][autoit]

    $sStart = 'var so = new SWFObject("http://media.mtvnservices.com/mgid:uma:video:mtv.de:'

    [/autoit][autoit][/autoit][autoit]

    $sEnde = '",'

    [/autoit][autoit][/autoit][autoit]

    $string = _StringBetween($Quelltext, $sStart, $sEnde)

    [/autoit][autoit][/autoit][autoit]

    $adresse = $url1 & $string[0] & $url2

    [/autoit][autoit][/autoit][autoit]

    $Quelltext2 = _INetGetSource($adresse)

    [/autoit][autoit][/autoit][autoit]

    $string2 = _StringBetween($Quelltext2, '<src>', '</src>')

    $dateiname= guictrlread($ausgabetitel)
    $tempadresse= @Scriptdir & "\video.flv"

    $zieladresse= $mp3zieladresse & "\" & $dateiname & ".mp3"
    If @error Then
    Msgbox(0, "Fehler", "Bitte wähle einen Ausgabeort")
    endif
    Guictrlsetdata($label2, "Video wird als" & $tempadresse & "heruntergeladen")

    inetget($string2[0], $tempadresse,"",0)
    $groesseinternetfile= InetGetSize($string2[0])
    $groessetemporaryfile= filegetsize($tempadresse)

    [/autoit][autoit][/autoit][autoit]

    $progressbar1= ($groessetemporaryfile/$groesseinternetfile)*100
    Guictrlsetdata($label2, "Video wird als" & $tempadresse & "heruntergeladen")


    Guictrlsetdata($label2, "Video wurde zu MP3 konvertiert")

    $ffmpeg= @scriptdir & "\ffmpeg.exe"
    If winexists($ffmpeg) Then
    winsetstate($ffmpeg,"",2)
    endif
    RunWait('ffmpeg.exe -i "' & $tempadresse & '"' & ' -y "' & $zieladresse & '"')
    Guictrlsetstate($progressbar, 100)
    Guictrlsetstate($label2, "Fertig!" & $dateiname & "ist ab jetzt in" & $zieladresse & "als MP3 gespeichert")
    Guictrlsetstate($button1,$gui_enable)
    filedelete($tempadresse)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    endfunc

    [/autoit]

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble

    Einmal editiert, zuletzt von Twodollarbillie (20. November 2010 um 13:33)

  • ... ja in welchen bereich fügst den linkchecker denn ein?^^


    Na dahin wo du es mir gesagt hast:

    Ich habe

    [autoit]

    $link=Guictrlread($input1)

    [/autoit]


    mit dem hier ersetzt

    [autoit]

    $link=Guictrlread($input1)
    $string1="www."
    $string2= "/"
    $stringf= _stringbetween($link, $string1, $string2)
    $string3= ".de/"
    $string4= "s/"
    $stringf2= _stringbetween($link, $string3, $string4)

    If $stringf[0]= "mtv.de" and $stringf2[0]= "video" Then
    bla()
    else
    Msgbox(0, "Fehler", "Der Link stammt nicht von MTV.de/videos/")
    endif

    [/autoit]


    bla() hab ich natürlich durch MsgBox(0,0,0) ersetzt!
    Du musst nur noch deine Fehlerbehandlung anpassen (Funktion wird weiter ausgeführt? ;) ).

    Edit: läuft doch ganz sauber^^


    8o