• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    NYXnyx :: API
    LUCIEN
    LUCIEN --- ---
    Chapu, ze API bude nejak prochazet vyvojem, ale neslo by do te stare api pridat detail uzivatele? Aspon jen par fieldu z DB, at nemusim ve Fyxu odkazovat na web, ktery vzdy zobrazi login stranku... Je to takovy endpoint, ktery moc nechapu proch chybi...
    GIOMIKY
    GIOMIKY --- ---
    Chtěl jsem se zeptat, zda-li existuje v API nějaká funkce, která by vyhledala řetězec v názvu diskuze. Tzn. například zadám API a vrátí seznam diskuzí (stačijlo by číslo, jméno, pro prémiovku počet nepřečtených). Možná jsem ji jenom přehlédl.
    LUCIEN
    LUCIEN --- ---
    Vzhledem k Apple guidelines by se docela hodila API pro praci s ignorem a nahlasovanim prispevku moderatorum... Zatim to budu muset obchazet nejakym vlastnim resenim v appce.
    RAINBOF
    RAINBOF --- ---
    AZER: mrkni do conyx ten je v pythonu
    AZER
    AZER --- ---
    LUCIEN: Nakonec jsem si poradil s pomocí tvých příkladů tady ve vlákně...
    AZER
    AZER --- ---
    LUCIEN: Ano, to jsem čekal. V tabulce nevidím URL api nebo třeba autentifikaci...
    LUCIEN
    LUCIEN --- ---
    AZER: Díval jsi se do záhlaví?!
    AZER
    AZER --- ---
    Ahoj. Nyx používám momentálně skoro denně a rád bych si napsal skript na vkládání příspěvků do diskuze přes API. Je API, ať už jakkoli jednoduše, někde zdokumentováno?
    GIOMIKY
    GIOMIKY --- ---
    NYX: Výborně... mockrát děkuji. Již jsem poslal první příspěvek přes Conyx s přílohou... nejsem si úplně jistý, proč mi to nefungovalo, ale tipoval bych, že jsem špatně umístil prázdný/é řádky. Teď to funguje výborně. Ještě jednou děkuji za tvůj čas.
    NYX
    NYX --- ---
    A tim, ze jsem neco mazal, bude ta content-length urcite blbe :)
    NYX
    NYX --- ---
    GIOMIKY: Pres dev tools jsem zmanipulovat firefox aby poslal dotaz na api (api akceptuje i id_user / session cookies, proto tam nemam ty auth veci) a tohle funguje (par veci jsem teda vyhodil, ale v principu by tohle melo byt ok):

    Jinak pro jistotu zkus vzdy poslat neco v message, nejsem si jisty, jestli to api nepozaduje...ale myslim, ze tohle jsem opravoval.

    POST /api.php HTTP/1.1
    Host: www.nyx.cz
    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate, br
    Referer: https://www.nyx.cz/
    Content-Type: multipart/form-data; boundary=---------------------------2947931362286975723942639516
    Content-Length: 2353
    Origin: https://www.nyx.cz
    DNT: 1
    Connection: keep-alive
    Cookie: cookie_consent=1; last_port_add=455; ssl=1; id_user=1; session=XXX
    Upgrade-Insecure-Requests: 1
    Sec-Fetch-Dest: document
    Sec-Fetch-Mode: navigate
    Sec-Fetch-Site: same-origin
    Sec-Fetch-User: ?1

    A body pak je:

    -----------------------------2947931362286975723942639516
    Content-Disposition: form-data; name="id"

    22326
    -----------------------------2947931362286975723942639516
    Content-Disposition: form-data; name="message"

    test
    -----------------------------2947931362286975723942639516
    Content-Disposition: form-data; name="attachment"; filename="test.txt"
    Content-Type: text/plain

    Oh, hi!
    -----------------------------2947931362286975723942639516
    Content-Disposition: form-data; name="l"

    discussion
    -----------------------------2947931362286975723942639516
    Content-Disposition: form-data; name="l2"

    send
    -----------------------------2947931362286975723942639516--
    GIOMIKY
    GIOMIKY --- ---
    NYX:
    b'\r\n--dizizboundary\r\nContent-Disposition: form-data; name="auth_nick"\r\n\r\nGIOMIKY\r\n--dizizboundary\r\nContent-Disposition: form-data; name="auth_token"\r\n\r\n PRISNE TAJNY TOKEN \r\n--dizizboundary\r\nContent-Disposition: form-data; name="l"\r\n\r\ndiscussion\r\n--dizizboundary\r\nContent-Disposition: form-data; name="l2"\r\n\r\nsend\r\n--dizizboundary\r\nContent-Disposition: form-data; name="id"\r\n\r\n23330\r\n--dizizboundary\r\nContent-Disposition: file; name="attachment"; filename="hello.txt"\r\nContent-Type: application/octet-stream\r\n\r\nHELLO--dizizboundary--'
    b'{"result":"ok","system":{"max_file_size":"10485760","premium":"1"}}'
    ... zkousel jsem uz vsechno mozny... jako
    Content-Disposition: form-data ... potom kombinovat ruzne Content-Disposition: form-data a attachment a file... ale furt se mi nechce nahrat.. asi jsem mel radsi delat zahradnika a ne se hrabat v kodech divokeho pocitacoveho jazyka... ;]
    Moc diky... uz se s tim paru asi 4 dni ... prubezne... ale fakt jedinej, kdo si opravdu vi rady, jsi zatim ty. :-)
    NYX
    NYX --- ---
    GIOMIKY: Jakykoliv soubor. Mas moznost vypsat cely ten odchazejici request? Kdyztak posli. Bez auth udaju samozrejme :-)
    GIOMIKY
    GIOMIKY --- ---
    NYX: Výrobně, to, co's poslal mne hodně posunulo. Doufám, že správným směrem. Sestavil jsem multipart request, poslal s ním zprávu. Ale nějak mi server nechce akceptovat přílohu. Myslím, že bych věděl, jak dostat do requestu i přílohu. Ale mám otázku. Akceptuje API jenom obrázky? Anebo i plaintext atp.?
    NYX
    NYX --- ---
    GIOMIKY: Nejsem pythonista, ale ciste kdyz na to koukam, tak ty postupujes presne naopak...udelas nejaky multipart a ten strcis jako jeden z parametru.

    Spravne ty naopak mas udelat multipart body a do nej nastrkat jak parametry, tak soubory.

    content-disposition je pak vlastnost konkretniho kusu toho multipartu, ne requestu jako celku.

    Nevim jakou verzi urllib tam mas, tady je priklad pro dvojku. https://pymotw.com/2/urllib2/#uploading-files
    GIOMIKY
    GIOMIKY --- ---
    Ahoj, asi je to moje blbost... ale uz nekolik dni se prubezne snazim odeslat z Conyxu Multipart. A funguje mi request do te doby, nez dam do hlavicky, ze se jedna o multipart jako prvni cast headru a jako druhou cast velikost tela zpravy. V tom pripade se mi okamzite vrati unatuhorized. Jako ja requestum moc nerozumim, ale kam ma tedy prijit ten multipart? Ted to vypada nejak takhle:
     from mpart import mpart
      from mpart import boundary
      body=mpart()
      params = urlencode({
        'auth_nick': get_auth_nickname(),
        'auth_token': get_auth_token(),
        'l' : 'discussion',
        'l2' : 'send',
        'id' : p_disc_key,
        'message' : p_message,
        'attachment' : body
      })  
      req=urllib.request.Request(url)
      req.add_header('content-disposition' , 'attachment')
      req.add_header('content-type' , 'multipart/form-data; boundary="' + boundary + '"')
      req.add_header('content-length' , str(len(params)))
      f=urllib.request.urlopen(req,data=params.encode('utf8'))
      print(f.read())
    

    Uz jsem zkousel mnoho ruznych obmen, ale stale bud Nyx neprijme obrazek, anebo kdyz upravuji hlavicky, tak pise, ze nejsem autorizovan. Kdyby nekdo umel trosku napovedet, tak bych byl neskonale rad. Treba tam mam nejakou naprosto zrejmou chybu, kterou nevidim...
    NYX
    NYX --- ---
    LUCIEN: Ja mam podezreni, ze ten tag ti zavre prohlizec, v html ti nejspis chodi to cos posilal jako prvni.
    LUCIEN
    LUCIEN --- ---
    LUCIEN: Pardon, ono to ten prvni odkaz uzavre, takze je prazdny, takhle...
    
    <a href="http://google.com"></a> <a href="http://i.mg/t.jpg"><img src="http://nyx.cz/...../thumb.jpg"></a>
    LUCIEN
    LUCIEN --- ---
    NYX: Vidim v tom trochu problem... Pokud uzivatel odesle napr.:

    
    <a href="http://google.com"><img src="http://i.mg/t.jpg"></a>
    


    tak to api vrati takhle

    
    <a href="http://google.com"><a href="http://i.mg/t.jpg"><img src="http://nyx.cz/...../thumb.jpg"></a></a>
    


    ...
    NYX
    NYX --- ---
    LUCIEN: Api posila zmensene obrazky s odkazem na original
    Kliknutím sem můžete změnit nastavení reklam