Пишем простой граббер для Telegram чатов на Python

 Lightroom Zen

На Lightroom Zen есть только небольшое количество бесплатных пресетов, и вам нужно искать их на страницах блога. Но это того стоит, так как качество хорошее, и они, как правило, предназначены для очень специфических целей.

lightroom zen presets

 Presetpro

Предлагая на выбор более 120 пресетов, Presetpro может удовлетворить практически любые возможные запросы.

Собираем данные об участниках

Telegram не выводит все запрашиваемые данные за один раз, а выдает их в пакетном режиме, по 100 записей за каждый запрос.

async def dump_all_participants(channel): """Записывает json-файл с информацией о всех участниках канала/чата""" offset_user = 0    # номер участника, с которого начинается считывание limit_user = 100   # максимальное число записей, передаваемых за один раз  all_participants = []   # список всех участников канала filter_user = ChannelParticipantsSearch('')  while True: participants = await client(GetParticipantsRequest(channel, filter_user, offset_user, limit_user, hash=0)) if not participants.users: break all_participants.extend(participants.users) offset_user += len(participants.users)

Устанавливаем ограничение в 100, начинаем со смещения 0, создаем список всех участников канала all_participants. Внутри бесконечного цикла передаем запрос GetParticipantsRequest.

Проверяем, есть ли у объекта participants свойство users. Если нет, выходим из цикла. В обратном случае добавляем новых членов в список all_participants, а длину полученного списка добавляем к смещению offset_user. Следующий запрос забирает пользователей, начиная с этого смещения. Цикл продолжается до тех пор, пока не соберет всех фолловеров канала.

Самый простой способ сохранить собранные данные в структурированном виде – воспользоваться форматом JSON. Базы данных, такие как MySQL, MongoDB и т. д., стоит рассматривать лишь для очень популярных каналов и большого количества сохраняемой информации. Либо если вы планируете такое расширение в будущем.

В JSON-файле можно хранить и всю информацию о каждом пользователе, но обычно достаточно лишь нескольких параметров. Покажем на примере, как ограничиться набором определенных данных:

all_users_details = []   # список словарей с интересующими параметрами участников канала  for participant in all_participants: all_users_details.append({"id": participant.id, "first_name": participant.first_name, "last_name": participant.last_name, "user": participant.username, "phone": participant.phone, "is_bot": participant.bot})  with open('channel_users.json', 'w', encoding='utf8') as outfile: json.dump(all_users_details, outfile, ensure_ascii=False)

Итак, для каждого пользователя создается свой словарь данных и добавляется в общий список all_user_details, который записывается в JSON-файл.

 CreativeTacos

CreativeTacos предлагает огромную коллекцию из более чем 700 пресетов Lightroom как для компьютеров, так и для мобильных устройств.

creative tacos free lightroom presets

 LookFilter

Этот набор из 12 пресетов накопил миллионы загрузок на сегодняшний день. Цвета стилизованы под пленку.

lookfilter lightroom presets

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий