Skip to main content

尝试解析出知乎官方未开放的 OAuth2 接口,并提供优雅的使用方式,作为 zhihu-py3 项目的替代者

Project description

Zhihu-OAuth

author ci-dev ci-master docs version py-version state license

近况

由于知乎给 Github 发了 DMCA 要求删除 zhihu-oauth 仓库,所以 Github 把仓库设置为不可公开访问了。所以目前我只能把最新版代码同步到我自己个人的 Git Server 上了。

虽然一直有用户和我反馈还在使用这个库,并且某些功能也确实可以继续正常使用,但由于本人已经不用知乎多年,所以这个库其实有两年多没更新过了。

这次移动到个人站点之后,由于本站点不对外开放注册,游客就没法使用 Issue 和 PR 功能,所以可以预见的未来估计也不会有什么更新了,这里基本只提供代码备份和下载功能。

由于以上原因,README 中的捐款渠道也已一并删除。

如果你有想交流的问题,请使用邮件,或者 Twitter 联系我。

—— 2019.10.19

简介

同学们,由于知乎新的 API 验证 UA,0.0.14 之前的版本已经不可用了,请尽快升级到 0.0.14 以上版本。

最近在尝试解析出知乎官方未开放的 OAuth2 接口,顺便提供优雅的使用方式,作为 zhihu-py3 项目的继任者。

恩,理论上来说会比 zhihu-py3 更加稳定,原因如下:

  • 知乎 API 相比前端 HTML 来说肯定更加稳定和规范
  • 这次的代码更加规范
  • 网络请求统一放在基类中
  • 属性解析统一放在装饰器中,各知乎类只用于声明有哪些属性可供使用
  • 统一翻页逻辑,再也不用一个地方一个逻辑了
  • 翻页时的自动重试机制(虽然不知道有没有用吧)

这一新库与 zhihu-py3 相比速度更快。有关速度对比的详细信息请点击这里

这个库是 Py2 和 Py3 通用的! 但是 Py3 的优先级比 Py2 高,也就是说,我会优先保证在 Py3 下的稳定性和正确性。毕竟在我学的时候选了 Py3,所以对 2 与 3 的差异了解不是很清楚,Py2 只能尽力而为了,

后期的计划是这样的:

  • 0.0.x 这个阶段是 alpha 期,主要做的是补齐功能的工作。基本上 TODO 里的功能都会在这个时期实现。其中 0.0.5 版本计划完成和 zhihu-py3 同样多的功能(已完成)。
  • 0.1.x 这个阶段是 beta 期,主要做完善测试,修复 bug,提升性能,改善架构之类的工作吧。以上两个阶段变化很大,有可能出现不兼容老版本的更新。使用需要注意。
  • 0.2.x 及以后就是 stable 期,只要 API 不变,基本上代码结构就不会变了,接口可能会增加但一定不会减。

由于现在使用的 CLIENT_ID 和 SECRET 的获取方法并不正当,所以请大家暂时不要大规模宣传,自己用用就好啦,Thanks。

等我什么时候觉得时机成熟(等知乎真•开放 OAuth 申请?),会去知乎专栏里宣传一波的。

最近更新

目前版本是 0.0.41,没更新的快更新一下,更新说明在这里

0.0.41 版本修复了 Feed 流的一些问题,加上了 Topic.activities 接口。

0.0.40 版本增加了 Feed 首页信息流的支持。

使用

安装

pip install -U zhihu_oauth

如果安装遇到问题,请查看文档:安装

登录

请参见文档:登录

获取基础信息

代码:

from zhihu_oauth import ZhihuClient

client = ZhihuClient()

client.load_token('token.pkl')

me = client.me()

print('name', me.name)
print('headline', me.headline)
print('description', me.description)

print('following topic count', me.following_topic_count)
print('following people count', me.following_count)
print('followers count', me.follower_count)

print('voteup count', me.voteup_count)
print('get thanks count', me.thanked_count)

print('answered question', me.answer_count)
print('question asked', me.question_count)
print('collection count', me.collection_count)
print('article count', me.articles_count)
print('following column count', me.following_column_count)

输出:

name 7sDream
headline 二次元普通居民,不入流程序员,http://0v0.link
description 关注本AI的话,会自动给你发私信的哟!
following topic count 35
following people count 101
followers count 1294
voteup count 2493
get thanks count 760
answered question 258
question asked 18
collection count 9
article count 7
following column count 11

更多功能请参见文档:使用方法

文档

完整的文档可以在这里 找到。我写的文档好吧,可详细了……有啥问题先去找文档。我写的那么累你们看都不看我好不服啊!

(貌似 ReadTheDocs 在伟大的国家访问速度有点慢,建议自备手段。)

TODO

  • [x] 保证对 Python 2 和 3 的兼容性
  • [x] 用户私信支持
  • [x] Live 支持
  • [x] Pin(分享)支持
  • [x] 搜索功能(还差电子书搜索)
  • [x] 用户首页 Feed
  • [ ] 知乎电子书
  • [ ] 获取用户消息。新关注者,新评论,关注的回答有新问题
  • [ ] Token check/refresh
  • [ ] Setting
  • [ ] 规范、完善的测试
  • [ ] article.voters 文章点赞者,貌似 OAuth2 没有这个 API
  • [ ] collection.followers 这个 API 不稳定,没法返回所有关注者

协助开发

通过代码

  1. Fork
  2. 从 dev 分支新建一个分支
  3. 编写代码,更新 Changelog 和 sphinx 文档,如果可能的话加上测试
  4. PR 到原 dev 分支

通过捐款

由于开发不积极,不再接受捐款。

捐款记录

LICENSE

MIT

Project details


Download files

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

Files for zhihu-oauth, version 0.0.42
Filename, size File type Python version Upload date Hashes
Filename, size zhihu_oauth-0.0.42-py2.py3-none-any.whl (79.6 kB) File type Wheel Python version py2.py3 Upload date Hashes View hashes
Filename, size zhihu_oauth-0.0.42-py3.7.egg (77.7 kB) File type Egg Python version 3.7 Upload date Hashes View hashes
Filename, size zhihu_oauth-0.0.42.tar.gz (474.1 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page