{ "info": { "author": "Marcus Windmark", "author_email": "marcus.windmark@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# API wrapper for Google Reminder\n\nThis is a work in progress to create an API wrapper for handling Google Reminders via code. Due to missing official\ndocumentation of the API, this should be considered unstable and not deployed to any production systems.\n\nThe current commands are implemented\n* get\n* list\n* create\n* delete\n\nNot implemented commands\n* update\n\n\n## Installing\nInstall the package with requirements by running\n```bash\npython3 setup.py install\n```\nNote that this package requires Python 3.\n\n\n## Usage\nFollowing the instructions below on how to acquire the API session credentials and add them to your environment variables.\n```bash\nSID='xxxxxxxxxxxxxxxxx' HSID='xxxxxxxxxxxxxxxxx' SSID='xxxxxxxxxxxxxxxxx' APISID='xxxxxxxxxxxxxxxxx' SAPISID='xxxxxxxxxxxxxxxxx' authorization='xxxxxxxxxxxxxxxxx' key='xxxxxxxxxxxxxxxxx' python\n```\n\n```python\nfrom google_reminder_api_wrapper import ReminderApi\n\napi = ReminderApi()\nreminders = api.list()\nprint(reminders)\n\nnew_reminder = api.create('Test reminder', '2019-01-10 15:00')\nreminders = api.list()\nprint(reminders)\n\napi.delete(new_reminder)\nreminders = api.list()\nprint(reminders)\n```\n\n\n## Underlying Google Reminder API\n### Authorization\nCurrently, the Google session is still based on fixed cookies and authorization keys in the HTTP header.\n\n```bash\nSID = \"xxxxxxxxxxxxxxxxx\"\nHSID = \"xxxxxxxxxxxxxxxxx\"\nSSID = \"xxxxxxxxxxxxxxxxx\"\nAPISID = \"xxxxxxxxxxxxxxxxx\"\nSAPISID = \"xxxxxxxxxxxxxxxxx\"\nauthorization = \"xxxxxxxxxxxxxxxxx\"\nkey = \"xxxxxxxxxxxxxxxxx\"\n```\n\nNote: The credential keys need to be set as environment variables for the requests to work. This is\na work in progress and will in the future be integrated with the Google sessions API.\n\n\n#### Finding Credentials\nCredentials can be found by doing the following\n1. Go to Google Calendar, https://calendar.google.com and make sure the \"Reminder\" calendar is marked.\n2. Open the \"Network\" tab of the Chrome Developer Tool and search for `reminders / list`\n3. In the \"Header\" sub-tab, find the required headers in the \"Request Header\"\n\n\n### Request Structure\nThe following is the main structure of the request sent to the Reminders API\n`https://reminders-pa.clients6.google.com/v1internalOP/reminders/`.\n\nwhere COMMAND is one of the following\n* get\n* list\n* update\n* create\n* delete\n\nHeader\n```bash\n'x-origin': 'https://calendar.google.com',\n'content-type': 'application/json',\n'authorization': ','\n'key': ','\n'cookie': ''\n```\n\nThe Google Calendar is using this API with `application/json+protobuf` in the data payload, but due to readability problems\nthis wrapper has reverse-engineered parts of the schema to normal JSON field names.\n\n\n## Backstory\nDue to popular demand as seen in the following Google Issue Tracker thread, https://issuetracker.google.com/issues/36760283,\nI decided to give it a try. The wrapper is based on the following comment, https://issuetracker.google.com/issues/36760283#comment193.\n\nThe is based on the following comment, https://issuetracker.google.com/issues/36760283#comment193,\n```\nThere is an undocumented API, which is used for example by Google Calendar. Maybe someone with the skills and time can write a user friendly wrapper or service for it ;-)\nhttps://reminders-pa.clients6.google.com/v1internalOP/reminders/list?key=XXX\n\nCommands are: list, get, create, update, delete\n\nSome more details for \"list\" in Japanese: https://qiita.com/futa/items/c7a04c7b0be35508a626\n```\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/windmark/google-reminder-api-wrapper", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "google-reminder-api-wrapper", "package_url": "https://pypi.org/project/google-reminder-api-wrapper/", "platform": "", "project_url": "https://pypi.org/project/google-reminder-api-wrapper/", "project_urls": { "Homepage": "https://github.com/windmark/google-reminder-api-wrapper" }, "release_url": "https://pypi.org/project/google-reminder-api-wrapper/0.0.1/", "requires_dist": [ "requests (==2.21.0)", "python-dateutil (==2.7.5)" ], "requires_python": "", "summary": "An unofficial API wrapper for the Google Reminder", "version": "0.0.1" }, "last_serial": 4650586, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "6f503cb0c6275630d7a02393ab0cb3d1", "sha256": "7ad367a86dfcdf2856031fcfbeb47c733d4e6152c027c2e02d0c43f0f1029e31" }, "downloads": -1, "filename": "google_reminder_api_wrapper-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6f503cb0c6275630d7a02393ab0cb3d1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6251, "upload_time": "2019-01-01T17:15:40", "url": "https://files.pythonhosted.org/packages/4e/fa/1fcbd7d2d734dd11017199b7e62b4cf440245d73a472805e02b534ab701f/google_reminder_api_wrapper-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e9eaca0cab379e714fcb27b437c72e1e", "sha256": "ff78bb2d2f3e1bfb0afbe24e427aff3a5cef881504e13b7a217941b41ba63ef7" }, "downloads": -1, "filename": "google-reminder-api-wrapper-0.0.1.tar.gz", "has_sig": false, "md5_digest": "e9eaca0cab379e714fcb27b437c72e1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4208, "upload_time": "2019-01-01T17:15:42", "url": "https://files.pythonhosted.org/packages/96/a1/637be40b5e657ff5aeaa46fab74439638006e3faad422967f751767701b6/google-reminder-api-wrapper-0.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6f503cb0c6275630d7a02393ab0cb3d1", "sha256": "7ad367a86dfcdf2856031fcfbeb47c733d4e6152c027c2e02d0c43f0f1029e31" }, "downloads": -1, "filename": "google_reminder_api_wrapper-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6f503cb0c6275630d7a02393ab0cb3d1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6251, "upload_time": "2019-01-01T17:15:40", "url": "https://files.pythonhosted.org/packages/4e/fa/1fcbd7d2d734dd11017199b7e62b4cf440245d73a472805e02b534ab701f/google_reminder_api_wrapper-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e9eaca0cab379e714fcb27b437c72e1e", "sha256": "ff78bb2d2f3e1bfb0afbe24e427aff3a5cef881504e13b7a217941b41ba63ef7" }, "downloads": -1, "filename": "google-reminder-api-wrapper-0.0.1.tar.gz", "has_sig": false, "md5_digest": "e9eaca0cab379e714fcb27b437c72e1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4208, "upload_time": "2019-01-01T17:15:42", "url": "https://files.pythonhosted.org/packages/96/a1/637be40b5e657ff5aeaa46fab74439638006e3faad422967f751767701b6/google-reminder-api-wrapper-0.0.1.tar.gz" } ] }