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):

 
    	% 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:

 
    	#!/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.

Comments

19

Comments

19