Mediawikiの設定/bot

Revision as of 23:05, 12 February 2021 by imported>Fire
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

投資データをいちいち調査して書き込むのがきっとめんどくさくなると思いボットを入れてみることにした

意外にハマってしまったのでメモ

botのインストールの前段

まず wiki でbot のアカウント作成。Special:利用者権限で、権限はbotをつける

Special:BotPasswordsでBot password を作成する(ここを参照)

user-password.pyを作成

('botname', BotPassword('my-botpassword-name', 'mysupersecretbotpassword'))

botnameには、wikiで作成したbotアカウント名。my-botpassword-nameは、Special:BotPasswordsで設定したパスワード。mysupersecretbotpasswordは、Special:BotPasswordsで生成されたシークレットパスワードを設定

chmod 666 user-password.py

ここを見てPythonが使えるbotが良さそうだったのでPywikibotを使うことにした。

このページをインストールを始めたが、

python3 pwb.py generate_user_files の段階でエラーが..

ModuleNotFoundError: No module named '_ctypes'

ググっているとどうもlibffi-devel というライブラリが足りないらしい。レンタルサーバでroot持っておらず、パッケージインストールできなかったので、ソースからビルドする。

ここからソースファイルをダウンロードし、解凍後

./configure --prefix=/home/xxxxxx/local
make
make install

/home/xxxxxx/local/lib64 にライブラリが入っているので、/home/xxxxxx/local/lib にも各ライブラリのシンボリックリンクを貼っておいた

ライブラリパスが通っている状態でPython を再度コンパイルしmakeで

Failed to build these modules:
_ctypes


というエラーが出ていなければctypes が組み込まれているので成功

bot の設定

改めて

python3 pwb.py generate_user_files

いくつか質問聞かれたがよくわからない。自分で立ち上げたwikiはどれを選んだらよいのやら、、とりあえずwikipediaを選んで後から設定を変更することに。

ここを参考に、user-config.pyを修正

family = 'sitename' →ここは、LocalSettings.php の$wgSitename の名前を設定

mylang = 'ja' →ここも LocalSettings.php の $wgLanguageCode の値を設定(他のでも大丈夫な気がするが)
username['sitename']['ja'] = u'botname' →sitenameは、familyで設定した名称 botname はwikiで作成したbotアカウント名
password_file = "user-password.py"

今度は、family file の設定

python3 pwb.py generate_family_file

Please insert URL to wiki: →URLを設定
Please insert a short name →sitenmaeを設定

pywikibot/families 配下に'sitename'-family.py を確認

class Family(family.Family):  # noqa: D101

    name = 'sitename' 自分のwiki のsitename
    langs = {
        'ja': 'URL',  自分のwiki のドメイン名
    }

    def scriptpath(self, code):
        return {
            'ja': '/w',
        }[code]

    def protocol(self, code):
        return {
            'ja': 'https',
        }[code]
python3 pwb.py login

でログインできれば成功。ここまで来て疲れてスクリプト作成はまた今度。。