~0wx.org~ :: Dateien afleggen un anner nütte Warktüüch


Hoochladen TinyURL HugeURL Pastebin Över Mellen Anmellen
Plattdüütsch
English English Deutsch Deutsch 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 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

Dat gifft en API för all Funkschonen op 0wx.org. Du kannst se för Skripten oder Befehlen op de Konsool bruken.

Allens, wat de Formularen op disse Siet doot, för Skripten. Jede Antwoort is JSON, ok de Fehlers, dorüm muttst du nienich raden, wat en Body en Resultat oder en Verkloren is.

En Anfraag maken

POST an den Endpunkt, mit Formular-Parameters oder mit en JSON-Body. Beides is liek; nimm, wat dien Warktüüch lichter maakt. De Parameter action söcht ut, wat maakt warrt. Bruuk --data-urlencode för allens, wat en Minsch intippt hett — Text, en URL, en Översetten — denn -d schickt den Weert roh, un he warrt bi't eerste & afsneden. Eenfach -d langt för faste Weerten as action sülven. wget hett gor keen --data-urlencode, dorüm muttst du bi wget so'n Weerten sülven prozentkodeern oder en JSON-Body schicken, de keen Kodeern bruukt.

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
Weerten mit &

In en Formular-Body trennt & de Parameters, un curl -d kodeert nich, wat du em giffst. En URL mit Anfraag warrt dorüm bi ehr eerste & afsneden, un de Rest kummt as egen Parameters an. Bruuk --data-urlencode oder schick JSON. Parameters, de dor nich hen hööert, warrt afwiest un nich övergahn, dorüm geiht dat luud scheef, statt dat en halven Link spiekert warrt.

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

Kannst laten. Ahn Slötel is en Anfraag anonym un deit nipp un nau as en anonymen Besöker — dat Resultat is so oder so apen, de eenzige Ünnerscheed is, wat dat in dien Dateilist landt. Maak di en Slötel op dien Kontosiet un schick em as Bearer-Token; as Parameter apikey geiht ok, aver en Slötel in de Anfraag landt in Server-Logs un in de Browser-Historie.

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
Akschonen
actionParametersBeschrieven
whoamiBestätigt, dat en Slötel geiht, un seggt de aktuellen Grenzen. Kost nix; roop dat toeerst op.
ipSeggt dien Adress, ehr PTR, dat Land, de Region un de Stadt, wo se hen hört, de Koordinaten un den User-Agent, den du schickt hest. Bruukt keen Slötel un antwoort mit un ahn liek. Mit Afsicht enger as de Websiet: keen WHOIS, keen DNS-Zoon un keen Blocklisten, dorüm kost en Oproop den Server nix as een Lesen ut de lokale Datenbank.
uploadfile (kann wedderhaalt warrn), resize, lifetime, gallery oder g *Laadt een oder mehr Dateien hooch. Mutt multipart/form-data wesen. En Galerie nömen leggt se direkt dor in un gifft ehr ID trüch.
tinyurlurl, lifetimeMaakt en URL körter.
hugeurlurl, lifetimeMaakt en URL länger, absurd lang, mit Afsicht.
pastecontent, lifetimeSpiekert en Textblock un gifft en Link dor hen trüch.
translatecontent, to, fromÖversett Text. to un from sünd Codes ut de Akschoon langs — oppasst, dat sünd nich jümmers Landcodes: Däänsch is da, nich dk. from kann wegblieven oder auto wesen, denn kennt dat Backend de Spraak vun sülven; angeven gifft bi korten Text en beter Resultat.
langsList de Spraken op, de translate nimmt, as supported_langs: een Objekt per Spraak, Code na Naam, in de Reeg, in de de Siet se anbüdt. Bruukt keen API-Slötel.
dyndnskey, ip, formatFrischt en dünaamschen DNS-Naam op. De eenzige Akschoon, de keen API-Slötel bruukt: Se warrt vun en Router opropen, un de hett een Feld för en URL un keen Weg, en Header to schicken. key is de Update-Slötel för den Naam, de in dien Konto wiest warrt, nich dien API-Slötel. Laat ip weg, denn warrt de Adress bruukt, vun de du opröppst. De Antwoort is dat gängige dyndns2-Woort — good, nochg, badauth, abuse oder dnserr — as blanken Text, denn dat is dat, wat Routers leest; häng format=json an för dat normale JSON.
listfiles *page, gList dien Dateien op mit allens, wat dat Info-Feld wiest, dorto dat lütte Bild un den direkten Link. g begrenzt dat op een Galerie, none op Dateien ahn Galerie.
listpastes *pageList dien Texten op, jeden mit en Vörkiek vun 200 Teken statt den helen Text.
listurls *pageList dien korten un riesigen URLs op, mit de Adress, op de jede wiest.
otl *shareMaakt en Eenmaal-Link na een vun dien Dateien. Jeden Oproop maakt en niegen, dorüm gifft de sülvige Datei för twee Lüüd twee Links.
listotl *pageList dien aktiven Eenmaal-Links op, de Datei, op de jeden wiest, un wat de Datei siet dem aflopen is.
listgalleries *List dien Galerien op mit IDs, Naams, Dateitall un wat se apen sünd.
gallery *g, publishSeggt, wat en Galerie apen is, un ännert dat, wenn publish angeven is.
move *share (kann wedderhaalt warrn), gallery oder gVerschufft Dateien in en Galerie, na Naam (warrt anleggt, wenn nieg) oder na ID. Fehlt beides, gaht se trüch in de Hööftlist.
delete *share (kann wedderhaalt warrn), g, otl, withfilesLöscht Dateien, Texten, korte URLs, Galerien, Eenmaal-Links oder wat dor vun tosamen. En Share warrt toeerst mit dien Dateien un denn mit dien Texten un Links vergleken, dorüm mutt de Oproper se nich na Sort sorteern. Eenmaal-Links kaamt för sik in otl: En Link wegmaken dörv nich mit dat Löschen vun de Datei to verwesseln wesen, op de he wiest.

* Disse Akschonen bruukt en API-Slötel. Se leest oder ännert de Daten vun een Konto, dorüm gifft dat keen anonyme Form vun jem.

Mehr op een Maal

share un g nehmt en wedderhaalt Feld, en JSON-Array oder en List mit Kommas — wat dien Warktüüch am lichtsten maakt. Dubbelte warrt övergahn.

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
Galerien

Överall, wo en Galerie nöömt warrt — bi upload oder bi move — geiht dat op de sülvigen twee Aarden: g för en ID, de dat al gifft, oder gallery för en Naam, de anleggt warrt, wenn he nieg is. Warrt beides schickt, winnt g. De Antwoort hett de Galerie-ID. Oppasst: En Galerie löschen maakt bloots de Galerie weg un lett ehr Dateien in de Hööftlist — anners as dat Web-Formular, dat se na en Nafraag mit löscht. Giff withfiles=true mit, üm se ok to löschen: En Skript, dat sien Gruppen opruumt, schall nich ut Versehn de Uploads verleren.

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
Dateien hoochladen

Uploads köönt den JSON-Body nich bruken, denn en Datei mutt as multipart schickt warrn. Wedderhaal den Deel file, üm mehr op een Maal to schicken. Jede Datei warrt för sik meldt: De Antwoort hett en List files mit de annahmen un en List rejected mit de afwiesten, dorüm is en halven Erfolg jümmers noch en Erfolg.

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

Dorvun gifft dat keen wget-Form. wget kann keen multipart/form-data-Body boen — dat hett nix as -F vun curl — un Uploads mööt multipart wesen. Bruuk curl, oder sett Body un Boundary sülven tosamen un schick dat mit --post-file.

Leevtied

Kannst laten bi jede Akschoon, de wat spiekert. Nimmt blanke Sekunnen oder en Tall mit m, h oder d achteran — de sülvigen Formen as de Web-Formularen. Laat dat weg oder giff 0 an, denn blifft dat för jümmers.

Antwoorten

Jede Antwoort is en JSON-Objekt mit en Feld ok. Wenn dat klappt hett, steiht dat Resultat dor in; wenn nich, en fasten Code error un en message, de en Minsch lesen kann. Verdeel na den Code, schriev de Naricht in't Log.

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

Wo en Datei welk hett, sett listfiles file_tags to ehren Indrag: Künstler, Titel un Album, bi't Hoochladen ut ID3, Vorbis-Kommentaren oder MP4-Atoms lesen. De Slötel fehlt, statt null to wesen, wenn dor nix to mellen is, un dat is bi de mehrsten Dateien so, dorüm prööf, wat he dor is, ehr du em leest. Ok enkelte Feller köönt fehlen — en Datei kann en Titel hebben un keen Album. Nix anners ut de Metadaten vun de Datei warrt wiest: En iTunes-Koop hett den Naam un de Apple-ID vun den Köper in sik, un de warrt mit Afsicht nienich lesen.

{"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"}
]}
Fehlercodes
errorHTTPBeschrieven
unknown_action400So en Akschoon gifft dat nich.
bad_json400De Body weer keen güllig JSON, oder en Feld harr wat Inschachteltes.
unexpected_parameter400Dor is en Parameter ankamen, den disse Akschoon nich nimmt — meist en & in en Weert, dat nich kodeert is. De Naricht nöömt de Parameters.
bad_key401De Slötel is nich kennt worrn. En verkehrten Slötel warrt afwiest un nich stillswiegend as anonym nahmen.
bad_url400De URL is kaputt oder bruukt en anner Schema as http(s), ftp oder gopher.
bad_lifetime400De Leevtied weer keen Tall un ok keen Tall mit m, h oder d achteran.
no_content400Nix to'n Spiekern schickt.
url_too_long413De URL is länger as de Grenz.
paste_too_long413De Text is grötter as de Grenz för Texten. Grenzen warrt in UTF-8-Bytes meten, dorüm tellt nich-latiensch Text mehr, as de Tekentall vermoden lett.
too_many_files413Mehr Dateien, as een Oproop annimmt.
no_usable_files415All Dateien sünd afwiest worrn. Kiek in de List rejected, worüm.
backend_unavailable502Dat Översett-Backend hett nich antwoort.
internal500Wat is unverwachtens scheefgahn. Dat is mitschreven worrn.
Grenzen

Roop whoami op, üm de aktuellen Weerten to lesen, statt se fast intoschrieven — de Server-Betriever sett se, un se köönt sik ännern. Grötten sünd UTF-8-Bytes.

En Shell-Client

0wx.sh packt allens vun baven in. Dat is rein POSIX-Shell, bruukt nix as curl, un dat is kort noog, üm dat to lesen, ehr du dat lopen lettst — un so schull een dat ok maken mit en Skript, dat dien API-Slötel in de Hand kriggt. Legg den Slötel in OWX_KEY, statt --key mittogeven, denn blifft he ut dien Shell-Historie rut.

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-Client

0wx.py deit dat sülvige as de Shell-Client, aver he leest de Antwoort ut un gifft ut, wat de Feller bedüüdt, statt di roh JSON to geven — häng --json an, wenn du de rohe Form trüch hebben wullt. Bloots Standardbibliothek: keen requests, nix to installeern. Wenn du dien egen Client schriffst, sünd sien Funkschonen send() un report() de Delen, de sik to lesen lohnt: tosamen wiest se, wo de Anfraag boet warrt, wo een de Naricht ut en scheefgahn Anfraag rutkriggt, un wat in de Antwoorten steiht.

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-Client

0wx.pl deit dat sülvige as de Python-Client un gifft dat sülvige ut. Bloots Core-Modulen — HTTP::Tiny un JSON::PP sünd siet 5.14 bi Perl mit bi, dorüm gifft dat nix to installeern. Lohnt sik, dat neven den Python-Client to lesen, wenn du dien egen schriffst: De beiden Spraken gaht bi en kaputte Anfraag verscheden scheef, un beide Skripten seggt, wo.

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

0wx.ps1 is dat Gegenstück to den Python-Client för Windows: de sülvigen Befehlen, de sülvige Utgaav, un he leest de Antwoort ut, statt di roh JSON to geven — häng dorför --json an. He is för de Windows PowerShell schreven, de al op de Maschien is, dorüm gifft dat nix to installeern, un he löppt unännert op PowerShell 7. Villicht bruukst du Set-ExecutionPolicy -Scope Process Bypass in dat Finster, ut dat du em startst; dat is Windows, dat fraagt, wat du würklich en daallaadt Skript lopen laten wullt — en gode Fraag, un de Datei is kort noog, üm se vörher to lesen.

$env:OWX_KEY = 'YOUR_KEY'
.\0wx.ps1 listfiles
.\0wx.ps1 paste --content 'hello & world'
.\0wx.ps1 upload --file .\holiday.jpg --gallery 'Holiday 2026'
En Finster in dien Browser

0wx.html is de sülvige Sats Rieders as de Desktop-Client, as dree Dateien — en Siet, en Stylesheet un en Skript — ahn Installeern, ahn Framework, un nix warrt vun annerswo laadt as vun disse Siet. Dree statt een, denn de Content-Security-Policy vun de Siet verbüdt Skript un Style inline, un dat schull so blieven. Dateien köönt dor op fallen laten warrn. Dat mutt vun hier opmaakt warrn un nich spiekert un vun dien Fastplaat: De API schickt keen Cross-Origin-Headers, dorüm weer bi en lokale Kopie jede Anfraag vun dien Browser afwiest, ehr se rutgeiht. De Slötel blifft in't Spieker, wenn du nich ankrüüzt, dat he sik markt warrn schall.

https://0wx.org/clients/0wx.html
En Finster op Windows

0wx-gui.ps1 is de sülvige Sats Rieders as de Desktop-Client, mit WinForms teekent — dat heet, dor is gor nix to installeern, denn dat is al en Deel vun Windows. Legg em in den sülvigen Orner as 0wx.ps1: Dat Finster lehnt sik de Anfraag-Verarbeiden vun disse Datei, statt en twete Kopie mittoslepen, dorüm bruukt dat beide. Windows fraagt, ehr dat en Skript lopen lett, dat dat nich sülven schreven hett, un dat is en gode Fraag; beide Dateien sünd kort noog, üm se to lesen, ehr du antwoortst.

powershell -ExecutionPolicy Bypass -File .\0wx-gui.ps1
En Finster op Linux mit GTK

0wx-gtk.pl is en lütt GTK-Finster mit Rieders för't Hoochladen, Infögen, Körtermaken un för't Kieken in dien Dateien — as List oder as Galerie vun lütte Biller, na Galerie filtert. Dat is de eenzige Client hier, de wat Installeertes bruukt — de GTK3-Anbinnen vun Perl — un dat is goot to weten neven dat Windows-Finster baven, dat bruukt nämlich gor nix. All anner, wat he bruukt, is bi Perl mit bi. De Slötel warrt bloots in't Spieker hollen: Finster tomaken vergitt em, un OWX_KEY setten füllt em bi't Starten in. Wat he di ok wiest, de rohe Antwoort vun den Server is een Klick wieder ünner “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 deit, wat de annern Clients doot, vun't Telefon ut: hoochladen, infögen, körter maken, översetten un in dien Dateien kieken as List oder Galerie. En Datei ut en anner App dor hen delen laadt se hooch, un Text delen spiekert em as Text. He is in keen App-Store, dorüm fraagt dien Reedschop, wat du dat Installeern verlöövst — en Fraag, de een in't Allgemeen eernst nehmen schull, un de Grund, worüm de hele Quellcode ok hier liggt: Maak em in Android Studio op un bo em sülven, statt de Datei to troen. Bon bruukt JDK 21; de BUILDING.md dor in seggt, worüm.

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

Dat gifft mit Afsicht keen Akschoon, de wat vun buten haalt. De weer den Server dorto bringen, en URL to halen, de de Oproper utsöcht, un dat is en Angreepsfläch för Request Forgery, un en Skript kann dat veel dulliger andrieven as en Formular. Laad de Datei lever sülven hooch.


(p) 2018 0wx.org -/- Löppt mit Linux un GNU. Live free or die! (root@0wx.org)