搭建X(旧Twitter)监视器
今天紫宝魂账开了发图用小号,感觉要和結城昨日夸一样跑路了
以前一直使用@murasakishion_twitter_monitor订阅视奸紫宝的推特行为,现在的杏版本来看魂账开始活动可能是今后潮流
干脆参考上面频道的项目自己搭建一个X(旧Twitter)监视器,实现实时监控指定用户的X动态。
本文用来记录一下搭建过程
使用项目为@ionic-bond的twitter-monitor
准备工作:
服务器:
可以访问X的服务器一个
账号:
被封了也无所谓了X账号一个,用来实时监控指定用户。
Telegram账号,用于创建通知机器人和接收通知信息。
搭建环境为Debian12.7,Python3.11
安装python,解决error: externally-managed-environment错误
使用命令行安装python,如果没有更新源可以先
apt-get update更新一下源,然后运行下列命令安装python和pip
apt install -y pip3 python3新版python会限制pip命令的使用,非复杂环境可以使用下列命令去除error: externally-managed-environment错误
其中的x改为你安装的python版本,可以使用python3 --version查看,如返回Python 3.11.2就将x改为11
sudo mv /usr/lib/python3.x/EXTERNALLY-MANAGED /usr/lib/python3.x/EXTERNALLY-MANAGED.bk新建TG机器人,获取TG机器人Token
在TG中添加@BotFather为好友,发送/newbot
根据提示添加bot,第一次输入你的bot命名,第二次输入bot的id,以bot为结尾
如"mrsk的机器人","mrskso_bot"

记下此token后就完成了bot的创建。
创建频道(可选),获取bot对管理员与频道的chat id
如果想把监视器分享出去,可以创建频道
但无论如何想让监视器正常运行都应获取至少一个chat id
首先访问https://api.telegram.org/bot{token}/getUpdates 异色部分替换为之前获得的token
然后访问你创建的bot,如@mrskso_bot,随意发送一句话
创建频道在此省略,频道创建完成后将bot添加为频道管理员,在频道中再次发送一句话
再次访问https://api.telegram.org/bot{token}/getUpdates 会返回下列内容
{"ok":true,"result":[{"update_id":----,
"channel_post":{"message_id":11,"sender_chat":{"id":记下此处chat id1,"title":"频道名","username":"频道ID","type":"channel"},"chat":{"id":记下此处chat id1,"title":"频道名","username":"频道ID","type":"channel"},"date":时间戳,"text":"频道中发送消息"}},{"update_id":---,
"message":{"message_id":3,"from":{"id":记下此处chat id2,"is_bot":false,"first_name":"用户名","username":"用户id","language_code":"zh-hans"},"chat":{"id":记下此处chat id2,"first_name":"用户名","username":"用户id","type":"private"},"date":时间戳,"text":"私聊中发送消息"}}]}
记下两个(或单独的一个)chat_id后,此步准备也完成。
正式配置项目
再次使用ssh链接服务器,输入以下命令:
git clone https://github.com/ionic-bond/twitter-monitor.git
cd twitter-monitor
pip3 install -r ./requirements.txt完成项目的拉取,如果出现
hint: See PEP 668 for the detailed specification.
请自查第一步的第三条命令是否正确运行。
运行下列命令获取X的cookie,username与password填写对应账号密码,无法登录的话请使用与服务器同ip登陆一次并回答问题解封。
python3 main.py generate-auth-cookie --username "{username}" --password "{password}"成功后在/root/twitter-monitor/cookies文件夹下会生成username.json命名的cookie文件。
运行下列命令初始化配置文件
cp ./config/token.json.template ./config/token.json
cp ./config/monitoring.json.template ./config/monitoring.json使用vi或nano工具配置config/token.json文件
{
"telegram_bot_token": "第二步获取的token",
"twitter_auth_username_list": ["推特账号的username"
]
}
使用vi或nano工具配置config/monitoring.json文件
{
"maintainer_chat_id": 运行信息发送对象的chat id,建议使用个人聊天id,
"monitoring_user_list": [
{
"username": "监控对象1",
"telegram_chat_id_list": [监控发送对象的chat id],
"monitoring_following": true,
"monitoring_tweet": true,
"monitoring_following_count": true,
"monitoring_like_count": false,
"monitoring_tweet_count": false
},
{
"username": "监控对象2",
"telegram_chat_id_list": [监控发送对象的chat id],
"monitoring_following": true,
"monitoring_tweet": true,
"monitoring_following_count": true,
"monitoring_like_count": false,
"monitoring_tweet_count": false
}
}
]
}
上述配置中monitoring_following为是否监控对象的关注情报;monitoring_tweet为是否监控对象的发推信息;monitoring_following_count为是否监控对象的关注数变化;monitoring_like_count由于狗日的马斯克现阶段失能;monitoring_tweet_count为监控对象的发推数量。监视对象为1时异色部分可以消除。
到此配置结束。
启动监视器
使用下列命令即可启动监视器:
python3 main.py run --interval 15 --send_daily_summary False其中--interval 15 为监视频率,请视账号额度与监视对象多寡自行摸索;--send_daily_summary False为是否每日发送简报,需要可以改为True打开。
至此,X 监控服务已搭建完成。
成品效果:
