AplikaceAplikace
Nastavení

Toto je starší verze dokumentu!


API

Vybrané aplikace umožňují přístup pomocí API. Přístup přes API však vyžaduje autentizaci vždy, tedy i u aplikací, které ji při běžném používání nevyžadují. Pro autentizaci slouží osobní přístupové tokeny.

Postup při získání osobního přístupového tokenu

  1. Pokud nejste přihlášeni, přihlaste se.
  2. Na stránce uživatelského účtu v sekci „Osobní přístupové tokeny“ klikněte „Nový“, zvolte délku platnosti a potvrďte „OK“.
  3. Token si zkopírujte, bude zobrazen pouze jednou.

Takto lze vytvořit libovolné množství osobních přístupových tokenů. Je také možné tokeny libovolně mazat. Po vypršení platnosti tokenu je třeba vytvořit nový.

Použití

Token se posílá v HTTP požadavku na URL https://korpus.cz/login metodou POST jako parametr personal_access_token.

V odpovědi přijde session cookie, kterou je následně potřeba posílat s každým dalším požadavkem. Pro rychlejší komunikaci je vhodné session cookie uložit a používat ji v rámci několika hodin opakovaně.

Popisy API jednotlivých aplikací:

Každé API běží na vlastní adrese:

Každá aplikace má také vlastní limity, po jejichž překročení hrozí zablokování přístupu k API.

  • KonText: max. 12 požadavků za minutu a současně max. 5000 požadavků za den
  • Treq: max. 30 požadavků za minutu a současně max. 5000 požadavků za den

Příklady

1) curl a Treq API

#!/usr/bin/env bash
 
# Log in
curl --cookie cookies.txt --cookie-jar cookies.txt -X POST -F 'personal_access_token=0a1b2c3d4e5f6-abc012...' 'https://korpus.cz/login'
# Query Treq
curl --cookie cookies.txt --cookie-jar cookies.txt 'https://treq.korpus.cz/api/v1?from=cs&to=en&multiword=false&regex=true&lemma=true&ci=true&pkgs[0]=SYNDICATE&pkgs[1]=CORE&query=pravda&order=perc&asc=false'

2) Python a KonText API

#!/usr/bin/env python3
import pickle, requests
 
personal_access_token = '0a1b2c3d4e5f6-abc012...'
cookies_file = 'cookies.pickle'
 
with requests.Session() as s:
    # Load cookies
    try
        with open(cookies_file, 'rb') as f:
            s.cookies.update(pickle.load(f))
    except FileNotFoundError:
        pass
 
    # Log in
    r = s.post('https://korpus.cz/login', data={'personal_access_token': personal_access_token})
 
    # Creating a concordance query
    request_body = {
        "type": "concQueryArgs",
        "maincorp": "syn2015",
        "usesubcorp": None,
        "viewmode": "kwic",
        "pagesize": 40,
        "attrs": ["word","tag"],
        "attr_vmode": "visible-kwic",
        "base_viewattr": "word",
        "ctxattrs": [],
        "structs": ["text","p","g"],
        "refs": [],
        "fromp": 0,
        "shuffle": 0,
        "queries": [
            {
                "qtype": "advanced",
                "corpname": "syn2015",
                "query": "[word=\"celou\"] [lemma=\"pravda\"]",
                "pcq_pos_neg": "pos",
                "include_empty": False,
                "default_attr": "word"
            }
        ],
        "text_types": {},
        "context":
        {
            "fc_lemword_wsize": [-5, 5],
            "fc_lemword": "",
            "fc_lemword_type": "all",
            "fc_pos_wsize": [-5, 5],
            "fc_pos": [],
            "fc_pos_type": "all"
        },
        "async": False
    }
    r = s.post('https://korpus.cz/kontext-api/v0.17/query_submit', params={'format': 'json'}, json=request_body)
    response_json = r.json()
    print(response_json)
 
    # Displaying a concordance
    conc_persistence_op_id = response_json['conc_persistence_op_id']
    r = s.get('https://korpus.cz/kontext-api/v0.17/view', params={'format': 'json', 'q': '~'+conc_persistence_op_id})
    print(r.json())
 
    # Store cookies
    with open(cookies_file, 'wb') as f:
        pickle.dump(s.cookies, f)