HOME  → POSTS  → 2011

Import Delicious/Pinboard Bookmarks Into Spotlight for Mac OS X

Software820 words4 minutes to read

I’ve been heavily invested in Delicious as a bookmarking service for many years. However, after learning about Delicious’ sunsetting, I’ve decided to join the ranks of the Great Delicious Exodus and sign up for an account with Pinboard.

One tool that has been an important part of my workflow is a tool called delimport, which automatically indexes my Delicious bookmarks and makes them available via Spotlight and Spotlight-powered tools (e.g., Alfred on Mac OS X).

While delimport hasn’t been updated since 2007, it has continued to work remarkably well. The upside is that the project has an open-source repository available, but I still ran into a few issues. Here’s how I added Pinboard support to delimport.

Getting Started

The first thing to note is that I’m running Mac OS X 10.6.5 and Xcode 3.2.5. This is notable because it’s what caused several of my problems while trying to solve this puzzle. We’ll get to that in a minute.

  1. I needed to pull down the delimport source code. This required additional steps.

    1. Install MacPorts if you haven’t already.

    2. Update MacPorts and its files to the latest version.

      sudo port -d selfupdate
      
    3. Install Darcs.

      sudo port install darcs
      
    4. Pull down the source code.

      darcs get http://ianhenderson.org/repos/delimport
      
  2. I’ll save you the time and tell you that delimport will not compile in Xcode 3.2. You’ll need to revert to an older version of Xcode, 3.1.4.

    1. Go to connect.apple.com and login.

    2. In the sidebar, choose Developer Tools.

    3. Scroll down and find the section labelled Xcode 3.1.4 Developer Tools.

    4. Choose the Xcode 3.1.4 Developer DVD (Disk Image) which clocks in at 993 MB.

    5. While waiting for that, you’ll need to uninstall your current version of Xcode.

      sudo /Developer/Library/uninstall-devtools –mode=all
      
  3. Once the Xcode 3.1.4 disk image is downloaded, install it.

    1. Make sure you include the Mac OS X 10.4 SDK as well.

    2. After the install has completed, restart your computer. No seriously.

Editing and Compiling

Note: A couple of people have asked why I don’t just redistribute a modified version of the app. The reason is licensing. As far as I can tell, the source code is 100% copyrighted with no license for redistributing modifications to the source or the app. As such, I’m providing instructions for modifying the app but you’ll need to compile it yourself.

  1. Once your system is back up, locate the delimport.xcodeproj file and open it in Xcode 3.1.4.

  2. Change the Base SDK pulldown to Deployment.

    Base SDK

  3. In the sidebar, choose the delimport project, right-click (or control-click), and choose Get Info.

    Get Info

  4. From the resulting dialog box, change the value of the Architectures setting to 32/64-bit Universal.

    Architectures

  5. Click the checkbox for Build Active Architecture Only.

  6. For the Valid Architectures setting, there are more architectures than we need. Remove all architectures except for i386 and x86_64.

    Valid Architectures

  7. While delimport is still selected in the sidebar, choose Project > Edit Active Target “delimport” from the menubar. Choose the Properties tab from the resulting dialog box. Change the version number to 0.3.1u which says that you’re using an unofficial modification (just in case the developer releases an official 0.3.1 version).

    Properties

  8. Open the Classes folder in the sidebar and find the DIBookmarksController.m file. Make the following changes to the file.

  9. In the menubar, choose Build > Build. If all is well, the source should compile with no errors.

Cleaning Up

First, let’s clean up after the old version of delimport.

  1. Shutdown any running copies of delimport by launching Activity Monitor, searching for delimport, clicking the Quit Process button in the toolbar, and choosing either Quit or Force Quit from the resulting dialog.

    Activity Monitor

  2. Open up your Accounts preference pane, click on the Login Items tab, and delete any entries that contain delimport.

    Accounts preference pane

  3. Open your Terminal and run the following commands.

    rm -Rf ~/Library/Caches/org.ianhenderson.delimport &&
    rm -Rf ~/Library/Caches/Metadata/delimport/ &&
    rm -f ~/Library/Preferences/org.ianhenderson.delimport.plist
    

Installation

Once we’ve removed the old cruft, let’s install our new app.

  1. From your delimport source code directory, open build/Deployment to find delimport.app.

    delimport.app

  2. Drag the app into your /Applications or /Applications/Utilities directory.

  3. Launch the app.

  4. Since we deleted all of the previous settings, your computer will think that this is the first time that we’ve launched the app. It will ask you if you want to launch it on login. Choose Add.

    Activity Monitor

  5. If you already have your credentials for Pinboard stored in your Keychain, it will ask if you want to give delimport access to your Pinboard credentials. Choose Always Allow.

  6. If you don’t have your credentials saved, delimport will ask for your Pinboard credentials. Go ahead and enter them.

  7. Within a few moments, you’ll be able to use Spotlight to access your Pinboard bookmarks.

Post-mortem

Once everything is installed and working, you’ll probably want to remove Xcode 3.1.4 and reinstall the latest version. Simply follow the aforementioned uninstallation instructions to remove the old Xcode, then install the latest Xcode.

If you don’t have the installer on-hand, you can always download the latest version from the logged-in version of developer.apple.com/mac.

Ryan Parman

is an engineering manager with over 20 years of experience across software development, site reliability engineering, and security. He is the creator of SimplePie and AWS SDK for PHP, patented multifactor-authentication-as-a-service at WePay, defined much of the CI/CD and SRE disciplines at McGraw-Hill Education, and came up with the idea of “serverless, event-driven, responsive functions in the cloud” while at Amazon Web Services in 2010. Ryan's aptly-named blog, , is where he writes about ideas longer than . Ambivert. Curious. Not a coffee drinker.