概要 🔗
サービスリリース当初は bing と yandex の 2 検索エンジンのみですが、新規 URL の Index 登録依頼を API 経由でリクエスト出来るようになったため、そのエンドポイントへ投げるプログラムを簡単に書いた
github 🔗
ソースコード
リクエスト 🔗
1
|
python main.py --host www.example.com --urls https://www.example.com/page1/ https://www.example.com/page2/ ...
|
ツリー構造 🔗
今回は単純に config.ini ファイルと main.py の 2 ファイルのみで構成
1
2
|
├── config.ini
└── main.py
|
config.ini 🔗
設定ファイル
1
2
3
4
5
6
7
8
9
10
|
[DEFAULT]
SEARCH_ENGINE_LIST = ["www.bing.com","yandex.com"]
[WEBSITE1]
DOMAIN = www.example.com
API_KEY = ***
[WEBSITE2]
DOMAIN = www2.example.com
API_KEY = ***
|
API キーが一つで足りるウェブサイトなどは、そのあたりの設定を変更してもらえれば良いかなと思います。
main.py 🔗
IndexNow へリクエストを送るためのプログラムコード。コードはもうちょっとスマートに書けるような気はしますが。
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 configparser, requests, json, argparse
# load config settings
config_ini = configparser.ConfigParser()
config_ini.read('config.ini', encoding='utf-8')
SEARCH_ENGINE_LIST = json.loads(config_ini.get('DEFAULT', 'SEARCH_ENGINE_LIST'))
DOMAIN = [config_ini['WEBSITE1']['DOMAIN'], config_ini['WEBSITE2']['DOMAIN']]
API_KEY = [config_ini['WEBSITE1']['API_KEY'], config_ini['WEBSITE2']['API_KEY']]
parser = argparse.ArgumentParser()
parser.add_argument('--host')
parser.add_argument('--urls', nargs='*')
args = parser.parse_args()
host = args.host
urls = args.urls
n = 0 if host == DOMAIN[0] else 1
api = API_KEY[n]
for engine in SEARCH_ENGINE_LIST:
ENDPOINT = f"https://{engine}/indexnow"
requests.post(
ENDPOINT, data=json.dumps({
"host" : host,
"key" : api,
"keyLocation" : f"https://{host}/{api}.txt",
"urlList" : urls
})
)
|