একটি ফাইল সংযুক্তি থেকে মিডিয়া ডাউনলোড করুন

Google Chat এ একটি বার্তা থেকে মিডিয়া (একটি ফাইল) ডাউনলোড করতে Google Chat API-এর Media রিসোর্সে কীভাবে download পদ্ধতি ব্যবহার করতে হয় তা এই নির্দেশিকাটি ব্যাখ্যা করে।

যখন ব্যবহারকারী আপনার অ্যাপে একটি বার্তা পাঠায়, তখন Google Chat একটি MESSAGE ইন্টারঅ্যাকশন ইভেন্ট প্রেরণ করে। আপনার অ্যাপের দ্বারা প্রাপ্ত ইন্টারঅ্যাকশন ইভেন্টে একটি অনুরোধের বডি অন্তর্ভুক্ত থাকে, যা JSON পেলোড যে কোনো সংযুক্তি সহ ইন্টারঅ্যাকশন ইভেন্টের প্রতিনিধিত্ব করে। সংযুক্তিটি আপলোড করা বিষয়বস্তু (স্থানীয় ফাইল) বা ড্রাইভে সংরক্ষিত ফাইল কিনা তার উপর নির্ভর করে সংযুক্তিতে থাকা ডেটা আলাদা। Media সংস্থান Google চ্যাটে আপলোড করা একটি ফাইলকে উপস্থাপন করে, যেমন ছবি, ভিডিও এবং নথি। Attachment সংস্থান মিডিয়ার একটি উদাহরণ উপস্থাপন করে - একটি ফাইল - একটি বার্তার সাথে সংযুক্ত৷ Attachment সংস্থান সংযুক্তি সম্পর্কে মেটাডেটা অন্তর্ভুক্ত করে, যেমন এটি কোথায় সংরক্ষণ করা হয়েছে।

পূর্বশর্ত

পাইথন

  • পাইথন 3.6 বা তার বেশি
  • পাইপ প্যাকেজ ম্যানেজমেন্ট টুল
  • পাইথনের জন্য সর্বশেষ Google ক্লায়েন্ট লাইব্রেরি। এগুলি ইনস্টল বা আপডেট করতে, আপনার কমান্ড-লাইন ইন্টারফেসে নিম্নলিখিত কমান্ডটি চালান:

    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    
  • Google Chat API সক্ষম এবং কনফিগার করা একটি Google ক্লাউড প্রকল্প। ধাপগুলির জন্য, একটি Google Chat অ্যাপ তৈরি করুন দেখুন।
  • চ্যাট অ্যাপের জন্য অনুমোদন কনফিগার করা হয়েছে। মিডিয়া ডাউনলোড করা উভয়ই সমর্থন করে:

একটি ফাইল সংযুক্তি থেকে ডাউনলোড করুন

একটি ফাইল সংযুক্তি থেকে মিডিয়া ডাউনলোড করতে, আপনার অনুরোধে নিম্নলিখিতটি পাস করুন:

নিম্নলিখিত উদাহরণটি একটি বার্তার সাথে সংযুক্ত একটি ফাইল ডাউনলোড করে:

পাইথন

  1. আপনার কাজের ডিরেক্টরিতে, chat_media_and_attachment_download.py নামে একটি ফাইল তৈরি করুন।
  2. chat_media_and_attachment_download.py এ নিম্নলিখিত কোডটি অন্তর্ভুক্ত করুন:

    import io
    
    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    from googleapiclient.http import MediaIoBaseDownload
    
    # Define your app's authorization scopes.
    # When modifying these scopes, delete the file token.json, if it exists.
    SCOPES = ["https://www.googleapis.com/auth/chat.messages"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then downloads a file attached to a message.
        '''
    
        # Authenticate with Google Workspace
        # and get user authorization.
        flow = InstalledAppFlow.from_client_secrets_file(
                    'client_secrets.json', SCOPES)
        creds = flow.run_local_server()
    
        # Build a service endpoint for Chat API.
        chat = build('chat', 'v1', credentials=creds)
    
        # Download media resource.
        request = chat.media().download_media(
            resourceName=RESOURCE_NAME,
        )
        file = io.BytesIO()
        downloader = MediaIoBaseDownload(file, request)
    
        done = False
        while done is False:
            status, done = downloader.next_chunk()
            if status.total_size:
                print(f'Total size: {status.total_size}')
            print(f'Download {int(status.progress() * 100)}')
    
    if __name__ == '__main__':
        main()
    
  3. কোডে, RESOURCE_NAME সংযুক্ত করুন attachmentDataRef.resourceName দিয়ে প্রতিস্থাপন করুন, যা আপনি নিম্নলিখিত উপায়গুলির মধ্যে একটি পুনরুদ্ধার করতে পারেন:

  4. আপনার কাজের ডিরেক্টরিতে, নমুনা তৈরি করুন এবং চালান:

    python3 chat_media_and_attachment_download.py
    

সফল হলে, এই পদ্ধতিটি ফাইলের বিষয়বস্তু বাইট হিসাবে ফেরত দেয়।

ফাইলের বিষয়বস্তু ডাউনলোড করতে, নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি বেছে নিন:

  • আমরা পাইথনে MediaIoBaseDownload ক্লাস ব্যবহার করার পরামর্শ দিই, যেটিতে ফাইলটিকে বিভাগে ডাউনলোড করার এবং সামগ্রীগুলিকে একটি আউটপুট স্ট্রীমে সংরক্ষণ করার পদ্ধতি রয়েছে।

  • যদি আপনাকে ম্যানুয়ালি HTTP অনুরোধ করতে হয়, download পদ্ধতিতে কল করুন এবং Range হেডার সহ একটি বাইট পরিসর ব্যবহার করে ফাইলের যে অংশটি ডাউনলোড করতে চান তা নির্দিষ্ট করুন—উদাহরণস্বরূপ: Range: bytes=500-999