2015-06-28 6 views
25

मैं टेलीग्राम बॉट एपीआई का उपयोग कर रहा हूं लेकिन मैं अपने बॉट पर भेजे गए एक फाइल को डाउनलोड करने के लिए वैसे भी देख सकता हूं। मुझे फ़ाइल का हैश मिलता है लेकिन यह नहीं पता कि इसके साथ क्या करना है। क्या कोई रास्ता है? धन्यवाद।मैं अपनी टेलीग्राम बॉट पर भेजी गई फ़ाइल या फोटो कैसे डाउनलोड करूं?

उत्तर

31

पर तार यह अब उपलब्ध है!

https://core.telegram.org/bots/api#getfile

हुर्रे! यह सितं, 18 जोड़ा गया है:

https://core.telegram.org/bots/api

उपयोग:

संदेश की JSON में आप एक file_id के रूप में पहले प्राप्त होगा। एक आवाज फ़ाइल के साथ एक संदेश वस्तु का एक उदाहरण:

https://api.telegram.org/bot<bot_token>/getFile?file_id=the_file_id 

यह file_id के साथ एक वस्तु वापस आ जाएगी:

{ 
    message_id: 2675, 
    from: { 
    id: 10000001, 
    first_name: 'john', 
    username: 'john' 
    }, 
    chat: { 
    id: 10000001, 
    first_name: 'john', 
    username: 'john' 
    }, 
    date: 1442848171, 
    voice: { 
    duration: 2, 
    mime_type: 'audio/ogg', 
    file_id: 'AwADBAADYwADO1wlBuF1ogMa7HnMAg', // <------- file_id 
    file_size: 17746 
    } 
} 

वाया एपीआई getFile अब आप फ़ाइल के लिए आवश्यक पथ जानकारी प्राप्त कर सकते , file_size और file_path

https://api.telegram.org/file/bot<token>/<file_path> 

ध्यान दें कि यह लिंक केवल एक घंटे के लिए उपलब्ध हो जाएगा: आप फिर फ़ाइल को डाउनलोड करने के लिए FILE_PATH उपयोग कर सकते हैं। एक घंटे के बाद आप एक और लिंक का अनुरोध कर सकते हैं। इसका अर्थ यह है कि यदि आप किसी भी तरह से फ़ाइल होस्ट करना चाहते हैं और आप हर बार जब आप इसे सेवा करते हैं तो ताज़ा लिंक की जांच और पुनः जांच करने से बचें, तो आप फ़ाइल को अपनी होस्टिंग सेवा में डाउनलोड करना बेहतर कर सकते हैं।

इस विधि के माध्यम से प्राप्त फ़ाइल का अधिकतम आकार 20MB है। त्रुटि:। प्राप्त जब 20MB से बड़ा एक फ़ाइल प्रयोग किया जाता है (नीचे दिखाया गया)

{"ok":false,"error_code":400,"description":"Bad Request: file is too big[size:1556925644]"} 

तार के डॉक्स से:

On success, a File object is returned. The file can then be downloaded via the link https://api.telegram.org/file/bot /, where is taken from the response. It is guaranteed that the link will be valid for at least 1 hour. When the link expires, a new one can be requested by calling getFile again.For the moment, bots can download files of up to 20MB in size.

+3

बस स्पष्ट करने के लिए, GetFile API कॉल में GET क्वेरी स्ट्रिंग में 'file_id = the_file_id' शामिल होना चाहिए। – jotadepicas

+0

जब मैं/getFile का उपयोग करता हूं तो मुझे फ़ाइल_पैथ कुछ समय नहीं मिल सकता है उदाहरण के लिए जब फ़ाइल ogg file_path परिभाषित होती है और फ़ाइल ठीक से डाउनलोड की जाती है लेकिन जब फ़ाइल एमपी 3 filr_path परिभाषित नहीं होती है, और बस file_id और file_size लौटाएं! –

3

यदि आपके पास file_id है तो आपको sendDocument या sendPhoto विधियों का उपयोग करने की आवश्यकता है, यदि आप स्वयं को भेजना चाहते हैं, तो आपको अपने उपयोगकर्ता आईडी या अपनी चैट आईडी को बताने की आवश्यकता है (एक-एक-एक में चैट)।

+0

ओपी प्राप्त करना, नहीं भेजने के बारे में पूछ रहा है। फ़ाइल को अग्रेषित या फिर से भेजने के लिए आपको एक ही समस्या के साथ छोड़ देता है। –

+0

यदि बॉट मुझे फ़ाइल भेजता है तो मैं अपने फोन या मेरे कंप्यूटर (टेलीग्राम से ही) तक बॉट के साथ वार्तालाप से डाउनलोड कर सकता हूं। आपकी टिप्पणी के मुताबिक आर्थर बॉट में संदेश प्राप्त करना चाहता है और फिर बॉट सर्वर पर छवि या फ़ाइल डाउनलोड करता है (जहां डी बॉट चल रहा है)? – delaf

+0

अब मैं देख रहा हूं कि आपका क्या मतलब है। लेकिन हाँ, आम तौर पर आप बॉट को फ़ाइल को स्वचालित रूप से डाउनलोड करना चाहते हैं और इसे किसी भी तरीके से संसाधित करना चाहते हैं। यह सब के बाद एक बॉट होने का मुद्दा है। –

6

It's just added at September 18, 2015!

आहा! यह अभी 18 सितंबर, 2015 को जोड़ा गया है

आप getFile(file_id) का उपयोग कर सकते हैं। यह फ़ंक्शन file_path युक्त फ़ाइल ऑब्जेक्ट देता है।आप इस पते के माध्यम से फाइल डाउनलोड कर सकते हैं:

https://api.telegram.org/file/bot<token>/<file_path>

Telegram Bot API Documentation में उल्लेख किया है, फ़ाइल वस्तु के बारे में एक घंटे के लिए मान्य होगा। यदि कोई पुराना व्यक्ति समाप्त हो जाता है तो आपको एक नई फ़ाइल ऑब्जेक्ट प्राप्त करने के लिए getFile पर कॉल करना चाहिए।

+0

GetFile एंडपॉइंट का प्रारूप क्या है? मैंने कोशिश की है/getFile,/getFile? File_id = xxx, getFile (xxx) और उन्होंने काम नहीं किया है। –

2

आप pyTelegramBotAPI उपयोग कर रहे हैं तो आप इस कोड का उपयोग कर आपकी फोटो डाउनलोड कर सकते हैं:

raw = message.photo[2].file_id 
path = raw+".jpg" 
file_info = bot.get_file(raw) 
downloaded_file = bot.download_file(file_info.file_path) 
with open(path,'wb') as new_file: 
    new_file.write(downloaded_file) 
+0

फोटो [2] वहां फोटो का 4 संस्करण मौजूद है। अगर मैं छोटे आकार को डाउनलोड करना चाहता हूं [0] शून्य सूचकांक मेरा है? PHP नमूना कोड के बारे में क्या? –

संबंधित मुद्दे