For many years, I've used Picasa to manage my thousands of photos. I'm not a pro, so I shoot in JPG instead of RAW, and Picasa offered the things I needed: basic tag management, some basic non-destructive photo editing, and a star label to indicate which photos I had uploaded to my online albums.
I recently decided to move everything into digiKam, which meets all of my requirements and gives me room to expand my workflow. Getting my photos and stars into digiKam required a little bit of elbow grease, and I thought I'd share my process and the scripts I wrote. All of the scripts below are in C# and were run with LINQPad. Note that I'm on Windows, so things might need to be adjusted a bit for other OSes. (And LINQPad is Windows only, but the scripts should also run as C# apps.)
Because I had made use of Picasa's non-destructive editing, all of my original photos on disk were