Technobase.fm/Coretime.fm/etc Musik downloaden

  • So Leute, hab mir gedacht, dass es ganz praktisch wäre die Lieder die so auf Technobase.fm etc gespielt werden downloaden zu können..
    Auf die Idee wie man das realisieren könnte hat mich L3viathan2142 mit seinem Youtube downloadskript gebracht :D

    Funktionsweise:
    Skript liest über den Quellcode das zuletzt gespielte Lied aus (Zeile 193 im Quellcode :D - ich weiß ist fehleranfällig, vielleicht bau ichs mal um ^^)
    So, dann wird das ganze auf Youtube eingegeben und mittels der Skriptzeile von L3viathan2142 die eindeutige Kennung herausgefiltert (https://autoit.de/www.youtube.com/watch?v=EindeutigeKennung)
    Diese Kennung wird dann auf https://autoit.de/www.video2mp3.de eingeben und downgeloadet ;)
    Skript ist gerade erst fertig geworden und somit seeeehr fehlanfällig *gg*
    Die häufigste Fehlerquelle für falsche Lieder liegt aber darin, dass auf Youtube einfach der erste Treffer genommen wird..

    So hier das Skript..

    [spoiler]

    [autoit]


    #include
    #include

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

    HotKeySet("!+^d","_GetVideo")

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

    Global $aSource

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

    While 1
    Sleep(100)
    WEnd

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

    Func _GetVideo()
    TrayTip("","Vorbereitung...",1)
    $oIE = _IECreate("http://www.video2mp3.de",0,0,0,0)
    $aSource = StringSplit(_INetGetSource("http://www.technobase.fm/tracklist.php"),@LF,3)
    $sName = StringStripWS(StringTrimRight($aSource[192],6),3) & ".mp3"; Folgende Zeile stammt von L3viathan2142 (http://www.autoit.de) (Leicht verändert)
    $array=StringRegExp(_INetGetSource("http://www.youtube.com/results?search_query=" & StringReplace($sName," ","+") & "&page=&utm_source=opensearch"),"/watch\?v=([a-zA-Z0-9]+)" & '"',1)
    _IENavigate($oIE,"http://www.video2mp3.de/index.php?step=2&url=http://www.youtube.com/watch?v=" & $array[0] & "&feature=youtube_gdata")
    $oAusgabe = _IEGetObjById($oIE,"ausgabe")

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

    Do
    $perc = _IEPropertyGet($oAusgabe,"innerText")
    TrayTip($sName,"Onlinekonvertierung: " & $perc,1)
    Until $perc = "100%"

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

    _IELoadWait($oIE)
    $oSubmit = _IEGetObjByName($oIE,"submit")
    _IEAction($oSubmit,"click")
    _IELoadWait($oIE)
    $oLinks = _IELinkGetCollection($oIE)

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

    For $oLink in $oLinks
    If _IEPropertyGet($oLink,"innerText") = "Hier downloaden" Then _Download($sName,$oLink.href,1)
    Next

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

    EndFunc

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

    func _Download($sFilename, $sUrl, $iFlag)

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

    If FileExists($sFilename) Then
    If FileGetSize($sFilename) = InetGetSize($sUrl) Then Return
    EndIf

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

    $hDownload = InetGet($sUrl, $sFilename, 1, 1)
    $tTimer1 = TimerInit()
    If $iFlag = 0 Then ProgressOn("Herunterladen", $sFilename, Default, Default, Default, 18)
    $sKB = Round(InetGetSize($sUrl) / 1000,3)
    Do
    Sleep(100)
    $sSpeed = Round(InetGetInfo($hDownload, 0) / TimerDiff($tTimer1), 2)
    $sSize = Round(InetGetInfo($hDownload, 0) / 1000,3)
    If $iFlag = 0 Then
    ProgressSet($sSize / $sKB * 100, Round($sSize / 1000,3) & " MB / " & Round($sKB / 1000,3) & " MB" & @LF & $sSpeed & " KB/S" & @LF & "Restdauer: " & (Round(($sKB - $sSize) / $sSpeed,1) & " Sek"))
    Else
    TrayTip($sFilename,Round($sSize / 1000,3) & " MB / " & Round($sKB / 1000,3) & " MB" & @LF & $sSpeed & " KB/S" & @LF & "Restdauer: " & (Round(($sKB - $sSize) / $sSpeed,1) & " Sek"),1000)
    Sleep(100)
    EndIf
    Until InetGetInfo($hDownload, 2) = True

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

    If $iFlag = 0 Then ProgressOff()

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

    EndFunc

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

    [/spoiler ]

    Für Verbesserungsvorschläge und Kritik bin ich gerne offen :D

  • du könntest es ja so machen dass er wartet bis ein anderes liedd an 1.stelle steht und dann downloaded
    und man einen speicherpfad für die downloads angben kann (ich lass dsas den ganzen tag laufen (mit sleep 24000))

  • Das mit dem Speicherpfad lässt sich leicht lösen..

    Das mit dem immer das akutelle Lied wird ein bisschen problematisch, da video2mp3.de ziemlich langsam ist, aber die einzige Seite ist, die am kompatibelsten ist. (Für die Funktionen, die das Programm benötigt, zB die Prozentanzeige im Tray bei der Onlinekonvertierung, auf jeder anderen Seite wird die per JS generiert -.-)
    Aber es liese sich trotzdem irgendwie machen, denke ich.