You can fairly easily import data from Roller using the MovableType import script. First, you need to export your blog from Roller database, then use it to create entries in your new blog. Pictures you need to copy to appropriate content directory yourself. Modify the $user, $oldresources, $newresources, and $connection variables in a beginning of script, store it on somewhere on you web host where php execution is allowed, and you will get the dump of your Roller blog in MovableType Import format in return. You can just use wget to store it into file. Then follow the instructions for MovableType import...
<html>
<head>
<title>Roller export</title>
</head>
<body>
<?
// assumes that Roller is running on postgresql
// it also assumes that there is only one blog for user
// the character set used by Roller is utf8, but this seems to suit at least
// WordPress just fine, so no conversions done
// just modify the script, store it somewhere where php execution is allowed
// and wget the url
//
// provided by Madis Kaal <mast@nomad.ee>
//
$user = "bloguser";
// in entry body, all occurrencies of $oldresources are
// replaced with $newresources
$oldresources = "/resources/bloguser/";
$newresources = "http://somesite/wp-content/";
// define your database connection here
// dbname is name of database
// usually, it is on localhost
// password is for accessing the db
// and user is username for it
$connection = pg_connect("dbname=dbname host=localhost password=dbpassword user=dbuser");
// -- this is it, no changes should be needed below -------------------------------
// get ID for user
$result = pg_Exec($connection, "select id from rolleruser where username='".$user."'");
$uid=pg_result($result,0,0);
// get ID for site
$result = pg_Exec($connection,"select id from website where userid='".$uid."'");
$siteid=pg_result($result,0,0);
// get all entries for this site
$entries= pg_Exec($connection,"select id,title,text,pubtime,categoryid,allowcomments,publishentry from weblogentry where websiteid='".$siteid."' order by pubtime");
// dump all entries
echo "--------\n";
for($i=0; $i<(pg_numrows($entries)); $i++)
{
// turn the category ID into category name, I know SQL-heads would just
// do it in query, but I'm a complete C-head
$resultRow = pg_fetch_array($entries, $i);
$c=$resultRow["categoryid"];
$cat=pg_result(pg_Exec($connection,"select name from weblogcategory where id='".$c."'"),0,0);
// dump metadata first
echo "PRIMARY CATEGORY: ".$cat."\n";
echo "AUTHOR: ".$user."\n";
echo "TITLE: ".$resultRow["title"]."\n";
$c=$resultRow["pubtime"];
// convert YYYY-MM-DD hh:mm:ss.ms to MM/DD/YYYY hh:mm:ss
echo "DATE: ".substr($c,5,2)."/".substr($c,8,2)."/".substr($c,0,4).substr($c,10,9)."\n";
$c=$resultRow["publishentry"];
if ($c=="t") { $c="1"; } else { $c="0"; };
echo "STATUS: ".$c."\n";
$c=$resultRow["allowcomments"];
if ($c=="t") { $c="1"; } else { $c="0"; };
echo "ALLOW COMMENTS: ".$c."\n";
echo "-----\n";
// done with metadata, multiline entries follow
echo "BODY:\n";
$c=str_replace($oldresources,$newresources,$resultRow["text"]);
echo $c."\n";
// find comments for the entry
$comments=pg_Exec("select name,email,url,posttime,remotehost,content from comment where entryid='".$resultRow["id"]."'");
for ($j=0; $j<(pg_numrows($comments)); $j++)
{
$c=pg_fetch_array($comments,$j);
// discard all comments containing url. this gets rid of spam, and also
// some legimate comments as well
if (strpos($c["content"],"http://")===false)
{
echo "-----\n";
echo "COMMENT:\n";
echo "AUTHOR: ".$c["name"]."\n";
echo "EMAIL: ".$c["email"]."\n";
echo "URL: ".$c["url"]."\n";
echo "IP: ".$c["remotehost"]."\n";
$d=$c["posttime"];
echo "DATE: ".substr($d,5,2)."/".substr($d,8,2)."/".substr($d,0,4).substr($d,10,9)."\n";
echo $c["content"]."\n";
}
}
echo "--------\n";
}
pg_close($connection);
?>
</body>
</html>

