1
0
Fork 0
mirror of https://github.com/myned/modufur.git synced 2024-12-24 14:27:27 +00:00

Fix and refactor _get_posts blacklisting logic

This commit is contained in:
Dylan Dizon 2018-11-15 15:43:53 -05:00
parent 024949390e
commit b751ebc861

View file

@ -657,9 +657,19 @@ class MsG:
async def _get_posts(self, ctx, *, booru='e621', tags=[], limit=1, previous={}): async def _get_posts(self, ctx, *, booru='e621', tags=[], limit=1, previous={}):
blacklist = set() blacklist = set()
# Creates temp blacklist based on context # Creates temp blacklist based on context
for bl in (self.blacklists['global_blacklist'], self.blacklists['guild_blacklist'].get(guild.id, {}).get(ctx.channel.id, set()), self.blacklists['user_blacklist'].get(ctx.author.id, set())): for lst in ('blacklist', 'aliases'):
for tag in bl: default = set() if lst == 'blacklist' else {}
blacklist.update([tag] + list(self.aliases[tag]))
for bl in (self.blacklists['global'].get(lst, default),
self.blacklists['channel'].get(ctx.channel.id, {}).get(lst, default),
self.blacklists['user'].get(ctx.author.id, {}).get(lst, default)):
if lst == 'aliases':
temp = list(bl.keys()) + [tag for tags in bl.values() for tag in tags]
temp = set(temp)
else:
temp = bl
blacklist.update(temp)
# Checks for, assigns, and removes first order in tags if possible # Checks for, assigns, and removes first order in tags if possible
order = [tag for tag in tags if 'order:' in tag] order = [tag for tag in tags if 'order:' in tag]
if order: if order:
@ -693,8 +703,9 @@ class MsG:
if 'swf' in post['file_ext'] or 'webm' in post['file_ext']: if 'swf' in post['file_ext'] or 'webm' in post['file_ext']:
continue continue
try: try:
post_tags = post['tags'].split(' ')
for tag in blacklist: for tag in blacklist:
if tag in post['tags']: if tag in post_tags:
raise exc.Continue raise exc.Continue
except exc.Continue: except exc.Continue:
continue continue