V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
AllenHua
V2EX  ›  分享创造

将个人关注的节点对应新帖推送到 telegram bot

  •  1
     
  •   AllenHua · 36 天前 · 1027 次点击
    这是一个创建于 36 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前情提要:迫于总是错过优惠信息,创建了一个 v2ex 优惠信息 新帖推送 频道

    这个频道我将会维护着(主要是程序跑在个人 VPS 上,不占用多少系统资源)。欢迎订阅关注。https://t.me/v2ex_deals

    优化了一下这个项目,升级了功能。现在可以部署成 推送自己关注的节点新帖到自己的 telegram bot 上

    例如 A 同学感兴趣的节点有 骑行优惠信息汽车宽带症候群上海硬件生活DNS奇思妙想美酒与美食分享创造分享发现,这些节点。

    配置文件

    token=123456789:abcdEFGhijkLMN
    chatId=1234567
    cron=0 */10 * * * ?
    nodeList=bike, deals, car, bb, shanghai, hardware, life, dns, ideas, taste, create, share
    

    部署方式

    1. 申请一个 telegram bot, 获取 token 和 chatId (具体请搜索)

    2. 编写好配置文件,然后执行以下 shell

      java -jar /path/to/app.jar --configPath=./config.txt >> ./application.log 2>&1 &
      

    具体、详细部署方式,请见 GitHub

    Preview

    20210916170056 20210916170223

    截图中用了问与答和 Apple 节点(因为这两个节点帖子是真多啊 :) )

    最后,厚脸皮🉐️️求个 star ⭐️️

    第 1 条附言  ·  36 天前

    更正:申请一个 telegram bot -> 创建一个 telegram bot

    ## tips:

    1. --configPath= 右边的值既可以是相对路径也可以是绝对路径,支持在 Windows 下的路径
    2. 只有 4 个 key-value pair
    3. 可以根据关注的节点热度和数量调整请求频率,请自行调整 cron 表达式,减轻 v2ex 服务器负担 :)。比如 问与答 Apple iPhone 都是热门节点
    4. 配置文件支持以 # 开头的注释
    5. 由于你懂🉐️️的原因,V 站被墙,建议运行在非大陆的服务器上
    6. 由于获取的是 V 站首页 全部 tab 下的帖子信息,故而不可能出现在此 tab 下的帖子就不可能被推送,比如 二手交易水深火热

    第 2 条附言  ·  36 天前

    更正:申请一个 telegram bot -> 创建一个 telegram bot

    tips:

    1. --configPath= 右边的值既可以是相对路径也可以是绝对路径,支持在 Windows 下的路径
    2. 只有 4 个 key-value pair
    3. 可以根据关注的节点热度和数量调整请求频率,请自行调整 cron 表达式,减轻 v2ex 服务器负担 :)。比如 问与答 Apple iPhone 都是热门节点
    4. 配置文件支持以 # 开头的注释
    5. 由于你懂🉐️️的原因,V 站被墙,建议运行在非大陆的服务器上
    6. 由于获取的是 V 站首页 全部 tab 下的帖子信息,故而不可能出现在此 tab 下的帖子就不可能被推送,比如 二手交易水深火热
    第 3 条附言  ·  35 天前

    很抱歉,之前对于带有空格的 nodeList 做 trim 处理有 bug,忽视了节点与节点之间的空格。现已 提交 修复。欢迎重新部署(使用最新版的 jar,在项目根目录,或者自己编译)。

    4QrgkF.png

    第 4 条附言  ·  34 天前

    重要更新 at 2021-09-18 16:04:56

    由于 telegram bot API sendMessage 方法请求限制:每次最大 4096 个字符,所以如果用户发的帖子正文内容特别多的话,就很容易超过这个限制。超过限制发送请求会导致 response code 400, bad request, 所以会再次推送一个不带 content 字段的版本给 bot.

    而我又希望推送 content 字段,因为这个字段帮助你直接预览帖子正文,在 telegram 上直接判断是否有必要打开帖子。如果你频繁收到 “Pushing failed” 的提示,可以考虑更改 cron 表达式,改成更短的时间请求一次,比如原来每 30 分钟请求一次,现在改成每 10 分钟请求一次。

    目前第一次推送失败后推送的文案如下

    Pushing failed. It maybe caused by too much nodes matched or too much content in some topic/post, which exceeds the telegram API request limit.

    See API document: https://core.telegram.org/bots/api

    Now push the version without content field.

    preview:

    20210918160937

    请使用最新 jar 包重新部署,文件名:app-2021-09-18.jar

    项目还有不完善的地方,如果你有兴趣,欢迎 fork 提交 mr/pr 提交你的贡献,一起来完善这个有趣的项目吧。

    10 条回复    2021-09-18 14:41:18 +08:00
    xingso
        1
    xingso   36 天前   ❤️ 1
    听起来不错,一会来试试,感谢楼主
    Dvel
        2
    Dvel   36 天前   ❤️ 1
    AllenHua
        3
    AllenHua   36 天前 via iPhone
    @Dvel #2 感谢,看来养成通过 rss 阅读的习惯很不错。渐渐的来吧,平时没这习惯。
    Tink
        4
    Tink   36 天前 via Android   ❤️ 1
    可以可以
    lc1450
        5
    lc1450   36 天前
    你们 tg 一直挂着? 我都是晚上睡觉时候看一看, 还没逛 v2 的时间长
    AllenHua
        6
    AllenHua   36 天前
    @lc1450 #5 现在离不开了…… 比微信强 n 倍。和微信的使用频率也差不太多了。
    thet
        7
    thet   36 天前
    订阅节点 rss 不就可以了
    AllenHua
        8
    AllenHua   35 天前
    @xingso #1 老哥,有 bug,😂️ 很抱歉。请看最新附言。
    jiyan5
        9
    jiyan5   34 天前 via Android
    楼主开的有机场吗?你头像好像一个 tg 机场群主的头像
    AllenHua
        10
    AllenHua   34 天前
    @jiyan5 #9 木有
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2170 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 05:20 · PVG 13:20 · LAX 22:20 · JFK 01:20
    ♥ Do have faith in what you're doing.