+++ /dev/null
-#!/usr/bin/perl
-
-# hotexplode -- a program for "exploding" a xmosaic hotlist or Netscape
-# bookmark file into a hierarchial multi-page structure.
-# acb 60 Chs 3162
-
-# revision history:
-# v1.0: 1-3-1996: initial version
-
-$date = `date`;
-
-# customise below
-
-# header: some arbitrary HTML text which is appended below the title and
-# above the hotlist data
-
-$header = <<FOO;
-<hr width="50%">
-<blockquote>
-This hotlist was generated with
-<a href="http://www.zikzak.net/~acb/hacks/hotexplode.html">hotexplode</a>
-on $date.
-<p>
-<b>WARNING:</b> The inclusion of a link to a page on
-this hotlist is not an indication of the maintainer's
-approval of or agreement with its content.
-</blockquote>
-<hr width="50%">
-<blockquote>
-Please <b>DO NOT</b> bookmark this page. Bookmark the
-<a href="http://phdru.name/Bookmarks/">main page</A> instead.
-Any other page in the hierarchy can be renamed, moved or removed at any time.
-</blockquote>
-FOO
-
-$footer = <<FOO;
-<hr>
-FOO
-
-# which directory shall contain the hotlist?
-
-$outdir = "hotlist";
-
-
-# end of customisable portion
-
-require "getopts.pl";
-
-&Getopts("o:t:v");
-
-$outdir = $opt_o if $opt_o;
-
-
-# seek forward to the title
-while (<>) {
- if (/<TITLE>([^\<\>]*)<\/TITLE>/) {
- $title = $1;
- last;
- }
-}
-
-$title = $opt_t if $opt_t;
-
-# seek forward to the start of the list
-
-
-while (<>) {
- if(/<UL>/) { warn "Detected xmosaic hotlist format\n" if $opt_v;
- &parse_mosaic_hotlist($outdir, $title); last; }
- if(/<DL>/) { warn "Detected Netscape bookmark format\n" if $opt_v;
- &parse_netscape_bookmarks($outdir, $title); last; }
-}
-
-# parse an xmosaic hotlist
-# exit when we meet a </UL>
-# arguments: pathname of directory in which output is to be placed,
-# title
-
-sub parse_mosaic_hotlist {
- # we write the file at the very end, because (I think) filehandles do
- # not have local scope, and this is recursive
- local($prefix, $title) = @_;
- local($result) = "<HTML><HEAD>\
-<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=koi8-r\">\
-<TITLE>$title</TITLE>\
-</HEAD>\
-<BODY>\n<CENTER><H1>$title</H1></CENTER>\n $header \n<hr>\n<ul>";
-
- warn "Creating $prefix...\n" if $opt_v;
-
- # create the directory, if needed
- mkdir($prefix, 0755) unless -d $prefix;
-
- while (<>) {
- last if (/<\/UL>/);
-
- if(/<LI> *<A HREF=\"([^\"]*)\"[^\>]*>([^\<]*)<\/A>/) {
- #
- # A URL
- #
- local($url,$name) = ($1, $2);
- $result = $result."<li><a href=\"$url\">$name </a>\n";
- next;
- }
- if(/<LI> (.*)$/) {
- #
- # we've got a live one here...
- #
- local($subtitle)=local($filename)=$1;
- $filename =~ tr/0-9A-Za-z//cd;
- $filename =~ tr/A-Z/a-z/;
- <>; # eat the "<UL>" line.
- $result .= "<li><b><a href=\"${filename}/index.html\">${subtitle}</a></b>\n";
- &parse_mosaic_hotlist("${prefix}/${filename}", "${title}:${subtitle}");
- next;
- }
-
- }
-
- $result = $result . $footer . "</body></html>";
- # write it to a file
- open(FILE, ">${prefix}/index.html");
- print FILE $result;
- close(FILE);
-}
-
-# parse a Netscape bookmarks list
-# exit when we meet a </DL>
-# arguments: pathname of directory in which output is to be placed,
-# subtitle
-
-sub parse_netscape_bookmarks {
- # we write the file at the very end, because (I think) filehandles do
- # not have local scope, and this is recursive
- local($prefix, $title) = @_;
- local($result) = "<HTML><HEAD>\
-<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=koi8-r\">\
-<TITLE>$title</TITLE>\
-</HEAD>\
-<BODY>\n<CENTER><H1>$title</H1></CENTER>\n $header \n<hr>\n<dl>";
-
- warn "Creating $prefix...\n" if $opt_v;
-
- # create the directory, if needed
- mkdir($prefix, 0755) unless -d $prefix;
-
- while (<>) {
- last if (/<\/DL>/);
- if (/<DT><H3[^\>]*>([^\<]*)<\/H3>/) {
- #
- # a nested list
- #
- local($subtitle)=$1;
- local($filename)=$1;
- $filename =~ tr/0-9A-Za-z//cd;
- $filename =~ tr/A-Z/a-z/;
- # parse the description here
- local($desc)="";
- while(<>) {
- last if (/<DL>/);
- $desc = $desc . $_;
- }
- $result = $result . "<dt><b><a href=\"${filename}/index.html\">${subtitle}</a></b>\n";
- unless("$desc" eq "") { $result = $result . $desc; }
- &parse_netscape_bookmarks("${prefix}/${filename}",
- "${title}:${subtitle}");
- next;
- }
- if (/<DT><A HREF=\"([^\"]*)\"[^\>]*>([^\<]*)<\/A>/) {
- #
- # A URL
- #
- local($url, $name) = ($1, $2);
- $result = $result."<dt><a href=\"$url\">$name </a>\n";
- next;
- }
- $result = $result . $_;
- }
- $result = $result . $footer . "</body></html>";
- # write it to a file
- open(FILE, ">${prefix}/index.html");
- print FILE $result;
- close(FILE);
-}
-
-