Moving from LiveJournal to Frog with livefrog

May 29, 2013
Updated: March 25, 2017

There are times when you want more control over your content. There are also times when you don’t want another platform to dictatet what goes in or out. Issues like censorship and politics, can easily creep up on a blogging platform. I found specific cases wherein I needed to convert LiveJournal articles to another platform. There are tools that does this, however, I found none, so far, that translates to Frog files. This is my feeble attempt to achive that.

Table of contents

Introduction

livefrog is a utility written in Racket, used to migrate LiveJournal posts to Frog, a blogging platform written in Racket, too. It uses the files dumped by either ljdump, or ljmigrate.

Installation

livefrog is available via Racket’s Planet2:

$ raco pkg install livefrog

If that doesn’t work, you can alternately install by fetching livefrog, and the dependencies, from github

$ git clone https://github.com/jbclements/sxml.git
$ git clone https://github.com/greghendershott/frog.git
$ git clone https://github.com/ebzzry/livefrog.git
$ raco pkg install frog/ sxml/ livefrog/

The trailing slashes are important, to tell raco that you are installing from local directories. Without it, it will try to fetch the sources from the internet.

Usage

This sections contains instructions for creating files suitable for use with Frog.

Basics

To create a Markdown file from the file entry.xml

$ raco livefrog -m entry.xml

That, however, becomes cumbersome if you’re going to manage more than a hundred entries. To automatically “pick up” the files created by ljdump or ljmigrate, and convert them to Markdown.

$ raco livefrog -am

Bear in mind, though, that ljdump and ljmigrate differ on how the trees for the data are created. ljdump has the following tree format, where USERNAME is your LiveJournal account name:

ljdump/
  build
  ChangeLog
  convertdump.py
  USERNAME/
    L-1
    L-2
    C-2
    L-3
    ...
  ljdump.config
  ljdump.config.sample
  ljdump-gui.py
  ljdump.py*
  README.txt
  TODO

ljmigrate, on the other hand, uses a different format:

ljmigrate/
  LICENSE.text
  ljmigrate.cfg
  ljmigrate.cfg.sample
  ljmigrate.py*
  README.md
  README_windows.txt
  TODO
  www.livejournal.com/
    USERNAME/
      entry00001/
        entry.xml
      entry00002/
        entry.xml
        comment.xml
      html/
      metadata/
      userpics/

After creating the Markdown Frog source files, you may now copy them to your Frog source directory, designated at _src/posts/

Comments

Frog, by default, uses Disqus to handle the comments. To import comments to this platform, you need to generate an XML file that must adhere to Disqus’s comment import rules.

To create a file, named comments.xml that will be used for importing comments, to be used with http://import.disqus.com, using foo.bar.com as the root site:

$ raco livefrog -s foo.bar.com -c comments.xml

Updating

If you installed livefrog using Planet2, you can update it by running:

$ raco pkg update livefrog

However, if you used the latter method, you may update it by pulling the updates, uninstalling livefrog, then installing it again:

$ cd livefrog
$ git pull origin master
$ cd ..
$ raco pkg remove livefrog
$ raco pkg install livefrog/

Miscellany

To reduce typing, you may optionally create an alias to raco livefrog in your shell.

Sh-like shells:

$ echo 'alias livefrog="raco livefrog"' >> ~/.bashrc

Csh-like shells:

$ echo 'alias livefrog raco livefrog' >> ~/.cshrc

Replace .bashrc, and .cshrc, with the appropriate init file for your shell.

The sources, along with additional information, are located at https://github.com/ebzzry/livefrog.