{"id":13475496,"url":"https://github.com/srvaroa/repocket","last_synced_at":"2026-03-08T16:33:20.865Z","repository":{"id":57513136,"uuid":"77750253","full_name":"srvaroa/repocket","owner":"srvaroa","description":"Manage a local copy of articles saved in Pocket","archived":false,"fork":false,"pushed_at":"2023-09-01T10:13:03.000Z","size":42,"stargazers_count":24,"open_issues_count":1,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-08-01T16:39:07.943Z","etag":null,"topics":["backup","favourited-articles","getpocket","go","golang","golang-application","pocket","pocket-api","sync"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/srvaroa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":"srvaroa"}},"created_at":"2016-12-31T17:41:17.000Z","updated_at":"2024-05-12T10:32:59.000Z","dependencies_parsed_at":"2024-01-13T18:38:05.391Z","dependency_job_id":null,"html_url":"https://github.com/srvaroa/repocket","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/srvaroa%2Frepocket","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/srvaroa%2Frepocket/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/srvaroa%2Frepocket/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/srvaroa%2Frepocket/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/srvaroa","download_url":"https://codeload.github.com/srvaroa/repocket/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":232128501,"owners_count":18476559,"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":["backup","favourited-articles","getpocket","go","golang","golang-application","pocket","pocket-api","sync"],"created_at":"2024-07-31T16:01:20.903Z","updated_at":"2026-03-08T16:33:18.335Z","avatar_url":"https://github.com/srvaroa.png","language":"Go","funding_links":["https://github.com/sponsors/srvaroa"],"categories":["Go"],"sub_categories":[],"readme":"Repocket\n========\n\n**Repocket** is a (very, very raw) tool to manage a local copy of articles\nfrom [GetPocket](https://getpocket.com).  Because, you know, The\nCloud is not a reliable storage.  Also, grep.  Local copies contain a\nheader in plain YAML with the [metadata provided by\nPocket](https://getpocket.com/developer/docs/v3/retrieve)\n\n**Repocket** maintains a simple folder structure to represent states.\nArticles are rendered as text files into two folders for unread and\nfavourite articles.  You can move articles to a deleted and archived\nfolders to sync those statuses back to Pocket.\n\n**Caveat emptor**\n\n* Local copies are plain text, rendered with\n  [w3m](http://w3m.sourceforge.net/), so expect images to be lost.  I'm\n  generally OK with this, and the original URLs are still there.\n* This workflow is not meant to be particularly user friendly, it just\n  fits me well.  I use the \"favourite\" state to mark articles that I\n  want to keep a copy for.\n* It works in Linux and OSX, and will very likely not in Windows\n  (although it should be trivial to fix.)\n\nBuilding\n--------\n\nGo \u003e= 1.11.\n\nYou *MUST* have [w3m](http://w3m.sourceforge.net/) installed. Repocket\nuses [w3m](http://w3m.sourceforge.net/) to render the articles into\nplain text.\n\nConfiguration\n-------------\n\nYou must create the config file before running `Repocket`.  It's a very\nsimple yaml stored at `~/.config/repocket/config` with these contents:\n\n    consumer_key: 85480-9793dd8ed508561cb941d987\n    favs_dir: \u003cabsolute_path_dir_for_favourited_articles\u003e\n    unread_dir: \u003cabsolute_path_dir_for_unread_articles\u003e\n    deleted_dir: \u003cabsolute_path_dir_for_deleted_articles\u003e\n    archived_dir: \u003cabsolute_path_dir_for_archived_articles\u003e\n\n* The `consumer_key` indicates the GetPocket Application.  You can leave\n  the sample value above (my own app), but if you prefer to use your own\n  just [create a new\n  application](https://getpocket.com/developer/apps/new).\n\nThe rest are directories to store articles.  All expect an absolute\npath.  Two of these are synced up and downstream:\n\n* `unread_dir` is the directory where unread, non archived articles will\n  be downloaded.  If a downloaded article is marked as archived in\n  Pocket, then the file will be deleted.\n* `favs_dir` contains favourited articles.  You move articles here from\n  the `unread_dir`, in the next sync they will be marked as favourite\n  and archived.  Articles in your local fav directory are *never*\n  deleted (even if you unfav them upstream.)\n\nThese directories *only sync upstream*:\n\n* `deleted_dir` contains articles that should be deleted in the next run\n  of the `delete` command.  You move articles here when you want to\n  delete them from Pocket.\n* `archived_dir` contains articles that should be archived in the next run\n  of the `archive` command.  You move articles here when you want to\n  archive them in Pocket, but don't want to keep a local copy.\n\nFiles in both `deleted_dir` and `archived_dir` are removed after a sync.\n\nSet up\n------\n\nWhen you first run `Repocket`, it will authenticate against the Pocket\nAPI.  It will ask you to browse to a URL where you can grant permissions\nto read your list n articles.  The message looks something like this:\n\n    2019/09/09 20:40:12 Browse to this URL, you may ignore errors:\n    https://getpocket.com/auth/authorize?request_token=62074b8c-ed8a-b5e5-71f3-586bcf\u0026redirect_uri=localhost\n\nClick on the link and accept the authorisation.  Once you do this the\nfirst time, you simply need to click the link and ignore the browser.\n\nThis step will write a new `access_token` property to your config file\nso you don't need to auth again.\n\nSynchronizing\n-------------\n\nRun\n\n    GO111MODULE=on go run ./cmd/repocket [favs|delete|archive|unread|sync]\n\nAnd **Repocket** will sync the folder associated to the given action.\n\n* `delete`: will delete articles added to `favs_dir` as deleted in\n  Pocket. \n* `archive`: will delete articles added to `favs_dir` as deleted in\n  Pocket. \n* `favs`: will mark articles added to `favs_dir` as favourited in\n  Pocket.\n* `unread`: will download all unread articles to `unread_dir`.\n* `sync`: will execute the previous three actions, in the same order as\n  shown in this list.\n\nTODO\n----\n\nSome things I'd like to implement:\n\n* Prepend the source URL to the file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsrvaroa%2Frepocket","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsrvaroa%2Frepocket","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsrvaroa%2Frepocket/lists"}