Mastodon | 微博转发到Mastodon bot

1559字

artist 本文作者没有任何代码基础,所有说明性文字主要靠连蒙带猜兼灵光一现,参考时请务必注意,欢迎提出意见和给出建议~

上周就在此方的教学下搞定了,但学会之后发现原来想搬运的微博账号杂乱信息太多,实际效果很差,后来问奈瑟丽有没有什么想在Mastodon上看的微博账号,她说想看每日人物,就重新动手做一下,这篇文章是记录整个搭建流程的笔记。

请注意:搬运微博属于无授权转载,请不要搬运私人微博账号,在对应Mastodon账号上显著标明镜像,勾选这是一个机器人帐户,并在简介中说明账号性质与账号来源。


在VPS上安装Python

本来是想按此方的推荐装一个Anaconda,后来发现Anaconda有1000多个库……我就转头装了Miniconda。

 mkdir miniconda //创建miniconda文件夹
 cd miniconda //进入miniconda文件夹
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh //下载版本最新版本
sh Miniconda3-latest-Linux-x86_64.sh //用bash安装

之后按Enter继续安装,Miniconda会显示很长一段使用许可说明,按Enter不断翻页

Do you accept the license terms? [yes|no] //输入Yes同意使用许可
Miniconda3 will now be installed into this location:
/root/miniconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

[/root/miniconda3] >>> 

这里我直接安装在了本地(即/root/miniconda3),也可以输入其他安装路径

Preparing transaction: done
Executing transaction: done
installation finished.
Do you wish the installer to initialize Miniconda3
by running conda init? [yes|no]

选择是否运行conda init来初始化,我选了yes,返回Thank you for installing Miniconda3!,安装完毕。把终端关掉,试一下是不是安装成功了:

conda --version
conda 4.11.0

这里有个小问题是安装Miniconda之后,root账号前会出现(bash)字样,根据这篇文章,输入conda deactivate命令可以取消掉。

另一个问题是碰到安装后提示conda命令无效conda: command not found
按照这篇文章解决:

export PATH=~/miniconda3/bin:$PATH

安装Bot

这里用的是小森林站长写的将微博搬运到长毛象的脚本,下载仓库,并按照说明执行这几个命令,如果提示没有pip3下载一个

git clone https://github.com/mashirozx/weibo2toot.git
cd weibo2toot
conda create -n mastbot python=3.8 //创建一个叫mastbot的版本为3.8的python虚拟环境
conda activate mastbot //激活mastbot环境,root账号前会出现(mastbot)
pip3 install -r requirements.txt //安装 requirement.txt 所包含的依赖
cp conf.sample.ini conf.ini //复制一份配置文件并修改名称
nano conf.ini //编辑配置文件

虚拟环境有点儿类似docker,可以方便地在不同虚拟环境里用不同的Python版本,不同虚拟环境之间彼此相对独立,但是独立程度没有docker那么高。


准备配置内容

首先需要一个用来转发微博内容的Mastodon账号,注册后,在管理面板找到开发-创建新应用,创建一个新的应用,并给予读/写权限,最后复制你的访问令牌,备用

然后找到想要镜像的微博账号,复制它的User_id,方法可以参考:如何获取user_id


填写配置文件

之后来填写配置文件:

[PROXY]
ProxyOn = false
HttpProxy = http://127.0.0.1:7890
HttpsProxy = https://127.0.0.1:7890

[MASTODON]
BaseUrl = 填写Mastodon账号所在的实例
# register your application here: https://hello.2heng.xin/settings/applications
AccessToken = 复制Mastodon账号的访问令牌
# 'direct' - post will be visible only to mentioned users 
# 'private' - post will be visible only to followers 
# 'unlisted' - post will be public but not appear on the public timeline 
# 'public' - post will be public
TootVisibility = 填写嘟文的公开范围
IncludeVideo = false //是否转发视频
SourcePrefix = :icon_weibo:
ExternalLinkPrefix = :sys_link:
VideoSourcePrefix = :sys_video:

[WEIBO]
WeiboRss = https://rsshub.app/weibo/user/微博的User_id

特别说明一下WeiboRss这个部分,这里实际上是在使用RssHub提供的微博Rss路由,因此推荐自己搭建RssHub而不是直接使用配置文件中给出的官方路由,同时也可以使用RssHub提供的参数来进一步优化Rss输出内容和排版。

运行python3 run.py来启动Bot,Bot会自动开始抓取微博的过往帖子并发出。


创建定时程序

创建一个定时程序让Bot每隔20分钟跑一次:

crontab -e
*/180 *    * * *    cd /root/miniconda/weibo2toot && /root/miniconda3/envs/mastbot/bin/python run.py >> /root/miniconda/weibo2toot/log.txt 2>&1

实际上:死活跑不起来,让我试试怎么搞定它……

3月27更新:在此方的仗义救命下解决了,为什么呢,是因为路径要写绝对路径。