{"id":33185696,"url":"https://gitlab.com/goobook/goobook","last_synced_at":"2025-11-22T04:01:31.044Z","repository":{"id":56796273,"uuid":"194793","full_name":"goobook/goobook","owner":"goobook","description":"GooBook -- Access your Google contacts from the command line","archived":false,"fork":false,"pushed_at":null,"size":null,"stargazers_count":61,"open_issues_count":10,"forks_count":19,"subscribers_count":null,"default_branch":"main","last_synced_at":"2025-09-17T19:53:40.024Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"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":null,"metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-03-15T17:25:26.882Z","updated_at":"2025-09-15T12:23:40.271Z","dependencies_parsed_at":"2022-08-22T16:20:51.244Z","dependency_job_id":null,"html_url":"https://gitlab.com/goobook/goobook","commit_stats":{"total_commits":252,"total_committers":14,"mean_commits":18.0,"dds":0.1507936507936508,"last_synced_commit":"1d2f6c95a112dfabd8ce9620758bda57f424eaca"},"previous_names":[],"tags_count":26,"template":null,"template_full_name":null,"purl":"pkg:gitlab/goobook/goobook","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/goobook%2Fgoobook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/goobook%2Fgoobook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/goobook%2Fgoobook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/goobook%2Fgoobook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/owners/goobook","download_url":"https://gitlab.com/goobook/goobook/-/archive/main/goobook-main.zip","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/goobook%2Fgoobook/sbom","scorecard":null,"host":{"name":"gitlab.com","url":"https://gitlab.com","kind":"gitlab","repositories_count":4521528,"owners_count":7319,"icon_url":"https://github.com/gitlab.png","version":null,"created_at":"2022-05-30T11:31:42.605Z","updated_at":"2024-07-18T11:24:13.055Z","status":"online","status_checked_at":"2025-11-22T02:00:06.220Z","response_time":273,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.382Z","robots_txt_url":"https://gitlab.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/owners"}},"keywords":[],"created_at":"2025-11-16T05:00:20.099Z","updated_at":"2025-11-22T04:01:31.039Z","avatar_url":null,"language":null,"funding_links":[],"categories":["\u003ca name=\"organizers\"\u003e\u003c/a\u003eOrganizers and calendars"],"sub_categories":[],"readme":":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\nGooBook -- Access your Google contacts from the command line.\n:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\n\n.. contents:: **Table of Contents**\n   :depth: 1\n\nAbout\n=====\n\nThe purpose of GooBook is to make it possible to use your Google Contacts from\nthe command-line and from MUAs such as Mutt.\nIt can be used from Mutt the same way as abook.\n\nInstallation Instructions\n=========================\n\npipx\n----\n\nThis is the recommended way to install goobook for most users that don't\nhave it available in their distribution. You may first need to install pipx\nitself, which should be available in your distribution. If not, you can\ninstall it with pip; see: https://pypi.org/project/pipx/\n\nInstall goobook like this::\n\n    $ pipx install goobook\n\nThis will install goobook as `~/.local/bin/goobook` (In a UNIX environment).\n\n\nConfiguration\n=============\n\nFirst you need to authenticate yourself:\n\n- Go to https://developers.google.com/people/quickstart/python\n- and click \"Enable the People API\"\n- select a name (ex. GooBook)\n- select desktop app and create\n- click \"Download JSON\" and save the file to be used below\n\nrun::\n\n    $ goobook authenticate -- client_secrets.json\n\nand follow the instructions, this part is web based.\n\nIn case you've already been using goobook and have authenticated with Google\nin the past there is no need to re-authenticate again. \n\n\nIf the procedure above to get client secrets stops working this is an alternative way to do it:\n\n- Go to the Google developer console  https://console.developers.google.com/\n- Create a new project (drop down at the top of the screen) (you are free to use an existing one if you so prefer)\n- Select the newly created project\n- Go to OAuth consent screen from sidebar\n- Select the interal user type if you can but most will only be able to select external.\n- On next screen give it a name (ex. GooBook)\n- select Add scope, click manually paste and write \"https://www.googleapis.com/auth/contacts\" inte the lower text box.\n- and hit hit add and then save\n- Go to Credentials from sidebar\n- Click Create Credentials from top, then OAuth Client ID in the dropdown\n- Choose Desktop app, enter any name you want, and hit create\n- click \"Download JSON\" and save the file to be used below\n\n\nTo authenticate with Google you need a web browser installed. You will be directed to Google and finally\nto http://localhost:8080. Make sure, no other service is bound to port tcp/8080 - otherwise the authentication\nwill fail. Make also sure, no local firewall prevents local access to port 8080.\n\nIf you do not have a browser installed locally and do not want to install one, you can perform the\nauthentication on another system on which goobook and a browser are installed. You will need the client_secrets.json\nfile and by performing the authentication create an oauth token file, which you must transfer back to your\noriginal system. To easily find the oauth token file, create a configuration file in which you enter\nthe location and name of the file by::\n\n    oauth_db_filename: ~/.goobook_auth.json\n    \nSee details about the configuration file in the next section.\n\nThis configuration file gets included in the authenticate run like this::\n\n    $ goobook ~/.config/goobookrc authenticate -- client_secrets.json\n\n\nTo get access too more settings you can create a configuration file::\n\n    goobook config-template \u003e ~/.config/goobookrc\n\nIt will look like this::\n\n    # Use this template to create your ~/.goobookrc\n\n    # \"#\" or \";\" at the start of a line makes it a comment.\n\n    [DEFAULT]\n    # The following are optional, defaults are shown when not other specified.\n\n    # This file is written by the oauth library, and should be kept secure,\n    # it's like a password to your google contacts.\n    # default is to place it in the XDG_DATA_HOME\n    ;oauth_db_filename: ~/.goobook_auth.json\n\n    ;cache_filename: ~/.goobook_cache   # default is in the XDG_CACHE_HOME\n    ;cache_expiry_hours: 24\n    ;filter_groupless_contacts: yes\n\n    # New contacts will be added to this group in addition to \"My Contacts\"\n    # Note that the group has to already exist on google or an error will occur.\n    # One use for this is to add new contacts to an \"Unsorted\" group, which can\n    # be sorted easier than all of \"My Contacts\".\n    ;default_group:\n\n\nFiles\n-----\n\nGooBook is using three files, the optional config file that can be placed in\nthe ``XDG_CONFIG_HOME`` (``~/.config/goobookrc``) or in the home directory\n(``~/.goobookrc``).\n\nThe authentication file that is created by running goobook authenticate in\n``XDG_DATA_HOME`` (``~/.local/share/goobook_auth.json``) but can also be placed\nin the home directory (``~/.goobook_auth.json``).\n\nThe contacts cache file that is created in ``XDG_CACHE_HOME``\n(``~/.cache/goobook_cache``) but can also be placed in the home directory\n(``~/.goobook_cache``).\n\nProxy settings\n--------------\n\nIf you use a proxy you need to set the ``https_proxy`` environment variable.\n\nMutt\n----\n\nIf you want to use goobook from mutt, set in your .muttrc file::\n\n    set query_command=\"goobook query %s\"\n\nto query address book. (Normally bound to \"Q\" key.)\n\nIf you want to be able to use \u003ctab\u003e to complete email addresses instead of Ctrl-t add this::\n\n    bind editor \u003cTab\u003e complete-query\n\nTo add email addresses (with \"a\" key normally bound to create-alias command)::\n\n    macro index,pager a \"\u003cpipe-message\u003egoobook add\u003creturn\u003e\" \"add the sender address to Google contacts\"\n\nIf you want to add an email's sender to Contacts, press a while it's selected in the index or pager.\n\nUsage\n=====\n\nTo query your contacts::\n\n    $ goobook query QUERY\n\nThe add command reads a email from STDIN and adds the From address to your Google contacts::\n\n    $ goobook add\n\nThe cache is updated automatically according to the configuration but you can also force an update::\n\n    $ goobook reload\n\nFor more commands see::\n\n    $ goobook -h\n\nand::\n\n    $ goobook COMMAND -h\n\nLinks, Feedback and getting involved\n====================================\n\n- PyPI home: https://pypi.org/project/goobook/\n- Code Repository: http://gitlab.com/goobook/goobook\n- Issue tracker: https://gitlab.com/goobook/goobook/issues\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/gitlab.com%2Fgoobook%2Fgoobook","html_url":"https://awesome.ecosyste.ms/projects/gitlab.com%2Fgoobook%2Fgoobook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/gitlab.com%2Fgoobook%2Fgoobook/lists"}