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.
#include <String.au3>
;~ Test
$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
; #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")
; ===============================================================================================================================
Func _Lyrics_Search_Engine($iSong,$iArtist,$oHTTP)
;~ Deleting non-word characters and lower all characters
$iSong = StringRegExpReplace(StringLower(StringStripWS($iSong,8)),"\W","")
$iArtist = StringRegExpReplace(StringLower(StringStripWS($iArtist,8)),"\W","")
;~ 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)
;~ Requesting Body
$oHTTP.Open("GET", "http://www.azlyrics.com/lyrics/"&$iArtist&"/"&$iSong&".html", False)
$oHTTP.Send()
$oReceived = $oHTTP.ResponseText
;~ MsgBox(0,"",$oReceived)
$lyrics = _StringBetween($oReceived,"<!-- start of lyrics -->","<!-- end of lyrics -->")
If $lyrics = 0 Then
Return 0
SetError(0)
Else
;~ Formatting HTML
$lyrics = StringReplace($lyrics[0],"<br />",@CRLF)
$lyrics = StringReplace($lyrics,"<i>","")
$lyrics = StringReplace($lyrics,"</i>","")
Return $lyrics
EndIf
$oHTTP.CloseHandle()
EndFunc
Was WinHTTP angeht, bin ich unerfahren. Falls ihr Verbesserungen hättet, immer raus damit
Steve