cbr-client
ΠΠ»ΠΈΠ΅Π½Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ api Π¦Π Π Π€
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΠΠ - https://cbr.ru/lk_uio/guide/rest_api/
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
pip install cbr-client
ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
# Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ python -m asyncio
from cbr_client import Client
conn_params = dict(
url='https://portal5test.cbr.ru',
login='test',
password='test',
user_agent='test app'
)
client = Client(**conn_params)
# ΠΈΠ»ΠΈ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ
# async with Client(**conn_params) as client:
# ...
files = [
('report.zip.enc', b'encrypted report content'),
('report.zip.1.sig', b'operator signature'),
('report.zip.2.sig', b'client signature')
]
# ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΠΎΡΡΠ΅ΡΠ° Π½Π° ΠΏΠΎΡΡΠ°Π» Π¦Π
# ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
msg = await client.create_message(files, '1-ΠΠ')
# Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²
for f in msg.files:
await client.upload(f)
# ΠΈΠ»ΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ°Π½ΠΊΠ°ΠΌΠΈ
for f in msg.files:
await client.upload(f, chunked=True, chunk_size=2**16)
# ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡ (Π·Π°ΠΊΡΡΡΠΈΠ΅ ΡΠ΅ΡΡΠΈΠΈ)
await client.finalize_message(msg)
# ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ²ΠΈΡΠ°Π½ΡΠΈΠΉ
receipts =await client.get_receipts(msg_id=msg.oid)
for rcpt in receipts:
# ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΠΈΠ· Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°
for f in rcpt.files:
# ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ Π² f.content
await client.download(f)
# ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΠΈΠΏΡ ΡΠΎΡΠΌΡ
messages = await client.get_messages(form='1-ΠΠ')
# ΠΈΠ»ΠΈ ΠΏΠΎ ΡΡΠ°ΡΡΡΡ
messages = await client.get_messages(status='draft')
# ΠΈΠ»ΠΈ ΠΏΠΎ ΡΠΈΠΏΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ (inbox/outbox)
messages = await client.get_messages(msg_type='outbox')
# ΠΏΠ°Π΄ΠΆΠΈΠ½Π°ΡΠΈΡ, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ°
messages = await client.get_messages(status='draft', page=4)
# ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ
# ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
messages = await client.get_messages()
for msg in messages:
# ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΠΈΠ· Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°
for f in msg.files:
# ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ Π² f.content
await client.download(f)
# ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
Π·Π°Π΄Π°Ρ
tasks = await client.get_tasks()
# ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠΎΠ² Ρ Π΄Π°Π½Π½ΡΠΌΠΈ
dictionaries = await client.get_dictionaries()
# ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
ΠΈΠ· ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠ°
d = await client.get_dictionary(oid='dictionary_id')
# ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
ΠΏΡΠΎΡΠΈΠ»Ρ
profile = await client.get_profile()
# ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ ΠΊΠ²ΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°
quota = await client.get_profile_quota()
# ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
await client.delete_message(msg_id='message_id')
# Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ°Π±ΠΎΡΡ Π½Π΅ Π·Π°Π±ΡΠ²Π°Π΅ΠΌ Π·Π°ΠΊΡΡΠ²Π°ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅
await client.close()