CkPython
CkPython
Upload Media for Google Photos
See more Google Photos Examples
Demonstrates how to upload a media file (such as a JPG image) that will be placed in a Google Photos album. Uploading is a two-step process:
- Upload the raw bytes to a Google Server. This doesn't result in any media items being created in the user’s Google Photos account. Instead, it returns an upload token which identifies the uploaded bytes.
- Use the upload token to create the media item in the user’s Google Photos account. You can choose whether the media should be also added to a specific album.
This example shows step 1.
Chilkat CkPython Downloads
import sys
import chilkat
success = False
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
# Get the previously obtained access token.
# See Get Google Photos Access Token.
jsonToken = chilkat.CkJsonObject()
success = jsonToken.LoadFile("qa_data/tokens/googlePhotos.json")
if (success == False):
print(jsonToken.lastErrorText())
sys.exit()
http = chilkat.CkHttp()
http.put_AuthToken(jsonToken.stringOf("access_token"))
# This is the HTTPS POST we'll be sending:
# POST https://photoslibrary.googleapis.com/v1/uploads
# Authorization: Bearer OAUTH2_TOKEN
# Content-type: application/octet-stream
# X-Goog-Upload-File-Name: FILENAME
# X-Goog-Upload-Protocol: raw
http.SetRequestHeader("X-Goog-Upload-File-Name","penguins.jpg")
http.SetRequestHeader("X-Goog-Upload-Protocol","raw")
# Assuming the media isn't super large, we'll just read it into memory and send.
# (Another example exists for streaming a large media file directly from the filesystem.)
# Load the media file into memory.
bdMedia = chilkat.CkBinData()
success = bdMedia.LoadFile("qa_data/jpg/penguins.jpg")
url = "https://photoslibrary.googleapis.com/v1/uploads"
resp = chilkat.CkHttpResponse()
success = http.HttpBd("POST",url,bdMedia,"application/octet-stream",resp)
if (success == False):
print(http.lastErrorText())
sys.exit()
# Examine the response status code. Success is indicated by a status code of 200.
print("response status code: " + str(resp.get_StatusCode()))
# Show the response body.
if (resp.get_StatusCode() == 200):
# Success.
print("Upload token: " + resp.bodyStr())
else:
print("Error:")
print(resp.bodyStr())
# Clear headers such as X-Goog-Upload-File-Name for subsequent HTTP requests sent on this object..
http.ClearHeaders()