Skip to main content

Tools for the Pocket reading app https://app.getpocket.com/

Project description

PyPI version build codecov Total alerts Language grade: Python

Pocket Stats

A tool to analyze your Pocket reading list (https://app.getpocket.com/).

Prerequisites

Installation

Pip

    pip install pocket-stats

Git Clone

    git clone https://github.com/nlbao/pocket_stats.git
    cd pocket_stats
    make setup

Usage

Set necessary environment variables:

    export POCKET_STATS_CONSUMER_KEY='<your_pocket_consumer_key>'
    export POCKET_STATS_ACCESS_TOKEN='<your_pocket_access_token>'

Data Querying

Fetch data from the Pocket server and cache it

Command line:

    # read only
    python -m pocket_stats fetch-data --offset 0 --limit 2

    # to write ALL the items to cache
    python -m pocket_stats fetch-data --overwrite_cache

Or in python code:

    from pocket_stats.data import fetch_data

    # fetch the first 100 items, won't overwrite cache
    data = fetch_data(offset=0, limit=100, overwrite_cache=False)

    # fetch ALL items, will overwrite cache
    data = fetch_data(ovewrite_cache=True)

The default location of cache file is ~/pocket-tools.cache, you can change it using the POCKET_STATS_CACHE_FILE environment variable.

Load cached data

    from pocket_stats.data import load_cache
    data = load_cache()

Extract useful information

    from pocket_stats.data import <your_function_names>
  • Count word in all the titles:
    >>> count_words_in_title(data)
    Counter({'-': 5, '|': 5, 'python': 3, 'problem': 2, 'strace': 1, 'wow': 1, 'much': 1, 'syscall': 1, 'martin': 1, 'heinz': 1, 'personal': 1, 'website': 1, '&': 1, 'blog': 1, 'call': 1, 'programmer,': 1})
  • Number of words in each article:
    >>> get_word_counts(data)
    [2207, 0, 5449, 4721, 3245, 805, 1849, 4087, 0, 538, 5054, 21, 866, 266, 1146, 213, 823, 3551, 787, 0]
  • Reading time of each article:
    >>> get_reading_time(data)
    [9.80888888888889, 24.217777777777776, 20.982222222222223, 14.422222222222222, 3.577777777777778, 8.217777777777778, 18.164444444444445, 2.391111111111111, 22.462222222222223, 0.09333333333333334, 3.848888888888889, 1.1822222222222223, 5.093333333333334, 0.9466666666666667, 3.6577777777777776, 15.782222222222222, 3.497777777777778]
  • Number of newly added articles per day:
    >>> get_added_time_series(data) 
                All articles
    2020-07-04             5
    2020-07-03             8
    2020-07-02             2
    2020-07-01             5
  • Number of newly archived articles per day:
    >>> get_archived_time_series(data)
                Archived articles
    2020-07-04             2
  • Number of articles per domain:
    >>> get_domain_counts(data)
    Counter({'kalzumeus.com': 3, 'bogleheads.org': 2, 'github.io': 2, 'brendangregg.com': 1, 'martinheinz.dev': 1, 'awealthofcommonsense.com': 1, 'jlcollinsnh.com': 1, 'callan.com': 1, 'engineerseekingfire.com': 1, 'arxiv.org': 1, 'popularmechanics.com': 1, 'dolpages.com': 1, 'economist.com': 1, 'romantomjak.com': 1, 'digitalocean.com': 1, 'deepnote.com': 1})
  • Number of aritlces per language:
    >>> get_language_counts(data)
    Counter({'en': 17, 'unknown': 3})
  • Number of favorite articles and its percent:
    >>> get_favorite_count(data)
    {'count': 2, 'percent': 0.1}

Visualization

Start the application (webserver) by running the commands below:

    python -m pocket_stats webapp

    # You will see something like this:
    # Dash is running on http://127.0.0.1:8050/

Other parameters:

    python -m pocket_stats webapp --help

    # Usage: __main__.py webapp [OPTIONS]
    # Options:
    # --debug         Debug mode
    # --port INTEGER  Port of the web server. Default = 8050.
    # --help          Show this message and exit.

Enter http://127.0.0.1:8050/ in your web browser. The site contains multiple components:

Word Cloud

word_cloud

Article Count timeseries

article_count

Word Count distribution

Stacked histograms word_count

Reading Speed & Reading Time

Stacked histograms reading_time

Top Domains

Stacked bar charts. top_domains

Language & Favorite

language_favorite

Test

    make check

Deployment

You can deploy the app.py as a webserver.

Example: https://dash.plotly.com/deployment.

Contribute

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Authors

License

MIT License - see the LICENSE.md file for details.

Acknowledgments

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

pocket_stats-0.2.1.tar.gz (11.0 kB view hashes)

Uploaded Source

Supported by

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