algolia API

algolia APIのインストール

1
2
pip install --upgrade 'algoliasearch>=2.0,<3.0'
pip install 'asyncio>=3.4,<4.0' 'aiohttp>=2.0,<4.0' 'async_timeout>=2.0,<4.0'

requirements.txt

1
2
3
4
algoliasearch>=2.0,<3.0
asyncio>=3.4,<4.0
aiohttp>=2.0,<4.0
async_timeout>=2.0,<4.0

Search API

リファレンスで示されているコード。

1
2
3
4
from algoliasearch.search_client import SearchClient

client = SearchClient.create('L1PH10DG5X', '••••••••••••••••••••')
index = client.init_index('your_index_name')
1
2
3
4
5
6
7
8
9
10
index = client.init_index('contacts')

res = index.search('query string')
res = index.search('query string', {
'attributesToRetrieve': [
'firstname',
'lastname'
],
'hitsPerPage': 20
})

Response

リファレンスで示されているレスポンスのJSONフォーマット。

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
{
"hits": [
{
"firstname": "Jimmie",
"lastname": "Barninger",
"objectID": "433",
"_highlightResult": {
"firstname": {
"value": "&lt;em&gt;Jimmie&lt;/em&gt;",
"matchLevel": "partial"
},
"lastname": {
"value": "Barninger",
"matchLevel": "none"
},
"company": {
"value": "California &lt;em&gt;Paint&lt;/em&gt; & Wlpaper Str",
"matchLevel": "partial"
}
}
}
],
"page": 0,
"nbHits": 1,
"nbPages": 1,
"hitsPerPage": 20,
"processingTimeMS": 1,
"query": "jimmie paint",
"params": "query=jimmie+paint&attributesToRetrieve=firstname,lastname&hitsPerPage=50"
}

Search APIを使った検索

algoliatest.py

本サイトのインデックスを使ってpythonをキーに検索するコードと実行結果。
APIキー等は環境変数で渡して実行している。

1
2
3
4
5
6
7
8
9
import os
from algoliasearch.search_client import SearchClient

client = SearchClient.create(os.environ['ALGOLIA_APP_ID'], os.environ['ALGOLIA_API_KEY'])
index = client.init_index(os.environ['ALGOLIA_INDEX_NAME'])

res = index.search('python')
for item in res['hits']:
print(item['title'])

テストコードの実行結果

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
$pip install -r requirements.txt
Collecting algoliasearch<3.0,>=2.0
Downloading algoliasearch-2.2.0-py2.py3-none-any.whl (30 kB)
Collecting asyncio<4.0,>=3.4
Downloading asyncio-3.4.3-py3-none-any.whl (101 kB)
|████████████████████████████████| 101 kB 4.4 MB/s
Collecting aiohttp<4.0,>=2.0
Downloading aiohttp-3.6.2-py3-none-any.whl (441 kB)
|████████████████████████████████| 441 kB 13.9 MB/s
Collecting async_timeout<4.0,>=2.0
Downloading async_timeout-3.0.1-py3-none-any.whl (8.2 kB)
Collecting requests<3.0,>=2.21
Downloading requests-2.23.0-py2.py3-none-any.whl (58 kB)
|████████████████████████████████| 58 kB 3.5 MB/s
Collecting yarl<2.0,>=1.0
Downloading yarl-1.4.2-cp38-cp38-manylinux1_x86_64.whl (253 kB)
|████████████████████████████████| 253 kB 11.0 MB/s
Collecting attrs>=17.3.0
Downloading attrs-19.3.0-py2.py3-none-any.whl (39 kB)
Collecting multidict<5.0,>=4.5
Downloading multidict-4.7.5-cp38-cp38-manylinux1_x86_64.whl (162 kB)
|████████████████████████████████| 162 kB 11.4 MB/s
Collecting chardet<4.0,>=2.0
Downloading chardet-3.0.4-py2.py3-none-any.whl (133 kB)
|████████████████████████████████| 133 kB 10.8 MB/s
Collecting certifi>=2017.4.17
Downloading certifi-2020.4.5.1-py2.py3-none-any.whl (157 kB)
|████████████████████████████████| 157 kB 10.6 MB/s
Collecting idna<3,>=2.5
Downloading idna-2.9-py2.py3-none-any.whl (58 kB)
|████████████████████████████████| 58 kB 5.9 MB/s
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1
Downloading urllib3-1.25.9-py2.py3-none-any.whl (126 kB)
|████████████████████████████████| 126 kB 11.0 MB/s
Installing collected packages: certifi, chardet, idna, urllib3, requests, algoliasearch, asyncio, multidict, yarl, async-timeout, attrs, aiohttp
Successfully installed aiohttp-3.6.2 algoliasearch-2.2.0 async-timeout-3.0.1 asynci

$python algoliatest.py
PythonでGmailを使ったメール送信
Python loggingによるログ操作
SMTPHandlerでログ出力をメール通知する
SlackのIncoming WebHooksを使う
KeyringでOSのパスワード管理機構を利用する
DockerでSeleniumのContainerImageを作成する
docker-seleniumによるSelenium standalone server環境
docker-seleniumによるSelenium Grid環境
CloudinaryをWebAPIで操作する