A web app to easily transfer your user data from one Lemmy instance to another ( stablenarwhal.github.io )

cross-posted from: https://slrpnk.net/post/10823519

So I wrote a little web app that allows a user to move their user data, like settings and subscribed/banned communities, from one account/instance to another.

It runs completely client-side, but is hosted on GitHub for the moment. Maybe it'll be of some use!

Features:

  • Don't trust me or GitHub? Clone the project and host it yourself or run it locally (Example in Wiki)
  • Export user data from any Lemmy instance (>=v0.19)
  • Download user data as a text file
  • Modify user data, e.g. to add or remove followed users/communites (Example in Wiki)
    • "display_name"
    • "bio"
    • "avatar"
    • "banner"
    • "matrix_id"
    • "bot_account"
    • "settings"
    • "followed_communities"
    • "saved_posts"
    • "saved_comments"
    • "blocked_communities"
    • "blocked_users"
    • "blocked_instances"
  • Transfer user data to the target account on the target instance
warmaster ,

Could this work offline as a PWA? By offline I mean not hosted on your server, but locally.

Emotet OP ,
@Emotet@slrpnk.net avatar

Sure, the code is completely client-side, simply clone it. If you're running into CORS problems due to the file:// scheme Origin of opening a local file, simply host it as a local temporary server with something like python -m http.server .

This is due to the two ways most instances validate Cross-Origin requests:


  • Sending Access-Control-Allow-Origin: * (allow all hosts)
  • Dynamically putting your Origin into the Origin header of the response to your requests by the backend

file:// URLs will result in a null or file:// Origin which can't be authorized via the second option, therefore the need to sometimes host the application via (local) webserver.

Anon518 ,

What about forking lasim, which is now inactive? https://github.com/CMahaff/lasim

It's better than the built-in option because it gives you more options. For example, if I only want to add blocks from one account to another without overwriting any other settings. I don't see that your tool allows for that.

Emotet OP , (edited )
@Emotet@slrpnk.net avatar

The whole point of this being a web app is to make it as easy as possible for the user to download/modify/transfer their user data. LASIM is a traditional app the user has to download and install, similar to a script this web app was developed to replace due to being too difficult to use for some users.

The import functionality targeted by this API is additive and my app features a built-in editor to add, modify or remove information as the user sees fit. To achieve your stated goal, you'd have to remove anything except the blocked_users entries before importing, which my app supports, I added a wiki entry explaining the workflow in more Detail.

I may add options to modify the exported data in some ways via a simple checkbox in the future, but I wouldn't count on it. I'm always open for pull requests!

Anon518 ,

Thanks for the info!

I may add options to modify the exported data in some ways via a simple checkbox in the future, but I wouldn’t count on it.

The 2nd screenshot https://github.com/StableNarwhal/Lemmy-Userdata-Migration/wiki/How-to-only-export-or-transfer-a-part-of-my-user-data,-e.g.-blocked-instances%3F shows that feature already exists?

Emotet OP ,
@Emotet@slrpnk.net avatar

Indeed it does, I was talking about adding a checkbox tagged "Only transfer blocked users" instead of having to click through some menus.

kionite231 ,

what kind of data does it export? post, comments, upvotes, downvotes, subscribed communities?

Emotet OP ,
@Emotet@slrpnk.net avatar
  • "display_name"
  • "bio"
  • "avatar"
  • "banner"
  • "matrix_id"
  • "bot_account"
  • "settings"
  • "followed_communities"
  • "saved_posts"
  • "saved_comments"
  • "blocked_communities"
  • "blocked_users"
  • "blocked_instances"
Nighed ,
@Nighed@sffa.community avatar

Isn't this functionality already built into the default web UI?

Emotet OP ,
@Emotet@slrpnk.net avatar

The export/import functionality is, yes. This implementation uses the same API endpoints, but the main reason for this existing:

An instance I was on slowly died, starting with the frontend (default web UI). At least at the time, no client implemented the export/import functionality, so I wrote a simple script in Bash to download the user data, if the backend still works.
Running a script can still be a challenge to some users, so I wrote a web application with the same functionality.
It's a bit redundant if we're talking about regularly working instances, but can be of use if the frontend isn't available for some reason.

Blaze ,
@Blaze@reddthat.com avatar

Interesting. I guess it can be useful for feddit.de (now feddit.org) users

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • fediverse@lemmy.world
  • test
  • worldmews
  • mews
  • All magazines