~0wx.cat~ :: Hos fail dan alatan berguna yang lain


Muat naik TinyURL HugeURL Pastebin Perihal Lapor Log masuk
Bahasa Melayu ▼
English English Deutsch Deutsch Plattdüütsch Plattdüütsch Lëtzebuergesch Lëtzebuergesch Nederlands Nederlands Dansk Dansk Svenska Svenska Bokmål Bokmål Nynorsk Nynorsk Íslenska Íslenska Føroyskt Føroyskt Español Español Català Català Galego Galego Português Português Français Français Italiano Italiano Latina Latina Română Română Rumantsch Rumantsch Gaeilge Gaeilge Suomi Suomi Magyar Magyar Euskara Euskara Esperanto Esperanto 日本語 日本語 简体中文 简体中文 繁體中文(台灣) 繁體中文(台灣) 繁體中文(香港) 繁體中文(香港) 粵語 粵語 한국어 한국어 Tiếng Việt Tiếng Việt ไทย ไทย Bahasa Indonesia Bahasa Indonesia हिन्दी हिन्दी Ελληνικά Ελληνικά Polski Polski Čeština Čeština Українська Українська Русский Русский Türkçe Türkçe العربية العربية עברית עברית Kiswahili Kiswahili ʻŌlelo Hawaiʻi ʻŌlelo Hawaiʻi tlhIngan Hol tlhIngan Hol Quenya Quenya

Terdapat API bagi semua fungsi di 0wx.cat. Anda boleh menggunakannya dalam skrip atau dari konsol.

Semua yang dilakukan borang di laman ini, untuk skrip. Setiap balasan ialah JSON, termasuk ralat, jadi anda tidak perlu meneka sama ada badan itu hasil atau penjelasan.

Membuat permintaan

POST ke titik akhir dengan parameter borang atau badan JSON. Kedua-duanya setara; pilih yang paling mudah dengan alatan anda. Parameter action memilih apa yang hendak dilakukan. Gunakan --data-urlencode untuk apa sahaja yang ditaip orang — teks tampal, URL, terjemahan — kerana -d menghantar nilai mentah dan ia akan dipotong pada & pertama. -d biasa memadai untuk nilai tetap seperti action itu sendiri. wget langsung tiada --data-urlencode, jadi dengan wget sama ada anda mengekod peratus nilai sedemikian sendiri atau menghantar badan JSON, yang tidak memerlukan pengekodan.

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
Nilai yang mengandungi &

Dalam badan borang, & memisahkan parameter, dan curl -d tidak mengekod apa yang anda beri. URL dengan rentetan pertanyaan oleh itu dipotong pada & pertamanya, dan selebihnya tiba sebagai parameter berasingan. Gunakan --data-urlencode, atau hantar JSON. Parameter sesat ditolak dan bukannya diabaikan, jadi ini gagal dengan jelas dan bukannya menyimpan separuh pautan.

# 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
Pengesahan

