Hallo zusammen!
In den letzten Tagen hab ich an einem Downloader für Videos von MTV.de gearbeitet.
Hier is ma der Code:
#include<Inet.au3>
#include <GUIConstants.au3>
#include<String.au3>
#include<ie.au3>
#include<array.au3>
#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)
#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()
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
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
Func Link()
Guictrlsetdata($label2, "Link wird generiert und geöffnet")
Guictrlsetstate($button1, $gui_disable)
$link= Guictrlread($Input1)
$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)
$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)
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 ![]()
Jetzt würd ich bei dem Skript gern den Feinschliff vornehmen.
Das heißt: Z.B. einen Linkchecker einfügen:
$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
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 ![]()