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