Funnelweb Comments to Disqus WXR

I've been meaning to migrate my blog comments out of Funnelweb and into Disqus for a while. I never quite got comments to work to my satisfaction in Funnelweb (user error I'm sure - Funnelweb is mostly great) and I appreciated the idea of subbing that out to a dedicated service. Plus I'll get the added benefit of having centrally located discussions that I can move to any blog system I decide to down the road with minimal fuss.

Disqus supports a few comment import formats (Wordpress, Blogger, etc.) and the generic WXR format which looked promising.

WXR is really just a specially formatted RSS XML file. The format that Disqus expects is described here. The simplest example I could find was here. It looks like this:

<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
          <title>Title of the article</title>
          <!-- thread body; use cdata; html allowed (though will be formatted to DISQUS specs) -->
          <content:encoded>This is the article text.</content:encoded>
          <!-- value used within disqus_identifier; usually internal identifier of article -->
          <!-- creation date of thread (article), in GMT -->
          <wp:post_date_gmt>2007-09-06 00:49:12</wp:post_date_gmt>
          <!-- open/closed values are acceptable -->

            <!-- internal id of comment -->
            <!-- author display name -->
            <!-- author email address --> <wp:comment_author_email></wp:comment_author_email>
            <!-- author url, optional -->
            <!-- author ip address -->
            <!-- comment datetime, in GMT -->
            <wp:comment_date_gmt>2007-09-06 00:49:12</wp:comment_date_gmt>
            <!-- comment body; use cdata; html allowed (though will be formatted to DISQUS specs) -->
            <wp:comment_content>Comment goes here</wp:comment_content>
            <!-- is this comment approved? 0/1 -->
            <!-- parent id (match up with wp:comment_id) -->

I put together a simple .NET console app to connect to a Funnelweb database, pull back all the comments, and output an XML comment file suitable for upload to Disqus. The project is on Github:

To set it up, just rename My.config.sample to My.config and specify the connection string to your Funnelweb database and the root URL to your website (for creating article links). That's it - run the executable and you'll have a WXR file that can be uploaded to Disqus. I was able to move ~100 comments over with no issues.

Hopefully this helps make the switch a little easier for someone. Happy commenting.