~0wx.cat~ :: Fildeling og andre nyttige verktøy


Last opp TinyURL HugeURL Pastebin Om Rapporter Logg inn
Nynorsk
English English Deutsch Deutsch Plattdüütsch Plattdüütsch Lëtzebuergesch Lëtzebuergesch Nederlands Nederlands Dansk Dansk Svenska Svenska Bokmål Bokmål Í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 Bahasa Melayu Bahasa Melayu हिन्दी हिन्दी Ελληνικά Ελληνικά Polski Polski Čeština Čeština Українська Українська Русский Русский Türkçe Türkçe العربية العربية עברית עברית Kiswahili Kiswahili ʻŌlelo Hawaiʻi ʻŌlelo Hawaiʻi tlhIngan Hol tlhIngan Hol

Det finst eit API for alle funksjonane på 0wx.cat. Du kan bruke det til skript eller konsollbaserte kommandoar.

Alt skjemaa på denne nettstaden gjer, for skript. Kvart svar er JSON, òg feil, så du treng aldri gjette om eit innhald er eit resultat eller ei forklaring.

Å gjere ein førespurnad

POST til endepunktet med anten skjemaparametrar eller eit JSON-innhald. Begge er likeverdige; vel det verktøya dine gjer enklast. action-parameteren vel kva som skal gjerast. Bruk --data-urlencode for alt eit menneske har skrive — innlimingstekst, ein URL, ei omsetjing — fordi -d sender verdien rå, og han vert kutta ved fyrste &. Rein -d er greitt for faste verdiar som sjølve action. wget har ikkje --data-urlencode i det heile, så med wget må du anten prosentkode slike verdiar sjølv eller sende eit JSON-innhald, som ikkje treng koding.

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
Verdiar som inneheld &

I eit skjemainnhald skil & parametrar, og curl -d kodar ikkje det du gjev han. Ein URL med spørjestreng vert difor kutta ved fyrste &, og resten kjem fram som eigne parametrar. Bruk --data-urlencode, eller send JSON. Overflødige parametrar vert avviste i staden for ignorerte, så dette feilar høglydt i staden for å lagre ei halv lenkje.

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

