hvdb 登録監視ツール

📢 この記事は ChatGPT によって翻訳されました

はじめに

いつからか(正確な時期は忘れたけど)ASMR が好きになって、音声作品にも触れるようになった。
でも価格が結構高いので、自然とネットで探すようになって、このサイトを知った。
ただし、このサイトはログインしないと詳細が見られず、しかも登録は年に数回の不定期オープン。

そこで、サーバー側で登録可能かどうかを定期チェックし、登録可能なら Telegram に通知するようなツールを作った。

GitHub: yexca/hvdb

目的

hvdb が登録可能なタイミングを監視し、登録可能であれば Telegram で通知。

登録可能かどうかのチェック方法

灵梦广场 のスレッドによると、登録が開放されているときは login ページに register が表示されるらしい。

ならば、シンプルにそのページをクローリングして register という単語があるかどうかを確認するだけで OK。

Bot 設定

Telegram で通知を送るには、まず Bot を作成する必要がある。

https://t.me/BotFather にアクセスし、/newbot と入力して手順に従い作成。

作成した bot に hello などを送信してから、以下の URL にアクセス(TOKEN を自分のものに置き換える):

1
https://api.telegram.org/botTOKEN/getUpdates

JSON が返ってくるので、その中から id を取得 → これが chat_id になる。


参考: 使用Telegram Bot来实现推送通知


Python スクリプト

Python でやるのが一番簡単(他言語は面倒だった)

クローリングには requests を、通知には pyTelegramBotAPI を使用。

ファイル名は http.pyrequests.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
import telebot
import requests
import time

# 自分の Bot トークン
bot = telebot.TeleBot("TOKEN", parse_mode="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()
    # 1時間ごとにチェック
    time.sleep(3600)
    # 実行時間をカウント
    t += 1
    # 24時間ごとに動作報告
    if t == 24:
        t -= 24
        local_time = time.ctime(time.time())
        inform_str = "{} 実行済み".format(local_time)
        bot.send_message("chat_id", inform_str)

参考:


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

tar ができたらサーバーに転送:

1
scp .\hvdb.tar username@hostname:/path

サーバー上で:

1
docker load -i hvdb.tar

参考: docker load エラー「archive/tar: invalid tar header」の対処


This post is licensed under CC BY-NC-SA 4.0 by the author.

Visits Since 2025-02-28

Hugo で構築されています。 | テーマ StackJimmy によって設計されています。