Pilihan. Tanpa kunci, permintaan adalah tanpa nama dan berkelakuan sama seperti pelawat tanpa nama — hasilnya tetap umum, satu-satunya perbezaan ialah sama ada ia masuk ke senarai fail anda. Jana kunci di halaman akaun anda dan hantar sebagai token bearer; menghantarnya sebagai parameter apikey juga berfungsi, tetapi kunci dalam rentetan pertanyaan berakhir dalam log pelayan dan sejarah pelayar.

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
Tindakan
actionParameterKeterangan
whoami—Mengesahkan bahawa kunci berfungsi dan melaporkan had semasa. Tiada kos; panggil ini dahulu.
ip—Melaporkan alamat anda, PTR-nya, negara, negeri dan bandar yang dilokasikannya secara geografi, koordinat, dan user agent yang anda hantar. Tidak memerlukan kunci dan menjawab sama dengan atau tanpa kunci. Sengaja lebih sempit daripada halaman web: tiada WHOIS, tiada zon DNS dan tiada carian senarai sekatan, jadi memanggilnya hanya membebankan pelayan satu bacaan pangkalan data tempatan.
uploadfile (boleh diulang), resize, lifetime, gallery atau g *Memuat naik satu atau lebih fail. Mesti multipart/form-data. Menamakan galeri meletakkannya terus ke dalamnya dan mengembalikan id galeri itu.
tinyurlurl, lifetimeMemendekkan URL.
hugeurlurl, lifetimeMemanjangkan URL, secara tidak masuk akal, dengan sengaja.
pastecontent, lifetimeMenyimpan satu blok teks dan mengembalikan pautan kepadanya.
translatecontent, to, fromMenterjemah teks. to dan from ialah kod daripada tindakan langs — ambil perhatian bahawa ini tidak semestinya kod negara: bahasa Denmark ialah da, bukan dk. from boleh ditinggalkan atau diberi sebagai auto, yang meminta bahagian belakang mengesan bahasa; memberikannya memberi hasil lebih baik untuk teks pendek.
langsMenyenaraikan bahasa yang diterima translate, sebagai supported_langs: satu objek setiap bahasa, kod kepada nama, mengikut susunan yang ditawarkan laman. Tidak memerlukan kunci API.
dyndnskey, ip, formatMengemas kini nama DNS dinamik. Satu-satunya tindakan yang tidak memerlukan kunci API: ia dipanggil oleh penghala, yang mempunyai satu medan untuk URL dan tiada cara untuk menghantar pengepala. key ialah kunci kemas kini setiap nama yang ditunjukkan dalam akaun anda, bukan kunci API anda. Tinggalkan ip dan alamat tempat anda memanggil digunakan. Balasannya ialah perkataan dyndns2 de facto — good, nochg, badauth, abuse atau dnserr — sebagai teks biasa, kerana itulah yang dihurai penghala; tambah format=json untuk JSON seperti biasa.
listfiles *page, gMenyenaraikan fail anda dengan semua yang ditunjukkan panel Maklumat, serta lakaran kecil dan pautan terus. g menghadkannya kepada satu galeri, atau none untuk fail yang tiada dalam mana-mana galeri.
listpastes *pageMenyenaraikan teks anda, dengan pratonton 200 aksara bagi setiap satu dan bukannya keseluruhan badan.
listurls *pageMenyenaraikan URL pendek dan gergasi anda, dengan alamat yang ditunjuk oleh setiap satu.
otl *shareMencipta pautan sekali guna kepada salah satu fail anda. Setiap panggilan menempa yang baharu, jadi memberikan fail yang sama kepada dua orang memberi dua pautan.
listotl *pageMenyenaraikan pautan sekali guna anda yang aktif, fail yang ditunjuk oleh setiap satu, dan sama ada fail itu telah tamat tempoh sejak itu.
listgalleries *—Menyenaraikan galeri anda dengan id, nama, bilangan fail dan keadaan penerbitannya.
gallery *g, publishMelaporkan keadaan penerbitan galeri, dan mengubahnya apabila publish diberikan.
move *share (boleh diulang), gallery atau gMemindahkan fail ke dalam galeri, mengikut nama (dicipta jika baharu) atau mengikut id. Jika kedua-duanya ditinggalkan, ia dipindahkan kembali ke senarai utama.
delete *share (boleh diulang), g, otl, withfilesMemadam fail, teks, URL pendek, galeri, pautan sekali guna, atau apa-apa campuran. Share dipadankan dengan fail anda dahulu, kemudian dengan teks dan pautan anda, jadi pemanggil tidak perlu mengasingkannya mengikut jenis. Pautan sekali guna diletakkan dalam otl, secara berasingan: membuang pautan tidak boleh dikelirukan dengan memadam fail yang ditunjuknya.

* Tindakan ini memerlukan kunci API. Ia membaca atau mengubah data satu akaun sendiri, jadi tiada bentuk tanpa nama untuknya.

Beberapa sekali gus

share dan g menerima medan berulang, tatasusunan JSON, atau senarai dipisahkan koma — mana-mana yang paling mudah dengan alatan anda. Pendua diabaikan.

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
Galeri

Di mana sahaja galeri dinamakan — pada upload atau pada move — ia diberi dengan dua cara yang sama: g untuk id sedia ada, atau gallery untuk nama, yang dicipta jika baharu. Jika kedua-duanya dihantar, g menang. Balasan membawa id galeri. Ambil perhatian bahawa memadam galeri hanya membuang galeri itu, meninggalkan failnya dalam senarai utama — tidak seperti borang web, yang memadamnya selepas bertanya. Beri withfiles=true untuk memadamnya juga: skrip yang mengemaskan pengelompokannya tidak sepatutnya kehilangan muat naik secara tidak sengaja.

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
Memuat naik fail

Muat naik tidak boleh menggunakan badan JSON, kerana fail perlu dihantar sebagai multipart. Ulang bahagian file untuk menghantar beberapa sekali gus. Setiap fail dilaporkan berasingan: balasan membawa senarai files yang diterima dan senarai rejected yang ditolak, jadi kejayaan separa tetap kejayaan.

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

Tiada bentuk wget untuk yang ini. wget tidak boleh membina badan multipart/form-data — ia tiada padanan dengan -F curl — dan muat naik mesti multipart. Gunakan curl, atau himpunkan sendiri badan dan sempadan lalu hantar dengan --post-file.

