~0wx.org~ :: Fillagring og andre nyttige verktøy


Last opp TinyURL HugeURL Pastebin Om Meld fra Logg inn
Bokmål ▼
English English Deutsch Deutsch Plattdüütsch Plattdüütsch Lëtzebuergesch Lëtzebuergesch Nederlands Nederlands Dansk Dansk Svenska Svenska 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 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 Quenya Quenya

Det finnes et API for alle funksjonene på 0wx.org. Du kan bruke det til skript eller fra konsollen.

Alt skjemaene på dette nettstedet gjør, for skript. Hvert svar er JSON, feil inkludert, så du må aldri gjette om en kropp er et resultat eller en forklaring.

Å gjøre en forespørsel

POST til endepunktet med enten skjemaparametre eller en JSON-kropp. Begge er likeverdige; velg det verktøyene dine gjør enklest. Parameteren action velger hva som skal gjøres. Bruk --data-urlencode for alt et menneske har skrevet — paste-tekst, en URL, en oversettelse — for -d sender verdien rå, og den blir kuttet ved første &. Vanlig -d er greit for faste verdier som action selv. wget har ikke --data-urlencode i det hele tatt, så med wget må du enten prosentkode slike verdier selv eller sende en JSON-kropp, som ikke trenger noen koding.

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
Verdier som inneholder &

I en skjemakropp skiller & parametre, og curl -d koder ikke det du gir den. En URL med spørrestreng kuttes derfor ved sitt første &, og resten kommer fram som separate parametre. Bruk --data-urlencode, eller send JSON. Villfarne parametre avvises i stedet for å ignoreres, så dette feiler høylytt i stedet for å lagre en halv lenke.

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

Valgfritt. Uten nøkkel er en forespørsel anonym og oppfører seg nøyaktig som en anonym besøkende — resultatet er offentlig uansett, den eneste forskjellen er om det havner i fillisten din. Lag en nøkkel på kontosiden din og send den som bearer-token; å sende den som parameteren apikey virker også, men en nøkkel i en spørrestreng havner i serverlogger og nettleserhistorikk.

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
Handlinger
actionParametreBeskrivelse
whoami—Bekrefter at en nøkkel virker og oppgir gjeldende grenser. Koster ingenting; kall den først.
ip—Oppgir adressen din, dens PTR, landet, regionen og byen den geolokaliseres til, koordinatene og user agent-en du sendte. Krever ingen nøkkel og svarer likt med eller uten. Bevisst smalere enn nettsiden: ingen WHOIS, ingen DNS-sone og ingen blokkeringsliste-oppslag, så et kall koster serveren ingenting annet enn en lokal databaselesing.
uploadfile (kan gjentas), resize, lifetime, gallery eller g *Laster opp én eller flere filer. Må være multipart/form-data. Oppgis et galleri, legges de rett i det, og id-en returneres.
tinyurlurl, lifetimeForkorter en URL.
hugeurlurl, lifetimeForlenger en URL, absurd mye, med vilje.
pastecontent, lifetimeLagrer en tekstblokk og returnerer en lenke til den.
translatecontent, to, fromOversetter tekst. to og from er koder fra handlingen langs — merk at de ikke alltid er landkoder: dansk er da, ikke dk. from kan utelates eller settes til auto, som ber backend om å gjenkjenne språket; å oppgi det gir bedre resultat på kort tekst.
langsLister språkene translate godtar, som supported_langs: ett objekt per språk, kode til navn, i den rekkefølgen nettstedet tilbyr dem. Krever ingen API-nøkkel.
dyndnskey, ip, formatOppdaterer et dynamisk DNS-navn. Den eneste handlingen som ikke krever API-nøkkel: den kalles av en ruter, som har ett felt for en URL og ingen måte å sende en header på. key er oppdateringsnøkkelen per navn som vises i kontoen din, ikke API-nøkkelen din. Utelat ip, så brukes adressen du kaller fra. Svaret er det de facto dyndns2-ordet — good, nochg, badauth, abuse eller dnserr — som ren tekst, fordi det er det rutere tolker; legg til format=json for vanlig JSON.
listfiles *page, gLister filene dine med alt Info-panelet viser, pluss miniatyrbilde og direktelenke. g begrenser til ett galleri, eller none til filer uten galleri.
listpastes *pageLister tekstene dine med en forhåndsvisning på 200 tegn av hver i stedet for hele kroppen.
listurls *pageLister de korte og enorme URL-ene dine med adressen hver av dem peker på.
otl *shareOppretter en engangslenke til en av filene dine. Hvert kall lager en ny, så å gi samme fil til to personer gir to lenker.
listotl *pageLister de aktive engangslenkene dine, filen hver av dem peker på, og om den filen siden har utløpt.
listgalleries *—Lister galleriene dine med id-er, navn, filantall og publiseringsstatus.
gallery *g, publishOppgir et galleris publiseringsstatus, og endrer den når publish er gitt.
move *share (kan gjentas), gallery eller gFlytter filer til et galleri, etter navn (opprettes hvis nytt) eller etter id. Utelates begge, flyttes de tilbake til hovedlisten.
delete *share (kan gjentas), g, otl, withfilesSletter filer, tekster, korte URL-er, gallerier, engangslenker eller en hvilken som helst blanding. En share matches først mot filene dine og deretter mot tekstene og lenkene dine, så kalleren trenger ikke sortere dem etter type. Engangslenker oppgis separat i otl: å fjerne en lenke må ikke kunne forveksles med å slette filen den peker på.