Valfritt. Utan nøkkel er ein førespurnad anonym og oppfører seg nøyaktig som ein anonym vitjar — resultatet er offentleg uansett, den einaste skilnaden er om det hamnar i fillista di. Generer ein nøkkel på kontosida di og send han som eit bearer-token; å sende han som ein apikey-parameter verkar òg, men ein nøkkel i ein spørjestreng hamnar i tenarloggar og nettlesarhistorikk.

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
Handlingar
actionParametrarSkildring
whoamiStadfestar at ein nøkkel verkar, og rapporterer dei gjeldande grensene. Kostar ingenting; kall han først.
ipRapporterer adressa di, PTR-en hennar, landet, regionen og byen ho vert geolokalisert til, koordinatane, og user agent-en du sende. Treng ingen nøkkel og svarar likt med eller utan. Med vilje smalare enn nettsida: ingen WHOIS-, DNS-sone- eller blokkeringsliste-oppslag, så å kalle han kostar tenaren ikkje anna enn ei lokal databaselesing.
uploadfile (kan gjentakast), resize, lifetime, gallery eller g *Lastar opp éi eller fleire filer. Må vere multipart/form-data. Å namngje eit galleri legg dei rett inn i det og returnerer id-en til det.
tinyurlurl, lifetimeForkortar ein URL.
hugeurlurl, lifetimeForlengjer ein URL, absurd, med vilje.
pastecontent, lifetimeLagrar ein tekstblokk og returnerer ei lenkje til han.
translatecontent, to, fromOmset tekst. to og from er kodar frå langs-handlinga — merk at desse ikkje alltid er landkodar: dansk er da, ikkje dk. from kan utelatast eller setjast til auto, som ber bakstykket om å oppdage språket; å oppgje det gjev betre resultat på kort tekst.
langsListar språka translate godtek, som supported_langs: eitt objekt per språk, kode til namn, i den rekkjefølgja nettstaden tilbyr dei. Treng ingen API-nøkkel.
dyndnskey, ip, formatOppdaterer eit dynamisk DNS-namn. Den einaste handlinga som ikkje treng API-nøkkel: ho vert kalla av ein ruter, som har eitt felt for ein URL og ingen måte å sende ein header på. key er oppdateringsnøkkelen per namn som vert vist i kontoen din, ikkje API-nøkkelen din. Utelat ip, så vert adressa du kallar frå, brukt. Svaret er det de facto dyndns2-ordet — good, nochg, badauth, abuse eller dnserr — som rein tekst, fordi det er det ruterar tolkar; legg til format=json for den vanlege JSON-en.
listfiles *page, gListar filene dine med alt Info-panelet viser, pluss miniatyrbiletet og den direkte lenkja. g avgrensar til eitt galleri, eller none for filer utan galleri.
listpastes *pageListar innlimingane dine, med ei førehandsvising på 200 teikn av kvar i staden for heile innhaldet.
listurls *pageListar dei korte og enorme URL-ane dine, med adressa kvar av dei peikar på.
otl *shareLagar ei eingongslenkje til ei av filene dine. Kvart kall lagar ei ny, så å gje same fil til to personar gjev to lenkjer.
listotl *pageListar dei aktive eingongslenkjene dine, fila kvar av dei peikar på, og om den fila har gått ut sidan.
listgalleries *Listar galleria dine med id-ar, namn, filtal og publiseringstilstand.
gallery *g, publishRapporterer publiseringstilstanden til eit galleri, og endrar han når publish vert oppgjeve.
move *share (kan gjentakast), gallery eller gFlyttar filer inn i eit galleri, etter namn (oppretta om nytt) eller etter id. Om begge er utelatne, vert dei flytta tilbake til hovudlista.
delete *share (kan gjentakast), g, otl, withfilesSlettar filer, innlimingar, korte URL-ar, galleri, eingongslenkjer eller ei blanding. Ein delingsreferanse vert først matcha mot filene dine og deretter mot innlimingane og lenkjene dine, så kallaren treng ikkje sortere dei etter type. Eingongslenkjer går i otl, for seg: å fjerne ei lenkje må ikkje kunne forvekslast med å slette fila ho peikar på.

* Desse handlingane treng ein API-nøkkel. Dei les eller endrar dataa til éin konto, så det finst inga anonym form av dei.

Fleire om gongen

share og g godtek eit gjenteke felt, ei JSON-liste eller ei kommaskild liste — det som er enklast for verktøya dine. Duplikat vert ignorerte.

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
Galleri

Overalt der eit galleri vert namngjeve — på upload eller på move — vert det oppgjeve på dei same to måtane: g for ein eksisterande id, eller gallery for eit namn, som vert oppretta om det er nytt. Om begge vert sende, vinn g. Svaret ber galleri-id-en. Merk at sletting av eit galleri berre fjernar galleriet og let filene stå i hovudlista — ulikt nettskjemaet, som slettar dei etter å ha spurt. Send withfiles=true for å slette dei òg: eit skript som ryddar i grupperingane sine, bør ikkje miste opplastingane ved eit uhell.

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
Opplasting av filer

Opplastingar kan ikkje bruke JSON-innhaldet, fordi ei fil må sendast som multipart. Gjenta file-delen for å sende fleire om gongen. Kvar fil vert rapportert for seg: svaret ber ei files-liste over dei som vart godtekne og ei rejected-liste over dei som ikkje vart det, så ein delvis suksess er framleis ein suksess.

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

Det finst inga wget-form av denne. wget kan ikkje byggje eit multipart/form-data-innhald — det har ikkje noko motstykke til curl sin -F — og opplastingar må vere multipart. Bruk curl, eller set saman innhaldet og grensa sjølv og send det med --post-file.

