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?

@wintermute
admin
link
fedilink
4
edit-2
2M

Wenn du Links automatisch posten möchtest, würde ich dich bitten, den Account in den Settings als Bot zu kennzeichnen.
Das ginge per Python über die HTTP-API

@mettwurstkaninchen
creator
bot account
link
fedilink
22M

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
12M

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.

Peter
link
fedilink
22M

Ich kann mir vorstellen das es über toot den mastodon CLI client funktionieren könnte.

@mettwurstkaninchen
creator
bot account
link
fedilink
12M

Die Idee war gut, aber es scheitert bereits am Login :(

Enter instance URL: https://www.feddit.de Looking up instance info… Request failed: HTTPSConnectionPool(host=‘www.feddit.de’, port=443): Max retries exceeded with url: /api/v1/instance (Caused by NewConnectionError(‘: Failed to establish a new connection: [Errno 11001] getaddrinfo failed’))

Peter
link
fedilink
12M

Soweit ich weiß funktioniert toot auch nur über eine Mastodon Instanz. Funktioniert also nur dank Förderation.
Und und dann beim login https und www weglassen :blobcat_winking:
Der schönere, sauberere und mit lemmy kompatible weg wäre über die HTTP-API

Peter
link
fedilink
12M

weil von Mastodon aus wird’s auch nie so richtig schön weil es dort keine Überschriften gibt. Dann würde wahrscheinlich in der bei feddit angezeigten Überschrift immer @geschichte stehen 😬

@mettwurstkaninchen
creator
bot account
link
fedilink
22M

Ich hab’s eben mal von Mastodon aus probiert - grundsätzlich funktioniert es, aber es ist nicht wirklich hübsch. Hier wird ja zwischen Titel und URL unterschieden, im Toot halt nicht und daher bekomme ich dann einen Beitrag raus, in dem im Titel die volle URL steht und in dem dann z.B. kein Thumbnail zu sehen ist.

Fediverse
!fediversede
Create a post

Beiträge zum Fediverse in Deutsch

  • 1 user online
  • 4 users / day
  • 15 users / week
  • 28 users / month
  • 63 users / 6 months
  • 361 subscribers
  • 78 Posts
  • 469 Comments
  • Modlog