▼
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
Magyar
Euskara
Esperanto
日本語
简体中文
繁體中文(台灣)
繁體中文(香港)
粵語
한국어
Tiếng Việt
ไทย
Bahasa Indonesia
Bahasa Melayu
हिन्दी
Ελληνικά
Polski
Čeština
Українська
Русский
العربية
עברית
Kiswahili
ʻŌlelo Hawaiʻi
tlhIngan Hol
Quenya
Bu sitedeki formların yaptığı her şey, betikler için. Hatalar dahil her yanıt JSON'dur; bu yüzden bir gövdenin sonuç mu açıklama mı olduğunu asla tahmin etmeniz gerekmez.
Uç noktaya form parametreleriyle ya da JSON gövdeyle POST yapın. İkisi eşdeğerdir; araçlarınızın kolaylaştırdığını seçin. action parametresi ne yapılacağını seçer. Bir insanın yazdığı her şey için — yapıştırma metni, URL, çeviri — --data-urlencode kullanın; çünkü -d değeri ham gönderir ve ilk &'de kesilir. Düz -d, action gibi sabit değerler için yeterlidir. wget'te --data-urlencode hiç yoktur; bu yüzden wget ile ya bu tür değerleri kendiniz yüzde kodlayın ya da kodlama gerektirmeyen bir JSON gövde gönderin.
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
Form gövdesinde & parametreleri ayırır ve curl -d verdiğinizi kodlamaz. Bu nedenle sorgu dizesi olan bir URL ilk &'sinde kesilir ve gerisi ayrı parametreler olarak gelir. --data-urlencode kullanın ya da JSON gönderin. Başıboş parametreler yok sayılmak yerine reddedilir; bu yüzden bu, yarım bağlantı saklamak yerine gürültüyle başarısız olur.
# 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
İsteğe bağlı. Anahtar olmadan istek anonimdir ve tam olarak anonim bir ziyaretçi gibi davranır — sonuç her durumda herkese açıktır, tek fark dosya listenize düşüp düşmediğidir. Hesap sayfanızda bir anahtar oluşturun ve bunu bearer belirteci olarak gönderin; apikey parametresiyle geçirmek de çalışır, ancak sorgu dizesindeki bir anahtar sunucu günlüklerine ve tarayıcı geçmişine düşer.
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 | Parametreler | Açıklama |
|---|---|---|
whoami | — | Bir anahtarın çalıştığını doğrular ve geçerli sınırları bildirir. Hiçbir maliyeti yoktur; önce bunu çağırın. |
ip | — | Adresinizi, PTR'sini, coğrafi olarak konumlandığı ülke, bölge ve şehri, koordinatları ve gönderdiğiniz user agent'ı bildirir. Anahtar gerektirmez ve anahtarlı ya da anahtarsız aynı yanıtı verir. Web sayfasından bilerek daha dar: WHOIS yok, DNS bölgesi yok, engel listesi sorgusu yok; bu yüzden çağırmak sunucuya yerel bir veritabanı okumasından başka bir şeye mal olmaz. |
upload | file (tekrarlanabilir), resize, lifetime, gallery veya g * | Bir veya daha fazla dosya yükler. multipart/form-data olmalıdır. Bir galeri adı vermek dosyaları doğrudan ona koyar ve galerinin id'sini döndürür. |
tinyurl | url, lifetime | Bir URL'yi kısaltır. |
hugeurl | url, lifetime | Bir URL'yi kasıtlı olarak saçma derecede uzatır. |
paste | content, lifetime | Bir metin bloğunu saklar ve ona bir bağlantı döndürür. |
translate | content, to, from | Metin çevirir. to ve from, langs eyleminden gelen kodlardır — bunların her zaman ülke kodu olmadığına dikkat edin: Danca da'dır, dk değil. from atlanabilir veya auto verilebilir; bu, arka uçtan dili algılamasını ister. Belirtmek kısa metinde daha iyi sonuç verir. |
langs | translate'in kabul ettiği dilleri supported_langs olarak listeler: dil başına bir nesne, koddan ada, sitenin sunduğu sırayla. API anahtarı gerektirmez. | |
dyndns | key, ip, format | Dinamik bir DNS adını günceller. API anahtarı gerektirmeyen tek eylem: bir URL için tek alanı olan ve başlık gönderme yolu bulunmayan bir yönlendirici tarafından çağrılır. key, hesabınızda gösterilen ada özel güncelleme anahtarıdır, API anahtarınız değil. ip'yi atlarsanız çağırdığınız adres kullanılır. Yanıt, fiili dyndns2 sözcüğüdür — good, nochg, badauth, abuse veya dnserr — düz metin olarak; çünkü yönlendiricilerin ayrıştırdığı budur. Her zamanki JSON için format=json ekleyin. |
listfiles * | page, g | Dosyalarınızı Bilgi panelinin gösterdiği her şeyle, ayrıca küçük resim ve doğrudan bağlantıyla listeler. g tek bir galeriyle sınırlar; none ise hiçbir galeride olmayan dosyalarla. |
listpastes * | page | Metinlerinizi, her birinin tüm gövdesi yerine 200 karakterlik ön izlemesiyle listeler. |
listurls * | page | Kısa ve devasa URL'lerinizi, her birinin işaret ettiği adresle listeler. |
otl * | share | Dosyalarınızdan birine tek kullanımlık bağlantı oluşturur. Her çağrı yeni bir tane üretir; bu yüzden aynı dosyayı iki kişiye vermek iki bağlantı verir. |
listotl * | page | Etkin tek kullanımlık bağlantılarınızı, her birinin işaret ettiği dosyayı ve o dosyanın o zamandan beri süresinin dolup dolmadığını listeler. |
listgalleries * | — | Galerilerinizi id'leri, adları, dosya sayıları ve yayın durumlarıyla listeler. |
gallery * | g, publish | Bir galerinin yayın durumunu bildirir ve publish verildiğinde değiştirir. |
move * | share (tekrarlanabilir), gallery veya g | Dosyaları ada göre (yeniyse oluşturulur) ya da id'ye göre bir galeriye taşır. İkisi de atlanırsa ana listeye geri taşınırlar. |
delete * | share (tekrarlanabilir), g, otl, withfiles | Dosyaları, metinleri, kısa URL'leri, galerileri, tek kullanımlık bağlantıları ya da bunların herhangi bir karışımını siler. Bir share önce dosyalarınızla, sonra metinleriniz ve bağlantılarınızla eşleştirilir; bu yüzden çağıranın bunları türe göre ayırması gerekmez. Tek kullanımlık bağlantılar ayrıca otl içinde verilir: bir bağlantıyı kaldırmak, işaret ettiği dosyayı silmekle karıştırılabilir olmamalıdır. |
* Bu eylemler API anahtarı gerektirir. Tek bir hesabın kendi verilerini okur ya da değiştirirler; bu yüzden anonim biçimleri yoktur.
share ve g, tekrarlanan bir alan, bir JSON dizisi ya da virgülle ayrılmış bir liste kabul eder — araçlarınız hangisini kolaylaştırıyorsa. Yinelenenler yok sayılır.
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
Bir galeri nerede adlandırılırsa adlandırılsın — upload ya da move üzerinde — aynı iki biçimde verilir: var olan bir id için g ya da yeniyse oluşturulan bir ad için gallery. İkisi de gönderilirse g kazanır. Yanıt galeri id'sini taşır. Bir galeriyi silmenin yalnızca galeriyi kaldırdığını ve dosyalarını ana listede bıraktığını unutmayın — sorduktan sonra dosyaları da silen web formunun aksine. Onları da silmek için withfiles=true geçirin: gruplamalarını düzenleyen bir betik yüklemeleri kazara kaybetmemelidir.
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
Yüklemeler JSON gövdeyi kullanamaz; çünkü bir dosya multipart olarak gönderilmelidir. Birden fazlasını aynı anda göndermek için file kısmını tekrarlayın. Her dosya ayrı bildirilir: yanıt, kabul edilenlerin files listesini ve reddedilenlerin rejected listesini taşır; bu yüzden kısmi başarı yine de başarıdır.
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
Bunun wget biçimi yok. wget, multipart/form-data gövde oluşturamaz — curl'ün -F'sinin karşılığı yoktur — ve yüklemeler multipart olmalıdır. curl kullanın ya da gövdeyi ve sınırı kendiniz oluşturup --post-file ile gönderin.
Bir şey saklayan her eylemde isteğe bağlıdır. Yalın saniye ya da ardından m, h veya d gelen bir sayı kabul eder — web formlarının aldığı biçimlerin aynısı. Öğeyi süresiz tutmak için atlayın ya da 0 geçirin.
Her yanıt, ok alanı olan bir JSON nesnesidir. Başarıda sonucu taşır; başarısızlıkta kararlı bir error kodu ve okunabilir bir message taşır. Koda göre dallanın, iletiyi günlüğe yazın.
{"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."}
Bir dosya bunları taşıyorsa listfiles girdisine file_tags ekler: sanatçı, başlık ve albüm; dosya yüklendiğinde ID3, Vorbis yorumları ya da MP4 atomlarından okunur. Bildirilecek bir şey olmadığında — ki çoğu dosya böyledir — anahtar null olmak yerine yoktur; bu yüzden okumadan önce varlığını sınayın. Tek tek alanlar da eksik olabilir — bir dosyanın başlığı olup albümü olmayabilir. Dosyanın meta verilerinden başka hiçbir şey açığa çıkarılmaz: bir iTunes satın alması alıcının adını ve Apple ID'sini kaydeder ve bunlar bilerek asla okunmaz.
{"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 | Açıklama |
|---|---|---|
unknown_action | 400 | Böyle bir eylem yok. |
bad_json | 400 | Gövde geçerli JSON değildi ya da bir alan iç içe bir yapı içeriyordu. |
unexpected_parameter | 400 | Bu eylemin almadığı bir parametre geldi — genellikle bir değerdeki kodlanmamış bir &. İleti parametreleri adlandırır. |
bad_key | 401 | Anahtar tanınmadı. Yanlış bir anahtar, sessizce anonim sayılmak yerine reddedilir. |
bad_url | 400 | URL hatalı biçimlendirilmiş ya da http(s), ftp veya gopher dışında bir şema kullanıyor. |
bad_lifetime | 400 | Ömür bir sayı ya da ardından m, h veya d gelen bir sayı değildi. |
no_content | 400 | Saklanacak hiçbir şey gönderilmedi. |
url_too_long | 413 | URL sınırdan uzun. |
paste_too_long | 413 | Metin, yapıştırma sınırından büyük. Sınırlar UTF-8 bayt olarak ölçülür; bu yüzden Latin olmayan metin, karakter sayısının ima ettiğinden daha fazla yer tutar. |
too_many_files | 413 | Tek bir çağrının kabul ettiğinden fazla dosya. |
no_usable_files | 415 | Tüm dosyalar reddedildi. Nedeni için rejected listesine bakın. |
backend_unavailable | 502 | Çeviri arka ucu yanıt vermedi. |
internal | 500 | Bir şey beklenmedik biçimde başarısız oldu. Günlüğe kaydedildi. |
Geçerli değerleri koda gömmek yerine whoami çağırarak okuyun — bunlar sunucu işletmecisi tarafından belirlenir ve değişebilir. Boyutlar UTF-8 bayttır.
0wx.sh yukarıdakilerin tümünü sarar. Saf POSIX kabuğudur, curl dışında hiçbir şeye ihtiyaç duymaz ve çalıştırmadan önce okunacak kadar kısadır — API anahtarınızı tutacak bir betik için doğru olan da budur. Anahtarı --key geçirmek yerine OWX_KEY içine koyun; böylece kabuk geçmişinizin dışında kalır.
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'
0wx.py kabuk istemcisiyle aynı şeyi yapar, ancak size ham JSON vermek yerine yanıtı ayrıştırır ve alanların ne anlama geldiğini yazdırır — ham biçimi istediğinizde --json ekleyin. Yalnızca standart kütüphane: requests yok, kurulacak bir şey yok. Kendi istemcinizi yazıyorsanız send() ve report() işlevleri okumaya değer kısımlardır: birlikte isteğin nasıl kurulduğunu, başarısız olandan iletinin nasıl alındığını ve yanıtların ne içerdiğini gösterirler.
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'
0wx.pl Python olanla aynı şeyi yapar ve aynı çıktıyı yazdırır. Yalnızca çekirdek modüller — HTTP::Tiny ve JSON::PP, 5.14'ten beri Perl ile birlikte gelir; bu yüzden kurulacak bir şey yoktur. Kendinizinkini yazıyorsanız Python istemcisinin yanında okumaya değer: iki dil bozuk bir istekte farklı biçimde başarısız olur ve her iki betik de nerede olduğunu söyler.
wget https://0wx.cat/clients/0wx.pl chmod +x 0wx.pl export OWX_KEY=YOUR_KEY ./0wx.pl listfiles
0wx.ps1, Python istemcisinin Windows karşılığıdır: aynı komutlar, aynı çıktı ve size ham JSON vermek yerine yanıtı ayrıştırır — bunun için --json ekleyin. Makinede zaten bulunan Windows PowerShell için yazılmıştır; bu yüzden kurulacak bir şey yoktur ve PowerShell 7'de değişmeden çalışır. Çalıştırdığınız pencerede Set-ExecutionPolicy -Scope Process Bypass gerekebilir; bu, Windows'un indirdiğiniz bir betiği gerçekten çalıştırmak isteyip istemediğinizi sormasıdır — haklı bir soru ve dosya önce okunacak kadar kısadır.
$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, masaüstü istemcisiyle aynı sekme kümesidir, üç dosya olarak — bir sayfa, bir stil sayfası ve bir betik — kurulum yok, çerçeve yok ve bu site dışında hiçbir yerden hiçbir şey yüklenmez. Bir yerine üç; çünkü sitenin Content-Security-Policy'si satır içi betik ve stili yasaklar ki bu korunmaya değer. Üzerine dosya bırakılabilir. Kaydedip diskinizden açmak yerine buradan açılmalıdır: API cross-origin başlıkları göndermez; bu yüzden yerel bir kopyanın her isteği daha çıkmadan tarayıcınız tarafından reddedilirdi. Hatırlanması için kutuyu işaretlemediğiniz sürece anahtar bellekte tutulur.
https://0wx.cat/clients/0wx.html
0wx-gui.ps1, masaüstü istemcisiyle aynı sekme kümesidir, WinForms ile çizilmiştir — bu, kurulacak hiçbir şey olmadığı anlamına gelir; çünkü bu zaten Windows'un bir parçasıdır. 0wx.ps1 ile aynı klasöre koyun: pencere, ikinci bir kopya taşımak yerine o dosyanın istek işlemesini ödünç alır; bu yüzden ikisi de gerekir. Windows kendi yazmadığı bir betiği çalıştırmadan önce soracaktır ki bu haklı bir sorudur; her iki dosya da yanıtlamadan önce okunacak kadar kısadır.
powershell -ExecutionPolicy Bypass -File .\0wx-gui.ps1
0wx-gtk.pl, yükleme, yapıştırma, kısaltma ve dosyalarınıza göz atma sekmeleri olan küçük bir GTK penceresidir — liste ya da küçük resim galerisi olarak, galeriye göre süzülmüş. Buradaki, bir şey kurulmasını gerektiren tek istemcidir — Perl'ün GTK3 bağlamaları — ki hiçbir şey gerektirmeyen yukarıdaki Windows penceresinin yanında bilinmeye değer. Kullandığı diğer her şey Perl ile birlikte gelir. Anahtar yalnızca bellekte tutulur: pencereyi kapatmak onu unutturur, OWX_KEY ayarlamak ise başlangıçta doldurur. Size ne gösterirse göstersin, sunucunun ham yanıtı “Server reply” altında bir tık uzaktadır.
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
0wx-android.apk diğer istemcilerin yaptığını telefondan yapar: yükleme, yapıştırma, kısaltma, çeviri ve dosyalarınıza liste ya da galeri olarak göz atma. Başka herhangi bir uygulamadan ona dosya paylaşmak dosyayı yükler, metin paylaşmak ise metni yapıştırma olarak saklar. Hiçbir uygulama mağazasında değildir; bu yüzden cihazınız kurulumuna izin vermenizi isteyecektir — genel olarak ciddiye alınmaya değer bir soru ve tüm kaynağın burada da olmasının nedeni: dosyaya güvenmek yerine Android Studio'da açıp kendiniz derleyin. Derleme JDK 21 gerektirir; içindeki BUILDING.md nedenini söyler.
https://0wx.cat/clients/0wx-android.apk # install it https://0wx.cat/clients/0wx-android.zip # build it yourself
Bilerek uzaktan getirme eylemi yoktur. Bu, sunucunun çağıranın seçtiği bir URL'yi getirmesine yol açardı; bu bir istek sahteciliği yüzeyidir ve bir betik bunu bir formdan çok daha sert zorlayabilir. Onun yerine dosyayı kendiniz yükleyin.