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 +    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' 
-<- POST("https://korpus.cz/login", body=list(personal_access_token=personal_access_token))+corpus <- 'syn2020' 
 +timeout_secs <- 10
  
-Creating concordance query +Create 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+<- 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>