On Feb 21, 2006, at 5:39 AM, chucks wrote:
I wasn't able to find out any official resource on how one can back- up the Blog Posts and comments at a roller blog (say hosted at JRoller.com). This
would be good for anybody planning to move to any other blogware.

Is there any hack available?

There are a couple of hacks, here's one:
http://blogs.sun.com/roller/page/richb? entry=backing_up_your_roller_posts


And here's another I just recommended to somebody today...

Currently, if you don't have access to the internal Roller API and/or the Roller database, the only way to backup a Roller blog is to write a custom template.

Here's how you'd do it:
1 - create a new template in your blog
2 - within the template use the $pageModel object to fetch all entries of your blog 3 - iterate through those entries to output your blog in RSS or Atom format (example below) 4 - create your own name-spaced XML element to represent comments within each item 5 - write a simple program that parses that and uses MetaWeblog API to post to your new blog

For step #2 refer to the Roller macro reference
http://rollerweblogger.org/velocidoc/

For step #3 refer to the Atom or RSS spec
http://atompub.org/2005/07/11/draft-ietf-atompub-format-10.html
http://blogs.law.harvard.edu/tech/rss

For step #5 refer to the MetaWeblog API
http://www.xmlrpc.com/metaWeblogApi

For parsing RSS, see the chapter 5 examples from my book
For posting via MetaWeblog API (and Atom protocol), see the chapter 8 examples from my book:
http://blogapps.dev.java.net

- Dave


PS. you could use this template as a starting point:

$pageHelper.setContentType("application/rss+xml;charset=utf-8")<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/";>
<channel>
  <title>$utilities.textToHTML($website.name,true)</title>
  <link>$websiteURL</link>
<description>$utilities.textToHTML($website.description,true)</ description>
  <language>en-us</language>
  <copyright>Copyright #formatDate("yyyy" $now)</copyright>
<lastBuildDate>$utilities.formatRfc822Date($updateTime)</ lastBuildDate> <generator>Roller Weblogger #showVersion() ($rollerBuildTime: $rollerBuildUser)</generator> #set( $entries = $pageModel.getRecentWeblogEntriesArray ($entryCount, 'nil') )
  #foreach( $entry in $entries )
  <item>
    <title>$utilities.textToHTML($entry.title,true)</title>
    #if( $entry.link && !$entry.link.trim().equals("") )
<source url="$utilities.textToHTML($entry.link)"> $utilities.textToHTML($entry.link)</source>
    #end
    <description>#showEntryDescription($entry)</description>
<category>$utilities.textToHTML($entry.category.name,true)</ category>
    <link>$absBaseURL$entry.permaLink</link>
    <guid isPermaLink="true">$absBaseURL$entry.permaLink</guid>
    #if( $website.allowComments )
<comments>$absBaseURL$utilities.textToHTML($entry.commentsLink)</ comments>
    #end
    <pubDate>$utilities.formatRfc822Date($entry.pubTime)</pubDate>
<dc:creator>$utilities.textToHTML($entry.creator.fullName,true)</ dc:creator>
    #set( $mc_url = $entry.findEntryAttribute("att_mediacast_url") )
    #set( $mc_type = $entry.findEntryAttribute("att_mediacast_type") )
#set( $mc_length = $entry.findEntryAttribute ("att_mediacast_length") )
    #if( $mc_url && $mc_length && $mc_type )
       <enclosure url="$mc_url" type="$mc_type" length="$mc_length" />
#set($mc_url = false) #set($mc_type = false) #set($mc_length = false)
    #end
  </item>
  #end
</channel>
</rss>



Reply via email to