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
- İşletme veya Kuruluş Şuna erişimi olan Google Workspace hesabı: Google Chat.
- Python 3.6 veya sonraki sürümler
- pip paket yönetim aracı
- 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
- Ortamınızı ayarlayın:
- Bir Google Cloud projesi oluşturun.
- OAuth izin ekranını yapılandırın.
- Google Chat API'yi etkinleştirin ve yapılandırın. Bunun için bir ad girin, Chat uygulamanızın simgesi ve açıklaması.
- Google Chat API isteğinizde nasıl kimlik doğrulama yapmak istediğinize bağlı olarak erişim kimlik bilgilerini oluşturun:
- Chat kullanıcısı olarak kimliğinizi doğrulamak için:
OAuth istemci kimliği oluştur
kimlik bilgilerini iki kez tıklayın ve kimlik bilgilerini
client_secrets.json
dosyasını yerel dizininize ekleyin. - Chat uygulaması olarak kimliğinizi doğrulamak için: hizmet hesabı oluştur kimlik bilgileri ekleyin.
- Chat kullanıcısı olarak kimliğinizi doğrulamak için:
OAuth istemci kimliği oluştur
kimlik bilgilerini iki kez tıklayın ve kimlik bilgilerini
- Kimlik doğrulamasını kullanıcı olarak mı yoksa Chat uygulaması.
Dosya ekinden indirme
Dosya ekinden medya indirmek için istek:
- Kullanıcı kimlik doğrulaması ile
chat.messages.readonly
veyachat.messages
yetkilendirme kapsamı. Entegre uygulama kimlik doğrulaması,chat.bot
yetkilendirme kapsamını belirtin. - Aşağıdaki Google Chat yöntemlerini çağırın:
- Aşağıdaki yöntemlerden birini çağırarak
attachmentDataRef
özelliğini alın:get
yöntemi uygulamasındaAttachment
kaynak.get
yöntemi veyalist
yöntemi uygulamasındaMessage
kaynak.
download
yöntemini çağırın uygulamasındaMedia
kaynak ve belirtin önceden alınanattachmentDataRef.resourceName
media.download.resourceName
.
- Aşağıdaki yöntemlerden birini çağırarak
Aşağıdaki örnekte, bir iletiye ekli bir dosya indirilir:
Python
- Çalışma dizininizde şu ada sahip bir dosya oluşturun:
chat_media_and_attachment_download.py
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()
Kodda,
RESOURCE_NAME
öğesini şununla değiştirin:attachmentDataRef.resourceName
şu yöntemleri kullanabilirsiniz:Ç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
).
İlgili konular
- İleti bir Drive dosyasıysa Dosyaya erişim elde etmek için Drive API.
- Medyayı dosya eki olarak yükleme
- Medyayı dosya eki olarak indirme
- Mesaj ekleri hakkında meta veri alma