从 ???? 我记不清了 开始喜欢上 ASMR 后就接触到了音声,不过高昂的价格显然会驱使我去广袤的互联网上搜索,于是便知道了这个网站,可此网站只有登录后才可以看到更多内容,而每年也几乎是不定时开放注册,这使我很好奇这个网站
于是我便想着让服务器运行程序检测是否可以注册,然后通知
Github: yexca/hvdb
目标
检测是否可以注册,如果可以便通过 Telegram 通知
检测是否可以注册
在灵梦广场的一个帖子回复中可以获知当开放注册时 login 的底下会出现 register
那便可以用一种最简朴的方法,爬取这个网页,检查是否有此单词
Bot 配置
使用 Telegram 的 bot 通知需要先注册一个 bot
对话 https://t.me/BotFather 输入 /newbot
指令按照步骤创建一个 bot
和刚创建的 bot 对话,发送 hello
然后访问 (将 TOKEN 替换为自己的 token)
1
https://api.telegram.org/botTOKEN/getUpdates
会得到一个 json 文件,找到 id,此 id 为 chat_id
Python
通过 Python 是最简单的 (我也懒得看其他语言了)
爬取使用 Requests 库,通知的话使用 pyTelegramBotAPI
多余的不解析了,直接放代码 (此文件名不要命名为 http.py 或 requests.py)
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
import telebot
import requests
import time
# 替换自己的 token
bot = telebot.TeleBot("TOKEN", parse_mode="MARKDOWN") # You can set parse_mode by default. HTML or MARKDOWN
def inform():
web = requests.get("https://hvdb.me/")
str = web.text
a = str.find("register")
if a != -1:
# 替换自己的 chat_id
bot.send_message("chat_id", "[hvdb](http://hvdb.me/) register start")
t = 0
while True:
inform()
# 每小时执行一次
time.sleep(3600)
# 计时是否执行了 24 小时
t += 1
# 每天提醒一次程序在执行
if t == 24:
t -= 24
local_time = time.ctime(time.time())
inform_str = "{} 已执行".format(local_time)
# 替换自己的 chat_id
bot.send_message("chat_id", inform_str)
参考资料
关于报错“AttributeError:partially initialized module‘requests‘has no attribute‘get‘的解决方法
Docker 封装
文件结构
1
2
3
D:\DOCKER\HVDB
Dockerfile
inform.py
Dockerfile 文件
1
2
3
4
5
6
FROM python:3.11-alpine
RUN pip install requests \
&& pip install pyTelegramBotAPI
COPY ./inform.py /app/inform.py
CMD [ "python", "/app/inform.py" ]
同目录下运行命令打包镜像
1
docker build -t hvdb:v1.0 .
转移到服务器
Windows 下
1
docker save -o hvdb:v1.0 hvdb.tar
等待打包完成,复制到服务器
1
scp .\hvdb.tar username@hostname:/path
复制完成后,服务器运行
1
docker load -i hvdb.tar
参考:docker load报错:Error processing tar file(exit status 1): archive/tar: invalid tar header