{"id":15578080,"url":"https://github.com/davep/paindrop","last_synced_at":"2025-10-07T07:30:47.716Z","repository":{"id":253621100,"uuid":"843833023","full_name":"davep/paindrop","owner":"davep","description":"A command line tool that imports Pinboard data into Raindrop","archived":false,"fork":false,"pushed_at":"2025-01-03T15:14:44.000Z","size":42,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-20T06:59:20.770Z","etag":null,"topics":["bookmarks","cli","exporter","importer","migration","pinboard","pinboard-bookmarks","python","raindrop","raindrop-io"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/paindrop/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/davep.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-17T14:59:47.000Z","updated_at":"2025-01-19T05:06:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"40ef9c55-f1fb-4cf3-b24b-a2ecfff4cc81","html_url":"https://github.com/davep/paindrop","commit_stats":{"total_commits":15,"total_committers":1,"mean_commits":15.0,"dds":0.0,"last_synced_commit":"da6c63160f03ac987a91557b9efc6c34f63fd47b"},"previous_names":["davep/paindrop"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davep%2Fpaindrop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davep%2Fpaindrop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davep%2Fpaindrop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davep%2Fpaindrop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davep","download_url":"https://codeload.github.com/davep/paindrop/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235600027,"owners_count":19016195,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bookmarks","cli","exporter","importer","migration","pinboard","pinboard-bookmarks","python","raindrop","raindrop-io"],"created_at":"2024-10-02T19:05:00.352Z","updated_at":"2025-10-07T07:30:47.358Z","avatar_url":"https://github.com/davep.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Paindrop\n\n## Introduction\n\nPaindrop is a command line utility that helps you export your pins from\n[Pinboard](https://pinboard.in/) and import them into\n[Raindrop](https://raindrop.io).\n\nWhile Raindrop already supports importing Pinboard data just fine, it was\nmissing two things that were important to me:\n\n- Support for public/private bookmarks.\n- Support for an \"unread\" status.\n\nSo I wrote Paindrop to solve this particular problem for me. It works for\nme. This might not work for you.\n\nThe solution for me is to use just two collections in Raindrop: one for\npublic bookmarks, one for private bookmarks. Pins that are marked as\n\"unread\" are left with no collection (so the act of \"marking read\" will be\ndropping it into either the Public or Private collection).\n\nYou can read a little more about the background and motivation for creating\nthis tool [over on my blog](https://blog.davep.org/2024/08/18/paindrop.html).\n\nPS: If a Raindrop client for the terminal sounds useful to you, you might\nlike my project [Braindrop](https://github.com/davep/braindrop).\n\n## Installing\n\n### pipx\n\nThe package can be installed using [`pipx`](https://pypa.github.io/pipx/):\n\n```sh\n$ pipx install paindrop\n```\n\n### Homebrew\n\nThe package is available via Homebrew. Use the following commands to install:\n\n```sh\n$ brew tap davep/homebrew\n$ brew install paindrop\n```\n\n## Usage\n\n### Getting ready to use\n\nThere's 3 things you need to do to use this importer:\n\n#### Create public and private collections in Raindrop\n\nIn Raindrop create two collections, one will be the collection for public\npins, the other will be the one for private pins. You don't need to make the\npublic collection public just yet, but the idea is that you will at some\npoint in the future.\n\n#### Get your Pinboard access token\n\nYou can find it [in your account\nsettings](https://pinboard.in/settings/password).\n\n#### Generate a Raindrop access token\n\nThis is a little more involved in Raindrop, but not difficult. In your\naccount settings [go to\n*Integrations*](https://app.raindrop.io/settings/integrations) and under the\n*For Developers* heading click on `Create new app`. Give it a name (probably\n*Paindrop* so you can remember what it was for). Accept the API terms and\nguidelines and hit `Create`.\n\nNow click on the newly-created application and towards the bottom of the\ndialog that appears click on `Create test token`; say `ok` when asked. Copy\nthe token and keep it to hand as you'll need this too.\n\n## Running an import\n\nAfter you've done the above steps you're ready to import. Assuming you named\nyour public and private collections `Public` and `Private`, you can run the\ncommand like this:\n\n```sh\npaindrop example:xxxxxxxxxxxxxxxxxxxx xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n```\n\nwhere the first parameter is the Pinboard access token and the second the\nRaindrop access token.\n\nIf all goes well, after a few moments, you the importer should finish and\nyou should find that all of your Pins have migrated to Raindrop, all public\npins are in the `Public` collection and all private pins are in the\n`Private` collection. Any pins that were marked as unread will be\n*Unsorted*.\n\nNote that if you used different names for your public and private\ncollections you can pass those names to `paindrop` with the `--public` and\n`--private` switches.\n\n## Getting help\n\nIf you need help please feel free to [raise an\nissue](https://github.com/davep/paindrop/issues).\n\n## Thanks\n\nMany thanks to [Darren](https://github.com/darrenburns) who [suggested the\nname](https://fosstodon.org/@darrenburns/112978377299333401).\n\n[//]: # (README.md ends here)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavep%2Fpaindrop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavep%2Fpaindrop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavep%2Fpaindrop/lists"}