#!/usr/bin/perl -w # very quick hack to convert an opera bookmark file into an xbel # bookmark file (as the one used by konqueror, I don't know what # xbel is about, I used my konqueror file as an example) use strict; sub write_xbel_hdr { print "\n"; print "\n"; } sub write_xbel_tail { print "\n"; } # parser as a simple state machine: if 0 it tries to read an URL, # a FOLDER or a FOLDER end (a dash). # state 1: reading an URL # state 2: reading a folder # # it ignores the order of the bookmarks -- hopefully I can # convince konqueror to sort them (it's only interested in the # name and href of the bookmark) sub parse_input { my($state); my($title, $url); my($indent); $state = 0; $indent = ""; while() { s/^\s+//; s/\s+$//; if ($state == 0) { if ($_ eq "#URL") { $state = 1; next; } if ($_ eq "#FOLDER") { $state = 2; next; } if ($_ eq "-") { $indent = substr($indent, 0, -2); print "$indent\n"; next; } # finish writing the folder } elsif ($state == 1) { if (/NAME=(.*)$/) { $title = $1; } elsif (/URL=(.*)$/) { $url = $1; } if ($_ eq "") { print "$indent\n"; print "$indent$title\n"; $state = 0; } } elsif ($state == 2) { if (/NAME=(.*)$/) { $title = $1; } if ($_ eq "") { print "$indent\n"; $indent .= " "; print "$indent$title\n"; $state = 0; } } } } write_xbel_hdr; parse_input; write_xbel_tail;