peepo-world / greenhouse

The web app behind peepo.world
https://greenhouse.readthedocs.io/en/latest/
Other
2 stars 2 forks source link

Emote Approval Process #14

Open IZeeLikeEyeZee opened 1 year ago

IZeeLikeEyeZee commented 1 year ago

Approval process similar to 7tv's, but with some added automation to make things easier for moderators. Process would look something like this:

  1. Emote gets uploaded

  2. It gets checked for if it's a duplicate emote, if it is then the user gets notified, shown a comparison between the uploaded emote and the one it is a duplicate of, and can cancel creation or flag it as a mistake and submit the emote with a reason. ⤷ Would like to have a similarity threshold that we can edit if needed ⤷ Sometimes bttv's dupe feature flags similar emotes, but they were cleaned up/made higher-res. This system would allow us to review such cases.

  3. It gets checked against rejected emotes/names with reasons. Fail = deny ⤷ for example if the problem is specifically the name/image combo'd together, then an emote with just said name or image can get through, but not something with the same ⤷ if the reason is just the name (e.g. slurs, bigotry, etc), and the created emote uses that name, it gets denied (same sort of thing for image contents)

  4. Emotes that pass step 2 and 3 get sent to queue for moderator approval.

  5. Insert moderator approval things here (will describe moderator approval options in another issue and link it here when I do)

IZeeLikeEyeZee commented 1 year ago

Moderator approval process details: #17

FFY00 commented 1 year ago

2. It gets checked for if it's a duplicate emote

Hummm, this is... not that easy. Well, we can check if they binary identical, but that doesn't catch visually similar images, and comparing the uploaded image against all the other images is very expensive.

I looked into it, and the best option seems to be calculating a set of hashes dependent only on the visual data, using https://github.com/JohannesBuchner/imagehash, and then comparing the collisions directly.

IZeeLikeEyeZee commented 1 year ago

Sure whatever you think is best, I just know that bttv does it somehow so figured we could probably do smth similar 👍 and we can also rely on reports/memory to filter them out. Maybe we can add something based off the name where it says "is this the emote you're looking for?" and its like an embedded search function to avoid dupes. Idk what the best solution here would be, I just figured dupe system would be good for not having to host as many images, and for keeping things organized :)

IZeeLikeEyeZee commented 1 year ago

Actually I remembered about this tool which probably uses something similar. It works pretty well too and has a dynamic threshold like I was talking about :)