add check_aliases command

This commit is contained in:
bakatrouble 2025-07-14 17:20:17 +03:00
parent a289d24698
commit b41f303d3c
2 changed files with 25 additions and 0 deletions

View File

@ -178,3 +178,7 @@ class E621:
if 'success' in r:
return []
return [E621PostVersion.from_dict(p) for p in r]
async def get_tag_aliases(self, name: str) -> List[str]:
r = (await self.client.get('/tag_aliases.json', params={'search[antecedent_name]': name})).json()
return [alias['consequent_name'] for alias in r]

21
main.py
View File

@ -297,6 +297,27 @@ async def list_tags(msg: Message):
await msg.reply(f'Monitored tags:\n\n{lines}')
@dp.message(filters.Command('check_aliases'), ChatFilter)
async def check_aliases(msg: Message):
tags = [t.decode() for t in await redis.smembers(REDIS_SUBS_KEY)]
tags.sort()
progress = 0
lines = []
resp = await msg.reply('tmp')
async def send_progress():
await resp.edit_text(f'Checking aliases {progress}/{len(tags)}\n\n'
f'{"\n".join(lines)}', parse_mode=ParseMode.HTML)
for sub in tags:
for subtag in sub.split():
if replacements := await e621.get_tag_aliases(subtag):
lines.append(f'- {subtag} -> {replacements[0]}, (<code>{sub}</code>)')
progress += 1
await send_progress()
@dp.message(filters.Command('update'), ChatFilter)
async def update(msg: Message):
await check_updates()