AplikaceAplikace
Nastavení

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
manualy:api [2022/12/22 13:30] – [Použití] michalkrenmanualy:api [2026/02/19 12:40] (aktuální) – [Použití] tomasmachalek
Řádek 11: Řádek 11:
 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ý. 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í API =====+===== Použití =====
  
 Token se posílá v HTTP požadavku na URL ''https://korpus.cz/login'' metodou POST jako parametr ''personal_access_token''. Token se posílá v HTTP požadavku na URL ''https://korpus.cz/login'' metodou POST jako parametr ''personal_access_token''.
Řádek 18: Řádek 18:
  
 <WRAP tip important 60%> <WRAP tip important 60%>
-Každá aplikace má specifický způsob dotazování. **Návody** pro použití API: +Popisy API jednotlivých aplikací
-  * [[https://github.com/czcorpus/kontext/wiki/HTTP-API|KonText]] +  * [[https://korpus.cz/mquery/api/docs/index.html|MQuery]] 
-  * [[https://wiki.korpus.cz/doku.php/manualy:treq:api|Treq]]+  * [[manualy:treq:api|Treq]] 
 +  * <del>[[https://github.com/czcorpus/kontext/wiki/HTTP-API|KonText]]</del> - KonText API již není podporováno a dále vyvíjeno a služba bude k dispozici pouze do konce roku 2026. Jako náhrada je k dispozici server MQuery s jednodušším API a lepší dokumentací.
 </WRAP> </WRAP>
 +
 +Každé API běží na vlastní adrese:
 +
 +  * MQuery: ''https://korpus.cz/mquery/api''
 +  * Treq: ''https://korpus.cz/treq/api/v1''
 +  * <del>KonText: ''https://korpus.cz/kontext-api/v0.17''</del>
  
 <WRAP round important 60%> <WRAP round important 60%>
Řádek 31: Řádek 38:
 ===== Příklady ===== ===== Příklady =====
  
-==== curl, dotaz do aplikace Treq ====+==== 1) curl Treq API ====
  
 <code bash> <code bash>
Řádek 39: Řádek 46:
 curl --cookie cookies.txt --cookie-jar cookies.txt -X POST -F 'personal_access_token=0a1b2c3d4e5f6-abc012...' 'https://korpus.cz/login' curl --cookie cookies.txt --cookie-jar cookies.txt -X POST -F 'personal_access_token=0a1b2c3d4e5f6-abc012...' 'https://korpus.cz/login'
 # Query Treq # 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'+curl --cookie cookies.txt --cookie-jar cookies.txt 'https://korpus.cz/treq/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'
 </code> </code>
  
-==== Python, dotaz do aplikace KonText ====+==== 2) Python a MQuery API ====
  
 <code python> <code python>
 #!/usr/bin/env python3 #!/usr/bin/env python3
-import pickle, requests+import requests 
 +import pprint 
 +import pickle
  
 personal_access_token = '0a1b2c3d4e5f6-abc012...' personal_access_token = '0a1b2c3d4e5f6-abc012...'
 cookies_file = 'cookies.pickle' cookies_file = 'cookies.pickle'
 +corpus = 'syn2020'
 +timeout = 10
  
 with requests.Session() as s: with requests.Session() as s:
     # Load cookies     # Load cookies
-    try+    try:
         with open(cookies_file, 'rb') as f:         with open(cookies_file, 'rb') as f:
             s.cookies.update(pickle.load(f))             s.cookies.update(pickle.load(f))
     except FileNotFoundError:     except FileNotFoundError:
         pass         pass
 +    r = s.post('https://www.korpus.cz/login', data={'personal_access_token': personal_access_token}, timeout=timeout)
 +    r = s.get(
 +        f'https://www.korpus.cz/mquery/api/freqs/{corpus}',
 +        params=dict(
 +            q='[word="celou"] [lemma="pravda"]',
 +            attr='word'
 +        ),
 +        timeout=timeout
 +    )
 +    pprint.pp(r.json())
  
-    # Log in +    # Store cookies 
-    r = s.post('https://korpus.cz/login'data={'personal_access_token': personal_access_token})+    with open(cookies_file, 'wb') as f: 
 +        pickle.dump(s.cookiesf)</code>
  
-    # Creating a concordance query +==== 3) R a MQuery API ====
-    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/query_submit', params={'format': 'json'}, json=request_body) +
-    response_json r.json() +
-    print(response_json)+
  
-    Displaying concordance +<code r> 
-    conc_persistence_op_id = response_json['conc_persistence_op_id'] +library(httr) 
-    s.get('https://korpus.cz/kontext/view', params={'format': 'json', 'q''~'+conc_persistence_op_id}+library(jsonlite) 
-    print(r.json())+ 
 +personal_access_token <- 'c7036d756212-3afbe17...' 
 +cookies_file <- 'cookies.txt' 
 +corpus <- 'syn2020' 
 +timeout_secs <- 10 
 + 
 +Create handle; use curl's cookiejar to persist cookies across sessions 
 +handle <- handle('https://www.korpus.cz') 
 +cookie_cfg <- config( 
 +  cookiefile cookies_file, 
 +  cookiejar  = cookies_file 
 +
 + 
 +# Log in 
 +r <- POST( 
 +  'https://www.korpus.cz/login', 
 +  handle = handle, 
 +  cookie_cfg, 
 +  body = list(personal_access_token = personal_access_token), 
 +  encode = 'form'
 +  timeout(timeout_secs) 
 +
 + 
 +# Frequency query via MQuery 
 +r <- GET( 
 +  paste0('https://www.korpus.cz/mquery/api/freqs/', corpus), 
 +  handle = handle, 
 +  cookie_cfg, 
 +  query = list( 
 +    '[word="celou"] [lemma="pravda"]'
 +    attr = 'word' 
 +  )
 +  timeout(timeout_secs) 
 +
 + 
 +print(content(r))
  
-    # Store cookies 
-    with open(cookies_file, 'wb') as f: 
-        pickle.dump(s.cookies, f) 
 </code> </code>