▼
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
Suomi
Euskara
Esperanto
日本語
简体中文
繁體中文(台灣)
繁體中文(香港)
粵語
한국어
Tiếng Việt
ไทย
Bahasa Indonesia
Bahasa Melayu
हिन्दी
Ελληνικά
Polski
Čeština
Українська
Русский
Türkçe
العربية
עברית
Kiswahili
ʻŌlelo Hawaiʻi
tlhIngan Hol
Mindaz, amit az oldal űrlapjai tudnak, szkripteknek. Minden válasz JSON, a hibák is, így sosem kell találgatnod, hogy egy törzs eredmény vagy magyarázat.
Küldj POST-ot a végpontra űrlapparaméterekkel vagy JSON-törzzsel. A kettő egyenértékű; válaszd azt, amelyik az eszközeiddel egyszerűbb. Az action paraméter választja ki a műveletet. Mindenhez, amit ember gépelt be — szövegblokk, URL, fordítandó szöveg — használj --data-urlencode-ot, mert a -d nyersen küldi az értéket, és az első &-nél elvágja. Sima -d elég a fix értékekhez, mint maga az action. A wgetben egyáltalán nincs --data-urlencode, így wgettel vagy magad százalékkódolod az ilyen értékeket, vagy JSON-törzset küldesz, amelyhez nem kell kódolás.
curl -X POST https://0wx.cat/api.cgi \
-d action=paste --data-urlencode 'content=hello & world'
curl -X POST https://0wx.cat/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.cat/api.cgi
Űrlaptörzsben az & választja el a paramétereket, és a curl -d nem kódolja, amit kap. Egy lekérdezési sztringes URL ezért az első &-nél elvágódik, a többi pedig külön paraméterként érkezik. Használj --data-urlencode-ot, vagy küldj JSON-t. A kósza paramétereket elutasítjuk, nem hagyjuk figyelmen kívül, így ez hangosan hibázik, nem pedig egy fél linket tárol el.
# wrong -- the value is cut at the &
curl -X POST https://0wx.cat/api.cgi \
-d action=tinyurl -d 'url=https://example.com/?a=1&b=2'
# right
curl -X POST https://0wx.cat/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.cat/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.cat/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.cat/api.cgi
Nem kötelező. Kulcs nélkül a kérés névtelen, és pontosan úgy viselkedik, mint egy névtelen látogató — az eredmény mindenképp nyilvános, a különbség csak az, hogy bekerül-e a fájllistádba. Hozz létre kulcsot a fiókoldaladon, és bearer tokenként küldd; az apikey paraméterként átadás is működik, de a lekérdezési sztringbe tett kulcs a kiszolgáló naplóiban és a böngészőelőzményekben köt ki.
curl -X POST https://0wx.cat/api.cgi \
-H 'Authorization: Bearer YOUR_KEY' \
-d action=whoami
wget -qO- --header='Authorization: Bearer YOUR_KEY' \
--post-data 'action=whoami' https://0wx.cat/api.cgi
| action | Paraméterek | Leírás |
|---|---|---|
whoami | — | Megerősíti, hogy egy kulcs működik, és közli az aktuális korlátokat. Nem kerül semmibe; ezt hívd először. |
ip | — | Közli a címedet, annak PTR-jét, az országot, régiót és várost, ahová a földrajzi helymeghatározás teszi, a koordinátákat és az elküldött user agentet. Nem kell hozzá kulcs, és kulccsal vagy anélkül ugyanazt válaszolja. Szándékosan szűkebb a weboldalnál: nincs WHOIS, nincs DNS-zóna és nincs tiltólista-lekérdezés, így a hívása a kiszolgálónak csak egy helyi adatbázis-olvasásba kerül. |
upload | file (ismételhető), resize, lifetime, gallery vagy g * | Feltölt egy vagy több fájlt. multipart/form-data kell legyen. Galéria megnevezésekor egyből abba kerülnek, és visszakapod az id-jét. |
tinyurl | url, lifetime | Rövidít egy URL-t. |
hugeurl | url, lifetime | Meghosszabbít egy URL-t, abszurd módon, szándékosan. |
paste | content, lifetime | Eltárol egy szövegblokkot, és visszaad egy rá mutató linket. |
translate | content, to, from | Szöveget fordít. A to és a from a langs művelet kódjai — vedd figyelembe, hogy ezek nem mindig országkódok: a dán da, nem dk. A from elhagyható vagy auto lehet, ekkor a háttérrendszer ismeri fel a nyelvet; a megadása rövid szövegnél jobb eredményt ad. |
langs | Felsorolja a translate által elfogadott nyelveket supported_langs-ként: nyelvenként egy objektum, kód és név, abban a sorrendben, ahogy az oldal kínálja őket. Nem kell hozzá API-kulcs. | |
dyndns | key, ip, format | Frissít egy dinamikus DNS-nevet. Az egyetlen művelet, amelyhez nem kell API-kulcs: egy router hívja, amelynek egy mezője van egy URL-nek, és nem tud fejlécet küldeni. A key a fiókodban látható, nevenkénti frissítő kulcs, nem az API-kulcsod. Ha elhagyod az ip-t, a hívó címe kerül felhasználásra. A válasz a de facto dyndns2 szó — good, nochg, badauth, abuse vagy dnserr — egyszerű szövegként, mert a routerek ezt értelmezik; a szokásos JSON-hoz add hozzá a format=json-t. |
listfiles * | page, g | Listázza a fájljaidat mindazzal, amit az Infó panel mutat, plusz a bélyegképpel és a közvetlen linkkel. A g egy galériára szűkíti, a none a galérián kívüli fájlokra. |
listpastes * | page | Listázza a szövegeidet, mindegyikhez 200 karakteres előnézettel a teljes törzs helyett. |
listurls * | page | Listázza a rövid és hatalmas URL-jeidet a címmel, amelyre mutatnak. |
otl * | share | Egyszer használható linket készít az egyik fájlodhoz. Minden hívás újat ver, így ugyanazt a fájlt két embernek adva két linket kapsz. |
listotl * | page | Listázza az aktív egyszer használható linkjeidet, a fájlt, amelyre mutatnak, és hogy az a fájl azóta lejárt-e. |
listgalleries * | — | Listázza a galériáidat id-jükkel, nevükkel, fájlszámukkal és közzétételi állapotukkal. |
gallery * | g, publish | Közli egy galéria közzétételi állapotát, és módosítja, ha megadod a publish-t. |
move * | share (ismételhető), gallery vagy g | Fájlokat helyez át egy galériába, név (ha új, létrejön) vagy id alapján. Ha mindkettőt elhagyod, visszakerülnek a fő listába. |
delete * | share (ismételhető), g, otl, withfiles | Fájlokat, szövegeket, rövid URL-eket, galériákat, egyszer használható linkeket vagy ezek bármilyen keverékét törli. A share-t először a fájljaiddal, majd a szövegeiddel és linkjeiddel vetjük össze, így a hívónak nem kell típus szerint szétválogatnia. Az egyszer használható linkek külön, az otl-ben mennek: egy link eltávolítása nem lehet összetéveszthető a fájl törlésével, amelyre mutat. |
* Ezekhez a műveletekhez API-kulcs kell. Egy fiók saját adatait olvassák vagy módosítják, így nincs névtelen formájuk.
A share és a g elfogad ismételt mezőt, JSON-tömböt vagy vesszővel elválasztott listát — amelyik az eszközeiddel a legegyszerűbb. A duplikátumokat figyelmen kívül hagyjuk.
curl -X POST https://0wx.cat/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.cat/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
-d action=delete -d 'share=Ab3xK9pQ,Zz7yT2mN'
curl -X POST https://0wx.cat/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.cat/api.cgi
Ahol galériát nevezel meg — az upload-nál vagy a move-nál — ugyanazon a két módon adhatod meg: g egy létező id-hez, vagy gallery egy névhez, amely létrejön, ha új. Ha mindkettőt elküldöd, a g nyer. A válasz a galéria id-jét hozza. Vedd figyelembe, hogy a galéria törlése csak a galériát törli, a fájljai a fő listában maradnak — a webes űrlappal ellentétben, amely rákérdezés után törli őket. Add át a withfiles=true-t, ha azokat is törölnéd: egy csoportosításait rendezgető szkript ne veszítse el véletlenül a feltöltéseket.
curl -X POST https://0wx.cat/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
-F action=upload -F file=@photo.jpg --form-string 'gallery=Holiday 2026'
curl -X POST https://0wx.cat/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.cat/api.cgi
A feltöltés nem használhatja a JSON-törzset, mert a fájlt multipartként kell küldeni. Ismételd a file részt, ha egyszerre többet küldenél. Minden fájlról külön jelentés készül: a válasz egy files listát hoz az elfogadottakról és egy rejected listát az elutasítottakról, így a részleges siker is siker.
curl -X POST https://0wx.cat/api.cgi \
-H 'Authorization: Bearer YOUR_KEY' \
-F action=upload \
-F file=@photo.jpg \
-F file=@notes.txt \
-F lifetime=7d
Ennek nincs wget változata. A wget nem tud multipart/form-data törzset összeállítani — nincs megfelelője a curl -F-jének — a feltöltésnek pedig multipartnak kell lennie. Használj curl-t, vagy állítsd össze magad a törzset és a határolót, és küldd --post-file-lal.
Nem kötelező minden olyan műveletnél, amely tárol valamit. Puszta másodperceket fogad el, vagy egy számot m, h vagy d utótaggal — ugyanazokat a formákat, mint a webes űrlapok. Hagyd el vagy adj át 0-t, hogy az elem korlátlan ideig megmaradjon.
Minden válasz egy JSON-objektum ok mezővel. Siker esetén az eredményt hordozza; hiba esetén egy stabil error kódot és egy olvasható message-t. A kód alapján ágazz el, az üzenetet naplózd.
{"ok":true,"type":"paste","share":"Ab3xK9pQ",
"url":"https://0wx.cat/p/Ab3xK9pQ","bytes":11}
{"ok":false,"error":"url_too_long",
"message":"URL exceeds the maximum length."}
Ahol egy fájl hordozza őket, a listfiles file_tags-t ad a bejegyzéséhez: előadó, cím és album, a feltöltéskor ID3-ból, Vorbis-megjegyzésekből vagy MP4-atomokból kiolvasva. Ha nincs mit jelenteni — ami a legtöbb fájl — a kulcs hiányzik, nem null, így olvasás előtt ellenőrizd a meglétét. Egyes mezők is hiányozhatnak — egy fájlnak lehet címe album nélkül. A fájl metaadataiból semmi mást nem teszünk közzé: egy iTunes-vásárlás rögzíti a vevő nevét és Apple ID-jét, ezeket szándékosan soha nem olvassuk ki.
{"ok":true,"type":"files","total":2,"page":1,"pages":1,"files":[
{"share":"Ab3xK9pQ","name":"autobahn.mp3","mime":"audio/mpeg",
"bytes":8123456,"url":"https://0wx.cat/i/Ab3xK9pQ",
"file_tags":{"artist":"Kraftwerk","title":"Autobahn","album":"Autobahn"}},
{"share":"Zz7yT2mN","name":"photo.jpg","mime":"image/jpeg",
"bytes":204800,"url":"https://0wx.cat/i/Zz7yT2mN"}
]}
| error | HTTP | Leírás |
|---|---|---|
unknown_action | 400 | Nincs ilyen művelet. |
bad_json | 400 | A törzs nem érvényes JSON, vagy egy mező beágyazott szerkezetet tartalmazott. |
unexpected_parameter | 400 | Olyan paraméter érkezett, amelyet ez a művelet nem fogad — általában egy kódolatlan & egy értékben. Az üzenet megnevezi a paramétereket. |
bad_key | 401 | A kulcsot nem ismertük fel. A hibás kulcsot elutasítjuk, nem kezeljük csendben névtelenként. |
bad_url | 400 | Az URL hibás felépítésű, vagy http(s), ftp és gopher helyett más sémát használ. |
bad_lifetime | 400 | Az élettartam nem szám, és nem is szám m, h vagy d utótaggal. |
no_content | 400 | Nem érkezett tárolandó adat. |
url_too_long | 413 | Az URL hosszabb a korlátnál. |
paste_too_long | 413 | A szöveg nagyobb a szövegkorlátnál. A korlátokat UTF-8 bájtban mérjük, így a nem latin szöveg többet számít, mint amit a karakterszám sugall. |
too_many_files | 413 | Több fájl, mint amennyit egy hívás elfogad. |
no_usable_files | 415 | Minden fájlt elutasítottunk. Az okot a rejected listában találod. |
backend_unavailable | 502 | A fordító háttérrendszer nem válaszolt. |
internal | 500 | Valami váratlanul elromlott. Naplóztuk. |
Az aktuális értékeket a whoami hívásával olvasd ki, ne kódold be őket — a kiszolgáló üzemeltetője állítja be őket, és változhatnak. A méretek UTF-8 bájtban értendők.
A 0wx.sh becsomagolja a fentiek mindegyikét. Tiszta POSIX shell, a curl-on kívül semmi sem kell hozzá, és elég rövid ahhoz, hogy futtatás előtt elolvasd — ami a helyes hozzáállás egy szkripthez, amely az API-kulcsodat fogja tartani. A kulcsot az OWX_KEY-be tedd a --key átadása helyett, így nem kerül a shell előzményeibe.
wget https://0wx.cat/clients/0wx.sh chmod +x 0wx.sh export OWX_KEY=YOUR_KEY ./0wx.sh help ./0wx.sh paste --content 'hello & world'
A 0wx.py ugyanazt teszi, mint a shell-kliens, de értelmezi a választ, és kiírja, mit jelentenek a mezők, ahelyett hogy nyers JSON-t adna — add hozzá a --json-t, ha a nyers formát kéred. Csak a standard könyvtár: nincs requests, nincs mit telepíteni. Ha saját klienst írsz, a send() és a report() függvényei érdemesek az elolvasásra: együtt megmutatják, hogyan épül fel a kérés, hogyan nyerhető ki az üzenet egy sikertelenből, és mit tartalmaznak a válaszok.
wget https://0wx.cat/clients/0wx.py chmod +x 0wx.py export OWX_KEY=YOUR_KEY ./0wx.py listfiles ./0wx.py listfiles --json | jq '.files[].url'
A 0wx.pl ugyanazt teszi, mint a Python-változat, és ugyanazt írja ki. Csak alapmodulok — a HTTP::Tiny és a JSON::PP 5.14 óta a Perl része, így nincs mit telepíteni. Érdemes a Python-kliens mellett olvasni, ha sajátot írsz: a két nyelv másképp hibázik egy hibás kérésen, és mindkét szkript megmondja, hol.
wget https://0wx.cat/clients/0wx.pl chmod +x 0wx.pl export OWX_KEY=YOUR_KEY ./0wx.pl listfiles
A 0wx.ps1 a Python-kliens Windows-megfelelője: ugyanazok a parancsok, ugyanaz a kimenet, és értelmezi a választ nyers JSON helyett — ahhoz add hozzá a --json-t. A gépen már meglévő Windows PowerShellhez készült, így nincs mit telepíteni, és változtatás nélkül fut PowerShell 7-en is. Az ablakban, ahonnan futtatod, szükség lehet a Set-ExecutionPolicy -Scope Process Bypass-ra; ez a Windows kérdése, hogy tényleg futtatni akarsz-e egy letöltött szkriptet — jogos kérdés, és a fájl elég rövid ahhoz, hogy előbb elolvasd.
$env:OWX_KEY = 'YOUR_KEY' .\0wx.ps1 listfiles .\0wx.ps1 paste --content 'hello & world' .\0wx.ps1 upload --file .\holiday.jpg --gallery 'Holiday 2026'
A 0wx.html ugyanaz a fülkészlet, mint az asztali kliens, három fájlként — egy oldal, egy stíluslap és egy szkript — telepítés nélkül, keretrendszer nélkül, és semmit sem tölt be máshonnan, csak erről az oldalról. Három, nem egy, mert az oldal Content-Security-Policy-je tiltja a beágyazott szkriptet és stílust, amit érdemes megtartani. Fájlokat lehet rádobni. Innen kell megnyitni, nem lementve a lemezedről: az API nem küld cross-origin fejléceket, így egy helyi másolat minden kérését a böngésződ elutasítaná, mielőtt elindulna. A kulcs a memóriában marad, hacsak be nem jelölöd, hogy jegyezze meg.
https://0wx.cat/clients/0wx.html
A 0wx-gui.ps1 ugyanaz a fülkészlet, mint az asztali kliens, WinForms-szal rajzolva — vagyis egyáltalán nincs mit telepíteni, mert az már a Windows része. Tedd ugyanabba a mappába, mint a 0wx.ps1-et: az ablak annak a fájlnak a kéréskezelését kölcsönzi, ahelyett hogy egy második másolatot cipelne, így mindkettő kell. A Windows rákérdez, mielőtt olyan szkriptet futtat, amelyet nem ő írt, ami jogos kérdés; mindkét fájl elég rövid ahhoz, hogy válasz előtt elolvasd.
powershell -ExecutionPolicy Bypass -File .\0wx-gui.ps1
A 0wx-gtk.pl egy kis GTK-ablak fülekkel a feltöltéshez, beillesztéshez, rövidítéshez és a fájljaid böngészéséhez — listaként vagy bélyegképgalériaként, galéria szerint szűrve. Ez az egyetlen kliens itt, amelyhez telepíteni kell valamit — a Perl GTK3-kötéseit — amit érdemes tudni a fenti Windows-ablak mellett, amelyhez semmi sem kell. Minden más, amit használ, a Perl része. A kulcsot csak a memóriában tartja: az ablak bezárásával elfelejti, az OWX_KEY beállításával induláskor kitölti. Bármit is mutat, a kiszolgáló nyers válasza egy kattintásra van a “Server reply” alatt.
apt install libgtk3-perl # or: dnf install perl-Gtk3 wget https://0wx.cat/clients/0wx-gtk.pl chmod +x 0wx-gtk.pl OWX_KEY=YOUR_KEY ./0wx-gtk.pl
A 0wx-android.apk azt teszi, amit a többi kliens, telefonról: feltöltés, beillesztés, rövidítés, fordítás és a fájljaid böngészése listaként vagy galériaként. Ha egy másik appból fájlt osztasz meg vele, feltölti; ha szöveget, szövegként tárolja. Nincs egyetlen alkalmazásboltban sem, így a készüléked engedélyt kér a telepítéshez — ezt a kérdést általában érdemes komolyan venni, és ez az oka, hogy a teljes forrás itt is elérhető: nyisd meg Android Studióban, és fordítsd le magad, ahelyett hogy megbíznál a fájlban. A fordításhoz JDK 21 kell; a benne lévő BUILDING.md elmondja, miért.
https://0wx.cat/clients/0wx-android.apk # install it https://0wx.cat/clients/0wx-android.zip # build it yourself
Szándékosan nincs távoli letöltő művelet. Az a kiszolgálót a hívó által választott URL letöltésére kényszerítené, ami kéréshamisítási támadási felület, és egy szkript sokkal keményebben tudja hajtani, mint egy űrlap. Inkább töltsd fel a fájlt magad.