V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hanzichi
V2EX  ›  程序员

v2ex 中查看回复所属的对话详情的正确姿势

  •  1
     
  •   hanzichi · 2017-10-24 23:05:22 +08:00 · 3750 次点击
    这是一个创建于 2586 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果玩过知乎,肯定看到过「对话详情」,即查看某个讨论下某两个人之间的对话详情。但是 v 站没有这个功能,个人觉得十分有必要,经常某人回复我,却忘了之前我说过什么,尴尬,还得一层层往上寻找。遂在我开发的 chrome 扩展 v2ex-helper 中加入了这个功能。

    使用是这个样子的:

    开发过程中几个需要注意的点:

    1. 在有且仅有一个 @ 的楼层加入「对话详情」按钮,层主记为 A,回复的人记为 B
    2. 遍历该主题贴所有楼层,找到 A to B 或者 B to A 的帖子
    3. 以上这点需要注意需要同时包括 A to B,C。。或者 B to A,C。。 的帖子
    4. 找到 A 和 B 的回复帖(回复主题,没有指定的回复人)
    5. 展示步骤 2 和 4 找到的会话

    比较蛋疼的情况是 v 站回复可以一对多,所以我把第三步的情况也包括了。为了对话的完整性,抱着宁可错杀一千也不放过一个的心理,做了第 4 步操作。

    插件安装方式以及源码详见 https://github.com/hanzichi/v2ex-helper,欢迎 bug 以及各种建议意见

    终于在程序员日当天写完了,回家

    第 1 条附言  ·  2017-10-25 10:06:26 +08:00
    改用 api 后,体验果然好了很多 ...

    第 2 条附言  ·  2017-10-25 10:13:33 +08:00
    用 @autoxbc 说的帖子 https://www.v2ex.com/t/377051 测了下,如果不是故意一直点的话,应该还是压力不大把。不过改用 api 后,跟页数应该没关系了,所有请求操作对服务器都是一样的压力

    第 3 条附言  ·  2017-10-25 13:22:45 +08:00
    api 每小时使用上限 120,也就是一小时內能查看 120 次对话详情,因为获取回复能走缓存,但是走缓存获取的数据可能不是及时的,所以我默认不走缓存。我想,一小时 120 次也够用了吧

    还有个想法,因为我之前没有用 api,是抓取所有回复,并不会触发 api 120 的 limit,但是可能就和访问网页的次数有关了。对于单位次数內访问网页的次数限制,暂时还没想法
    12 条回复    2017-11-01 20:56:12 +08:00
    flowfire
        1
    flowfire  
       2017-10-24 23:21:42 +08:00
    翻页的话会调接口取上一页的数据么
    autoxbc
        2
    autoxbc  
       2017-10-25 07:10:36 +08:00   ❤️ 1
    @flowfire 看了代码是每次点击遍历前面的全部页面提取,原则上有性能问题

    另外这种遍历的频度比较高的话,会触发 V2EX 的反爬规则,我已成功被封 ip,翻墙上来含泪回复

    不怕死的可以装好扩展,猛击这个帖子
    https://www.v2ex.com/t/377051
    autoxbc
        3
    autoxbc  
       2017-10-25 08:02:45 +08:00   ❤️ 1
    不好意思泼冷水了,看到 Access Denied 有点情绪

    推荐楼主用这个 topic api 建立对话流,自带头像数据
    https://www.v2ex.com/api/replies/show.json?topic_id=400404
    49gd
        4
    49gd  
       2017-10-25 08:34:01 +08:00
    的确比较麻烦 看回复的话
    wxyz
        5
    wxyz  
       2017-10-25 08:58:58 +08:00
    我也准备开发一个类似的插件呢,看到这个插件很赞~

    @autoxbc 这个接口好用
    cisisustring
        6
    cisisustring  
       2017-10-25 09:09:55 +08:00
    太好了,看到这么好的 api 手痒难耐,等我有空了造一个更差的
    hanzichi
        7
    hanzichi  
    OP
       2017-10-25 09:37:05 +08:00
    @autoxbc 卧槽,我居然忘了这个 api,多写了好多脏代码,感谢提醒

    btw,我看 [api 说明]( https://www.v2ex.com/p/7v9TEc53) 说请求会被缓存,不是程序去爬的话,应该不至于被封 ip 把 ..
    hanzichi
        8
    hanzichi  
    OP
       2017-10-25 09:38:56 +08:00
    @flowfire 会,但是我做的不好,有 api,详见二楼
    hanzichi
        9
    hanzichi  
    OP
       2017-10-25 09:42:07 +08:00
    @autoxbc 确实 403 了,wtf,这是被封 ip 了?
    czjxy881
        10
    czjxy881  
       2017-10-25 10:59:37 +08:00
    居然有这个 api
    zhenizhui
        11
    zhenizhui  
       2017-11-01 19:40:27 +08:00
    我好奇的是怎么,一开始 v2 就没有这个功能?
    hanzichi
        12
    hanzichi  
    OP
       2017-11-01 20:56:12 +08:00
    @zhenizhui maybe
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2671 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 369ms · UTC 02:04 · PVG 10:04 · LAX 18:04 · JFK 21:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.