* Disse handlingene krever en API-nøkkel. De leser eller endrer én kontos egne data, så det finnes ingen anonym form av dem.

Flere om gangen

share og g godtar et gjentatt felt, et JSON-array eller en kommaseparert liste — det verktøyene dine gjør enklest. Duplikater ignoreres.

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
Gallerier

Overalt der et galleri oppgis — ved upload eller ved move — skjer det på de samme to måtene: g for en eksisterende id, eller gallery for et navn, som opprettes hvis det er nytt. Sendes begge, vinner g. Svaret bærer galleri-id-en. Merk at sletting av et galleri bare fjerner galleriet og lar filene bli i hovedlisten — i motsetning til nettskjemaet, som sletter dem etter å ha spurt. Send withfiles=true for å slette dem også: et skript som rydder i grupperingene sine, bør ikke miste opplastinger ved et uhell.

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

Opplastinger kan ikke bruke JSON-kroppen, fordi en fil må sendes som multipart. Gjenta file-delen for å sende flere på én gang. Hver fil rapporteres for seg: svaret bærer en files-liste over de aksepterte og en rejected-liste over de avviste, så en delvis suksess er fortsatt en suksess.

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

Det finnes ingen wget-form av denne. wget kan ikke bygge en multipart/form-data-kropp — den har ikke noe motstykke til curls -F — og opplastinger må være multipart. Bruk curl, eller sett sammen kroppen og boundary selv og send det med --post-file.

Levetid

Valgfritt på alle handlinger som lagrer noe. Godtar rene sekunder, eller et tall etterfulgt av m, h eller d — de samme formene som nettskjemaene. Utelat det eller send 0 for å beholde elementet på ubestemt tid.

Svar

Hvert svar er et JSON-objekt med et ok-felt. Ved suksess bærer det resultatet; ved feil bærer det en stabil error-kode og en lesbar message. Forgren på koden, logg meldingen.

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

Der en fil bærer dem, legger listfiles til file_tags i oppføringen: artist, tittel og album, lest fra ID3, Vorbis-kommentarer eller MP4-atomer da filen ble lastet opp. Nøkkelen er fraværende heller enn null når det ikke er noe å rapportere, som gjelder de fleste filer, så test for den før du leser den. Enkelte felt kan også mangle — en fil kan ha en tittel og ikke noe album. Ingenting annet fra filens metadata eksponeres: et iTunes-kjøp registrerer kjøperens navn og Apple-ID, og de leses med vilje aldri.

{"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"}
]}
Feilkoder
errorHTTPBeskrivelse
unknown_action400Ingen slik handling.
bad_json400Kroppen var ikke gyldig JSON, eller et felt inneholdt en nøstet struktur.
unexpected_parameter400Det kom en parameter som denne handlingen ikke tar — vanligvis en ukodet & i en verdi. Meldingen navngir parametrene.
bad_key401Nøkkelen ble ikke gjenkjent. En feil nøkkel avvises i stedet for stille å behandles som anonym.
bad_url400URL-en er feilformet, eller bruker et annet skjema enn http(s), ftp eller gopher.
bad_lifetime400Levetiden var verken et tall eller et tall etterfulgt av m, h eller d.
no_content400Ingenting ble sendt for lagring.
url_too_long413URL-en er lengre enn grensen.
paste_too_long413Teksten er større enn paste-grensen. Grenser måles i UTF-8-byte, så ikke-latinsk tekst teller mer enn antall tegn antyder.
too_many_files413Flere filer enn ett kall godtar.
no_usable_files415Alle filene ble avvist. Se listen rejected for hvorfor.
backend_unavailable502Oversettelses-backend svarte ikke.
internal500Noe feilet uventet. Det er logget.
Grenser