Jangka hayat

Pilihan pada setiap tindakan yang menyimpan sesuatu. Menerima saat kosong, atau nombor diikuti m, h atau d — bentuk yang sama seperti borang web. Tinggalkan atau beri 0 untuk menyimpan item selama-lamanya.

Balasan

Setiap balasan ialah objek JSON dengan medan ok. Apabila berjaya ia membawa hasil; apabila gagal ia membawa kod error yang stabil dan message yang boleh dibaca manusia. Bercabang mengikut kod, log mesejnya.

{"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."}
Tag audio

Apabila fail membawanya, listfiles menambah file_tags pada entrinya: artis, tajuk dan album, dibaca daripada ID3, ulasan Vorbis atau atom MP4 semasa fail dimuat naik. Kunci itu tiada dan bukannya null apabila tiada apa untuk dilaporkan, iaitu kebanyakan fail, jadi uji kewujudannya sebelum membacanya. Medan individu juga mungkin hilang — fail mungkin ada tajuk tetapi tiada album. Tiada apa lagi daripada metadata fail yang didedahkan: pembelian iTunes merekodkan nama dan Apple ID pembeli, dan itu sengaja tidak pernah dibaca.

{"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"}
]}
Kod ralat
errorHTTPKeterangan
unknown_action400Tiada tindakan sedemikian.
bad_json400Badan bukan JSON yang sah, atau satu medan mengandungi struktur bersarang.
unexpected_parameter400Satu parameter yang tidak diterima tindakan ini telah tiba — biasanya & yang tidak dikodkan dalam satu nilai. Mesej menamakan parameter itu.
bad_key401Kunci tidak dikenali. Kunci yang salah ditolak dan bukannya senyap-senyap dianggap tanpa nama.
bad_url400URL rosak, atau menggunakan skema selain http(s), ftp atau gopher.
bad_lifetime400Jangka hayat bukan nombor atau nombor diikuti m, h atau d.
no_content400Tiada apa yang dihantar untuk disimpan.
url_too_long413URL lebih panjang daripada had.
paste_too_long413Teks lebih besar daripada had tampal. Had diukur dalam bait UTF-8, jadi teks bukan Latin dikira lebih daripada bilangan aksaranya.
too_many_files413Lebih banyak fail daripada yang diterima oleh satu panggilan.
no_usable_files415Setiap fail ditolak. Semak senarai rejected untuk sebabnya.
backend_unavailable502Bahagian belakang terjemahan tidak menjawab.
internal500Sesuatu gagal secara tidak dijangka. Ia telah dilog.
Had

Panggil whoami untuk membaca nilai semasa dan bukannya mengekodkannya secara tetap — ia ditetapkan oleh pengendali pelayan dan boleh berubah. Saiz ialah bait UTF-8.

Klien shell

0wx.sh membalut semua di atas. Ia shell POSIX tulen dan tidak memerlukan apa-apa selain curl, dan cukup pendek untuk dibaca sebelum anda menjalankannya — itulah yang wajar dilakukan dengan skrip yang akan memegang kunci API anda. Letakkan kunci dalam OWX_KEY dan bukannya memberi --key, dan ia kekal di luar sejarah shell anda.

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'
Klien Python

0wx.py melakukan perkara yang sama seperti klien shell, tetapi menghurai balasan dan mencetak maksud medan dan bukannya menyerahkan JSON mentah kepada anda — tambah --json apabila anda mahukan bentuk mentah. Perpustakaan standard sahaja: tiada requests, tiada apa untuk dipasang. Jika anda menulis klien sendiri, fungsi send() dan report() ialah bahagian yang patut dibaca: bersama-sama ia menunjukkan cara membina permintaan, cara mengeluarkan mesej daripada permintaan yang gagal, dan kandungan balasan.

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'
Klien Perl

0wx.pl melakukan perkara yang sama seperti yang Python dan mencetak output yang sama. Modul teras sahaja — HTTP::Tiny dan JSON::PP telah disertakan bersama Perl sejak 5.14, jadi tiada apa untuk dipasang. Patut dibaca di sebelah klien Python jika anda menulis klien sendiri: kedua-dua bahasa gagal dengan cara berbeza pada permintaan yang rosak, dan kedua-dua skrip menyatakan di mana.

wget https://0wx.cat/clients/0wx.pl
chmod +x 0wx.pl
export OWX_KEY=YOUR_KEY
./0wx.pl listfiles
Klien PowerShell

