Problemchen mit Controllistview

  • Hallo^^
    ja, ich schon wieder =/

    Ich hab diesen Code:

    [autoit]


    #include <GUIConstants.au3>
    #include<Guilistview.au3>
    #include<array.au3>
    #include<math.au3>
    #include<Inet.au3>
    #include<string.au3>
    #Region ### START Koda GUI section ### Form=
    $Multidownloader_1 = GUICreate("Multidownloader", 665, 486, 194, 126)
    $ListView1 = GUICtrlCreateListView("Link|Portal|Ausgabeort|Ausgabename|Format", 9, 17, 647, 280)
    GUICtrlSendMsg(-1, 0x101E, 0, 220)
    GUICtrlSendMsg(-1, 0x101E, 1, 50)
    GUICtrlSendMsg(-1, 0x101E, 2, 200)
    GUICtrlSendMsg(-1, 0x101E, 3, 123)
    GUICtrlSendMsg(-1, 0x101E, 4, 50)
    $LINK = GUICtrlCreateInput("MTV.video / Youtube-Link hier eingeben", 8, 312, 610, 21)
    $Input1 = GUICtrlCreateInput("Ausgabetitel hier eingeben", 9, 345, 192, 21)
    $Ausgabeort = GUICtrlCreateButton("Ausgabeort", 219, 344, 202, 21)
    $MP3 = GUICtrlCreateCombo("MP3", 431, 342, 186, 25)
    GUICtrlSetData(-1, "FLV|WMV|AVI|MP4|")
    $Download = GUICtrlCreateGroup("Download hinzufügen", 4, 296, 652, 108)
    $Button1 = GUICtrlCreateButton("Download hinzufügen", 8, 369, 193, 25)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button2 = GUICtrlCreateButton("Liste downloaden", 8, 409, 648, 25)
    $Label1 = GUICtrlCreateLabel("Info", 9, 440, 610, 33)
    GUISetState(@SW_SHOW)

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

    #EndRegion ### END Koda GUI section ###
    Guictrlsetstate($button1 , $gui_disable)
    guictrlsetstate($button2, $gui_disable)
    $zeilenzahl= _GUICtrlListView_GetItemCount($listview1)

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

    $portal= ""
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $link
    $linkread= guictrlread($link)
    If $linkread= "" Then
    Msgbox(16, "Fehler", "Bitte gib einen Link ein")
    endif
    If StringRegExp($linkread, "^(?:http:\/\/)*www\.mtv\.de\/videos") Then

    $portal= "mtv"
    Else
    Msgbox(16,"Fehler","Der link ist NICHT von MTV/video" & @CRLF)
    $portal= ""
    EndIf
    Case $ausgabeort
    $OUtPUTFILE=Fileselectfolder("Ausgabeort", "Eigene Dateien")
    If $outputfile= "arbeitsplatz" Then
    Msgbox(16, "Fehler", "Du kannst keine Datei auf dem Arbeitsplatz speichern")
    else
    guictrlsetstate($button1, $gui_enable)
    endif
    case $button1
    $ausgaberead= guictrlread($input1)
    $formatauswahl= guictrlread($mp3)
    If $portal="" or $outputfile= "" Then
    Msgbox(0, "Fehler", "Gib einen gültigen Link an!")
    else
    guictrlcreatelistviewitem($linkread & "|" &$portal & "|" & $outputfile & "|" & $ausgaberead & "|" & $formatauswahl, $listview1)
    guictrlsetstate($button2, $gui_enable)
    GUICtrlSetData($link, "MTV.video / Youtube-Link hier eingeben")
    Guictrlsetdata($input1, "Ausgabetitel hier eingeben")
    guictrlsetstate($button1, $gui_disable)
    $aktuellezeilenzahl=$zeilenzahl + 1
    endif
    case $button2
    mtvdownload()
    EndSwitch
    WEnd

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

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Funktionen;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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

    Func mtvdownload()
    $zeilenlink= ControlListView ( "", "", $listview1, "gettext")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/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($zeilenlink)

    [/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>')
    $ausgabetitel= ControlListView("", "", $listview1, "gettext", 1, 4)
    $mp3zieladresse= controllistview("", "", $listview1, "gettext", 1, 3)

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

    $tempadresse= @Scriptdir & "\video.flv"

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

    inetget($string2[0], $tempadresse,"",0)
    Guictrlsetdata($label1, "Video wird als" & $tempadresse & "heruntergeladen")
    Guictrlsetdata($label1, "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($label1, "Fertig!" & $ausgabetitel& "ist ab jetzt in" & $mp3zieladresse & "als MP3 gespeichert")
    Guictrlsetstate($button1,$gui_enable)

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

    _GUICtrlListView_DeleteItem($listview1, 1)
    endfunc

    [/autoit]


    wie immer chaotisch^^
    Die Flash-datei wird korrekt runtergeladen. Sie wird auch in Mp3 konvertiert.
    nur der Dateiname und der Ausgabeort stimmt dann letztendlich nicht.
    Ergo: bei

    [autoit]


    $ausgabetitel= ControlListView("", "", $listview1, "gettext", 1, 4)
    $mp3zieladresse= controllistview("", "", $listview1, "gettext", 1, 3)

    [/autoit]


    muss ich was falsch gemacht haben. aber ich weiß einfach nicht, wo der fehler liegt.
    wahrscheinlich bei Option1 & 2 von dem controllistview---- aber ich kriegs net hin :D

    Am Ende soll das erste Item in dem Listview mithilfe von

    [autoit]

    _GUICtrlListView_DeleteItem($listview1, 1)

    [/autoit]

    gelöscht werden;
    will aber auch nicht klappen.
    Wäre nett, wenn mir jemand helfen könnte(- schon wieder :))
    gruß,
    billie

    [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 (22. November 2010 um 20:27)

  • Nimm doch _GUICtrlListView_GetItemText.

    Und nimm:

    [autoit]

    _GUICtrlListView_DeleteItem(GUICtrlGetHandle($ListView), iIndex)

    [/autoit]

    Achja und lösche mal die ganzen Leerzeilen und If-Abfragen mit nur einer Anweisung, kannst du alles in eine Zeile schreiben, spart wieder 2 Zeilen ;).

  • Hallo TwoDollarBillie,

    diese func

    Spoiler anzeigen
    [autoit]

    Func mtvdownload()
    $url1 = "http://de.esperanto.mtvi.com/www/xml/flv/flvgen.jhtml?vid="
    $url2 = "&hiLoPref=hi"
    Do
    $aItem = _GUICtrlListView_GetItemTextArray($ListView1, 0)
    $Quelltext = _INetGetSource($aItem[1])
    $sStart = 'var so = new SWFObject("http://media.mtvnservices.com/mgid:uma:video:mtv.de:'
    $sEnde = '",'
    $string = _StringBetween($Quelltext, $sStart, $sEnde)
    If IsArray($string) Then
    $adresse = $url1 & $string[0] & $url2
    $Quelltext2 = _INetGetSource($adresse)
    $string2 = _StringBetween($Quelltext2, '<src>', '</src>')
    $ausgabetitel = $aItem[4]
    $mp3zieladresse = $aItem[3]
    $tempadresse = @ScriptDir & "\video.flv"
    $zieladresse = $mp3zieladresse & "\" & $ausgabetitel & ".mp3"
    GUICtrlSetData($Label1, "Video wird als" & $tempadresse & "heruntergeladen")
    InetGet($string2[0], $tempadresse, "", 0)
    GUICtrlSetData($Label1, "Video wird als" & $tempadresse & "heruntergeladen")
    GUICtrlSetData($Label1, "Video wurde zu MP3 konvertiert")
    $ffmpeg = @ScriptDir & "\ffmpeg.exe"
    #cs
    If WinExists($ffmpeg) Then
    WinSetState($ffmpeg, "", 2)
    EndIf
    #ce
    RunWait('ffmpeg.exe -i "' & $tempadresse & '"' & ' -y "' & $zieladresse & '"')
    GUICtrlSetState($Label1, "Fertig!" & $ausgabetitel & "ist ab jetzt in" & $mp3zieladresse & "als MP3 gespeichert")
    GUICtrlSetState($Button1, $gui_enable)
    EndIf
    _GUICtrlListView_DeleteItem($ListView1, 0)
    Until _GUICtrlListView_GetItemCount($ListView1) = 0
    EndFunc ;==>mtvdownload

    [/autoit]

    sollte funktionieren, habs aber noch nicht getestet

    mfg autoBert

  • lol bertl, so viel hilfe wäre auch nicht nötig gewesen. aber vielen dank für deine mühe- klappt super :)


    schön, dann ist dein Problem ja gelöst, schön wäre es allerdings auch wenn du den Thread auf gelöst setzt. Einfach 1. Beitrag bearbeiten, Präfix (nähe Überschrift) ändern und speichern (absenden)

    mfg autoBert