Pocket阅读工具https://app.getpocket.com/

pocket-stats的Python项目详细描述


PyPI version ^{1}$ codecovTotal alertsLanguage grade: Python

口袋统计

分析袖珍阅读列表(https://app.getpocket.com/)的工具。在

先决条件

安装

Pip

    pip install pocket-stats

Git克隆

^{pr2}$

使用

设置必要的环境变量:

exportPOCKET_STATS_CONSUMER_KEY='<your_pocket_consumer_key>'exportPOCKET_STATS_ACCESS_TOKEN='<your_pocket_access_token>'

数据查询

从Pocket server获取数据并将其缓存

命令行:

# 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

或者在python代码中:

frompocket_stats.dataimportfetch_data# fetch the first 100 items, won't overwrite cachedata=fetch_data(offset=0,limit=100,overwrite_cache=False)# fetch ALL items, will overwrite cachedata=fetch_data(overwrite_cache=True)

缓存文件的默认位置是~/pocket-tools.cache,您可以使用POCKET_STATS_CACHE_FILE环境变量对其进行更改。在

加载缓存数据

frompocket_stats.dataimportload_cachedata=load_cache()

提取有用信息

frompocket_stats.dataimport<your_function_names>
  • 在所有标题中计算单词数:
>>>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})
  • 每篇文章字数:
>>>get_word_counts(data)[2207,0,5449,4721,3245,805,1849,4087,0,538,5054,21,866,266,1146,213,823,3551,787,0]
  • 每篇文章阅读时间:
>>>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]
  • 每天新增物品数:
>>>get_added_time_series(data)Allarticles2020-07-0452020-07-0382020-07-0222020-07-015
  • 每天新归档的文章数:
>>>get_archived_time_series(data)Archivedarticles2020-07-042
  • 每个域的文章数:
>>>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})
  • 每种语言的算术数:
>>>get_language_counts(data)Counter({'en':17,'unknown':3})
  • 最喜欢的文章数及其百分比:
>>>get_favorite_count(data){'count':2,'percent':0.1}

可视化

通过运行以下命令启动应用程序(Web服务器):

    python -m pocket_stats webapp

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

其他参数:

    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.

在web浏览器中输入http://127.0.0.1:8050/。网站包含多个组件:

字云

word_cloud

文章计数时间序列

article_count

字数分布

堆积直方图 word_count

读取速度和读取时间

堆积直方图 reading_time

顶级域名

堆积条形图。 top_domains

语言和收藏夹

language_favorite

试验

    make check

部署

您可以将app.py部署为Web服务器。在

示例:https://dash.plotly.com/deployment。在

贡献

请阅读CONTRIBUTING.md了解我们的行为准则以及向我们提交拉取请求的过程。在

作者

许可证

MIT许可证-有关详细信息,请参阅LICENSE.md文件。在

致谢

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java允许具有不同父类的类扩展类,而无需多重继承   java如何创建动态化的JScrollPane w/JPanel作为客户端?   java如何组织和命名包   在Java中读取属性文件   java无法解释的Android意图行为   在Java中动态执行多个BPEL文件的部署   ssl Java 6 SNI(服务器名称指示)?   java我们可以使用Robot框架自动化web和移动应用程序来执行并行执行   java for star pettern的循环   java为什么BinaryReader在线程中,从netty读取错误的数据包?   在java中将华氏度转换为摄氏度   使用Spark和java处理空值和引号编写CSV文件   Java中已排序日期到块的列表   visual studio代码VSCode Java不是linting或自动完成局部变量,而是自动完成Java快捷方式,如“sysout”