Levetid

Valfritt på alle handlingar som lagrar noko. Godtek reine sekund, eller eit tal etterfølgt av m, h eller d — dei same formene som nettskjemaa tek. Utelat det eller send 0 for å behalde elementet på ubestemt tid.

Svar

Kvart svar er eit JSON-objekt med eit ok-felt. Ved suksess ber det resultatet; ved feil ber det ein stabil error-kode og ei message som kan lesast av menneske. Forgrein på koden, logg meldinga.

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

Der ei fil har dei, legg listfiles til file_tags i oppføringa hennar: artist, tittel og album, lesne frå ID3, Vorbis-kommentarar eller MP4-atom då fila vart lasta opp. Nøkkelen er fråverande heller enn null når det ikkje er noko å rapportere, som gjeld dei fleste filer, så test for han før du les han. Einskilde felt kan òg mangle — ei fil kan ha tittel og ikkje album. Ingenting anna frå metadataa til fila vert eksponert: eit iTunes-kjøp registrerer namnet og Apple-ID-en til kjøparen, og dei vert med vilje aldri lesne.

{"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"}
]}
Feilkodar
errorHTTPSkildring
unknown_action400Inga slik handling.
bad_json400Innhaldet var ikkje gyldig JSON, eller eit felt inneheldt ein nøsta struktur.
unexpected_parameter400Det kom ein parameter som denne handlinga ikkje tek — vanlegvis ein ukoda & i ein verdi. Meldinga namngjev parametrane.
bad_key401Nøkkelen vart ikkje kjend att. Ein feil nøkkel vert avvist i staden for stilt handsama som anonym.
bad_url400URL-en er feilforma, eller brukar eit anna skjema enn http(s), ftp eller gopher.
bad_lifetime400Levetida var ikkje eit tal eller eit tal etterfølgt av m, h eller d.
no_content400Ingenting vart sendt til lagring.
url_too_long413URL-en er lengre enn grensa.
paste_too_long413Teksten er større enn innlimingsgrensa. Grensene vert målte i UTF-8-byte, så ikkje-latinsk tekst tel meir enn teikntalet tyder på.
too_many_files413Fleire filer enn eitt kall godtek.
no_usable_files415Alle filene vart avviste. Sjå rejected-lista for grunnen.
backend_unavailable502Omsetjingsbakstykket svara ikkje.
internal500Noko svikta uventa. Det er logga.
Grenser

Kall whoami for å lese dei gjeldande verdiane i staden for å hardkode dei — dei vert sette av tenaroperatøren og kan endre seg. Storleikar er UTF-8-byte.

Ein skalklient

0wx.sh pakkar inn alt det ovanfor. Det er reint POSIX-skal og treng ikkje anna enn curl, og det er kort nok til å lese før du køyrer det — som er det rette å gjere med eit skript som skal halde på API-nøkkelen din. Legg nøkkelen i OWX_KEY i staden for å sende --key, så held han seg utanfor skalhistorikken din.

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'
Ein Python-klient

0wx.py gjer det same som skalklienten, men tolkar svaret og skriv ut kva felta tyder i staden for å gje deg rå JSON — legg til --json når du vil ha den rå forma tilbake. Berre standardbibliotek: ingen requests, ingenting å installere. Om du skriv din eigen klient, er funksjonane send() og report() delane som er verde å lese: til saman viser dei korleis ein byggjer førespurnaden, korleis ein får meldinga ut av ein mislukka førespurnad, og kva svara inneheld.

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'
Ein Perl-klient

0wx.pl gjer det same som Python-klienten og skriv ut det same. Berre kjernemodular — HTTP::Tiny og JSON::PP har følgt med Perl sidan 5.14, så det er ingenting å installere. Verd å lese ved sida av Python-klienten om du skriv din eigen: dei to språka feilar ulikt på ein øydelagd førespurnad, og begge skripta seier kvar.

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

