Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) Google Photos List Media ItemsList all media items from a user's Google Photos library.
IncludeFile "CkHttpResponse.pb" IncludeFile "CkHttp.pb" IncludeFile "CkJsonObject.pb" Procedure ChilkatExample() ; 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.i = CkJsonObject::ckCreate() If jsonToken.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i = CkJsonObject::ckLoadFile(jsonToken,"qa_data/tokens/googlePhotos.json") If success = 0 Debug CkJsonObject::ckLastErrorText(jsonToken) CkJsonObject::ckDispose(jsonToken) ProcedureReturn EndIf http.i = CkHttp::ckCreate() If http.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkHttp::setCkAuthToken(http, CkJsonObject::ckStringOf(jsonToken,"access_token")) ; For more information, see Google Photos List Media Items API Documentation resp.i = CkHttp::ckQuickRequest(http,"GET","https://photoslibrary.googleapis.com/v1/mediaItems?pageSize=100") If CkHttp::ckLastMethodSuccess(http) = 0 Debug CkHttp::ckLastErrorText(http) CkJsonObject::ckDispose(jsonToken) CkHttp::ckDispose(http) ProcedureReturn EndIf ; Examine the response status code. Success is indicated by a status code of 200. Debug "response status code: " + Str(CkHttpResponse::ckStatusCode(resp)) json.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckLoad(json,CkHttpResponse::ckBodyStr(resp)) CkHttpResponse::ckDispose(resp) ; Sample response: CkJsonObject::setCkEmitCompact(json, 0) Debug CkJsonObject::ckEmit(json) ; (See parsing code below...) ; { ; "mediaItems": [ ; { ; "id": "AKcbugGCOVK46E2qq6tv_wEuQuoK_a0iHet9rGH0-UWoZFnTMpEZ2jNjHWggz7Aq3hhjJv4YJsDY6ntowKsvnfnr1Bu3ASnS_w", ; "productUrl": "https://photos.google.com/lr/photo/AKcbugGCOVK46E2qq6tv_wEuQuoK_a0iHet9rGH0-UWoZFnTMpEZ2jNjHWggz7Aq3hhjJv4YJsDY6ntowKsvnfnr1Bu3ASnS_w", ; "baseUrl": "https://lh3.googleusercontent.com/lr/AGWb-e7ZcHJhUmxO8EgRSBFyBaGAyXE...YMWCAMDlNTA6-L5LiijXAUfKgD1ULhr9IabJBGTT7ETUdeeFTQTM", ; "mimeType": "image/jpeg", ; "mediaMetadata": { ; "creationTime": "2019-04-11T17:55:53Z", ; "width": "640", ; "height": "480", ; "photo": { ; "cameraMake": "Apple", ; "cameraModel": "iPhone 5s", ; "focalLength": 4.15, ; "apertureFNumber": 2.2, ; "isoEquivalent": 32 ; } ; }, ; "filename": "IMG_1206.JPG" ; }, ; { ; "id": "AKcbugFACWDNCQJ2nwhDemR6vRupHSvOUSKukyOHqTWO1CCIs0qw-C0b5MGmrveyjYe8ps8z1rZTRQ8hmSQsODSsobNqDl8vTg", ; "productUrl": "https://photos.google.com/lr/photo/AKcbugFACWDNCQJ2nwhDemR6vRupHSvOUSKukyOHqTWO1CCIs0qw-C0b5MGmrveyjYe8ps8z1rZTRQ8hmSQsODSsobNqDl8vTg", ; "baseUrl": "https://lh3.googleusercontent.com/lr/AGWb-e7NQe0qdoZrDHkfkK7LOsw-V...YJ1mrohD5duHsY2QJCzLTXZ65EOUrJefars3xDSwsCYlelY470kk", ; "mimeType": "image/jpeg", ; "mediaMetadata": { ; "creationTime": "2016-10-09T01:49:58Z", ; "width": "600", ; "height": "427", ; "photo": {} ; }, ; "filename": "hedgehogs.jpg" ; }, ; { ; "id": "AKcbugHEVyTFgIYb7GzhRFP5KvhBRIIsRcb6Cd4-2ByHzad2oqZnWF2aMPoXY-vfrXmefdTlyF3yZ22Odz6IFLs8pnJlOoVBUg", ; "productUrl": "https://photos.google.com/lr/photo/AKcbugHEVyTFgIYb7GzhRFP5KvhBRIIsRcb6Cd4-2ByHzad2oqZnWF2aMPoXY-vfrXmefdTlyF3yZ22Odz6IFLs8pnJlOoVBUg", ; "baseUrl": "https://lh3.googleusercontent.com/lr/AGWb-e64wP9gpPXKq5b8FCFKzu9C...QTFxMLVRaLeQZBvYGZVIe7xCcRPnRhMpiXwL_RV_aU", ; "mimeType": "image/jpeg", ; "mediaMetadata": { ; "creationTime": "2015-09-21T20:30:02Z", ; "width": "59", ; "height": "69", ; "photo": {} ; }, ; "filename": "chilkat_gravatar.jpg" ; }, ; { ; "id": "AKcbugHdYTp-S-D_EYnSBA4EhrKT86IFbmdRuiDclKka9T5b6UIbeDvhTAu1bebYOCFKH-gv1ME1z6RyMN4eW_9J5ol9_qizMg", ; "productUrl": "https://photos.google.com/lr/photo/AKcbugHdYTp-S-D_EYnSBA4EhrKT86IFbmdRuiDclKka9T5b6UIbeDvhTAu1bebYOCFKH-gv1ME1z6RyMN4eW_9J5ol9_qizMg", ; "baseUrl": "https://lh3.googleusercontent.com/lr/AGWb-e4e69WQpYcQX...m87rR6gDBhcB55TL__3ckBYNQ8MjbqpBtmojjYWrLG_j4VsVSA", ; "mimeType": "image/jpeg", ; "mediaMetadata": { ; "creationTime": "2008-05-29T15:30:55Z", ; "width": "120", ; "height": "120", ; "photo": {} ; }, ; "filename": "starfish.jpg" ; }, ; { ; "id": "AKcbugGwtCih2tdl3s1-NMvZFaco3W7XnRwvwtj02J9DJyl6JmrLZDVUFcxQl4AT04LaNrPpsrojeTsDSzOVOF5IgKefD0Y-MQ", ; "description": "Photo of Penguins", ; "productUrl": "https://photos.google.com/lr/photo/AKcbugGwtCih2tdl3s1-NMvZFaco3W7XnRwvwtj02J9DJyl6JmrLZDVUFcxQl4AT04LaNrPpsrojeTsDSzOVOF5IgKefD0Y-MQ", ; "baseUrl": "https://lh3.googleusercontent.com/lr/AGWb-e5Cj3EgyhscdT...X3-W562iiKtTa8lc_QPxCrpJu-m7cZyNGwGTANVpGe1XG", ; "mimeType": "image/jpeg", ; "mediaMetadata": { ; "creationTime": "2008-02-18T05:07:31Z", ; "width": "1024", ; "height": "768", ; "photo": {} ; }, ; "filename": "penguins.jpg" ; } ; ] ; } ; ; Use this online tool to generate parsing code from sample JSON: ; Generate Parsing Code from JSON i.i count_i.i id.s productUrl.s baseUrl.s mimeType.s mediaMetadataCreationTime.s mediaMetadataWidth.s mediaMetadataHeight.s mediaMetadataPhotoCameraMake.s mediaMetadataPhotoCameraModel.s mediaMetadataPhotoFocalLength.s mediaMetadataPhotoApertureFNumber.s mediaMetadataPhotoIsoEquivalent.i filename.s description.s i = 0 count_i = CkJsonObject::ckSizeOfArray(json,"mediaItems") While i < count_i CkJsonObject::setCkI(json, i) id = CkJsonObject::ckStringOf(json,"mediaItems[i].id") productUrl = CkJsonObject::ckStringOf(json,"mediaItems[i].productUrl") baseUrl = CkJsonObject::ckStringOf(json,"mediaItems[i].baseUrl") mimeType = CkJsonObject::ckStringOf(json,"mediaItems[i].mimeType") mediaMetadataCreationTime = CkJsonObject::ckStringOf(json,"mediaItems[i].mediaMetadata.creationTime") mediaMetadataWidth = CkJsonObject::ckStringOf(json,"mediaItems[i].mediaMetadata.width") mediaMetadataHeight = CkJsonObject::ckStringOf(json,"mediaItems[i].mediaMetadata.height") mediaMetadataPhotoCameraMake = CkJsonObject::ckStringOf(json,"mediaItems[i].mediaMetadata.photo.cameraMake") mediaMetadataPhotoCameraModel = CkJsonObject::ckStringOf(json,"mediaItems[i].mediaMetadata.photo.cameraModel") mediaMetadataPhotoFocalLength = CkJsonObject::ckStringOf(json,"mediaItems[i].mediaMetadata.photo.focalLength") mediaMetadataPhotoApertureFNumber = CkJsonObject::ckStringOf(json,"mediaItems[i].mediaMetadata.photo.apertureFNumber") mediaMetadataPhotoIsoEquivalent = CkJsonObject::ckIntOf(json,"mediaItems[i].mediaMetadata.photo.isoEquivalent") filename = CkJsonObject::ckStringOf(json,"mediaItems[i].filename") description = CkJsonObject::ckStringOf(json,"mediaItems[i].description") i = i + 1 Wend CkJsonObject::ckDispose(jsonToken) CkHttp::ckDispose(http) CkJsonObject::ckDispose(json) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.