性感猫猫,每日上午八点半,在您的时间线上推送一个喵喵神签
在缪尚后厅和大家聊天时,猫猫从键盘经过,留下一串神秘文字。大家一致认为这是猫猫给我们留下的忠告,因此决定在缪尚给猫猫神开个位置,就有了这个喵喵喵账号。让我们有请 CATsama!
在 VPS 上安装 python 综合此方和塔塔的教程,决定安装 miniconda。
1 2 3 4 5 6 7 mkdir miniconda cd minicondawget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh sh Miniconda3-latest-Linux-x86_64.sh //用bash安装
之后会有很长一段的文字,都是许可说明,一直按 Enter
即可,直到出现 Do you accept the license terms? [yes|no]
输入 yes
,开启正式安装。安装路径直接使用默认 /root/miniconda3
。 安装完成后会询问是否运行 conda init
来初始化,选择 yes
。 检查是否安装成功,重启终端后输入 conda --version
。
安装 bot 安装前准备 注册 Mastodon 账号,在管理面板找到开发-创建新应用,创建新应用并给予读写权限,复制访问令牌。 由于 Fedi 有许多 bot 账号,为避免 bot 账号之间陷入无限回复循环,建议勾选账号设置中的 “这是一个机器人账户”。
安装 创建存放 bot 相关文件的文件夹,这里模仿塔塔,存在 /root/miniconda
下。
1 2 3 4 5 6 7 8 9 10 cd minicondaconda create -n mastbot python=3.8 conda activate mastbot pip3 install requests beautifulsoup4 Mastodon.py pip3 install numpy mkdir catsama cd catsamanano mybot_usercred.secret nano catsama.py
发嘟 python 脚本框架如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 import randomfrom mastodon import Mastodonmastodon = Mastodon( access_token = 'mybot_usercred.secret' , api_base_url = '实例地址' , ) content = random.choice(open ("content.txt" ).read().splitlines()) mastodon.status_post(content)
上述工作完成后,python bot.py
运行脚本。如果顺利,bot 就会发出嘟嘟;如有报错,根据报错信息修改。
定时发嘟 想要实现定时发嘟肯定不能人工蹲点,而要实现自动化。使用 crontab
设置定时任务,定时自动运行 python bot.py
即可实现定时发嘟。
1 30 2 * * * cd /root/miniconda/catsama && /root/miniconda3/envs/mastbot/bin/python catsama.py >> /root/miniconda/catsama/log.txt 2>&1
设置为每天服务器时间 2:30 发送一条喵签。如有报错信息,将输出到 log.txt,可根据报错修改。
catsama 脚本存档 生成一个含有字母、数字、特殊符号和汉字的字符串,这串字符即为喵签内容。如果遇到低概率随机生成的串为空或最终输出的部分为空,则从 ABC 的朋友们名字中选择一个作为喵签内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 import randomimport stringimport numpy as np, numpy.randomfrom mastodon import Mastodondef GBK2312 (num ): str = '' if num == 0 : return str for i in range (1 ,num+1 ): head = random.randint(0xb0 , 0xf7 ) body = random.randint(0xa1 , 0xfe ) val = f'{head:x} {body:x} ' str = str + bytes .fromhex(val).decode('gb2312' ) return list (str ) def listNum (num ): nums = [] while len (nums) < num: i = random.randint(0 ,9 ) nums.append(i) return list (str (nums)) def predictfuture (): numN = random.randint(0 ,9 ) num = listNum(numN) src_letters = string.ascii_letters letN = random.randint(0 ,26 ) letters = random.sample(src_letters,letN) spN = random.randint(0 ,6 ) src_special = string.punctuation special = random.sample(src_special,spN) chN = random.randint(0 ,26 ) chinese = GBK2312(chN) ran_list = num + letters + special + chinese random.shuffle(ran_list) temp = '' .join(ran_list) numS = numN + letN + spN + chN ABC_list = ['Enjolras' , 'Combeferre' , 'Jean prouvaire' , 'Feuilly' , 'Courfeyrac' ,' Bahorel' , 'Lesgle or Laigle' , 'Joly' , 'Grantaire' ] friendABC = random.randint(0 , len (ABC_list)-1 ) if numS == 0 : catsama = ABC_list[friendABC] else : catl = random.randint(0 ,numS) if catl == 0 : catsama = ABC_list[friendABC] else : catsama = temp[0 :catl] return catsama mastodon = Mastodon( access_token = 'mybot_usercred.secret' , api_base_url = 'https://musain.cafe' , ) content = predictfuture() + ', miao!' mastodon.status_post(content)