del.icio.us PHP API
This is a PHP class that provides (partially) complete access to the
del.icio.us social bookmarking service.
My del.icio.us.
DOWNLOAD
EXAMPLE USAGE
require_once('class.delicious.php');
// define some error messages
$errors = array(
1=>'You must enter credentials',
2=>'You have been throttled. Please stop attempting to connect to del.icio.us',
3=>'The del.icio.us service did not return a proper HTTP response',
4=>'Unable to connect to del.icio.us',
5=>'Unable to send data to del.icio.us',
6=>'Unable to parse the XML returned from del.icio.us'
);
// instanciate delicious object
$del = new delicious('youraccount','yourpassword');
// toggle debugging mode
//$del->debug_flag = 1;
// Example #1: get all posts to date, to initially import existing delicious entries into your blog
// PLEASE USE SPARINGLY OR del.icio.us WILL THROTTLE YOU
if(!$result = $del->get_all_posts())
{
$message = $errors[ $del->getError() ];
}
else
{
// debugging helpers
//echo $del->htmlvar_dump($result);
//echo $del->request;
//echo $del->response;
if( count($result) > 0)
{
// loop thru result set, inserting into db
foreach($result as $properties)
{
echo implode(', ',$properties)."\r\n\r\n";
// map delicious fields onto blog fields
$blogfields = array();
$blogfields['title'] = $properties['description'];
$blogfields['date'] = date('Y-m-d H:m:s',strtotime(ereg_replace('T|Z',' ',$properties['time'])));
$blogfields['link'] = $properties['href'];
$blogfields['content'] = $properties['extended'];
$blogfields['category'] = str_replace(' ',',',$properties['tag']);
$yourBlogObject->addPost($blogfields);
}
}
else
{
$message = $result['code'];
}
}
/*
Example #2: integrate posts for today
I have a cron job that executes this script once a day, importing my feed into my blog.
01 23 * * * /usr/local/bin/php -q /home/mydir/import_delicious.php
*/
$date = date('Y-m-d\TH:i:s\Z');
// get posts for today
if(!$result = $del->get_posts( false, $date ))
{
$message = $errors[ $del->getError() ];
}
else
{
if( count($result) > 0)
{
// loop thru result set, inserting into db
foreach($result as $properties)
{
echo implode(', ',$properties)."\r\n\r\n";
// map delicious fields onto blog fields
$blogfields = array();
$blogfields['title'] = $properties['description'];
$blogfields['date'] = date('Y-m-d H:m:s',strtotime(ereg_replace('T|Z',' ',$properties['time'])));
$blogfields['link'] = $properties['href'];
$blogfields['content'] = $properties['extended'];
$blogfields['category'] = str_replace(' ',',',$properties['tag']);
$yourBlogObject->update($blogfields);
}
}
else
{
$message = $result['code'];
}
}
// Example #3: integrating a range of dates
if(!$dates = $del->get_post_dates())
{
$message = $errors[ $del->getError() ];
}
else
{
foreach($dates as $row)
{
if($row['date'] < '2004-10-06' && $row['date'] > '2004-09-06')
{
// for integrating specific dates (the outermost loop that is commented out)
$date = date('Y-m-d\TH:i:s\Z',strtotime($row['date']));
if(!$result = $del->get_posts( false, $date ))
{
$message = $errors[ $del->getError() ];
}
else
{
if( count($result) > 0)
{
// loop thru result set, inserting into db
foreach($result as $properties)
{
echo implode(', ',$properties)."\r\n\r\n";
// map delicious fields onto blog fields
$blogfields = array();
$blogfields['title'] = $properties['description'];
$blogfields['date'] = date('Y-m-d H:m:s',strtotime(ereg_replace('T|Z',' ',$properties['time'])));
$blogfields['link'] = $properties['href'];
$blogfields['content'] = $properties['extended'];
$blogfields['category'] = str_replace(' ',',',$properties['tag']);
$yourBlogObject->update($blogfields);
}
}
else
{
$message = $result['code'];
}
}
}
}
}
// send notification of import
$message = isset($message) ? $message : 'update successful';
$message .= "\r\n\r\n".ob_get_contents();
ob_end_clean();
mail('youremail@example.com','delicious update', $message);