▼
English
Deutsch
Plattdüütsch
Lëtzebuergesch
Nederlands
Dansk
Svenska
Bokmål
Nynorsk
Íslenska
Føroyskt
Español
Català
Galego
Português
Français
Italiano
Latina
Română
Rumantsch
Gaeilge
Magyar
Euskara
Esperanto
日本語
简体中文
繁體中文(台灣)
繁體中文(香港)
粵語
한국어
Tiếng Việt
ไทย
Bahasa Indonesia
Bahasa Melayu
हिन्दी
Ελληνικά
Polski
Čeština
Українська
Русский
Türkçe
العربية
עברית
Kiswahili
ʻŌlelo Hawaiʻi
tlhIngan Hol
Kaikki, mitä tämän sivuston lomakkeet tekevät, skripteille. Jokainen vastaus on JSON:ia, virheet mukaan lukien, joten sinun ei koskaan tarvitse arvata, onko runko tulos vai selitys.
POST päätepisteeseen joko lomakeparametreilla tai JSON-rungolla. Molemmat ovat vastaavia; valitse se, jonka työkalusi tekevät helpommaksi. action-parametri valitsee, mitä tehdään. Käytä --data-urlencode-valitsinta kaikkeen, mitä ihminen on kirjoittanut — liitetekstiin, URL-osoitteeseen, käännökseen — koska -d lähettää arvon sellaisenaan ja se katkeaa ensimmäiseen &-merkkiin. Pelkkä -d sopii kiinteille arvoille kuten itse action-parametrille. wgetissä ei ole lainkaan --data-urlencode-valitsinta, joten wgetillä joko prosenttikoodaa tällaiset arvot itse tai lähetä JSON-runko, joka ei tarvitse koodausta.
curl -X POST https://0wx.org/api.cgi \
-d action=paste --data-urlencode 'content=hello & world'
curl -X POST https://0wx.org/api.cgi \
-H 'Content-Type: application/json' \
-d '{"action":"paste","content":"hello & world"}'
wget -qO- --header='Content-Type: application/json' \
--post-data '{"action":"paste","content":"hello & world"}' https://0wx.org/api.cgi
Lomakerungossa & erottaa parametrit, eikä curl -d koodaa antamaasi sisältöä. Kyselymerkkijonon sisältävä URL-osoite katkeaa siksi ensimmäiseen &-merkkiin, ja loppuosa saapuu erillisinä parametreina. Käytä --data-urlencode-valitsinta tai lähetä JSON:ia. Ylimääräiset parametrit hylätään sen sijaan, että ne ohitettaisiin, joten tämä epäonnistuu äänekkäästi eikä tallenna puolikasta linkkiä.
# wrong -- the value is cut at the &
curl -X POST https://0wx.org/api.cgi \
-d action=tinyurl -d 'url=https://example.com/?a=1&b=2'
# right
curl -X POST https://0wx.org/api.cgi \
-d action=tinyurl --data-urlencode 'url=https://example.com/?a=1&b=2'
# also right -- JSON needs no escaping
curl -X POST https://0wx.org/api.cgi -H 'Content-Type: application/json' \
-d '{"action":"tinyurl","url":"https://example.com/?a=1&b=2"}'
# wget has no --data-urlencode, so percent-encode it yourself...
wget -qO- --post-data 'action=tinyurl&url=https%3A%2F%2Fexample.com%2F%3Fa%3D1%26b%3D2' https://0wx.org/api.cgi
# ...or send JSON, which needs no encoding at all
wget -qO- --header='Content-Type: application/json' \
--post-data '{"action":"tinyurl","url":"https://example.com/?a=1&b=2"}' https://0wx.org/api.cgi
Valinnainen. Ilman avainta pyyntö on anonyymi ja käyttäytyy täsmälleen kuten anonyymi vierailija — tulos on joka tapauksessa julkinen, ainoa ero on, päätyykö se tiedostoluetteloosi. Luo avain tilisivullasi ja lähetä se bearer-tunnisteena; sen välittäminen apikey-parametrina toimii myös, mutta kyselymerkkijonossa oleva avain päätyy palvelinlokeihin ja selaimen historiaan.
curl -X POST https://0wx.org/api.cgi \
-H 'Authorization: Bearer YOUR_KEY' \
-d action=whoami
wget -qO- --header='Authorization: Bearer YOUR_KEY' \
--post-data 'action=whoami' https://0wx.org/api.cgi
| action | Parametrit | Kuvaus |
|---|---|---|
whoami | — | Vahvistaa, että avain toimii, ja ilmoittaa nykyiset rajat. Ei maksa mitään; kutsu sitä ensin. |
ip | — | Ilmoittaa osoitteesi, sen PTR:n, maan, alueen ja kaupungin, joihin se paikantuu, koordinaatit sekä lähettämäsi user agentin. Ei tarvitse avainta ja vastaa samoin avaimen kanssa tai ilman. Tarkoituksella verkkosivua suppeampi: ei WHOIS-, DNS-vyöhyke- eikä estolistahakuja, joten sen kutsuminen maksaa palvelimelle vain paikallisen tietokantaluvun. |
upload | file (toistettava), resize, lifetime, gallery tai g * | Lähettää yhden tai useamman tiedoston. On oltava multipart/form-data. Gallerian nimeäminen sijoittaa ne suoraan siihen ja palauttaa sen tunnisteen. |
tinyurl | url, lifetime | Lyhentää URL-osoitteen. |
hugeurl | url, lifetime | Pidentää URL-osoitteen, absurdisti, tarkoituksella. |
paste | content, lifetime | Tallentaa tekstilohkon ja palauttaa linkin siihen. |
translate | content, to, from | Kääntää tekstiä. to ja from ovat koodeja langs-toiminnosta — huomaa, että ne eivät aina ole maakoodeja: tanska on da, ei dk. from voidaan jättää pois tai antaa arvona auto, jolloin taustajärjestelmä tunnistaa kielen; sen antaminen tuottaa paremman tuloksen lyhyellä tekstillä. |
langs | Listaa kielet, jotka translate hyväksyy, supported_langs-kenttänä: yksi objekti kieltä kohden, koodi ja nimi, siinä järjestyksessä kuin sivusto ne tarjoaa. Ei tarvitse API-avainta. | |
dyndns | key, ip, format | Päivittää dynaamisen DNS-nimen. Ainoa toiminto, joka ei tarvitse API-avainta: sitä kutsuu reititin, jolla on yksi kenttä URL-osoitteelle eikä mitään tapaa lähettää otsaketta. key on tililläsi näytettävä nimikohtainen päivitysavain, ei API-avaimesi. Jätä ip pois, niin käytetään osoitetta, josta kutsut. Vastaus on de facto dyndns2-sana — good, nochg, badauth, abuse tai dnserr — pelkkänä tekstinä, koska sitä reitittimet jäsentävät; lisää format=json tavallista JSON:ia varten. |
listfiles * | page, g | Listaa tiedostosi kaikkine Tiedot-paneelin näyttämine tietoineen sekä pienoiskuvan ja suoran linkin. g rajaa sen yhteen galleriaan, tai none tiedostoihin, jotka eivät ole missään galleriassa. |
listpastes * | page | Listaa liitteesi, kustakin 200 merkin esikatselu koko rungon sijaan. |
listurls * | page | Listaa lyhyet ja valtavat URL-osoitteesi sekä osoitteen, johon kukin osoittaa. |
otl * | share | Luo kertakäyttölinkin yhteen tiedostoistasi. Jokainen kutsu luo uuden, joten saman tiedoston antaminen kahdelle henkilölle tuottaa kaksi linkkiä. |
listotl * | page | Listaa aktiiviset kertakäyttölinkkisi, tiedoston, johon kukin osoittaa, ja onko tiedosto sittemmin vanhentunut. |
listgalleries * | — | Listaa galleriasi tunnisteineen, nimineen, tiedostomäärineen ja julkaisutiloineen. |
gallery * | g, publish | Ilmoittaa gallerian julkaisutilan ja muuttaa sitä, kun publish annetaan. |
move * | share (toistettava), gallery tai g | Siirtää tiedostoja galleriaan nimen (luodaan, jos uusi) tai tunnisteen perusteella. Jos molemmat jätetään pois, ne siirretään takaisin pääluetteloon. |
delete * | share (toistettava), g, otl, withfiles | Poistaa tiedostoja, liitteitä, lyhyitä URL-osoitteita, gallerioita, kertakäyttölinkkejä tai mitä tahansa näiden yhdistelmää. Jakotunnistetta verrataan ensin tiedostoihisi ja sitten liitteisiisi ja linkkeihisi, joten kutsujan ei tarvitse lajitella niitä tyypin mukaan. Kertakäyttölinkit annetaan erikseen otl-kentässä: linkin poistamista ei saa voida sekoittaa sen osoittaman tiedoston poistamiseen. |
* Nämä toiminnot tarvitsevat API-avaimen. Ne lukevat tai muuttavat yhden tilin omia tietoja, joten niistä ei ole anonyymiä muotoa.
share ja g hyväksyvät toistetun kentän, JSON-taulukon tai pilkuilla erotetun luettelon — sen, mikä on työkaluillesi helpointa. Kaksoiskappaleet ohitetaan.
curl -X POST https://0wx.org/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
-d action=move -d share=Ab3xK9pQ -d share=Zz7yT2mN --data-urlencode 'gallery=Holiday 2026'
curl -X POST https://0wx.org/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
-d action=delete -d 'share=Ab3xK9pQ,Zz7yT2mN'
curl -X POST https://0wx.org/api.cgi -H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_KEY' \
-d '{"action":"move","share":["Ab3xK9pQ","Zz7yT2mN"],"g":7}'
wget -qO- --header='Authorization: Bearer YOUR_KEY' \
--post-data 'action=delete&share=Ab3xK9pQ,Zz7yT2mN' https://0wx.org/api.cgi
Aina kun galleria nimetään — upload- tai move-toiminnossa — se annetaan samoilla kahdella tavalla: g olemassa olevalle tunnisteelle tai gallery nimelle, joka luodaan, jos se on uusi. Jos molemmat lähetetään, g voittaa. Vastaus sisältää gallerian tunnisteen. Huomaa, että gallerian poistaminen poistaa vain gallerian ja jättää sen tiedostot pääluetteloon — toisin kuin verkkolomake, joka poistaa ne kysyttyään. Anna withfiles=true poistaaksesi myös ne: ryhmittelyjään siivoavan skriptin ei pitäisi menettää lähetyksiä vahingossa.
curl -X POST https://0wx.org/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
-F action=upload -F file=@photo.jpg --form-string 'gallery=Holiday 2026'
curl -X POST https://0wx.org/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
-d action=gallery -d g=7 -d publish=true
wget -qO- --header='Authorization: Bearer YOUR_KEY' \
--post-data 'action=gallery&g=7&publish=true' https://0wx.org/api.cgi
Lähetykset eivät voi käyttää JSON-runkoa, koska tiedosto on lähetettävä multipart-muodossa. Toista file-osa lähettääksesi useita kerralla. Jokainen tiedosto raportoidaan erikseen: vastaus sisältää files-luettelon hyväksytyistä ja rejected-luettelon hylätyistä, joten osittainen onnistuminen on silti onnistuminen.
curl -X POST https://0wx.org/api.cgi \
-H 'Authorization: Bearer YOUR_KEY' \
-F action=upload \
-F file=@photo.jpg \
-F file=@notes.txt \
-F lifetime=7d
Tästä ei ole wget-muotoa. wget ei osaa rakentaa multipart/form-data-runkoa — sillä ei ole vastinetta curlin -F-valitsimelle — ja lähetysten on oltava multipart-muotoisia. Käytä curlia, tai kokoa runko ja raja itse ja lähetä se --post-file-valitsimella.
Valinnainen jokaisessa toiminnossa, joka tallentaa jotakin. Hyväksyy pelkät sekunnit tai luvun, jota seuraa m, h tai d — samat muodot kuin verkkolomakkeissa. Jätä pois tai anna 0 säilyttääksesi kohteen rajattomasti.
Jokainen vastaus on JSON-objekti, jossa on ok-kenttä. Onnistuessa se sisältää tuloksen; epäonnistuessa se sisältää vakaan error-koodin ja ihmisen luettavan message-viestin. Haaraudu koodin perusteella, kirjaa viesti lokiin.
{"ok":true,"type":"paste","share":"Ab3xK9pQ",
"url":"https://0wx.org/p/Ab3xK9pQ","bytes":11}
{"ok":false,"error":"url_too_long",
"message":"URL exceeds the maximum length."}
Kun tiedosto sisältää ne, listfiles lisää sen merkintään file_tags-kentän: esittäjä, nimi ja albumi, luettuna ID3-tunnisteista, Vorbis-kommenteista tai MP4-atomeista tiedoston lähetyshetkellä. Kun raportoitavaa ei ole, mikä koskee useimpia tiedostoja, avain puuttuu sen sijaan että olisi null, joten testaa sen olemassaolo ennen lukemista. Yksittäisiä kenttiä voi myös puuttua — tiedostolla voi olla nimi mutta ei albumia. Mitään muuta tiedoston metatiedoista ei paljasteta: iTunes-ostos tallentaa ostajan nimen ja Apple ID:n, eikä niitä tarkoituksella koskaan lueta.
{"ok":true,"type":"files","total":2,"page":1,"pages":1,"files":[
{"share":"Ab3xK9pQ","name":"autobahn.mp3","mime":"audio/mpeg",
"bytes":8123456,"url":"https://0wx.org/i/Ab3xK9pQ",
"file_tags":{"artist":"Kraftwerk","title":"Autobahn","album":"Autobahn"}},
{"share":"Zz7yT2mN","name":"photo.jpg","mime":"image/jpeg",
"bytes":204800,"url":"https://0wx.org/i/Zz7yT2mN"}
]}
| error | HTTP | Kuvaus |
|---|---|---|
unknown_action | 400 | Toimintoa ei ole. |
bad_json | 400 | Runko ei ollut kelvollista JSON:ia, tai jokin kenttä sisälsi sisäkkäisen rakenteen. |
unexpected_parameter | 400 | Saapui parametri, jota tämä toiminto ei ota vastaan — yleensä koodaamaton & arvossa. Viesti nimeää parametrit. |
bad_key | 401 | Avainta ei tunnistettu. Väärä avain hylätään sen sijaan, että sitä käsiteltäisiin hiljaisesti anonyyminä. |
bad_url | 400 | URL-osoite on virheellinen tai käyttää muuta protokollaa kuin http(s), ftp tai gopher. |
bad_lifetime | 400 | Elinaika ei ollut luku eikä luku, jota seuraa m, h tai d. |
no_content | 400 | Tallennettavaa ei lähetetty. |
url_too_long | 413 | URL-osoite on rajaa pidempi. |
paste_too_long | 413 | Teksti on liiterajaa suurempi. Rajat mitataan UTF-8-tavuina, joten muu kuin latinalainen teksti vie enemmän kuin sen merkkimäärä antaa ymmärtää. |
too_many_files | 413 | Enemmän tiedostoja kuin yksi kutsu hyväksyy. |
no_usable_files | 415 | Kaikki tiedostot hylättiin. Katso syy rejected-luettelosta. |
backend_unavailable | 502 | Käännöksen taustajärjestelmä ei vastannut. |
internal | 500 | Jokin epäonnistui odottamatta. Se on kirjattu lokiin. |
Kutsu whoami lukeaksesi nykyiset arvot sen sijaan, että kovakoodaisit ne — palvelimen ylläpitäjä asettaa ne, ja ne voivat muuttua. Koot ovat UTF-8-tavuja.
0wx.sh kääräisee kaiken edellä mainitun. Se on pelkkää POSIX-shelliä eikä tarvitse muuta kuin curlin, ja se on tarpeeksi lyhyt luettavaksi ennen ajamista — mikä on oikea tapa suhtautua skriptiin, jolla on API-avaimesi hallussaan. Laita avain OWX_KEY-muuttujaan sen sijaan, että antaisit --key-valitsimen, niin se pysyy poissa komentohistoriastasi.
wget https://0wx.org/clients/0wx.sh chmod +x 0wx.sh export OWX_KEY=YOUR_KEY ./0wx.sh help ./0wx.sh paste --content 'hello & world'
0wx.py tekee saman kuin shell-asiakasohjelma, mutta jäsentää vastauksen ja tulostaa, mitä kentät tarkoittavat, sen sijaan että antaisi raakaa JSON:ia — lisää --json, kun haluat raakamuodon. Vain standardikirjasto: ei requests-kirjastoa, ei mitään asennettavaa. Jos kirjoitat omaa asiakasohjelmaa, sen send()- ja report()-funktiot ovat lukemisen arvoisia: yhdessä ne näyttävät, miten pyyntö rakennetaan, miten viesti saadaan epäonnistuneesta pyynnöstä ja mitä vastaukset sisältävät.
wget https://0wx.org/clients/0wx.py chmod +x 0wx.py export OWX_KEY=YOUR_KEY ./0wx.py listfiles ./0wx.py listfiles --json | jq '.files[].url'
0wx.pl tekee saman kuin Python-versio ja tulostaa saman tulosteen. Vain ydinmoduuleja — HTTP::Tiny ja JSON::PP ovat tulleet Perlin mukana versiosta 5.14 lähtien, joten mitään ei tarvitse asentaa. Lukemisen arvoinen Python-asiakasohjelman rinnalla, jos kirjoitat omaa: kielet epäonnistuvat rikkinäisessä pyynnössä eri tavoin, ja molemmat skriptit kertovat missä.
wget https://0wx.org/clients/0wx.pl chmod +x 0wx.pl export OWX_KEY=YOUR_KEY ./0wx.pl listfiles
0wx.ps1 on Python-asiakasohjelman vastine Windowsille: samat komennot, sama tuloste, ja se jäsentää vastauksen sen sijaan, että antaisi raakaa JSON:ia — lisää --json sitä varten. Se on kirjoitettu koneella jo olevalle Windows PowerShellille, joten mitään ei tarvitse asentaa, ja se toimii sellaisenaan PowerShell 7:ssä. Saatat tarvita Set-ExecutionPolicy -Scope Process Bypass siinä ikkunassa, josta ajat sen; Windows kysyy näin, halusitko todella ajaa lataamasi skriptin — aiheellinen kysymys, ja tiedosto on tarpeeksi lyhyt luettavaksi ensin.
$env:OWX_KEY = 'YOUR_KEY' .\0wx.ps1 listfiles .\0wx.ps1 paste --content 'hello & world' .\0wx.ps1 upload --file .\holiday.jpg --gallery 'Holiday 2026'
0wx.html sisältää samat välilehdet kuin työpöytäasiakasohjelma, kolmena tiedostona — sivu, tyylitiedosto ja skripti — ilman asennusta, ilman kehystä ja lataamatta mitään muualta kuin tältä sivustolta. Kolme yhden sijaan, koska sivuston Content-Security-Policy kieltää sisäiset skriptit ja tyylit, mikä kannattaa säilyttää. Tiedostoja voi pudottaa siihen. Se on avattava täältä eikä tallennettuna omalta levyltä: API ei lähetä cross-origin-otsakkeita, joten paikallisen kopion jokainen pyyntö hylättäisiin selaimessasi ennen lähtöä. Avain pidetään muistissa, ellet rastita ruutua sen muistamiseksi.
https://0wx.org/clients/0wx.html
0wx-gui.ps1 sisältää samat välilehdet kuin työpöytäasiakasohjelma, piirrettynä WinFormsilla — mikä tarkoittaa, ettei mitään tarvitse asentaa, koska se on jo osa Windowsia. Laita se samaan kansioon kuin 0wx.ps1: ikkuna lainaa tuon tiedoston pyyntöjen käsittelyä sen sijaan, että kantaisi toista kopiota, joten molemmat tarvitaan. Windows kysyy ennen kuin ajaa skriptin, jota se ei itse kirjoittanut, mikä on aiheellinen kysymys; molemmat tiedostot ovat tarpeeksi lyhyitä luettavaksi ennen vastaamista.
powershell -ExecutionPolicy Bypass -File .\0wx-gui.ps1
0wx-gtk.pl on pieni GTK-ikkuna, jossa on välilehdet lähettämiseen, liittämiseen, lyhentämiseen ja tiedostojesi selaamiseen — luettelona tai pienoiskuvagalleriana, galleriasuodattimella. Se on ainoa tämän sivun asiakasohjelma, joka tarvitsee jotakin asennettavaa — Perlin GTK3-sidokset — mikä kannattaa tietää yllä olevan Windows-ikkunan rinnalla, sillä se ei tarvitse mitään. Kaikki muu, mitä se käyttää, tulee Perlin mukana. Avain pidetään vain muistissa: ikkunan sulkeminen unohtaa sen, ja OWX_KEY-muuttujan asettaminen täyttää sen käynnistettäessä. Näyttipä se mitä tahansa, palvelimen raaka vastaus on yhden napsautuksen päässä kohdassa “Server reply”.
apt install libgtk3-perl # or: dnf install perl-Gtk3 wget https://0wx.org/clients/0wx-gtk.pl chmod +x 0wx-gtk.pl OWX_KEY=YOUR_KEY ./0wx-gtk.pl
0wx-android.apk tekee sen, mitä muutkin asiakasohjelmat, puhelimesta: lähettäminen, liittäminen, lyhentäminen, kääntäminen ja tiedostojesi selaaminen luettelona tai galleriana. Tiedoston jakaminen siihen mistä tahansa muusta sovelluksesta lähettää sen, ja tekstin jakaminen tallentaa sen liitteenä. Se ei ole missään sovelluskaupassa, joten laitteesi kysyy, sallitko asennuksen — mikä on kysymys, johon kannattaa yleisesti suhtautua vakavasti, ja syy siihen, että koko lähdekoodi on myös täällä: avaa se Android Studiossa ja käännä itse sen sijaan, että luottaisit tiedostoon. Kääntäminen vaatii JDK 21:n; BUILDING.md sen sisällä kertoo miksi.
https://0wx.org/clients/0wx-android.apk # install it https://0wx.org/clients/0wx-android.zip # build it yourself
Etänoutotoimintoa ei tarkoituksella ole. Se saisi palvelimen noutamaan kutsujan valitseman URL-osoitteen, mikä on pyyntöväärennöksen hyökkäyspinta, ja skripti voi ajaa sitä paljon kovemmin kuin lomake. Lähetä tiedosto sen sijaan itse.