I appreciate the reply Joel. I'll give it a try. I also tried just
downloading from the stream api with the curl command line. However I
kept getting 'malformed xml' errors. It was weird, each tweet would
have the <?xml ... tag before it. That ring any bells with you? Same
thing with JSON format but it was a different error, still malformed.
All I'm doing is

curl http://stream.twitter.com/spritzer.xml -uuser:pass

<?xml version="1.0" encoding="UTF-8"?> is the exact line I get before
every status. If I manually clean up the XML (or JSON) it works great.

On Aug 2, 7:10 pm, Joel Strellner <j...@twitturly.com> wrote:
> Other than my username and password, this is an example that I know is
> working:
>
> <?php
> $count = 1;
> $startparsing = false;
>
> $keyword_needles[] = 'twitter';
> $keyword_needles[] = 'keyword2';
> $keyword_needles[] = 'keyword3';
> $keyword_needles[] = 'keyword4';
>
> // if your keywords have spaces, they must be urlencoded (twitter does
> not support phrases, only the first keyword will be used, the space
> character and after will be ignored)
> foreach ($keyword_needles AS $i=>$needle) {
>     $keyword_needles[$i] = urlencode($needle);
>
> }
>
> $poststr = 'track=' . implode(',', $keyword_needles);
> $fp = fsockopen("stream.twitter.com", 80, $errno, $errstr, 10);
> if (!$fp) {
>     echo "$errstr ($errno)\n";
>
> } else {
>
>     $out = "POST /track.json HTTP/1.1\r\n";
>     $out .= "Host: stream.twitter.com\r\n";
>     $out .= "User-Agent: YourUserAgent\r\n";
>     $out .= "Referer:http://yourdomain.com\r\n";;
>     $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
>     $out .= "Authorization: Basic " . base64_encode
> ("username:password")."\r\n";
>     $out .= "Content-length: " . strlen($poststr) . "\r\n";
>     $out .= "Connection: Close\r\n\r\n";
>     $out .= $poststr . "\r\n\r\n";
>
>     fwrite($fp, $out);
>     while (!feof($fp)) {
>         $line = fgets($fp, 4096);
>         if ($startparsing) {
>             if (trim($line) != '') {
>                 echo trim($line) . "\n";
>                 $tweet_obj = json_decode(trim($line));
>                 // do your stuff here
>             }
>         }
>         else {
>             // view the header lines: uncomment the below line
>             echo trim($line) . "\n";
>
>             $header_arr[] = $line;
>             $headercount = count($header_arr)-1;
>
>             if (trim($header_arr[$headercount]) == '') {
>                 $startparsing = true;
>                 $count = 1;
>                 unset($header_arr, $headercount);
>             }
>         }
>         if (trim($line) != '') $count++;
>     }
>     fclose($fp);}
>
> ?>
>
> The only changes I made was to echo things out and I added a keyword
> that I was sure would have volume - twitter.  It did take a little bit
> of time to connect.  I am assuming that that is because of their
> current load though, and not the script.
>
> On Aug 2, 2:25 am, Tom Fitzgerald <ccexpe...@gmail.com> wrote:
>
>
>
> >Joel,
>
> > For some reason when I try your code I get a timeout error. Any
> > suggestions? What you have is exactly what I'm looking for. It could
> > really help me out a jam, thanks!
>
> > On Jul 27, 4:02 pm,JoelStrellner <j...@twitturly.com> wrote:
>
> > > Here is a working example of how to do /track:
>
> > > $count = 1;
> > > $startparsing = false;
>
> > > $keyword_needles[] = 'keyword1';
> > > $keyword_needles[] = 'keyword2';
> > > $keyword_needles[] = 'keyword3';
> > > $keyword_needles[] = 'keyword4';
>
> > > // if your keywords have spaces, they must be urlencoded (twitter does not
> > > support phrases, only the first keyword will be used, the space character
> > > and after will be ignored)
> > > foreach ($keyword_needles AS $i=>$needle) {
> > >     $keyword_needles[$i] = urlencode($needle);
>
> > > }
>
> > > $poststr = 'track=' . implode(',', $keyword_needles);
> > > $fp = fsockopen("stream.twitter.com", 80, $errno, $errstr, 30);
> > > if (!$fp) {
> > >     echo "$errstr ($errno)\n";} else {
>
> > >     $out = "POST /track.json HTTP/1.1\r\n";
> > >     $out .= "Host: stream.twitter.com\r\n";
> > >     $out .= "User-Agent: YourUserAgent\r\n";
> > >     $out .= "Referer:http://yourdomain.com\r\n";;
> > >     $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
> > >     $out .= "Authorization: Basic " .
> > > base64_encode("username:password")."\r\n";
> > >     $out .= "Content-length: " . strlen($poststr) . "\r\n";
> > >     $out .= "Connection: Close\r\n\r\n";
> > >     $out .= $poststr . "\r\n\r\n";
>
> > >     fwrite($fp, $out);
> > >     while (!feof($fp)) {
> > >         $line = fgets($fp, 4096);
> > >         if ($startparsing) {
> > >             if (trim($line) != '') {
> > >                 //echo trim($line) . "\n";
> > >                 $tweet_obj = json_decode(trim($line));
> > >                 // do your stuff here
> > >             }
> > >         }
> > >         else {
> > >             // view the header lines: uncomment the below line
> > >             //echo trim($line) . "\n";
>
> > >             $header_arr[] = $line;
> > >             $headercount = count($header_arr)-1;
>
> > >             if (trim($header_arr[$headercount]) == '') {
> > >                 $startparsing = true;
> > >                 $count = 1;
> > >                 unset($header_arr, $headercount);
> > >             }
> > >         }
> > >         if (trim($line) != '') $count++;
> > >     }
> > >     fclose($fp);
>
> > > }
> > > On Mon, Jul 27, 2009 at 11:18 AM, Joseph <northwest...@gmail.com> wrote:
>
> > > > I am trying to use the track streaming API, but I'm having trouble
> > > > with the syntax. The example shows how to use a tracking list stored
> > > > in a file in the format: track = word1, word2, etc..
>
> > > > I tried the following (following a successful fsockopen call to
> > > > stream.twitter.api:
>
> > > > POST /track.json track = Palin, #fubar HTTP/1.1 Host:
> > > > stream.twitter.com User-Agent: UserAgent Authorization: Basic
> > > > cGXybmFzc3TzZGV2OlBhcm5hMzT1Mzl4MDMz Connection: Close
>
> > > > and I am getting the following error code: HTTP/1.1 400 Bad Request
>
> > > > The actual relevant test PHP code is:
>
> > > > $fp = fsockopen($url, 80, $errno, $errstr, 30);
> > > > if (!$fp) {
> > > >    echo "$errstr ($errno)\n";
> > > > } else {
> > > >    echo "file handle: ".$fp."<br/>";
> > > >    $header = "POST /track.json track = $trackTerms HTTP/1.1\r\n";
> > > >    $header .= "Host: stream.twitter.com\r\n";
> > > >    $header .= "User-Agent: UserAgent\r\n";
> > > >    $header .= "Authorization: Basic " . base64_encode($twitUsername .
> > > > ':' . $twitPwd)."\r\n";
> > > >    $header .= "Connection: Close\r\n\r\n";
> > > >    echo $header."<br/>";
> > > >    fwrite($fp, $header);
> > > >    $line = fgets($fp, 4096);
> > > >    echo $line;
> > > >    fclose($fp);
> > > > }

Reply via email to