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 [2024/05/23 13:04] – tomascapkamanualy: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]]
   * [[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: 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:
Řádek 62: Řádek 69:
     except FileNotFoundError:     except FileNotFoundError:
         pass         pass
- +    r = s.post('https://www.korpus.cz/login', data={'personal_access_token': personal_access_token}, timeout=timeout) 
-    # Log in +    r = s.get( 
-    r = s.post('https://korpus.cz/login', data={'personal_access_token': personal_access_token}) +        f'https://www.korpus.cz/mquery/api/freqs/{corpus}', 
- +        params=dict( 
-    # Creating a concordance query +            q='[word="celou"] [lemma="pravda"]', 
-    request_body = { +            attr='word' 
-        "type": "concQueryArgs", +        ), 
-        "maincorp": "syn2015", +        timeout=timeout 
-        "usesubcorp": None, +    ) 
-        "viewmode": "kwic", +    pprint.pp(r.json())
-        "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     # Store cookies
     with open(cookies_file, 'wb') as f:     with open(cookies_file, 'wb') as f:
-        pickle.dump(s.cookies, f) +        pickle.dump(s.cookies, f)</code>
-</code>+
  
-==== 3) R a KonText API ====+==== 3) R a MQuery API ====
  
 <code r> <code r>
 library(httr) library(httr)
 +library(jsonlite)
  
-# Log in +personal_access_token <- 'c7036d756212-3afbe17...' 
-personal_access_token = '0a1b2c3d4e5f6-abc012...' +cookies_file <- 'cookies.txt' 
-r <- POST("https://korpus.cz/login", body=list(personal_access_token=personal_access_token))+corpus <- 'syn2020' 
 +timeout_secs <- 10
  
-# Creating a concordance query +# Create a handle; use curl's cookiejar to persist cookies across sessions 
-request_body <- '{ +handle <- handle('https://www.korpus.cz') 
- "type": "concQueryArgs", +cookie_cfg <- config( 
- "structs": ["text", "s"], +  cookiefile = cookies_file, 
- "refs": ["%3Dtext.txtype", "%3Ddoc.author"], +  cookiejar  = cookies_file 
- "queries": [ +)
- { +
- "qtype": "advanced", +
- "corpname":"syn2020", +
- "query": "[word=\\\"celou\\\"] [lemma=\\\"pravda\\\"]" +
- } +
- ] +
-}'+
  
-r <- POST("https://korpus.cz/kontext-api/v0.17/query_submit?format=json", content_type_json(), body=request_body)+# 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) 
 +)
  
-# Displaying a concordance +# Frequency query via MQuery 
-response_json <- content(r) +r <- GET( 
-conc_persistence_op_id <- response_json$conc_persistence_op_id +  paste0('https://www.korpus.cz/mquery/api/freqs/', corpus), 
-params <- list( +  handle = handle, 
- format="json", +  cookie_cfg, 
- q=paste0("~", conc_persistence_op_id), +  query = list( 
- refs="=text.txtype", +    q = '[word="celou"] [lemma="pravda"]', 
- refs="=doc.author", +    attr = 'word' 
- pagesize=100+  ), 
 +  timeout(timeout_secs)
 ) )
-r <- GET("https://korpus.cz/kontext-api/v0.17/view", query=params) + 
-content(r)+print(content(r)) 
 </code> </code>