Getting Firefox bookmarks into Spotlight

·

Based on this hint, but nicer and in Perl, this script will convert all of your Firefox bookmarks into .webbookmark files that can be indexed by Spotlight (but I still haven't found a way to open the files with Firefox). Don't run it too often as it's quite intensive - daily should probably be enough.


#!/usr/bin/perl
use strict;
use warnings;
my $meta = "$ENV{HOME}/Library/Caches/Metadata/Firefox";
system("mkdir -p $meta");
system("rm $meta/*.webbookmark");
my $bookmarks = `find \~/Library/Application\\ Support/Firefox/Profiles/ -name 'bookmarks.html'`;
open (IN, $bookmarks);
while (<IN>){
    my $line = $_;
    if (($line =~ m|HREF="(.*?)".*>(.*?)</A>|) && ($1 !~ /^javascript\:/)){
    
        my $url = $1;
        my $name = $2;
        $url =~ s/&/&amp;/g;
        
        my $uuid = `uuidgen`;
        $uuid =~ s/\n$//;
        
        open (OUT, ">$meta/$uuid.webbookmark");    
        print OUT qq|<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Name</key>
    <string>$name</string>
    <key>URL</key>
    <string>$url</string>
</dict>
</plist>|;
        close OUT;    
    }
}
system("plutil -convert binary1 $meta/*.webbookmark");
system("mdimport $meta");