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?

  • @mettwurstkaninchenOPB
    link
    fedilink
    211 months ago

    Den Account habe ich eben als Bot gekennzeichnet. Aber ansonsten - ich steh gerade auf einem Programmierlevel, bei dem ich mithilfe der entsprechenden API-Libraries mit diversen APIs kommunizieren kann, aber wenn ich in die Doku da schaue, bin ich komplett lost. Wie authentifiziere ich mich? Wo sind hier die Endpoints? Wie muss ein Post dann aussehen? Wie sag ich dem Ding jetzt, was der Link ist und was der Linktext?

    (Und dich mal etwas anders gefragt: Ist das überhaupt erwünscht hier?)

    • @Knusper
      link
      fedilink
      English
      111 months 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.