乘车指南

Prev: None Next: 简单的例子 🌰

In [1]:
import jike

创建即刻客户端

初次使用会要求使用即刻App扫描二维码登录

登录成功之后,会在~/.local/jike/jike_metro.json存储即刻的auth_token,后续的使用则会跳过扫描二维码的步骤

In [2]:
c = jike.JikeClient()

查看自己的用户信息

调用: get_my_profile()
返回: User,自己的用户信息 (基于collection.namedtuple

In [3]:
my_profile = c.get_my_profile()
my_profile
Out[3]:
User(screenName=挖地道的)
In [4]:
print(my_profile.screenName)
print(my_profile.briefIntro)
挖地道的
Ⓙ 镇-地下工作者 👷

获取自己的收藏

调用: get_my_collection()
返回: List,自己的收藏 (基于collection.abc.Sequence

In [5]:
my_collection = c.get_my_collection()
my_collection
Out[5]:
List(20 items)
In [6]:
my_collection[0]
Out[6]:
OfficialMessage(id=55dd572f41904d0e00fc58f8, content=即刻果果: 分享一只曾经的童星(已光速成长))
In [7]:
guoguo = my_collection[0]
guoguo.likeCount
Out[7]:
39

加载所有收藏

In [8]:
my_collection.load_all()
my_collection
Out[8]:
List(24 items)

流式获取首页消息和动态

  • 获取消息

    调用: get_news_feed()
    返回: Stream,消息流 (基于collection.deque

In [9]:
news_feed = c.get_news_feed()
news_feed
Out[9]:
Stream(20 items, with 200 capacity)
In [10]:
news_feed[0]
Out[10]:
OfficialMessage(id=5ac392c18fecf20017ec27e7, content=姑姑住进了养老院)
In [11]:
news_feed.load_more()
news_feed
Out[11]:
Stream(40 items, with 200 capacity)
  • 获取动态

    调用: get_following_update()
    返回: Stream,动态流 (基于collection.deque

In [12]:
following_update = c.get_following_update()
following_update
Out[12]:
Stream(29 items, with 200 capacity)
In [13]:
following_update[0]
Out[13]:
OriginalPost(id=5ac392cd3535890017f8a3bb, content=所以「向拉斯维加斯学习」(1972)也可以是向东京学习。而且东京更早。#ATokyoMemoir #IanBuruma)
In [14]:
following_update.load_more()
following_update
Out[14]:
Stream(45 items, with 200 capacity)
  • 获取当前未读消息数

    调用:get_news_feed_unread_count()
    返回:int,未读消息数

In [15]:
c.get_news_feed_unread_count()
Out[15]:
0

获取某个用户的用户信息、发布的动态、创建的主题、关注的主题、TA关注的人和关注TA的人

  • 获取某个用户的用户信息

    调用: get_user_profile(username)
    参数: username: 指定用户的用户名(注:不是用户的显示名,而是类似 瓦总个人页面 在浏览器地址栏中 https://web.okjike.com/user/ 后的部分)
    返回: User, 用户信息 (基于collection.namedtuple

In [16]:
ceo = c.get_user_profile(username='82D23B32-CF36-4C59-AD6F-D05E3552CBF3')
ceo
Out[16]:
User(screenName=瓦恁)
In [17]:
ceo.briefIntro
Out[17]:
'即刻CEO'
  • 获取某个用户发布的动态

    调用: get_user_post(username)
    参数: username: 指定用户的用户名
    返回: List, 用户发布的动态 (基于collection.abc.Sequence

In [18]:
ceo_posts = c.get_user_post(username='82D23B32-CF36-4C59-AD6F-D05E3552CBF3')
ceo_posts
Out[18]:
List(20 items)
In [19]:
ceo_posts[0]
Out[19]:
Repost(id=5ac36c4913fd9f0018a1a5ca, content=“战略是现实和理想的结合。伟大的战略是极端的现实主义和极端的理想主义结合的产物”)
In [20]:
ceo_posts.load_more()
ceo_posts
Out[20]:
List(59 items)

load_all 约运行了10s

In [21]:
ceo_posts.load_all()
ceo_posts
Out[21]:
List(3011 items)

瓦总的第一条动态

In [22]:
ceo_posts[-1]
Out[22]:
Repost(id=5ab20efc63cd65165515d4e2, content=想给这个主题打钱)
In [23]:
ceo_posts[-1].createdAt
Out[23]:
'2016-09-14T11:30:58.283Z'
  • 获取某个用户创建的主题

    调用: get_user_created_topic(username)
    参数: username: 指定用户的用户名
    返回: List, 用户创建的主题 (基于collection.abc.Sequence

In [24]:
ceo_created_topics = c.get_user_created_topic(username='82D23B32-CF36-4C59-AD6F-D05E3552CBF3')
ceo_created_topics[0]
Out[24]:
Topic(id=5a8eeb3d4eb3b0001858fa87, content=又有人在微博提到yes prime minister了)
  • 获取某个用户关注的主题

    调用: get_user_subscribed_topic(username)
    参数: username: 指定用户的用户名
    返回: List, 用户关注的主题 (基于collection.abc.Sequence

In [25]:
ceo_subscribed_topics = c.get_user_subscribed_topic(username='82D23B32-CF36-4C59-AD6F-D05E3552CBF3')
ceo_subscribed_topics[0]
Out[25]:
Topic(id=5a41c69600074100168fd2a1, content=又有人在微博提到Reddit)
  • 获取某个用户关注的人

    调用: get_user_following(username)
    参数: username: 指定用户的用户名
    返回: List, 用户关注的人 (基于collection.abc.Sequence

In [26]:
ceo_followings = c.get_user_following(username='82D23B32-CF36-4C59-AD6F-D05E3552CBF3')
ceo_followings[0]
Out[26]:
User(screenName=谌谌)
  • 获取关注某个用户的人

    调用: get_user_follower(username)
    参数: username: 指定用户的用户名
    返回: List, 关注指定用户的人 (基于collection.abc.Sequence

In [27]:
ceo_followers = c.get_user_follower(username='82D23B32-CF36-4C59-AD6F-D05E3552CBF3')
ceo_followers[0]
Out[27]:
User(screenName=夏洛克牌花生酱)

获取某个主题下的精选和广场

  • 获取某个主题下的精选

    调用: get_topic_selected(topic_id)
    参数: topic_id: 指定主题的id,类似于 不好笑便利店 地址栏部分在 https://web.okjike.com/topic/之后的部分
    返回: Stream, 主题精选(基于collection.deque

In [28]:
topic_selected = c.get_topic_selected(topic_id='5701d10d5002b912000e588d')
topic_selected[0]
Out[28]:
OfficialMessage(id=5ac371e0a7476600171f1a31, content=干死美团 ,碾压滴滴!饿了么和你一起拼)
  • 获取某个主题下的广场

    调用: get_topic_square(topic_id)
    参数: topic_id: 指定主题的id
    返回: Stream, 主题广场(基于collection.deque

In [29]:
topic_square = c.get_topic_square(topic_id='5701d10d5002b912000e588d')
topic_square[0]
Out[29]:
OriginalPost(id=5a43395fc912390015ec6b6a, content=不正经,不上纲上线,偶尔开车,当然也欢迎你来代驾。)

获取某条消息/动态的评论

调用: get_comment(message)
参数: message: 要获取评论的消息/动态
返回: Stream, 评论 (基于collection.deque

In [30]:
comments = c.get_comment(topic_square[0])
comments
Out[30]:
Stream(13 items, with 200 capacity)
In [31]:
max(comments, key=lambda c: c.likeCount)
Out[31]:
Comment(id=5a4341eb57b9c60010c707cb, content=神特么偶尔。不是在开车就是在找车吧)

在浏览器中打开某条消息的原始链接

调用:open_in_browser(url_or_message)
参数:url_or_message: url 或者 message (例如topic_selected[0],这是一条OfficialMessage)
返回:None

In [32]:
c.open_in_browser(topic_selected[0])

发布个人动态(可带图、带链接、带主题)

调用: create_my_post(content, link, topic_id, pictures)
参数: content: 要发布的内容 / link: 所带的链接 / topic_id: 所带主题的id / pictures: 所带图的本地地址(注:由于即刻的限制,动态不能同时带有图片和链接)
返回: OriginalPost,所发布的动态 (基于collection.namedtuple

In [33]:
my_new_post = c.create_my_post('Hello world from Jike Metro 🚇!')
my_new_post
Out[33]:
OriginalPost(id=5ac3990c2391fb00174e3843, content=Hello world from Jike Metro 🚇!)

点赞、收藏、评论、转发某条消息/动态

  • 点赞某条消息/动态

    调用: like_it(message)
    参数: message: 要赞的消息/动态
    返回: Bool, 成功与否

In [34]:
c.like_it(my_new_post)
Out[34]:
True
  • 取消赞某条消息/动态

    调用: unlike_it(message)
    参数: message: 要取消赞的消息/动态
    返回: Bool, 成功与否

In [35]:
c.unlike_it(my_new_post)
Out[35]:
True
  • 收藏某条消息/动态

    调用: collect_it(message)
    参数: message: 要收藏的消息/动态
    返回: Bool, 成功与否

In [36]:
c.collect_it(my_new_post)
Out[36]:
True
  • 取消收藏某条消息/动态

    调用: uncollect_it(message)
    参数: message: 要取消收藏的消息/动态
    返回: Bool, 成功与否

In [37]:
c.uncollect_it(my_new_post)
Out[37]:
True
  • 转发某条消息/动态

    调用: repost_it(content, message, sync_comment)
    参数: content: 转发的评论内容 / message: 要转发的消息或动态 / sync_comment: 是否同步评论,默认为True
    返回: Repost, 发布的转发 (基于collection.namedtuple)

In [38]:
c.repost_it('Support Jike Metro 🚇', my_new_post)
Out[38]:
Repost(id=5ac399fd44f1020018533abc, content=Support Jike Metro 🚇)
  • 评论某条消息/动态

    调用: comment_it(content, message, pictures, sync2personal_updates)
    参数: content: 要评论内容 / message: 要评论的消息或动态 / pictures: 所带图的本地地址 / sync2personal_updates: 是否同步到个人动态,默认为True
    返回: Comment, 发布的评论 (基于collection.namedtuple)

In [39]:
c.comment_it('Upvote for Jike Metro 🚇', my_new_post)
Out[39]:
Comment(id=5ac39a364ce4cf001702d51a, content=Upvote for Jike Metro 🚇)

删除个人动态

调用: delete_my_post(post)
参数: post: 要删除的动态
返回: Bool, 成功与否

In [40]:
c.delete_my_post(my_new_post)
Out[40]:
True

根据关键词搜索主题

调用: search_topic(keywords)
参数: keywords:搜索的关键词
返回: List, 搜索到的主题, (基于collection.abc.Sequence)

In [41]:
topics = c.search_topic(keywords='apple')
topics
Out[41]:
List(20 items)
In [42]:
[topic['content'] for topic in topics]
Out[42]:
['Apple Watch',
 'Apple Pay新动向',
 '下一代iPhone最新情报',
 '内地有新的Apple Store开业',
 '苹果有新的官方视频',
 '苹果特惠日提醒',
 '每天一个Mac快捷键介绍',
 'Mac硬件新品及系统更新追踪',
 'Mac Stories博客“Stories”板块新文章',
 'Apple照片更新提醒',
 'Apple Newsroom 更新',
 'apple产品优惠',
 'Apple购买提醒',
 'Apple的东西有更新',
 'Apple 照片 更新提醒',
 'Apple Music照片更新提醒',
 'Apple Store 有新的官翻产品上架',
 '有值得买的APPLE苹果优惠',
 '有值得买的Apple watch优惠',
 'Apple 广告有新的配乐']

Prev: None Next: 简单的例子 🌰