Получение всех фото профиля

Когда у пользователя больше чем одно фото в профиле и нам нужны они все, а метод  .download_profile_photo() возвращает только первое найденное фото, мы применяем метод .iter_profile_photos().

Метод  .iter_profile_photos(‘@username’, limit=3) получает один обязательный параметр, это имя пользователя, у которого нужно получить все фото, и второй необязательный параметр limit=, который ограничивает количество скачиваемых фото. Еще один необязательный параметр метода — это offset=2, который указывает, сколько фотографий необходимо пропустить, прежде чем скачать первое фото профиля.

.iter_profile_photos(‘@username’, offset=2) — пропустит первые две фото и начнет качать сразу с третьей.

Пример кода ниже, он скачает все фото из профиля и сохранит их в папке с проектом.

from telethon import TelegramClient, events, sync, connection

r_api = 1111
r_hash = ''
with TelegramClient('my', r_api, r_hash, system_version="4.10.5 beta x64") as client:
    for x in client.iter_profile_photos('@name_user'):
        client.download_media(x)

Давайте теперь немного усложним нашу задачу и скачаем все фотки из профиля.  Мы будем качать абсолютно все фотки с профиля, у кого-то может быть одна аватарка, а у кого то их десять. Telegram сохраняет все ваши прошлые аватарки, надеюсь, вы знакомы с этой его особенностью.

Сразу хочу предупредить, что следующий код для новичка может быть сложным в понимании, я постараюсь объяснить максимально просто.

Так же мы используем в этом коде метод .download_media(), который принимает один обязательный аргумент, это объект для скачивания. Второй не обязательный аргумент file=’img/’ , в этом аргументе мы можем передать путь к папке, куда мы хотим сохранять наши файлы, так же можем указать расширение для сохраняемого файла.

from telethon import TelegramClient, events, sync, connection

r_api = 1*******8
r_hash = 'b4******************b'

with TelegramClient('my', r_api, r_hash) as client:
    all_user_group = client.get_participants('t.me/name_group')
    for user in all_user_group:
        for iter_photo in client.iter_profile_photos(user):
            client.download_media(iter_photo, file='img/')

Давайте разбираться, что же тут написано.

В переменную all_user_group заносятся все участники группы;

В цикле for/in итерируемся по списку участников группы;

Во вложенном цикле for/in мы итерируемся  по всем фото указанного пользователя в методе .iter_profile_photos(user), где user — это итератор внешнего цикла;

На каждой итерации вложенного цикла мы передаём каждую найденную фотографию в метод .download_media(), который загружает переданный ему объект, в нашем случае фотографию.



Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: