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 15:13] – [Použití] michalkrenmanualy:api [2026/02/19 12:40] (aktuální) – [Použití] tomasmachalek
Řádek 19: Řádek 19:
 <WRAP tip important 60%> <WRAP tip important 60%>
 Popisy API jednotlivých aplikací: 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á aplikace běží na vlastní adrese: +Každé API běží na vlastní adrese: 
-  * KonText: https://korpus.cz/kontext-api/v0.17 + 
-  * Treq: https://treq.korpus.cz/api/v1+  * 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 43: Řá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>
  
-==== 2) Python a KonText API ====+==== 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>