Kall whoami for å lese gjeldende verdier i stedet for å hardkode dem — de settes av serveroperatøren og kan endre seg. Størrelser er UTF-8-byte.

En shell-klient

0wx.sh pakker inn alt ovenfor. Det er ren POSIX-shell, trenger ingenting annet enn curl og er kort nok til å lese før du kjører det — som er det rette å gjøre med et skript som skal holde API-nøkkelen din. Legg nøkkelen i OWX_KEY i stedet for å sende --key, så holdes den utenfor shell-historikken din.

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

0wx.py gjør det samme som shell-klienten, men tolker svaret og skriver ut hva feltene betyr i stedet for å gi deg rå JSON — legg til --json når du vil ha den rå formen tilbake. Bare standardbibliotek: ingen requests, ingenting å installere. Skriver du din egen klient, er funksjonene send() og report() delene verdt å lese: til sammen viser de hvordan forespørselen bygges, hvordan meldingen hentes ut av en mislykket forespørsel, og hva svarene inneholder.

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

0wx.pl gjør det samme som Python-klienten og skriver ut det samme. Bare kjernemoduler — HTTP::Tiny og JSON::PP har fulgt med Perl siden 5.14, så det er ingenting å installere. Verdt å lese ved siden av Python-klienten hvis du skriver din egen: de to språkene feiler ulikt på en ødelagt forespørsel, og begge skriptene sier hvor.

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

0wx.ps1 er Python-klientens motstykke for Windows: samme kommandoer, samme utskrift, og den tolker svaret i stedet for å gi deg rå JSON — legg til --json for det. Den er skrevet for den Windows PowerShell som allerede er på maskinen, så det er ingenting å installere, og den kjører uendret på PowerShell 7. Du trenger kanskje Set-ExecutionPolicy -Scope Process Bypass i vinduet du kjører den fra; det er Windows som spør om du virkelig mente å kjøre et skript du lastet ned — et rimelig spørsmål, og filen 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'
Et vindu i nettleseren din

0wx.html er det samme settet med faner som skrivebordsklienten, som tre filer — en side, et stilark og et skript — uten installasjon, uten rammeverk, og uten at noe lastes fra andre steder enn dette nettstedet. Tre i stedet for én fordi nettstedets Content-Security-Policy forbyr inline skript og stil, som er verdt å beholde. Filer kan slippes på den. Den må åpnes herfra i stedet for å lagres og åpnes fra disken din: API-et sender ingen cross-origin-headere, så en lokal kopi ville fått hver forespørsel avvist av nettleseren din før den forlot maskinen. Nøkkelen holdes i minnet med mindre du krysser av for å huske den.

https://0wx.org/clients/0wx.html
Et vindu på Windows

0wx-gui.ps1 er det samme settet med faner som skrivebordsklienten, tegnet med WinForms — som betyr ingenting å installere i det hele tatt, siden det allerede er en del av Windows. Legg den i samme mappe som 0wx.ps1: vinduet låner den filens forespørselshåndtering i stedet for å bære en ekstra kopi, så begge trengs. Windows vil spørre før det kjører et skript det ikke skrev selv, som er et rimelig spørsmål; begge filene er korte nok til å lese før du svarer.

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

0wx-gtk.pl er et lite GTK-vindu med faner for opplasting, innliming, forkorting og blaing i filene dine — som liste eller som galleri av miniatyrbilder, filtrert etter galleri. Det er den eneste klienten her som trenger noe installert — Perls GTK3-bindinger — som er verdt å vite ved siden av Windows-vinduet ovenfor, siden det ikke trenger noe som helst. Alt annet det bruker følger med Perl. Nøkkelen holdes bare i minnet: å lukke vinduet glemmer den, og å sette OWX_KEY fyller den inn ved oppstart. Uansett hva det viser deg, er serverens rå svar ett klikk unna under “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
En Android-app

0wx-android.apk gjør det de andre klientene gjør, fra en telefon: laste opp, lime inn, forkorte, oversette og bla i filene dine som liste eller galleri. Å dele en fil til den fra en annen app laster den opp, og å dele tekst lagrer den som tekst. Den ligger ikke i noen appbutikk, så enheten din vil spørre om du tillater installasjonen — et spørsmål som er verdt å ta på alvor generelt, og grunnen til at hele kildekoden også ligger her: åpne den i Android Studio og bygg den selv i stedet for å stole på filen. Bygging krever JDK 21; BUILDING.md inni forteller hvorfor.

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

Det finnes med vilje ingen handling for fjernhenting. Den ville fått serveren til å hente en URL etter kallerens valg, som er en angrepsflate for request forgery, og et skript kan drive det langt hardere enn et skjema. Last opp filen selv i stedet.


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