Google Drive API, geliştiricilerin Google Drive dosyalarına ve klasörlerine erişmesine ve bunları yönetmesine olanak tanır. Veritabanı dosyalarını yönetmek için Google Drive API kullanmak, veri kaybı riskini azaltır ve verilerinizi bulut tabanlı olarak yönetmenize yardımcı olur.
Python programlama dilini kullanarak Google Drive API ile dosya yükleyebilir ve indirebilirsiniz. Bu yazıda, Python ile Google Drive API kullanarak dosya yükleme ve indirme işlemlerini gerçekleştireceğiz.
Google Drive API Nedir?
Google Drive API, geliştiricilerin uygulamalarında Google Drive’ı entegre etmesine olanak tanıyan bir arayüzdür. Bu API, geliştiricilerin Google Drive doslarına ve klasörlerine erişmesini ve yönetmesini sağlar. Google Drive API, kendi yazılım projeleriniz için bir arayüz oluşturmanıza olanak tanır.
Google Cloud Projesi Oluşturma
Google Drive API ile Python kullanarak dosya yükleme ve indirme işlemlerini gerçekleştirmek için bir Google Cloud projesi oluşturmanız gerekiyor.
- Google Cloud Console’a gidin: console.cloud.google.com.
- Google hesabınızla oturum açın.
- Yeni bir proje oluşturun:
- Üst menüdeki “Proje Seç” düğmesine tıklayın.
- “Yeni Proje” düğmesine tıklayın.
- Projenize bir ad verin ve “Oluştur” düğmesine tıklayın.
- API ve Hizmetler sekmesine gidin.
- “Kitaplık” sekmesine tıklayın.
- “Google Drive API” araması yapın ve ardından “Google Drive API” sayfasına gidin.
- “Etkinleştir” düğmesine tıklayın.
- Kimlik Bilgileri sekmesine gidin.
- “Kimlik Bilgisi Oluştur” düğmesine tıklayın ve “OAuth istemci kimliği” seçeneğini seçin:
- Kullanım senaryosunu seçin (örneğin, “Daha Fazla”) ve “Devam Et” düğmesine tıklayın.
- OAuth 2.0 Onay Ekranı sekmesine gidin:
- Gerekli alanları doldurun (örneğin, Proje Adı, E-posta adresi). İsterseniz test kullanıcıları ekleyebilirsiniz.
- Tekrar Kimlik Bilgileri sekmesine dönün:
- Oluşturduğunuz onay ekranı bilgilerini güncelleyin (isteğe bağlı).
- Tür olarak “Masaüstü uygulaması” seçeneğini seçin ve bir ad verin.
- Kimlik bilgileri oluşturulduktan sonra “OAuth 2.0 İstemci Kimliği İndir” düğmesine tıklayarak istemci JSON dosyasını indirin. Bu dosya kodunuzda kimlik doğrulama yapmak için kullanılacak.
Bu adımları takip ederek bir Google Cloud projesi oluşturmuş olacaksınız ve Google Drive API’yi kullanmaya hazırsınız.
Python ile Google Drive API Kullanımı
Paketler gereksinimlerinize bağlı olarak değiştirebilir, eksik olanları yükleyebilirsiniz. Örneğin:
pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
Google Drive API’yi Etkinleştirme
Python ile Google Drive API kullanmak için öncelikle API’yi etkinleştirmeniz gerekmektedir. Bunun için aşağıdaki adımları takip edebilirsiniz:
- https://console.cloud.google.com/apis/library/drive.googleapis.com adresine gidin.
- Projenizi seçin veya yeni bir proje oluşturun.
- Drive API’yi etkinleştirin.
- API’yi etkinleştirdikten sonra “Kimlik Bilgileri” sekmesine gidin.
- OAuth istemci kimliği oluşturun:
- Kullanım senaryosunu seçin (örneğin, “Daha Fazla”) ve “Devam Et” düğmesine tıklayın.
- OAuth 2.0 Onay Ekranı sekmesine gidin:
- Gerekli alanları doldurun (örneğin, Proje Adı, E-posta adresi).
- Tekrar Kimlik Bilgileri sekmesine dönün ve oluşturduğunuz onay ekranı bilgilerini güncelleyin (isteğe bağlı).
- Masaüstü uygulaması için yeni bir istemci kimliği oluşturun:
- Tür olarak “Masaüstü uygulaması” seçeneğini seçin ve bir ad verin.
- Kimlik bilgileri oluşturulduktan sonra “OAuth 2.0 İstemci Kimliği İndir” düğmesine tıklayarak istemci JSON dosyasını indirin. Bu dosya kodunuzda kimlik doğrulama yapmak için kullanılacak.
Tüm bu adımları takip ederek Google Drive API’yi etkinleştirmiş olacaksınız. Bu sayede Python ile Google Drive API kullanarak dosya yükleme ve indirme işlemlerini gerçekleştirebilirsiniz.
Kütüphanelerin Yüklenmesi
Paketler gereksinimlerinize bağlı olarak değiştirebilir, eksik olanları yükleyebilirsiniz. Örneğin:
pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
Paketleri yüklemek için terminal veya komut istemcisine yukarıdaki komutları kopyalayarak çalıştırın. Bu komutlar, gerekli Google API kütüphanelerini yükleyecektir.
Kod Örneği
Aşağıda, Python ile Google Drive API kullanarak dosya yükleme ve indirme işlemlerini gerçekleştiren bir kod örneği bulunmaktadır:
# requirements.txt file
google-api-python-client>=2.62.0
google-auth-httplib2>=0.1.1
google-auth-oauthlib>=0.4.6
# drive.py file
import io
import os
import pickle
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload, MediaIoBaseDownload
# If modifying these SCOPES, delete the file token.pickle.
SCOPES = ["https://www.googleapis.com/auth/drive"]
def upload_file(file_name: str):
# Create a Google Drive API service instance.
service = build("drive", "v3", credentials=Credentials.from_authorized_user_file("token.json", SCOPES))
# Upload the file to Google Drive.
file_metadata = {"name": os.path.basename(file_name)}
media = MediaFileUpload(file_name)
f response = service.files().create(body=file_metadata, media_body=media, fields="id").execute()
f print("File uploaded successfully!")
f return response.get("id")
def download_file(file_id: str): # Create a Google Drive API service instance.
f service = build("drive", "v3", credentials=Credentials.from_authorized_user_file("token.json", SCOPES)) # Create a request to download the file.
f request = service.files().get_media(fileId=file_id) # Use BytesIO to store the downloaded file's contents.
f fh = io.BytesIO() downloader = MediaIoBaseDownload(fh, request) done = False
while done is False:
f status, done = downloader.next_chunk()
f print(f'Download {int(status.progress() * 100)}%') # Write the content to a file.
f with open("downloaded_file", "wb") as f: f.write(fh.getvalue()) print("File downloaded successfully!")
fif __name__ == '__main__': cred = None
# The file token.pickle stores the user's access and refresh tokens,
f# and is created automatically when the authorization flow completes for the first time.
f if os.path.exists('token.json'): with open('token.json', 'rb') as token: cred = Credentials.from_authorized_user(token) # If there are no (valid) credentials available, let the user log in. if not cred or not cred.valid: if cred and cred.expired and cred.refresh_token: cred.refresh(Request()) else: flow = InstalledAppFlow.from_client_secrets_file( 'client_secret.json', SCOPES) cred = flow.run_local_server(port=0) # Save the credentials for the next run. with open('token.json', 'w') as token: token.write(cred.to_json()) # Call the upload_file or download_file function as needed. # upload_file('your_file.txt') # Replace with your file name. download_file('your_file_id') # Replace with your file ID.
Yukarıdaki kod örneğinde, upload_file
ve download_file
adında iki fonksiyon bulunmaktadır:
upload_file(file_name)
: Belirtilen dosyayı Google Drive’a yükler.download_file(file_id)
: Belirtilen dosya kimliğiyle ilişkili dosyayı bilgisayarınıza indirir.
Kodun en altındaki if __name__ == '__main__':
bloğunda hangi işlemi yapmak istiyorsanız o satırı açabilirsiniz. Dosya yüklemek için upload_file('your_file.txt')
, indirmek için ise download_file('your_file_id')
satırını kullanabilirsiniz. Kendi dosya adınızı veya dosya kimliğinizi girerek işlemi başlatabilirsiniz.