Skip Navigation

Deleting >4000 junk communities by @LMAO

I recently wrote a command-line utility lemmyverse to find communities indexed by Lemmy Explorer. A quick count shows almost 14%(!) of all communities indexed by lemmyverse are junk communities created by a single user @LMAO (reported here):

 undefined
        % lemmyverse . | wc -l
      30376
    % lemmyverse enoweiooe | wc -l
       4206


  

Here's a python script, using no external dependencies, which uses Lemmy's HTTP API to delete all communities that @LMAO moderates:

 undefined
        #!/usr/bin/env python

    import json
    import urllib.parse
    import urllib.request

    baseurl = "https://lemmy.world"
    username = "admin"
    password = "password"

    def login(user, passwd):
        url = baseurl+"/api/v3/user/login"
        body = urllib.parse.urlencode({
            "username_or_email": user,
            "password": passwd,
        })
        resp = urllib.request.urlopen(url, body.encode())
        j = json.load(resp)
        return j["jwt"]

    def get_user(name):
        query = urllib.parse.urlencode({"username": name})
        resp = urllib.request.urlopen(baseurl+"/api/v3/user?"+query)
        return json.load(resp)

    def delete_community(token, id):
        url = baseurl+"/api/v3/community/delete"
        params = {
            "auth": token,
            "community_id": id,
        }
        body = urllib.parse.urlencode(params)
        urllib.request.urlopen(url, body.encode())

    token = login(username, password)
    user = get_user("LMAO")
    for community in user["moderates"]:
        id = community["community"]["id"]
        try:
            delete_community(token, id)
        except Exception as err:
            print("delete community id %d: %s" % (id, err))


  

Change username and password on lines 8 and 9 to suit.

Hope that helps! :) Thanks for the work you all put in to running this popular instance.

You're viewing a single thread.

22 comments
22 comments