Allen Hua's Another Blog
Life is going on, I do what I want.
Home
Categories
Archives
Tags
About
Home
写了一个小项目:推送 v2ex 优惠信息节点的新帖到 telegram channel
写了一个小项目:推送 v2ex 优惠信息节点的新帖到 telegram channel
取消
写了一个小项目:推送 v2ex 优惠信息节点的新帖到 telegram channel
由
dk11
发布于 2021-09-15
·
最后更新:2021-09-18
113
[GitHub Link](https://github.com/hellodk34/v2ex_deals) # v2ex_deals v2ex 优惠信息 节点新帖推送。**频道名称:`v2ex 优惠信息 新帖推送`,link: https://t.me/v2ex_deals** 迫于总是错过 v2ex 上 `优惠信息` 节点的信息,创建了一个 `v2ex 优惠信息 新帖推送` 的 telegram channel. 欢迎关注/订阅频道。 preview:  --- # 更新 上述优惠信息节点新帖推送的频道不会受到影响。个人会维护下去,也占用不了多少系统资源(运行在个人 VPS 上)。 本程序已经更新成可以部署为个人关注的节点新帖推送的后端程序。前端只需要 1. 创建一个 telegram bot 2. 获取 bot 的 `token` 3. 获取 bot 的 `chatId` 如何创建 telegram bot 请自行搜索(是很简单的)。 # 重要更新 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 many topics 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:  **请使用最新 jar 包重新部署**,文件名:`app-2021-09-18.jar` ## 配置文件说明 配置文件的名字是可以随便命名的,比如 `config.txt` ```text # 创建的 telegram bot 的 token,长得像这样,`数字:字母` token=123456789:abcdEFGhijkLMN # bot 的 chatId chatId=1234567 # cron 表达式,Java(String) 类型或者 Java(Quartz) 类型 参考网站 https://tool.lu/crontab/ # 建议每 10 分钟或 20 分钟、或 30 分钟 请求一次 ,假如是 20 分钟,这么写:cron=0 */20 * * * ? # 下面这是每一分钟请求一次 API,有新帖则推送,无则不推送 cron=0 */1 * * * ? # 关注的节点列表,节点 code 可以通过 `https://www.v2ex.com/api/nodes/s2.json` 获取。 # 用英文逗号/半角逗号分隔,已作 trim 处理,逗号后可添加空格(更容易看清楚) nodeList=qna, deals, bike, apple ``` ## 运行方式 ```shell script java -jar /path/to/app.jar --configPath=./config.txt >> ./application.log 2>&1 & ``` tips: 1. `--configPath=` 右边的值既可以是相对路径也可以是绝对路径,支持在 Windows 下的路径 2. 只有 4 个 key-value pair 3. 可以根据关注的节点热度和数量调整请求频率,请自行调整 cron 表达式,减轻 v2ex 服务器负担 :)。比如 `问与答` `Apple` `iPhone` 都是热门节点 4. 配置文件支持以 # 开头的注释 5. 由于你懂🉐️️的原因,V 站被墙,建议运行在非大陆的服务器上 6. 由于获取的是 V 站首页 `全部` tab 下的帖子信息,故而不可能出现在此 tab 下的帖子就不可能被推送,比如 `二手交易`、`水深火热` > 默认情况下,每个 IP 每小时可以发起的 API 请求数被限制在 120 次。 [V2EX API 接口](https://www.v2ex.com/p/7v9TEc53) ## Preview  
work
Java
Telegram
该博客文章由作者通过
CC BY 4.0
进行授权。
分享
最近更新
打卡南京市区人防工程纳凉点
Linux 利用 openssl 生成随机密码
收集、推荐一些白噪声网站
华强买瓜和高级特工穿山甲原版台词,要求全文背诵
OpenWrt 安装 shadow-gpasswd 从组中删除用户
热门标签
Java
笔记
随笔
日记
网络
Telegram
docker
GitHub
n1
随想
文章目录
Telegram 创建 bot 获取 token 和 chatId 以及发送消息简明教程
为了绕过阿里云盘上传文件类型限制,一种将压缩包改变成一张图片的方式分享