0wx.ps1 ialah padanan klien Python untuk Windows: arahan yang sama, output yang sama, dan ia menghurai balasan dan bukannya menyerahkan JSON mentah kepada anda — tambah --json untuk itu. Ia ditulis untuk Windows PowerShell yang sudah ada pada mesin, jadi tiada apa untuk dipasang, dan ia berjalan tanpa perubahan pada PowerShell 7. Anda mungkin memerlukan Set-ExecutionPolicy -Scope Process Bypass dalam tetingkap tempat anda menjalankannya, iaitu Windows bertanya sama ada anda benar-benar mahu menjalankan skrip yang anda muat turun — soalan yang wajar, dan failnya cukup pendek untuk dibaca dahulu.

$env:OWX_KEY = 'YOUR_KEY'
.\0wx.ps1 listfiles
.\0wx.ps1 paste --content 'hello & world'
.\0wx.ps1 upload --file .\holiday.jpg --gallery 'Holiday 2026'
Tetingkap dalam pelayar anda

0wx.html ialah set tab yang sama seperti klien desktop, sebagai tiga fail — halaman, helaian gaya dan skrip — tanpa pemasangan, tanpa rangka kerja, dan tiada apa yang dimuatkan dari mana-mana selain laman ini. Tiga dan bukannya satu kerana Content-Security-Policy laman melarang skrip dan gaya sebaris, yang patut dikekalkan. Fail boleh dijatuhkan ke atasnya. Ia perlu dibuka dari sini dan bukannya disimpan dan dibuka dari cakera anda: API tidak menghantar pengepala cross-origin, jadi salinan tempatan akan menyebabkan setiap permintaan ditolak oleh pelayar anda sebelum ia keluar. Kunci dipegang dalam memori melainkan anda menanda kotak untuk mengingatinya.

https://0wx.cat/clients/0wx.html
Tetingkap di Windows

0wx-gui.ps1 ialah set tab yang sama seperti klien desktop, dilukis dengan WinForms — yang bermakna tiada apa langsung untuk dipasang, kerana ia sudah menjadi sebahagian daripada Windows. Letakkannya dalam folder yang sama dengan 0wx.ps1: tetingkap meminjam pengendalian permintaan fail itu dan bukannya membawa salinan kedua, jadi kedua-duanya diperlukan. Windows akan bertanya sebelum menjalankan skrip yang bukan ditulisnya, yang merupakan soalan wajar; kedua-dua fail cukup pendek untuk dibaca sebelum anda menjawab.

powershell -ExecutionPolicy Bypass -File .\0wx-gui.ps1
Tetingkap di Linux dengan GTK

0wx-gtk.pl ialah tetingkap GTK kecil dengan tab untuk memuat naik, menampal, memendekkan dan melayari fail anda — sebagai senarai atau galeri lakaran kecil, ditapis mengikut galeri. Ia satu-satunya klien di sini yang memerlukan sesuatu dipasang — ikatan GTK3 Perl — yang patut diketahui di sebelah tetingkap Windows di atas, memandangkan yang itu tidak memerlukan apa-apa. Semua yang lain yang digunakannya disertakan bersama Perl. Kunci hanya dipegang dalam memori: menutup tetingkap melupakannya, dan menetapkan OWX_KEY mengisinya pada permulaan. Apa sahaja yang ditunjukkannya, balasan mentah pelayan hanya satu klik di bawah “Server reply”.

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
Apl Android

0wx-android.apk melakukan apa yang klien lain lakukan, dari telefon: memuat naik, menampal, memendekkan, menterjemah, dan melayari fail anda sebagai senarai atau galeri. Berkongsi fail kepadanya dari mana-mana apl lain memuat naiknya, dan berkongsi teks menyimpannya sebagai teks. Ia tiada di mana-mana gedung apl, jadi peranti anda akan meminta anda membenarkan pemasangannya — soalan yang patut diambil serius secara umum, dan sebab keseluruhan sumbernya juga ada di sini: bukanya dalam Android Studio dan bina sendiri dan bukannya mempercayai fail itu. Membina memerlukan JDK 21; BUILDING.md di dalamnya menerangkan sebabnya.

https://0wx.cat/clients/0wx-android.apk        # install it
https://0wx.cat/clients/0wx-android.zip        # build it yourself
Nota

Sengaja tiada tindakan ambil jauh. Ia akan membuat pelayan mengambil URL pilihan pemanggil, yang merupakan permukaan pemalsuan permintaan, dan skrip boleh memacunya jauh lebih kuat daripada borang. Muat naik sahaja fail itu sendiri.


(p) 2018 0wx.cat -/- Powered by Linux and GNU. Live free or die! (root@0wx.cat)