An dieser Stelle reposte ich auch auf der neuen deutschen Main-Instanz zwei einfache Wege, um seinen User (Settings und abonnierte/geblockte Communities) von einer Lemmy Instanz auf eine andere umzuziehen, beispielsweise von feddit.de auf feddit.org, von meinem ursprünglichen Post unter feddit.de/c/main ( https://alexandrite.app/feddit.de/post/11325409)
Weg 1, falls man noch einen Browser mit aktiver Session auf feddit.de hat:
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:
- Man gehe auf https://feddit.de/api/v3/user/export_settings und speichert die zurückgegebene Datei als irgendwas.json
- Man nehme einen (neuen) Account auf einer stabilen Instanz der Wahl, gehe auf /settings und lade irgendwas.json über den Import-Button hoch.
- 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.
Weg 2:
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 /Windows mit WSL
- 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. getMyFedditUserData.sh
- Script in beliebigen Textprogramm öffnen, Username/Mail und Passwort ausfüllen (optional Instanz ändern)
- Terminal im Ordner des Scripts öffnen und
chmod +x getMyFedditUserData.sh
ausführen (Namen eventuell anpassen)
./getMyFedditUserData.sh
im Terminal eingeben
- 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 https://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:
#!/bin/bash
# Basic login script for Lemmy API
# CHANGE THESE VALUES
my_instance="https://feddit.de" # e.g. https://feddit.nl
my_username="" # e.g. freamon
my_password="" # e.g. hunter2
########################################################
# Lemmy API version
API="api/v3"
########################################################
# Turn off history substitution (avoid errors with ! usage)
set +H
########################################################
# Login
login() {
end_point="user/login"
json_data="{\"username_or_email\":\"$my_username\",\"password\":\"$my_password\"}"
url="$my_instance/$API/$end_point"
curl -H "Content-Type: application/json" -d "$json_data" "$url"
}
# Get userdata as JSON
getUserData() {
end_point="user/export_settings"
url="$my_instance/$API/$end_point"
curl -H "Authorization: Bearer ${JWT}" "$url"
}
JWT=$(login | jq -r '.jwt')
printf 'JWT Token: %s\n' "$JWT"
getUserData | jq > myFedditUserData.json
@elvith@feddit.org hat mein Script auch in PowerShell nachgebaut, welches unter Windows ohne WSL auskommt: https://gist.github.com/elvith-de/89107061661e001df659d7a7d413092b
# CHANGE THESE VALUES
$my_instance="https://feddit.de" # e.g. https://feddit.nl
$target_file = "C:\Temp\export.json"
########################################################
#Ask user for username and password
$credentials = Get-Credential -Message "Logindata for $my_instance" -Title "Login"
$my_username= $credentials.UserName
$my_password= $credentials.GetNetworkCredential().Password
# Lemmy API version
$API="api/v3"
# Login
function Get-AuthToken() {
$end_point="user/login"
$json_data= @{
"username_or_email" = $my_username;
"password" = $my_password
} | ConvertTo-Json
$url="$my_instance/$API/$end_point"
(Invoke-RestMethod -Headers @{"Content-Type" = "application/json"} -Body $json_data -Method Post -Uri $url).JWT
}
# Get userdata as JSON
function Get-UserData() {
$end_point="user/export_settings"
$url="$my_instance/$API/$end_point"
Invoke-RestMethod -Headers @{"Authorization"="Bearer $($JWT)"} -Method Get -Uri $url
}
$JWT= Get-AuthToken
Write-Host "Got JWT Token: $JWT"
Write-Host "Exporting data to $target_file"
Get-UserData | ConvertTo-Json | Out-File -FilePath $target_file
I simply can't wrap my head around the thought process behind launching a clusterfuck like this. Y Combinator probably didn't do their due diligence and simply rode the fading AI Bubble, so I can at least understand how the funding might have been approved.
But actively leaving your $250,000+/year job to team up with some questionable choices to basically fork two OS projects, change the discord links and generate an illegal licence for that shit show, all while proudly stating, publicly, "dawg i chatgpt'd the license, anyone is free to use our app for free for whatever they want. if there's a problem with the license just lmk i'll change it. we busy building rn can't be bothered with legal" when they are made aware of the fact.
This is absolutely insane, sounds like someone was about to get fired and decided to use some personal relations and fresh graduates to somehow successfully cash in one last time with absolutely no regard of even the basics. Pretty wild that those guys even managed to figure out how to found a Startup. Probably asked ChatGPT for instructions there, as well.