Shoutbox to Twitter Bot

Hi,

heute mal wieder ein kleines aber evtl. fuer dich hilfreiches Script. Dieses mal geht es darum die Nachrichten einer sogenannten Shoutbox, wie sie z.B. auf der Seite meines Jugentreffs benutzt wird per SMS aufs Handy zubekommen. Ich nutze dazu einfach Twitter. Aber seht selbst:

<?php
// Created 2007 by andi@saerdnaer.de
// Licenced under GPLv2
setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');

//$path = '/home/user/dir/';
$path = dirname(__FILE__);

function post_to_twitter($username, $password, $message)
{
    // The twitter API address
    $url = 'http://twitter.com/statuses/update.xml';
    // Alternative JSON version
    // $url = 'http://twitter.com/statuses/update.json';
    // Set up and execute the curl process
    $curl_handle = curl_init();
    curl_setopt($curl_handle, CURLOPT_URL, "$url");
    curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl_handle, CURLOPT_POST, 1);
    curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$message");
    curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password");
    $buffer = curl_exec($curl_handle);
    curl_close($curl_handle);
    // check for success or failure
    return !empty($buffer);
}

$url = 'http://1234567.shoutbox.de/';
$twitter_username = 'nutzername';
$twitter_password = 'passwort';

$file = implode('', file($url));
$file = utf8_encode($file);
$file = preg_replace('#­<img[^>]+>#is', '', $file);
$file = preg_replace('#<a[^>]+HREF="./go/\?u=([^"]+)"[^>]+>(?:.+?)</a>#is', '\1', $file);

if ( !preg_match_all('#<table (?:.+?)<font class="SB_shoutbox">([0-9\.]+) ([0-9\.]+)</font></div><b>(.+?)</b>:<br>(.+?)<script>(?:.+?)</table>#is', $file, $regs))
    die('No entry matches!');

$i = count($regs[0])-1;
$latest_time = strtotime($regs[1][$i] . " " . $regs[2][$i]); 

$last_update_time = intval(implode('', file($path.'last_update_time')));

if ( $latest_time > $last_update_time )
{
    $fp = fopen($path.'last_update_time', 'w');
    fwrite($fp, $latest_time);
    fclose($fp);
}
else
{
    exit;
}

for ( $i = 0; $i < count($regs[0]); $i++ )
{
    $item_time = strtotime($regs[1][$i] . " " . $regs[2][$i]);
    if ( $item_time <= $last_update_time )
    {
    continue;
    }

    $item_author = $regs[3][$i];
    $item_message = $regs[4][$i];
    $item_date = date('G:i', $item_time);

    post_to_twitter($twitter_username, $twitter_password, $item_author . ' ' . $item_date . ': ' . $item_message);
}
?>

URL zur Shootbox, Twitter Username und Passwort muessen natuerlich angepasst werden. Ich lasse das Script via Cronjob alle 5 Minuten laufen.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s


%d Bloggern gefällt das: