Ich hoffe, dass das hier passt: Ich würde gerne diverse Links automatisiert in /c/geschichte posten. Die Links habe ich, ich hab für Reddit auch einen passenden Workflow zum Suchen von neuen Geschichts-Links, ich kann etwas Python und hier anscheinend auch mein Profil als Bot markieren. Und wenn man googlet, gibt es anscheinend auch einen Javascript-basierten AI-Art-Bot, eine Javascript-Library und eine etwas spartanische offizielle API-Doku.

Aber ich steh total auf dem Schlauch. Hat jemand den richtigen Tipp, wie ich hier per Python ganz banal einen Link in eine Community einreiche?

  • Knusper@feddit.de
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    Puzzle-Lösen gehört zum Programmieren dazu, daher kann ich dir das jetzt nicht vollkommen vorkauen (ohne es nicht direkt selbst zu implementieren), aber ich würde versuchen anhand der TypeScript-API hier zu adaptieren: https://join-lemmy.org/api/classes/LemmyHttp.html#login

    Also z.B. bei der login-Methode, das will einen Parameter form vom Typ Login. Wenn du dann in der Doku auf Login draufklickst, siehst du, dass es ein Typ mit zwei Feldern ist:

    • username_or_email: string
    • password: string

    Ich gehe davon aus, dass die API JSONs frisst, daher das Ganze in einem JSON kodiert:

    {
        "username_or_email": "mettwurstkaninchen",
        "password": "123456"
    }
    

    Dann wieder bei der Login-Methode geschaut, da steht: HTTP.POST /user/login
    D.h. deiner Python HTTP-Client-Bibliothek sagen, sie soll das JSON mittels post-HTTP-Methode (und daher im HTTP-Body) an die URL https://feddit.de/user/login schicken.
    Als Antwort wirst du dann vermutlich wieder irgendein JSON bekommen, mit vermutlich einem auth-Feld dessen Inhalt mit ey beginnt.¹

    Diesen Inhalt kannst du dann in das auth-Feld bei der createPost-Methode stopfen. Und das Ganze eben wieder nach dem gleichen Schema befüllen, wie die login-Methode.

    ¹ Das auth-Feld beginnt mit ey, weil darin ein Base64-kodiertes JSON ist, und das Zeichen { in Base64 eben als ey kodiert wird.