WinHTTP - leere Serverantwort

  • Hallo Community!

    Ich arbeite gerade an einer automatischen Songtextabfrage, die die Website AZLyrics.com benutzt.

    Theoretisch funktioniert es - theoretisch. Für die ersten Anfragen genügt es, dann beginnt der Server zu spinnen - habe ich in der WinHTTP Abfrage was vergessen?

    Denn nach einigen Aufrufen komm ich nicht zum Server, ich müsste den PC immer neu starten oder den Router resetten.
    Chrome gibt mir den Fehler " ERR_EMPTY_RESPONSE" aus.

    Hier mein Script, am Anfang habe ich eine Schleife eingebaut, um den Fehler zu reproduzieren.

    Spoiler anzeigen
    [autoit]

    #include <String.au3>

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

    ;~ Test

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

    $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
    $z = 0
    While 1
    $lyrics = _Lyrics_Search_Engine("Hey Mama", "The Black Eyed Peas",$oHTTP)
    $z = $z + 1
    ConsoleWrite($z & @CRLF)
    WEnd

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _Lyrics_Search_Engine
    ; Description ...: Search for Lyrics by Song and Artist ; Using http://www.azlyrics.com
    ; Syntax.........: _Lyrics_Search_Engine($iSong,$iArtist)
    ; Parameters ....:
    ; $iSong - Name of the song
    ; $iArtis - Name of the artist
    ; Return values .: Success - Returns the Lyrics of the song
    ; Failure - Returns 0
    ; Author ........: StevenX (Stefan Blagojevic)
    ; Modified.......:
    ; Link ..........:
    ; Example .......: _Lyrics_Search_Engine("Hey Mama", "The Black Eyed Peas")
    ; ===============================================================================================================================

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

    Func _Lyrics_Search_Engine($iSong,$iArtist,$oHTTP)

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

    ;~ Deleting non-word characters and lower all characters
    $iSong = StringRegExpReplace(StringLower(StringStripWS($iSong,8)),"\W","")
    $iArtist = StringRegExpReplace(StringLower(StringStripWS($iArtist,8)),"\W","")

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

    ;~ Because AZLyrics is not accepting "the" in Artist (like The Beatles, The Black Eyed Peas or The Black Keys), now deleting "the"
    If StringLeft($iArtist,3) = "the" Then $iArtist = StringTrimLeft($iArtist,3)

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

    ;~ Requesting Body
    $oHTTP.Open("GET", "http://www.azlyrics.com/lyrics/"&$iArtist&"/"&$iSong&".html", False)

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

    $oHTTP.Send()
    $oReceived = $oHTTP.ResponseText
    ;~ MsgBox(0,"",$oReceived)

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

    $lyrics = _StringBetween($oReceived,"<!-- start of lyrics -->","<!-- end of lyrics -->")
    If $lyrics = 0 Then
    Return 0
    SetError(0)
    Else

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

    ;~ Formatting HTML
    $lyrics = StringReplace($lyrics[0],"<br />",@CRLF)
    $lyrics = StringReplace($lyrics,"<i>","")
    $lyrics = StringReplace($lyrics,"</i>","")

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

    Return $lyrics
    EndIf
    $oHTTP.CloseHandle()
    EndFunc

    [/autoit]

    Was WinHTTP angeht, bin ich unerfahren. Falls ihr Verbesserungen hättet, immer raus damit :P

    Steve

    [Blockierte Grafik: http://stefan.blagojevic.at/loading.gif]

    Design, Modellbau, CAD <3
    AutoCAD, ArchiCAD, REVIT (ist ein Scheiss, habe aber das Zertifikat)

    Cinema 4D, RuckZuck Statik Programm

    Michael Bay als Architekt


    Da eine Glasfassade! Booom Sichtbeton! Laminiertes Bild auf Mosaiksteinchen! Granit! Granit! Granit! Sichtbetonwand mit 50° Neigung!
    Holzverkleidung erscheint da! Boooooom!

  • Naja was würdest du mit jemandem machen der dir hunderte male und pausenlos den gleichen Satz ins Ohr flüstert? Du würdest dir den Mist sicher nicht lange anhören und entsprechend reagieren. :D

    Das selbe wird auch der Webserver machen... du handelst dir sehr wahrscheinlich einen temporären IP Ban ein damit deine Sinnlosanfragen den Server bzw. dessen DB nicht in die Knie zwingen.

  • Versuch mal eine Pause in deine Schleife einzubauen... Es ist nicht allzu höflich einen Server mit einigen Requests pro Sekunde von der selben IP zu bombardieren :whistling: .
    Vielleicht hat AZLyrics ein Limit bezüglich der Anfragen pro Sekunde.
    Als Alternative könntest du es mit einer Seite versuchen die eine API zur Verfügung stellt um Lyrics abzufragen. Die hier zum Beispiel: http://lyrics.wikia.com/Lyrics_Wiki

  • Müsste ein IP Ban sein, da ich mit keinem PC über den selben Router raufkomme :D

    Dachte nur, dass ich mit WinHTTP etwas falsch gemacht hätte und die Verbindung deshalb abgelehnt wird ^^

    Ja tut mir Leid, wenn die deren URLs so schön einpacken und sogar Kommentare in den Source reinbauen :D

    Danke, name, habs mit einer Pause versucht, passiert trotzdem. Aber danke für den Tipp mit der Wikia

    Steve

    [Blockierte Grafik: http://stefan.blagojevic.at/loading.gif]

    Design, Modellbau, CAD <3
    AutoCAD, ArchiCAD, REVIT (ist ein Scheiss, habe aber das Zertifikat)

    Cinema 4D, RuckZuck Statik Programm

    Michael Bay als Architekt


    Da eine Glasfassade! Booom Sichtbeton! Laminiertes Bild auf Mosaiksteinchen! Granit! Granit! Granit! Sichtbetonwand mit 50° Neigung!
    Holzverkleidung erscheint da! Boooooom!

  • name22:

    Und wie decode ich den Text dann?

    A-La la la laa<br /><br />Hey mama, this that shit that make you groove, mama<br />Get on the flow and move your booty mama<br />We the blast masters blastin' up the jamma<br /><br />(Rewind)<br />Cutie cutie, make sure you move your booty<br />Shake that thing like we in the city of sin, and<br />Hey shawty, I know you want to party<br />the way your body lookin' make me really feel naughty<br />Cutie cutie, make sure you move your booty<br />Shake that thing like we in the city of sin, and<br />Hey shawty, I know you want to party<br />the way your body lookin' make me really feel naughty<br /><br /><b>will.i.am</b><br />I got a naughty naughty style and a naughty naughty crew<br />But everything I do, I do just for you<br />I'm a little bit of Old, and a bigger bit of New<br />The true niggas know that the peas come thru<br />We never cease, we never die no we never decease<br />We multiply like we mathamatice<br />And then we drop bombs like we in the middle east<br />The bomb bomb&

    :D

    [Blockierte Grafik: http://stefan.blagojevic.at/loading.gif]

    Design, Modellbau, CAD <3
    AutoCAD, ArchiCAD, REVIT (ist ein Scheiss, habe aber das Zertifikat)

    Cinema 4D, RuckZuck Statik Programm

    Michael Bay als Architekt


    Da eine Glasfassade! Booom Sichtbeton! Laminiertes Bild auf Mosaiksteinchen! Granit! Granit! Granit! Sichtbetonwand mit 50° Neigung!
    Holzverkleidung erscheint da! Boooooom!

  • Wie ich gerade lese ist es dieser Webseite leider aus bescheuerten Gründen verboten die Lyrics direkt per API weiterzugeben... Die wurden wohl gezwungen das zu ändern, seitdem darf man nur noch auf eine Webseite weitergeleitet werden, auf der neben den Lyrics Werbung angezeigt wird. Die Einnahmen sacken die Copyright Inhaber ein... :pinch:
    Es gibt aber auch einige andere Datenbanken im Internet, die speziell darauf ausgelegt sind Metadaten zu Medien in Rohform bereitzustellen. Falls das mit Lyrics Wiki nichts ist würde ich mich an deiner Stelle in den XBMC Foren umschauen. Irgendwo müssen die ja ihre Lyrics herkriegen. Oder schau dir mal den Quellcode dieses XBMC Addons an: https://github.com/ronie/script.cu.lrclyrics/

  • *hust*ASCII to String*hust*

    [Blockierte Grafik: http://stefan.blagojevic.at/loading.gif]

    Design, Modellbau, CAD <3
    AutoCAD, ArchiCAD, REVIT (ist ein Scheiss, habe aber das Zertifikat)

    Cinema 4D, RuckZuck Statik Programm

    Michael Bay als Architekt


    Da eine Glasfassade! Booom Sichtbeton! Laminiertes Bild auf Mosaiksteinchen! Granit! Granit! Granit! Sichtbetonwand mit 50° Neigung!
    Holzverkleidung erscheint da! Boooooom!