Howto: Einstellungen, geblockte/followed Communities und mehr von feddit.de auf andere Instanz übertragen

Lemmy bietet seit Version 0.19 eine Funktion an, um die user data zu ex- und importieren. Das geht normalerweise über einen Button in den Settings des Webinterfaces, das geht aktuell bei feddit.de nicht.

Aber der zugrundeliegende API-Aufruf funktioniert noch, solange man noch mit einem Browser auf feddit.de eingeloggt ist:

  1. Man gehe auf feddit.de/api/v3/user/export_settings und speichert die zurückgegebene Datei als irgendwas.json
  2. Man nehme einen (neuen) Account auf einer stabilen Instanz der Wahl, gehe auf /settings und lade irgendwas.json über den Import-Button hoch.
  3. Voilà, man genieße die neue Instanz.

Das funktioniert mit jeder Instanz >=0.19, man muss lediglich das “feddit.de” in der URL ersetzen. Und wenn das Webinterface funktioniert, geht das auch über den Export- Button in den Settings.

suppenloeffel,

Für die Leute, die keine offene Browser Session haben, hier ein kleines, aber funktionales Bash Script, welches im Ausführungsverzeichnis eine myFedditUserData.json erstellt, welche bei anderen Instanzen importiert werden kann.

Anforderungen:

  • Linux/Mac OS X Installation
  • jq installiert (Unter Ubuntu/Debian/Mint z.B. per sudo apt install -y jq

Anleitung:

  • Folgendes Script unter einem beliebigen Namen mit .sh Endung abspeichern, z.B. getMyFedditUsserData.sh
  • Script in beliebigen Textprogramm öffnen, Username/Mail und Passwort ausfüllen (optional Instanz ändern)
  • Terminal im Ordner des Scripts öffnen und chmod +x getMyFedditUsserData.sh ausführen (Namen eventuell anpassen)
  • ./getMyFedditUsserData.sh
  • Nun liegt im Ordner neben dem Script eine frische myFedditUserData.json

**Anmerkung:**Das Script ist recht simpel, es wird ein JWT Bearer Token angefragt und als Header bei dem GET Aufruf von feddit.de/api/v3/user/export_settings mitgegeben. Wer kein Linux/Mac OS X zur Verfügung hat, kann den Ablauf mit anderen Mitteln nachstellen.

Das Script:


<span style="color:#323232;">#!/bin/bash
</span><span style="color:#323232;">
</span><span style="color:#323232;"># Basic login script for Lemmy API
</span><span style="color:#323232;">
</span><span style="color:#323232;"># CHANGE THESE VALUES
</span><span style="color:#323232;">my_instance="https://feddit.de"			# e.g. https://feddit.nl
</span><span style="color:#323232;">my_username=""			# e.g. freamon
</span><span style="color:#323232;">my_password=""			# e.g. hunter2
</span><span style="color:#323232;">
</span><span style="color:#323232;">########################################################
</span><span style="color:#323232;">
</span><span style="color:#323232;"># Lemmy API version
</span><span style="color:#323232;">API="api/v3"
</span><span style="color:#323232;">
</span><span style="color:#323232;">########################################################
</span><span style="color:#323232;">
</span><span style="color:#323232;"># Turn off history substitution (avoid errors with ! usage)
</span><span style="color:#323232;">set +H
</span><span style="color:#323232;">
</span><span style="color:#323232;">########################################################
</span><span style="color:#323232;">
</span><span style="color:#323232;"># Login
</span><span style="color:#323232;">login() {
</span><span style="color:#323232;">	end_point="user/login"
</span><span style="color:#323232;">	json_data="{"username_or_email":"$my_username","password":"$my_password"}"
</span><span style="color:#323232;">
</span><span style="color:#323232;">	url="$my_instance/$API/$end_point"
</span><span style="color:#323232;">
</span><span style="color:#323232;">	curl -H "Content-Type: application/json" -d "$json_data" "$url"
</span><span style="color:#323232;">}
</span><span style="color:#323232;">
</span><span style="color:#323232;"># Get userdata as JSON
</span><span style="color:#323232;">getUserData() {
</span><span style="color:#323232;">	end_point="user/export_settings"
</span><span style="color:#323232;">
</span><span style="color:#323232;">	url="$my_instance/$API/$end_point"
</span><span style="color:#323232;">
</span><span style="color:#323232;">	curl -H "Authorization: Bearer ${JWT}" "$url"
</span><span style="color:#323232;">}
</span><span style="color:#323232;">
</span><span style="color:#323232;">JWT=$(login | jq -r '.jwt')
</span><span style="color:#323232;">
</span><span style="color:#323232;">printf 'JWT Token: %sn' "$JWT"
</span><span style="color:#323232;">
</span><span style="color:#323232;">getUserData | jq > myFedditUserData.json
</span>
  • All
  • Subscribed
  • Moderated
  • Favorites
  • main@feddit.de
  • khanakhh
  • DreamBathrooms
  • thenastyranch
  • magazineikmin
  • osvaldo12
  • ethstaker
  • Youngstown
  • mdbf
  • slotface
  • rosin
  • everett
  • ngwrru68w68
  • kavyap
  • InstantRegret
  • megavids
  • GTA5RPClips
  • Durango
  • normalnudes
  • cubers
  • tacticalgear
  • cisconetworking
  • tester
  • modclub
  • provamag3
  • anitta
  • Leos
  • JUstTest
  • lostlight
  • All magazines