derotyoung / weibo-subscribe-public

subscribe weibo post to telegram

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

订阅微博并同步至Telegram

实现了什么功能?

订阅某个博主的微博,如果博主有发新微博、编辑、转发微博等动态,则及时将微博最新动态发送到指定的Telegram频道,支持图片和视频备份到Telegram。

实现该功能的初衷

觉得有些博主的文章质量比较高,想要不错过这些博主的微博,又不是一直刷微博,把想看的微博推送到自己的消息渠道。本来之前有好几个小程序/公众号可以订阅微博,后面都不断关闭该功能,于是考虑用Telegram作为信息渠道。

⚠️请注意:

  1. 微博博文中的表情包会被过替换为文字
  2. 粉丝可见好友可见分组可见仅自己可见非公开微博无法被获取到
  3. 推送到Telegram的图片最大5MB,视频最大20MB,超过限制会被压缩

效果预览

👇推送到Telegram效果预览 预览

快速开始

目录:

下载

git clone git@github.com:derotyoung/weibo-subscribe-public.git
cd weibo-subscribe-public

配置

  1. 初始化数据库。需要MySQL数据库,新建一个weibo_user数据库,执行初始化脚本

  2. 在表weibo_user配置需要订阅的微博用户,可在运行过程中添加订阅,👇示例:
    用户配置示例
    只说明必填字段,其他字段为非必填,含义见注释或者顾名思义即可
    user_id -- 微博用户ID
    open_flag -- 是否开启订阅(1=开启,0=关闭),便于随时停止订阅
    sync_update_flag -- 是否同步微博编辑更新(1=开启,0=关闭),开启后Telegram会同步更新消息,不会针对编辑重新推送消息
    max_push -- 每篇文章最大推送次数(0=不限制)

  3. 修改配置文件application.yml,参考阅读如何创建bot & 获取token

必填 配置项 代表含义 示例
spring.database.url 数据库地址 localhost:3306
spring.database.username 数据库用户名 root
spring.database.password 数据库密码 123456
weibo.subscribe.telegramChatId 在Telegram申请的bot token 886947303:AAFGhtD3s5KDJ…
weibo.subscribe.telegramBotToken 在Telegram创建的频道ID -1003769903788
× weibo.subscribe.concurrentNum 同时查询的微博的并发数,默认为10,太大会查询失败 10
× weibo.subscribe.cyclePeriod 定时执行周期,单位:秒,系统默认为15(要么注释此项,否则一定要填值) 15
× weibo.subscribe.proxy http或者socks代理,推荐socks代理,用于访问Telegram服务器 socks://127.0.0.1:7890或者http://127.0.0.1:7890

运行

上述步骤完成后,打成jar包运行

  1. 进入项目根目录
cd weibo-subscribe-public
  1. 编译成jar
mvn clean -DskipTests package
  1. 运行

    1. Linux -Xms200M -Xmx200M -Xss1M -XX:MetaspaceSize=85M -XX:MaxMetaspaceSize=85M
      nohup java -Xms200M -Xmx200M -Xss1M -XX:MetaspaceSize=85M -XX:MaxMetaspaceSize=85M -jar target/weibo-subscribe-public-1.0.0 &
    1. Windows

      java -Xms200M -Xmx200M -Xss1M -XX:MetaspaceSize=85M -XX:MaxMetaspaceSize=85M -jar .\target\weibo-subscribe-public-1.0.0.jar

参考阅读

目录:

获取微博用户ID

Web端在用户主页链接(https://weibo.com/u/2803301701)中能直接获取微博用户ID,如下。移动端同样在`用户主页` -> 右上角···-> 复制链接,复制出的链接和Web端的格式一样 web端微博用户ID

Telegram创建BOT & 获取token

🔔需要保证有国际网络环境

  1. 私聊@BotFather 发送/newbot创建一个Telegram Bot

  2. 按照提示发送bot名字,名字中英文都可以

  3. 输入bot的唯一id,只能是数字、字母、下划线为组合,必须以bot结尾,如XZgakYDobotbzONCofs_bot都可以, 下述以WeiboSyncBot为例

  4. 然后就可以获得到bot的token(示例:5458704928:AAHBqZFKpu4T8EEGAJFPDT4FNfGqwxoOlGs)

Telegram创建频道/群组 & 添加Bot

🔔需要保证有国际网络环境
区别:频道类似公众号,只有管理员才可以发言;群组类似QQ群,所有加群人都可以一起发言; 选择自己喜欢的类型就可以,一般情况只是追星或者特意关注某个博主,建议选择创建频道;如果是一边关注博主动态,一边有和朋友们一起聊天,可以选择群组。 以 Telegram Web 端为例

  1. 创建频道new Channel
  2. 搜索并添加刚刚创建的机器人进频道
  3. 设置频道头像以及名字Channel name,可以为中文,设置频道描述Description(optional)可以为空
  4. 设置频道类型,是公开Public Channel还是私密Private Channel,公开频道可以自定义链接,任何人都可以加入;私密频道无法自定义链接,只能通过生成的连接邀请加入
  5. 创建最后一步,把Bot添加进频道(第2步无效)并设置为管理员

6. 获取Telegram频道ID

🔔需要保证有国际网络环境

  1. Telegram创建Bot & 获取token中获取的token,访问https://api.telegram.org/bot+刚才创建bot时申请的token+/getupdates,直接在浏览器地址栏打开即可,如下
  2. 访问https://api.telegram.org/bot+刚才创建bot时申请的token+/getupdates, 直接在浏览器地址栏打开即可
     https://api.telegram.org/bot5458704928:AAHBqZFKpu4T8EEGAJFPDT4FNfGqwxoOlGs/getupdates
  3. 如发现返回结果为空,先把Bot移出频道再重新添加进频道为管理员,再进行步骤2即可,如下。在访问结果里找到"chat":{"id":-1001385856968, "title":……},其中的-1001885177644就是频道ID

About

subscribe weibo post to telegram


Languages

Language:Java 100.0%