Hallo zusammen
ich hänge mal wieder fest :wacko:
In meinem Script möchte ich unter anderem den aktuellen Titel und Interpreten, sowie die Zuhörerzahlen und eventuell auch den StreamStatus eines ShoutCastServers anzeigen lassen. Dazu habe ich das folgende Script gefunden, komme aber mit der Umsetzung nicht gnz klar
Der erste Punkt ist, dass die entsprechende Seite inkl. Port aufgerufen wird. z.B.: http://81.169.150.50:9898/index.html Das kann ich ja nicht direkt so übernehmen oder?
Der andere Punkt ist die Variable $sPost, wenn ich das richtig verstanden habe gibt diese vor welcher Bereich ausgelesen werden soll? Aber wie gebe ich das vor, wenn sich der Inhalt von der Länge ständig ändert?
Spoiler anzeigen
#include <IE.au3>
[/autoit] [autoit][/autoit] [autoit]Global $sURL = "http://81.169.150.50:9898/index.html"
Global $sPost, $aReturn
_INetGetSourcePost($sURL, $sPost)
MsgBox(0, "TEST", $aReturn[0] & @CRLF & $aReturn[1])
#Region ### STREAMGET ###
;===============================================================================
;
; Function Name: _INetGetSourcePost()
; Description: Gets the source from an URL without writing a temp file and you can send a Post.
; Parameter(s): $sURL = The URL of the site.
; $sPost = The Post to send
; Requirement(s): -
; Return Value(s): On Success - Return a array with $aReturn[0] = Backheader and $aReturn[1] = Sourcecode
; On Failure - 0 and sets @ERROR
; @error = 1: Post or URL is nothing
; @error = 2: Error by RegularExpression
; @error = 3: $sHost or $sHttp1 is nothing
; @error = 4: Can not get IP of Host
; @error = 5: Can not connect to host
; @error = 6: Nothing can be send
; @error = 7: Connection abborted while receiving
; Author(s): GtaSpider
;
;===============================================================================
Func _INetGetSourcePost($sURL, $sPost)
Local $iSocket, $sHeader, $sRecv, $iIP, $sHost, $aRegExp, $sHttp1,$iErr,$iSend,$aReturn[2]
If $sURL = '' Or $sPost = '' Then Return SetError(1, 0, 0)
[/autoit] [autoit][/autoit] [autoit]If StringLeft($sURL, 7) <> 'http://' And StringLeft($sURL, <> 'https://' Then $sURL = "http://" & $sURL
If StringRight($sURL, 1) <> "/" Then $sURL &= "/"
$aRegExp = StringRegExp($sURL, "http?://(.*?)/", 3)
If @error Then Return SetError(2, 0, 0)
$sHost = $aRegExp[0]
If $sHost = '' Then Return SetError(3, 0, 0)
$sHttp1 = StringTrimLeft($sURL,StringInStr($sURL,"/",-1,3)-1)
If $sHttp1 = '' Then Return SetError(3, 0, 0)
$sHeader = "POST " & $sHttp1 & " HTTP/1.1" & @CRLF & _
"Host: " & $sHost & @CRLF & _
"User-Agent: AutoIt v3" & @CRLF & _
"Content-Length: " & StringLen($sPost) & @CRLF & @CRLF & $sPost
TCPStartup() ;If not already done
$iIP = TCPNameToIP($sHost)
If $iIP = '' Or StringInStr($iIP, ".") = 0 Then Return SetError(4, 0, 0)
$iSocket = TCPConnect($iIP, 80)
If @error Or $iSocket < 0 Then Return SetError(5, 0, 0)
$iSend = TCPSend($iSocket, $sHeader)
If @error Or $iSend < 1 Then Return SetError(6, 0, 0)
While 1
$sRecv = TCPRecv($iSocket, 1024)
$iErr = @error
If $sRecv <> '' Then
While 1
$sRecv &= TCPRecv($iSocket, 1024)
If @error Then ExitLoop 2
WEnd
EndIf
If $iErr Then Return SetError(7,0,0)
WEnd
$aReturn[0] = StringLeft($sRecv,StringInStr($sRecv,@CRLF&@CRLF)-1)
$aReturn[1] = StringTrimLeft($sRecv,StringLen($aReturn[0])+4)
Return $aReturn
EndFunc ;==>_INetGetSourcePost
#EndRegion ### STREAMGET ###