bookmark-merge.pl 1.1 18 March 2001 Copyright (c) 2000-2001 Rob McMullen (firstname.lastname@example.org) http://bookmark-merge.sourceforge.net/ ABSTRACT ======== bookmark-merge.pl is a perl script that merges Netscape/Mozilla format bookmark files. I found that I was maintaining bookmarks at home and at work, and they would continually diverge as I found cool links at one site or the other. This script merges two (or more) bookmark files into one, trying to be smart about the ordering of the bookmarks. The resulting bookmark file is the union of all of the bookmark files, where the structure is built from the master file. BACKGROUND ========== Originally, I figured that someone had solved this problem already, so I looked around for a program that would merge bookmark files. There are a few out there, including another project hosted on SourceForge: Jeremy Buchmann's http://sourceforge.net/projects/merge/ His script worked well, but I liked keeping the ordering of my bookmarks. I don't alphabetize my bookmarks within a folder, I usually order them by how often I hit the link. Rather than modifying his script, I decided to write my own. I felt that this task would be an ideal use for object orientation and recursive design. FEATURES ======== * Merges two or more bookmark files into one master copy * Preserves ordering of folders and of bookmarks within folders * Attempts to insert new items in master bookmark file in the same relation as the bookmarks exist relative to the other bookmarks in the importing file * Perl 5, object oriented design KNOWN ISSUES ============ * This script handles Netscape/Mozilla format bookmarks only. * Aliased bookmarks are not handled. All information about bookmark aliases are stripped out of the generated bookmark file. * Bookmark descriptions are not handled. They are silently ignored, and are left out of the generated bookmark file. * Netscape doesn't seem to update the LAST_MODIFIED field of bookmarks if all you do is edit the name or location of the bookmark. Not really a bug in bookmark-merge per se, but something to be aware of if you are expecting name changes in the importing bookmarks to be copied over to the master bookmark file. * Mozilla bookmarks include ID tags on the folders, which the script mostly ignores. The only ID tag that the script handles is the PersonalToolbarFolder keyword, which is recognized. All other ID tags are left unchanged in the master bookmark file. * The number of entries in the resulting bookmark file is always as large or larger than the number in the master bookmark file. So far, there isn't any way to mark that an entry should be deleted. Instead, the model is to syncronize all bookmark files back out to all your machines after merging and deleting unwanted bookmarks from the single merged copy. USAGE ===== The script is run with the following command: bookmark-merge.pl [-o output] [-v] [-j date] master_file merging_file [other_files ...] -o output This is an optional parameter that names the new file to be created for the resulting new bookmarks. If this parameter is not specified, the new bookmark file is sent to standard output. -j date_in_seconds_since_1970 This is an optional parameter that speficies a date which all new items must be newer than in order to be merged. The date is specified as a time_t value, that is, the time in seconds since Jan. 1, 1970. This can be passed to the program using the backtick operator of the shell and the standard unix date command: bookmark-merge.pl -j `date --date="Jan 1 2000" +%s"` a.html b.html Thanks to Peter Westerstrom (email@example.com) for this patch. -v Verbose flag. This prints gargantuan amounts of information to STDERR as the script is processing the files. Useful mostly for debugging, or for those interested in seeing how the script operates. master_file This is the main bookmark file that you want the other files to be merged into. This is the baseline file; all bookmarks that are new in the other files are added to this file. The basic structure of the new bookmark file is therefore taken from this file. merging_file [other_files ...] These files (one or more files) are the other bookmark files that are going to be merged into the master file. DISCLAIMER ========== bookmark-merge.pl, Copyright (c) 2000-2001 Rob McMullen (firstname.lastname@example.org) bookmark-merge.pl comes with ABSOLUTELY NO WARRANTY; for details see the file COPYING included in the source distribution, or see the web site http://www.gnu.org/copyleft/gpl.html for more information. That means that I can't be held responsible for this program overwriting your bookmark files, deleting your operating system, or disrupting the earth's gravity field causing a meteorite impact crater where your monitor used to be. I use this program all the time, but that doesn't mean that there isn't some potentially nasty bug lurking somewhere. I hope there isn't; I have done my best to test the script. However, this is provided for you to use at your own risk. Make backup copies of any files before attempting to use this program. I hope you enjoy this program, and that it saves you some time. Have fun!