• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    NYXnyx :: API
    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
    LUCIEN
    LUCIEN --- ---
    Narazil jsem na takovou zvlastnost. Nyx API obaluje z nejakeho duvodu <img> tagy vlastnim <a> tagem? Priklad...

    Volani:
    
    curl --location --request POST 'http://www.nyx.cz/api.php' \
    --form 'auth_nick=***' \
    --form 'auth_token=***' \
    --form 'l=discussion' \
    --form 'l2=messages' \
    --form 'id=14158' \
    --form 'direction=older' \
    --form 'id_wu=51989987'
    


    Vrati:
    
    {
        "attributes": [],
        "data": [
            {
                "id_wu": "51989986",
                "nick": "ALENNAI",
                "time": "1588769724",
                "content": "Letenské náměstí, Pha<br/>\r\n1906<br/>\r\n<a href=\"https://scontent-frt3-1.xx.fbcdn.net/v/t1.0-9/95868467_10222313885457008_571386579155681280_n.jpg?_nc_cat=107&_nc_sid=1480c5&_nc_ohc=nvnC0EI1qMAAX-2mtaB&_nc_ht=scontent-frt3-1.xx&oh=7d89cd186d79edc4ef2375e70a80b7bc&oe=5ED82A68\"><img src=\"http://www.nyx.cz/i/t/57e4561116d3732129579027e75c25f2.png?url=https%3A%2F%2Fscontent-frt3-1.xx.fbcdn.net%2Fv%2Ft1.0-9%2F95868467_10222313885457008_571386579155681280_n.jpg%3F_nc_cat%3D107%26_nc_sid%3D1480c5%26_nc_ohc%3DnvnC0EI1qMAAX-2mtaB%26_nc_ht%3Dscontent-frt3-1.xx%26oh%3D7d89cd186d79edc4ef2375e70a80b7bc%26oe%3D5ED82A68\" class=\"thumb\"></a><br/>\r\nsoučasnost<br/>\r\n<a href=\"https://upload.wikimedia.org/wikipedia/commons/4/4a/Letensk%C3%A9_n%C3%A1m%C4%9Bst%C3%AD%2C_od_z%C3%A1padu%2C_tramvajov%C3%A1_zast%C3%A1vka.jpg\"><img src=\"http://www.nyx.cz/i/t/a9afd1f6e5b05fcdaa9ceb41840dfaf2.png?url=https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2F4%2F4a%2FLetensk%25C3%25A9_n%25C3%25A1m%25C4%259Bst%25C3%25AD%252C_od_z%25C3%25A1padu%252C_tramvajov%25C3%25A1_zast%25C3%25A1vka.jpg\" class=\"thumb\"></a> ",
                "wu_rating": "47",
                "wu_type": "0"
            },
    ...
    


    Zatimco kdyz si v browseru inspectnu ten samy prispevek, tak to vrati toto

    
    Letenské náměstí, Pha<br/> 1906<br/> <img src="https://scontent-frt3-1.xx.fbcdn.net/v/t1.0-9/95868467_10222313885457008_571386579155681280_n.jpg?_nc_cat=107&amp;_nc_sid=1480c5&amp;_nc_ohc=nvnC0EI1qMAAX-2mtaB&amp;_nc_ht=scontent-frt3-1.xx&amp;oh=7d89cd186d79edc4ef2375e70a80b7bc&amp;oe=5ED82A68"><br/> současnost<br/> <img src="https://upload.wikimedia.org/wikipedia/commons/4/4a/Letensk%C3%A9_n%C3%A1m%C4%9Bst%C3%AD%2C_od_z%C3%A1padu%2C_tramvajov%C3%A1_zast%C3%A1vka.jpg">
    


    ... tedy podstatne kratsi post orezany o veskere anchor tagy.

    To je zamer?
    GIOMIKY
    GIOMIKY --- ---
    Sorry, já měl pocit, že Nyx API používá Unix Timestamp. Tak to možná nechápu úplně správně, ale měl jsem pocit, že všechny Unix Timestampy budou mít potíž po 2038. Ale možná to chápu špatně. Mohl by mi to prosím někdo osvětlit? Je to jenom v případě, že se k výpočtu data použije 32-bitová proměnná? A tudíž, když se použije 64-bitový, tak se nic nestane a normálně se výpočítá 2039 atp.?
    GIOMIKY
    GIOMIKY --- ---
    Mozna je to predcasne, ale Nyx API asi bude zlobit v roce 2038 ...
    Year 2038 problem - Wikipedia
    https://en.wikipedia.org/wiki/Year_2038_problem
    Kliknutím sem můžete změnit nastavení reklam