0wx.ps1 er Python-klienten sitt motstykke for Windows: same kommandoar, same utskrift, og han tolkar svaret i staden for å gje deg rå JSON — legg til --json for det. Han er skriven for den Windows PowerShell som alt er på maskina, så det er ingenting å installere, og han køyrer uendra på PowerShell 7. Du treng kanskje Set-ExecutionPolicy -Scope Process Bypass i vindauget du køyrer han frå, som er Windows som spør om du verkeleg meinte å køyre eit skript du lasta ned — eit rimeleg spørsmål, og fila er kort nok til å lese først.

$env:OWX_KEY = 'YOUR_KEY'
.\0wx.ps1 listfiles
.\0wx.ps1 paste --content 'hello & world'
.\0wx.ps1 upload --file .\holiday.jpg --gallery 'Holiday 2026'
Eit vindauge i nettlesaren din

0wx.html er det same settet med faner som skrivebordsklienten, som tre filer — ei side, eit stilark og eit skript — utan installering, utan rammeverk, og ingenting lasta frå andre stader enn denne nettstaden. Tre i staden for éi fordi nettstaden sin Content-Security-Policy forbyr innebygd skript og stil, som det er verd å halde på. Filer kan sleppast på det. Det må opnast herifrå i staden for å lagrast og opnast frå disken din: API-et sender ingen cross-origin-headerar, så ein lokal kopi ville få kvar førespurnad avvist av nettlesaren din før han gjekk ut. Nøkkelen vert halden i minnet med mindre du kryssar av for å hugse han.

https://0wx.cat/clients/0wx.html
Eit vindauge på Windows

0wx-gui.ps1 er det same settet med faner som skrivebordsklienten, teikna med WinForms — som tyder ingenting å installere i det heile, sidan det alt er ein del av Windows. Legg han i same mappe som 0wx.ps1: vindauget låner den fila si handsaming av førespurnader i staden for å bere ein ekstra kopi, så begge trengst. Windows vil spørje før det køyrer eit skript det ikkje skreiv sjølv, som er eit rimeleg spørsmål; begge filene er korte nok til å lese før du svarar.

powershell -ExecutionPolicy Bypass -File .\0wx-gui.ps1
Eit vindauge på Linux med GTK

0wx-gtk.pl er eit lite GTK-vindauge med faner for opplasting, innliming, forkorting og blaing i filene dine — som ei liste eller som eit galleri av miniatyrbilete, filtrert etter galleri. Det er den einaste klienten her som treng noko installert — Perl sine GTK3-bindingar — som er verd å vite ved sida av Windows-vindauget ovanfor, sidan det treng ingenting i det heile. Alt anna det brukar, følgjer med Perl. Nøkkelen vert berre halden i minnet: å lukke vindauget gløymer han, og å setje OWX_KEY fyller han inn ved oppstart. Uansett kva det viser deg, er det rå svaret frå tenaren eitt klikk unna under “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
Ein Android-app

0wx-android.apk gjer det dei andre klientane gjer, frå ein telefon: opplasting, innliming, forkorting, omsetjing og blaing i filene dine som ei liste eller eit galleri. Å dele ei fil til han frå ein annan app lastar henne opp, og å dele tekst lagrar han som ei innliming. Han er ikkje i nokon appbutikk, så eininga di vil spørje om du tillèt å installere han — som er eit spørsmål det er verd å ta alvorleg generelt, og grunnen til at heile kjeldekoden òg er her: opne han i Android Studio og bygg han sjølv i staden for å stole på fila. Bygging treng JDK 21; BUILDING.md inni seier kvifor.

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

Det finst med vilje inga fjernhentingshandling. Ho ville få tenaren til å hente ein URL som kallaren vel, som er ei angrepsflate for førespurnadsforfalsking, og eit skript kan drive det langt hardare enn eit skjema. Last opp fila sjølv i staden.


(p) 2018 0wx.cat -/- Driven av Linux og GNU. Live free or die! (root@0wx.cat)