Skip to main content

A lightweight client for the feedly api (https://developers.feedly.com).

Project description

python-api-client

Python client code for the feedly api https://developers.feedly.com/

Initializing a client

To initialize a client, first you need an access token. To just play around, login to feedly and go to the console. Then find the feedlyToken property. This is your web access token. You can make requests with this token but it will expire. It's not suitable for building an application, but will get you going.

If you're serious about building an app, you probably want to get a developer token. Check the page for more details.

If we assume you saved the token value in a access.token file in your home directory, you can initalize the client as follows:

from pathlib import path
from feedly.session import FeedlySession

token = (Path.home() / 'access.token').read_text().strip()
sess = FeedlySession(auth_token=token)

Clients are lightweight -- you can keep a client around for the lifetime of your program, or you can create a new one when needed. It's a bit more efficient to keep it around. If you do choose to create clients as needed, you should pass in the user's ID in the constructor, otherwise you'll incur a /v3/profile request.

API Oriented Usage

You can use the FeedlySession object to make arbitrary API requests. E.g.:

sess.do_api_request('/v3/feeds/feed%2Fhttp%3A%2F%2Fblog.feedly.com%2Ffeed%2F')

------------------

{
  "id": "feed/http://blog.feedly.com/feed/",
  "feedId": "feed/http://blog.feedly.com/feed/",
  "title": "Feedly Blog",
  ...
}

Object Oriented Usage

Retrieving Articles

Alternatively, you can use the object oriented code, which facilitates common usage patterns. E.g. you can list your user categories:

sess.user.get_categories()

------------------

{'comics': <UserCategory: user/xxx/category/comics>,
 'econ': <UserCategory: user/xxx/category/econ>,
 'global.must': <UserCategory: user/xxx/category/global.must>,
 'politics': <UserCategory: user/xxx/category/politics>,
}

where xxx is your actual user ID.

It's not necessary to list categories beforehand, if you know the ones that exist, you can get one on the fly:

sess.user.get_category('comics'))

------------------

<UserCategory: user/xxx/category/comics>

Accessing Entries (articles)

If you need to access entries or entry IDs, you can use easily stream them via stream_contents and stream_ids, respectively:

with FeedlySession(auth_token=token) as sess:
    for eid in sess.user.get_category('politics').stream_ids():
         print(eid)

------------------

Dz51gkBgvGUvFOfTATCYLB2uqVaBIaGGazzxpZh2WL0=_16549c827dd:1645ba:3da9d93
Dz51gkBgvGUvFOfTATCYLB2uqVaBIaGGazzxpZh2WL0=_16549c827dd:1645bb:3da9d93
Z/Hzx8NYfSSE8sweA2v5+4r5h7HC5ALdE2YGYB8MYbQ=_1654a26f3fe:79d9ef9:6f86c10b
...

Take note of the StreamOptions class. There are important max_count and count properties that control streaming. To download all items, something like this could be done:

opts = StreamOptions(max_count=sys.maxsize) # down all items that exist
opts.count = sys.maxsize # download as many items as possible in every API request
with FeedlySession(auth_token=token) as sess:
    for eid in sess.user.get_category('politics').stream_ids(opts):
         print(eid)

Tagging Existing Entries

with FeedlySession(auth_token=token) as sess:
    sess.user.get_tag('politics').tag_entry(eid)

Odds and Ends

Feedly APIs are rate limited. Do not make multiple requests concurrently. You can download quite a few entries at a time, see the previous section for details. Once you get rate limited, the client will stop any attempted requests until you have available quota.

To debug things, set the log level to DEBUG. This will print log messages on every API request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

feedly-client-0.13.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

feedly_client-0.13-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

File details

Details for the file feedly-client-0.13.tar.gz.

File metadata

  • Download URL: feedly-client-0.13.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.1.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.4

File hashes

Hashes for feedly-client-0.13.tar.gz
Algorithm Hash digest
SHA256 7c5041390f5a722413fbafce42f2d1f3289efd5dbb92f92589a9e5a56085a5eb
MD5 5230b3fd890ba4b164c0f7c82f47458d
BLAKE2b-256 cf91f54a0262ad8bf9343d67872c801adfb0d064f54cbffe705e2e2260a0dc8a

See more details on using hashes here.

File details

Details for the file feedly_client-0.13-py3-none-any.whl.

File metadata

  • Download URL: feedly_client-0.13-py3-none-any.whl
  • Upload date:
  • Size: 10.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.1.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.4

File hashes

Hashes for feedly_client-0.13-py3-none-any.whl
Algorithm Hash digest
SHA256 3a29922e98f78895c8323188d8010a93a35ffa365a98bcec824c9e0fc239ab13
MD5 0850275dae2e0df8e19f9efc99465fda
BLAKE2b-256 e7e1b37ee121878e3056d926bbec6070bf773526383369cea57a53ca2cc72c50

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page