Dosya ekinden medya indirme

Bu kılavuzda, download yönteminin Media kaynağında nasıl kullanılacağı açıklanmaktadır. Google Chat API'yi kullanarak Google Chat'teki bir mesajdan medya (dosya) indirme

Kullanıcı, uygulamanıza mesaj gönderdiğinde Google Chat bir mesaj gönderir. MESSAGE etkileşim etkinliği. Uygulamanızın aldığı etkileşim etkinliği, bir istek gövdesini içerir. Bu istek metni, Etkileşim etkinliğini temsil eden JSON yükü (tüm ekler dahil). İlgili içeriği oluşturmak için kullanılan ekteki verilerin farklı olup olmadığına bağlı olarak yüklenen içerik (yerel dosya) veya Drive'da depolanan bir dosyadır. İlgili içeriği oluşturmak için kullanılan Media kaynak Google Chat'e yüklenen resim, video ve doküman gibi bir dosyayı temsil eder. İlgili içeriği oluşturmak için kullanılan Attachment kaynak bir iletiye ekli medya örneğini (dosya) temsil eder. Attachment kaynak, ek hakkındaki meta verileri içerir. kaydedilmektedir.

Ön koşullar

Python

  • Python 3.6 veya sonraki sürümler
  • pip paket yönetim aracı
  • Python için en yeni Google istemci kitaplıkları. Bu uygulamaları yüklemek veya güncellemek için komut satırı arayüzünüzde aşağıdaki komutu çalıştırın:

    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    
  • Google Chat API'nin etkinleştirildiği ve yapılandırıldığı bir Google Cloud projesi Adımlar için bkz. Google Chat uygulaması oluşturun.
  • Chat uygulaması için yetkilendirme yapılandırıldı. Medya indirilmesi şunları destekler:

Dosya ekinden indirme

Dosya ekinden medya indirmek için istek:

Aşağıdaki örnekte, bir iletiye ekli bir dosya indirilir:

Python

  1. Çalışma dizininizde şu ada sahip bir dosya oluşturun: chat_media_and_attachment_download.py
  2. Aşağıdaki kodu chat_media_and_attachment_download.py bölümüne ekleyin:

    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. Kodda, RESOURCE_NAME öğesini şununla değiştirin: attachmentDataRef.resourceName şu yöntemleri kullanabilirsiniz:

  4. Çalışma dizininizde örneği derleyin ve çalıştırın:

    python3 chat_media_and_attachment_download.py
    

Başarılı olursa bu yöntem, dosya içeriğini bayt olarak döndürür.

Dosya içeriklerini indirmek için aşağıdaki yaklaşımlardan birini seçin:

  • Şunu kullanmanızı öneririz: Python'da indirme yöntemleri içeren MediaIoBaseDownload sınıfı ve içeriği bir çıkış akışına kaydedin.

  • HTTP isteğini manuel olarak yapmanız gerekiyorsa download yöntemini çağırın ve dosyanın indirmek istediğiniz bölümünü bayt aralık, Range başlığıyla belirtilir (örneğin, Range: bytes=500-999).