ClanStat/app/collect.py

81 lines
3.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Импорт модулей стандартной библиотеки
import re
# Импорт сторонних модулей
from pyrogram.types import Message
from pyrogram.enums import MessageEntityType
# Импорт модулей приложения
from . import db
from .utils import get_telegram_id, get_telegram_data, clean_icons
async def parse_wins_top(message: Message) -> None:
"""Выполняет парсинг данных топа побед членов клана"""
if message.text.startswith('🏆 Топ по победам'):
players = message.text.split('\n')
players.pop(0)
players.pop(0)
WINS = list()
for idx, player in enumerate(players):
player = re.sub(r'^\d+. ', '', player) # удаляет нумерацию
player, battle_count = player.split(' - ') # разделяет ник и количество побед в клановых сражениях
player = clean_icons(player)
battle_count = battle_count.replace('', '') # удаляем эмодзи мечей
battle_count = int(re.sub(r'[^\x00-\x7F]', '', battle_count)) # преобразовывает строку в число
player_url, player_telegram_id = await get_telegram_data(message, idx)
WINS.append(
{
'telegram_id': player_telegram_id,
'username': player,
'count': battle_count,
'url': player_url,
}
)
print(WINS)
db.add_data(WINS, True)
else:
pass
async def parse_donates_top(message: Message) -> None:
"""Выполняет парсинг данных топа пожертвований членов клана"""
if message.text.startswith('🏆 Топ по пожертвованиям'):
players = message.text.split('\n')
# Удаляет из массива строку с заголовком и последующую пустую строку
players.pop(0)
players.pop(0)
DONATES = list()
for idx, player in enumerate(players):
player = re.sub(r'^\d+. ', '', player) # удаляет нумерацию
player, donates_count = player.split(' - ') # разделяет ник и количество пожертвований в клановую сокровищницу
player = clean_icons(player)
donates_count = donates_count.replace(' 💠', '') # удаляем эмодзи пожертвований
donates_count = int(re.sub(r'[^\x00-\x7F]', '', donates_count)) # преобразовывает строку в число
player_url, player_telegram_id = await get_telegram_data(message, idx)
DONATES.append(
{
'telegram_id': player_telegram_id,
'username': player,
'count': donates_count,
'url': player_url,
}
)
print(DONATES)
db.add_data(DONATES, False)
else:
pass