2016-05-12 5 views
3

В приложении нам нужно импортировать контакты пользователя. Мы нашли Telegram.Link, который реализует API Telegram. У этого есть метод, который извлекает контакты. один контакт показан ниже:как восстановить фото телеграммы контакта?

{ 
T: api.type.UserContact, 
id: 148049613, 
first_name: "M.", 
last_name: "Barezban", 
username: "Barezban", 
access_hash: "0x47ad17f617b9e945", 
phone: "989363356056", 
photo: { 
    T: api.type.UserProfilePhoto, 
    photo_id: "0x08d30ecd1b31a7bc", 
    photo_small: { 
    T: api.type.FileLocation, 
    dc_id: 4, 
    volume_id: "0x00000000192931a8", 
    local_id: 75848, 
    secret: "0xac6db13d308318b3" 
    }, 
    photo_big: { 
    T: api.type.FileLocation, 
    dc_id: 4, 
    volume_id: "0x00000000192931a8", 
    local_id: 75850, 
    secret: "0x4f302deb78247cce" 
    } 
}, 
status: { 
    T: api.type.UserStatusOffline, 
    was_online: 1463043346 
}} 

Я не нашел способ скачать фотографию профиля. какой метод я должен использовать?

Я пробовал python-telegram-bot, который реализует API Telegram Bot и имеет два метода, которые могут мне помочь: getUserProfilePhotos и getFile.

Я попробовал bot.getUserProfilePhotos(148049613) и получил telegram.error.NetworkError: Bad Request: user not found (400).

Я также попытался bot.getFile('0x08d30ecd1b31a7bc') и получил telegram.error.NetworkError: Bad Request: invalid file id (400)

Существует также метод, называемый upload.getFile, который использует volume_id, local_id и секрет, но я не знаю, как использовать и вызывать этот метод.

So Как загрузить эту фотографию?

ответ

0

загрузки файла в Телеграмма API осуществляется через:

upload.getFile#e3a6cfb5 location:InputFileLocation offset:int limit:int = upload.File; 

См upload.getFile, а также https://core.telegram.org/api/files#downloading-files

Примечание некоторые из этих типов API существуют устаревшие (look here for the latest), но суть того, как там объясняется работа с файлами.

У вас есть все, что вам нужно. В большинстве случаев вы можете загружать фотографии профиля одним звонком до upload.getFile (до 512 Kb). link выше дает четкие детали.

1) Для InputFileLocation использования

api.type.FileLocation{ 
    dc_id: 4, 
    volume_id: "0x00000000192931a8", 
    local_id: 75850, 
    secret: "0x4f302deb78247cce"} 

2) Для смещения использование: 0

3) Для ограничения использование: 0

Обратите внимание, что вам нужно отправить это из правильного соединения, в этом случае соединение с dc_id = 4, чтобы избежать

{error_code: 303, error_message: "USER_MIGRATE_4"/"FILE_MIGRATE_4"} 
+0

Спасибо за ответ. Знаете ли вы какую-либо реализацию этого метода в python или meteor (Node.js)? – omid

+0

@omid Извините, я не кодирую много питона. но разве это не включено в ваш telegram.link? вы можете расширить репо GitHub, чтобы сделать это, да? –