|
Cant get socket to work
#148144
30/04/06 05:37 PM
|
Joined: Oct 2005
Posts: 91
truguce
OP
Babel fish
|
OP
Babel fish
Joined: Oct 2005
Posts: 91 |
Not sure if I am doing this right, this is my first try at using sockets. All im trying to do is get it to echo back to me the billboard new releases. I am not sure if it is my script that has the problem or if it is the site that i am trying to access. This is what I have so far alias sockettest {
sockopen toplist www.billboard.com 80
}
on *:SOCKOPEN:toplist: {
sockwrite -nt $sockname post www.billboard.com/bbcom/releases/releases_display.jsp?rollDate=0
sockwrite -nt $sockname HOST: billboard.com $+ $crlf $+ $crlf
sockwrite -nt $sockname Accept-Language: en-us
sockwrite -nt $sockname User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)
}
on *:SOCKREAD:toplist: {
if ($sockerr) {
echo -s SockError $sockname $sockerr
return
}
else {
var %temptext
sockread %temptext
echo -a %temptext
}
}
and this is what i get echoed back to me HTTP/1.0 400 Bad request Content-Type: text/html * /echo: insufficient parameters (line 18, sockettest.mrc) <h2>Bad request</h2> This webpage i am trying to echo is www.billboard.com/bbcom/releases/releases_display.jsp?rollDate=0 As I said not sure if it is me or the site. Thanks
|
|
|
Re: Cant get socket to work
#148145
30/04/06 05:49 PM
|
Joined: Mar 2004
Posts: 457
Danthemandoo
Fjord artisan
|
Fjord artisan
Joined: Mar 2004
Posts: 457 |
alias sockettest {
sockopen toplist www.billboard.com 80
}
on *:SOCKOPEN:toplist: {
sockwrite -nt $sockname [color:red]GET /bbcom/releases/releases_display.jsp?rollDate=0[/color]
sockwrite -nt $sockname HOST: billboard.com
sockwrite -nt $sockname Accept-Language: en-us
sockwrite -nt $sockname User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)
}
on *:SOCKREAD:toplist: {
if ($sockerr) {
echo -s SockError $sockname $sockerr
return
}
else {
var %temptext
sockread %temptext
echo -a %temptext
}
} Notes: Once you "sockopen" to a site, you no longer need the "www" bit in the GET. Its also a REALLY big site, so it'll take about 10 seconds to echo.
|
|
|
Re: Cant get socket to work
#148146
30/04/06 05:59 PM
|
Joined: Oct 2005
Posts: 91
truguce
OP
Babel fish
|
OP
Babel fish
Joined: Oct 2005
Posts: 91 |
I tried that and got this HTTP/0.9 400 Bad Request * /echo: insufficient parameters (line 18, sockettest.mrc) I also tried it on yahoo sports with no such luck. I think i am using the wrong post/get method this is what i have for yahoo alias sockettest {
sockopen toplist www.yahoo.com 80
}
on *:SOCKOPEN:toplist: {
sockwrite -nt $sockname GET sports.yahoo.com/mlb/scoreboard
sockwrite -nt $sockname HOST: yahoo.com
sockwrite -nt $sockname Accept-Language: en-us
sockwrite -nt $sockname User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)
}
on *:SOCKREAD:toplist: {
if ($sockerr) {
echo -s SockError $sockname $sockerr
return
}
else {
var %temptext
sockread %temptext
echo -a %temptext
}
}
<h1>Sorry, Bad Request.</h1> Your browser sent a request that this server could not understand.<P> Invalid URI in request GET sports.yahoo.com/mlb/scoreboard<P> <p>Please check the URL for proper spelling and capitalization. If you're having trouble locating a destination on Yahoo!, try visiting the <strong><a i always get a bad request error. 
|
|
|
Re: Cant get socket to work
#148147
30/04/06 06:02 PM
|
Joined: Mar 2004
Posts: 457
Danthemandoo
Fjord artisan
|
Fjord artisan
Joined: Mar 2004
Posts: 457 |
alias sockettest {
sockopen toplist sports.yahoo.com 80
}
on *:SOCKOPEN:toplist: {
sockwrite -nt $sockname GET /mlb/scoreboard
sockwrite -nt $sockname HOST: yahoo.com
sockwrite -nt $sockname Accept-Language: en-us
sockwrite -nt $sockname User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)
}
on *:SOCKREAD:toplist: {
if ($sockerr) {
echo -s SockError $sockname $sockerr
return
}
else {
var %temptext
sockread %temptext
echo -a %temptext
}
} This one and the one above both work perfectly well for me.
|
|
|
Re: Cant get socket to work
#148148
30/04/06 06:39 PM
|
Joined: Oct 2005
Posts: 91
truguce
OP
Babel fish
|
OP
Babel fish
Joined: Oct 2005
Posts: 91 |
Weird i put the yahoo one just as you have and it works, but the billlboard i still get HTTP/0.9 400 Bad Request * /echo: insufficient parameters (line 18, sockettest.mrc) Not sure what the problem is on my end
|
|
|
Re: Cant get socket to work
#148149
30/04/06 08:34 PM
|
Joined: Oct 2005
Posts: 1,741
genius_at_work
Hoopy frood
|
Hoopy frood
Joined: Oct 2005
Posts: 1,741 |
This line:
sockwrite -nt $sockname GET /mlb/scoreboard
should be like this:
sockwrite -nt $sockname GET /mlb/scoreboard HTTP/1.0
-genius_at_work
|
|
|
Re: Cant get socket to work
#148150
30/04/06 11:24 PM
|
Joined: Oct 2005
Posts: 91
truguce
OP
Babel fish
|
OP
Babel fish
Joined: Oct 2005
Posts: 91 |
thats it!!!! now it will list the billboard site. Thanks much!!!!
|
|
|
Re: Cant get socket to work
#148151
01/05/06 12:34 AM
|
Joined: Oct 2005
Posts: 91
truguce
OP
Babel fish
|
OP
Babel fish
Joined: Oct 2005
Posts: 91 |
Now that I can get the script to work I got a few problems. I found some code by Riamus in his weather bot to get $htmlfree info. on *:SOCKREAD:toplist: {
if ($sockerr) {
echo -s SockError $sockname $sockerr
return
}
else {
var %temptext
sockread %temptext
if (*<div class="searchResultAlb_Col_txt_1_1_1">* iswm %temptext) || (*<div class="searchResultAlb_Col_txt_1_2">* iswm %temptext) {
write socktemp.txt $htmlfree(%temptext)
}
}
}
alias -l htmlfree {
var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x,&nbsp;)
return %x
}
It writes the album name and the artist on two seprate lines and has 4 tab spaces in front of it. 10 Bare Essentials Artist: Bobby Bare
Thats how it writes to the txt file. What I cant figure out is how to get rid of the 4 tab spaces and put the album and artist on the same line. I tried a few different things but all with no success. The *<div class="searchResultAlb_Col_txt_1_1_1">* is the album line and *<div class="searchResultAlb_Col_txt_1_2">* is the artist line. Thanks
|
|
|
Re: Cant get socket to work
#148152
01/05/06 12:59 AM
|
Joined: Oct 2005
Posts: 1,741
genius_at_work
Hoopy frood
|
Hoopy frood
Joined: Oct 2005
Posts: 1,741 |
The artist and song data are probably on different lines in the html code. To get both items on one line, you need to store the first item in a variable when it arrives, and then write both items at the same time when the second arrives. Here is a pseudocode example:
if (song isin thisdata) { set %song $htmlfree($1-) } elseif (artist isin thisdata) { write file.txt %song $htmlfree($1-) }
-genius_at_work
|
|
|
Re: Cant get socket to work
#148153
01/05/06 02:40 AM
|
Joined: Oct 2005
Posts: 91
truguce
OP
Babel fish
|
OP
Babel fish
Joined: Oct 2005
Posts: 91 |
hmm i thought i tried that but quess not because it worked perfect. The only thing is that there is 4 tab spaces in between each item. In the front on each line there is 4 tab spaces and the after the album name before the artist there is 4 more. I am sure it is in the $htmlfree but not to sure how that code works. This is what I have now on *:SOCKREAD:toplist: {
if ($sockerr) {
echo -s SockError $sockname $sockerr
return
}
else {
var %temptext
sockread %temptext
if (*<div class="searchResultAlb_Col_txt_1_1_1">* iswm %temptext) {
set %song $htmlfree(%temptext)
}
elseif (*<div class="searchResultAlb_Col_txt_1_2">* iswm %temptext) {
write sockettemp.txt %song $htmlfree(%temptext)
}
}
}
alias -l htmlfree {
var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x,&nbsp;)
return %x
}
|
|
|
Re: Cant get socket to work
#148154
01/05/06 04:13 AM
|
Joined: Oct 2005
Posts: 1,741
genius_at_work
Hoopy frood
|
Hoopy frood
Joined: Oct 2005
Posts: 1,741 |
Just change this line:
var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x, )
To this line:
var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x, ,$chr(9))
-genius_at_work
|
|
|
Re: Cant get socket to work
#148155
01/05/06 04:38 AM
|
Joined: Oct 2005
Posts: 91
truguce
OP
Babel fish
|
OP
Babel fish
Joined: Oct 2005
Posts: 91 |
Im amazed at how much you know. As always it works perfect. The album name and artist is right next to each other. Thank you for all your help!
|
|
|
|
|
|