{ "info": { "author": "Kireet", "author_email": "kireet@feedly.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "# python-api-client\nPython client code for the feedly api https://developers.feedly.com/\n\n## Initializing a client\nTo initialize a client, first you need an access token. To just play around,\nlogin to feedly and go to the [console](http://feedly.com/i/console). Then find \nthe `feedlyToken` property. This is your web access token. You can make requests\nwith this token but it will expire. It's not suitable for building an application,\nbut will get you going.\n \nIf you're serious about building an app, you probably want to get a\n [developer token](https://developers.feedly.com/v3/developer/). Check the page for more details.\n\nIf we assume you saved the token value in a `access.token` file in your home directory, you can\ninitalize the client as follows:\n\n```\nfrom pathlib import Path\nfrom feedly.api_client.session import FeedlySession\n\ntoken = (Path.home() / 'access.token').read_text().strip()\nsess = FeedlySession(token)\n```\nClients are lightweight -- you can keep a client around for the lifetime of your program,\nor you can create a new one when needed. It's a bit more efficient to keep it around. If you\ndo choose to create clients as needed, you should pass in the user's ID in the constructor, \notherwise you'll incur a `/v3/profile` request. \n\n## API Oriented Usage\nYou can use the `FeedlySession` object to make arbitrary API requests. E.g.:\n\n```\nsess.do_api_request('/v3/feeds/feed%2Fhttp%3A%2F%2Fblog.feedly.com%2Ffeed%2F')\n\n------------------\n\n{\n \"id\": \"feed/http://blog.feedly.com/feed/\",\n \"feedId\": \"feed/http://blog.feedly.com/feed/\",\n \"title\": \"Feedly Blog\",\n ...\n}\n```\n\n## Object Oriented Usage\n\n#### Retrieving Articles\nAlternatively, you can use the object oriented code, which facilitates common usage patterns.\nE.g. you can list your user categories:\n```\nsess.user.get_categories()\n\n------------------\n\n{'comics': ,\n 'econ': ,\n 'global.must': ,\n 'politics': ,\n}\n```\nwhere `xxx` is your actual user ID.\n\nIt's not necessary to list categories beforehand, if you know the ones that exist, you can \nget one on the fly:\n```\nsess.user.get_category('comics'))\n\n------------------\n\n\n```\n\n#### Accessing Entries (articles)\nIf you need to access entries or entry IDs, you can use easily stream them via `stream_contents`\nand `stream_ids`, respectively:\n\n```\nwith FeedlySession(auth_token=token) as sess:\n for eid in sess.user.get_category('politics').stream_ids():\n print(eid)\n\n------------------\n\nDz51gkBgvGUvFOfTATCYLB2uqVaBIaGGazzxpZh2WL0=_16549c827dd:1645ba:3da9d93\nDz51gkBgvGUvFOfTATCYLB2uqVaBIaGGazzxpZh2WL0=_16549c827dd:1645bb:3da9d93\nZ/Hzx8NYfSSE8sweA2v5+4r5h7HC5ALdE2YGYB8MYbQ=_1654a26f3fe:79d9ef9:6f86c10b\n...\n```\n\nTake note of the `StreamOptions` class. There are important `max_count` and `count`\nproperties that control streaming. To download all items, something like this could\nbe done:\n\n```\nopts = StreamOptions(max_count=sys.maxsize) # down all items that exist\nopts.count = sys.maxsize # download as many items as possible in every API request\nwith FeedlySession(auth_token=token) as sess:\n for eid in sess.user.get_category('politics').stream_ids(opts):\n print(eid)\n\n```\n\n#### Tagging Existing Entries\n```\nwith FeedlySession(auth_token=token) as sess:\n sess.user.get_tag('politics').tag_entry(eid)\n```\n\n## Odds and Ends\nFeedly APIs are rate limited. Do not make multiple requests concurrently. You can download\nquite a few entries at a time, see the previous section for details. Once you get rate limited,\nthe client will stop any attempted requests until you have available quota.\n\nTo debug things, set the log level to `DEBUG`. This will print log messages on every API request.\n\n### Token Management\nThe above examples assume the auth (access) token is valid. However these tokens do expire. Instead \nof passing the auth token itself, you can create a `feedly.session.Auth` implementation to refresh\nthe auth token. A file based implementation is already provided (`FileAuthStore`). Once this is done\nthe client will automatically try to refresh the auth token if a `401` response is encountered.", "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/feedly/python-api-client", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "feedly-client", "package_url": "https://pypi.org/project/feedly-client/", "platform": "", "project_url": "https://pypi.org/project/feedly-client/", "project_urls": { "Homepage": "https://github.com/feedly/python-api-client" }, "release_url": "https://pypi.org/project/feedly-client/0.22/", "requires_dist": null, "requires_python": ">=3.6.0", "summary": "A lightweight client for the feedly api (https://developers.feedly.com).", "version": "0.22" }, "last_serial": 5864554, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "cf501736eba44f07655c2eedec2e8f4f", "sha256": "52f441a98ecc1efdf86c6701b4b1959a44687008df2e7e9d63395dce76fa8cc8" }, "downloads": -1, "filename": "feedly-client-0.1.tar.gz", "has_sig": false, "md5_digest": "cf501736eba44f07655c2eedec2e8f4f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 9727, "upload_time": "2018-08-20T06:13:19", "url": "https://files.pythonhosted.org/packages/8e/ea/2b6c353cac93aed5c568f6671955ef5b0cbf2cafdc64578ca92ee33b8d08/feedly-client-0.1.tar.gz" } ], "0.13": [ { "comment_text": "", "digests": { "md5": "0850275dae2e0df8e19f9efc99465fda", "sha256": "3a29922e98f78895c8323188d8010a93a35ffa365a98bcec824c9e0fc239ab13" }, "downloads": -1, "filename": "feedly_client-0.13-py3-none-any.whl", "has_sig": false, "md5_digest": "0850275dae2e0df8e19f9efc99465fda", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 10268, "upload_time": "2018-09-05T00:37:17", "url": "https://files.pythonhosted.org/packages/e7/e1/b37ee121878e3056d926bbec6070bf773526383369cea57a53ca2cc72c50/feedly_client-0.13-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5230b3fd890ba4b164c0f7c82f47458d", "sha256": "7c5041390f5a722413fbafce42f2d1f3289efd5dbb92f92589a9e5a56085a5eb" }, "downloads": -1, "filename": "feedly-client-0.13.tar.gz", "has_sig": false, "md5_digest": "5230b3fd890ba4b164c0f7c82f47458d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 10595, "upload_time": "2018-09-05T00:37:18", "url": "https://files.pythonhosted.org/packages/cf/91/f54a0262ad8bf9343d67872c801adfb0d064f54cbffe705e2e2260a0dc8a/feedly-client-0.13.tar.gz" } ], "0.14": [ { "comment_text": "", "digests": { "md5": "122e5e1b778e6e65cad8790c67ded3ef", "sha256": "97c7ba81ff1cadd629b554e26f64981f3e6aaa72ecb77ad21d65b30da6880458" }, "downloads": -1, "filename": "feedly-client-0.14.tar.gz", "has_sig": false, "md5_digest": "122e5e1b778e6e65cad8790c67ded3ef", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 11518, "upload_time": "2018-09-24T20:44:32", "url": "https://files.pythonhosted.org/packages/4a/db/6bfc51a802a5eaa2e38534a1d1aeeb460f5cffd22538ba6e89ca8923733b/feedly-client-0.14.tar.gz" } ], "0.15": [ { "comment_text": "", "digests": { "md5": "4de647e9a8333617b47c7464692b15d3", "sha256": "0dd15afbae10e7647ed058e57ddfa1d2f2ec617b8d4d22770b7f95703d6ae538" }, "downloads": -1, "filename": "feedly-client-0.15.tar.gz", "has_sig": false, "md5_digest": "4de647e9a8333617b47c7464692b15d3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 11578, "upload_time": "2018-09-27T19:00:37", "url": "https://files.pythonhosted.org/packages/94/8e/9321d29b7bdf0b20606a42bcc344e2ff441b99ccee8f83a1a4034bf12864/feedly-client-0.15.tar.gz" } ], "0.16": [ { "comment_text": "", "digests": { "md5": "19e0ddb2f51f85795ae26dc935420f3b", "sha256": "4fd9bbe146e0dbecb8e44a6d9c9e63c4f415db8f33add036ec8d93b864b6eaee" }, "downloads": -1, "filename": "feedly-client-0.16.tar.gz", "has_sig": false, "md5_digest": "19e0ddb2f51f85795ae26dc935420f3b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 11679, "upload_time": "2018-09-28T06:57:27", "url": "https://files.pythonhosted.org/packages/18/3f/d9edb3747522e6e0d150b4f05ad3d0abcd87babbf3b70aab9b08e7db5fa3/feedly-client-0.16.tar.gz" } ], "0.17": [ { "comment_text": "", "digests": { "md5": "c335d30c97b71adcc0349a1373ce8e80", "sha256": "49670f0f4abd87a520fa5ea0de64e22ff462d6568a563e7982d08c114f3d7b49" }, "downloads": -1, "filename": "feedly-client-0.17.tar.gz", "has_sig": false, "md5_digest": "c335d30c97b71adcc0349a1373ce8e80", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 12195, "upload_time": "2018-10-23T19:30:54", "url": "https://files.pythonhosted.org/packages/2c/d7/2f22c327ad4b13836ed5c4c58846b9d442c90ecf97cedbe6491fe331b25e/feedly-client-0.17.tar.gz" } ], "0.18": [ { "comment_text": "", "digests": { "md5": "72ff131fc1541617813a505580655c5a", "sha256": "5548d325af2e2de2effa78a4c4e94204f403d8bd07635115b63625089137508c" }, "downloads": -1, "filename": "feedly-client-0.18.tar.gz", "has_sig": false, "md5_digest": "72ff131fc1541617813a505580655c5a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 12198, "upload_time": "2018-12-19T19:58:55", "url": "https://files.pythonhosted.org/packages/9f/6c/1c413d1933b59c2e2b5260d6d946d103b9eaa8338a12164b704d44113077/feedly-client-0.18.tar.gz" } ], "0.19": [ { "comment_text": "", "digests": { "md5": "84998959f8d7d4dbc1f168f8e0268256", "sha256": "8096ecd718c115a194cfe2997be1ddef4fc40c1c55f270f6c6c057cd4c270f51" }, "downloads": -1, "filename": "feedly-client-0.19.tar.gz", "has_sig": false, "md5_digest": "84998959f8d7d4dbc1f168f8e0268256", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 12543, "upload_time": "2019-01-15T00:26:36", "url": "https://files.pythonhosted.org/packages/28/4f/c356cc8f2ecfe7124c66e9cf54d5fbe73a9b0ad4be6f07e03271c114d0c7/feedly-client-0.19.tar.gz" } ], "0.20": [ { "comment_text": "", "digests": { "md5": "095f651a9af9d737e24fb2688f3e41a8", "sha256": "077caf38ee3f7e7272d2884b1dcc7a0c751b2124aa9309c57ab0269dafc85b6a" }, "downloads": -1, "filename": "feedly-client-0.20.tar.gz", "has_sig": false, "md5_digest": "095f651a9af9d737e24fb2688f3e41a8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 12399, "upload_time": "2019-05-20T21:16:03", "url": "https://files.pythonhosted.org/packages/45/2e/97ba77cba8e1dfa90ddada123cbe66512dcfee0ed71eeb234df22581615e/feedly-client-0.20.tar.gz" } ], "0.21": [ { "comment_text": "", "digests": { "md5": "341ca4ce333761a79e9bf4752f29c71f", "sha256": "ff4f9ab558ab3dd073108a30ca290cee17e8891cf03edfd0467db44dccc703b8" }, "downloads": -1, "filename": "feedly-client-0.21.tar.gz", "has_sig": false, "md5_digest": "341ca4ce333761a79e9bf4752f29c71f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 12558, "upload_time": "2019-07-29T22:27:12", "url": "https://files.pythonhosted.org/packages/d1/76/bc0b150a645d66f7fa4173d3e79006bf330ce2aef154f7220ad64d600699/feedly-client-0.21.tar.gz" } ], "0.22": [ { "comment_text": "", "digests": { "md5": "4979bcf41e9ea72dd3a9c72ef48085dc", "sha256": "6e9a13e3aed2077e0cd110954235a0d168b298b6b4ce2b31d8cf365e48c31bc5" }, "downloads": -1, "filename": "feedly-client-0.22.tar.gz", "has_sig": false, "md5_digest": "4979bcf41e9ea72dd3a9c72ef48085dc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 12563, "upload_time": "2019-09-20T23:17:04", "url": "https://files.pythonhosted.org/packages/71/0d/9ca96afc37a479586ec48d1c431f2c30e09a2ac2f11d830fa42341575e7c/feedly-client-0.22.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4979bcf41e9ea72dd3a9c72ef48085dc", "sha256": "6e9a13e3aed2077e0cd110954235a0d168b298b6b4ce2b31d8cf365e48c31bc5" }, "downloads": -1, "filename": "feedly-client-0.22.tar.gz", "has_sig": false, "md5_digest": "4979bcf41e9ea72dd3a9c72ef48085dc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 12563, "upload_time": "2019-09-20T23:17:04", "url": "https://files.pythonhosted.org/packages/71/0d/9ca96afc37a479586ec48d1c431f2c30e09a2ac2f11d830fa42341575e7c/feedly-client-0.22.tar.gz" } ] }