Um die neuesten 10 Fotos von Google Fotos herunterzuladen, machen Sie die ersten 2 Schritte des quickstart, fügen Sie das Client-Geheimnis, Client-ID und Redirect in das unten stehende coffeescript ein und führen Sie es aus. (npm install --global coffeescript
dann coffee quickstart.coffee
zu laufen oder coffee -c quickstart.coffee
zu kompilieren, um Javascript)
Ich denke, der Benutzer muss ihre Google Fotos Konto mit Google-Laufwerk verbinden, damit dies funktioniert.
Hinweise für im Allgemeinen mit dem Reference (v3) und Google Drive arbeiten:
- nicht vergessen, das
auth
Objekt, wenn Sie API-Funktionen aufrufen, die eine Authentifizierung erfordern: service.files.list({auth:auth, other params here...},callback)
- wenn Sie vergessen, es gibt einen Daily Limit for Unauthenticated Use Exceeded
Fehler
- Jede Datei hat viele Eigenschaften, aber in v3 der API gibt sie standardmäßig nicht alle Felder der Ressource zurück. Sie finden sie über die
fields
Option wie folgt angeben: service.files.get({auth:auth,fileId:"1y3....",fields:"mimeType, webContentLink, webViewLink, thumbnailLink"},callback)
- wenn Sie möchten, eine Datei herunterzuladen, setzen
alt:"media"
in den Optionen
- Sie Dateien mit der Option
q
abfragen. Schau dir die available serach parameters an. Beachten Sie, dass Sie Suchen über and
, or
und not
kombinieren und verschachteln können.
- gibt es keine echten "Ordner" in Google Drive. Jede Datei kann mehrere "Eltern" haben.
- Sie die IDs aller Ordner durch den Aufruf
service.files.list
mit der Abfrageoption q:'mimeType = "application/vnd.google-apps.folder"'
- erhalten einen Ordner mit Namen Verwendung Abfrage
q:'name = "<name of folder>" and mimeType = "application/vnd.google-apps.folder"'
- Sie könnten die ID des Root-Ordner erhalten, indem
service.files.get({auth:auth, fileId:"root"},callback)
Aufruf bekommen - aber Sie können einfach root
verwenden, wo Sie diese ID setzen würde
- alle Dinge im Stammordner Aufruf
service.files.list({auth:auth,q:'parents in "root"'},callback)
- aufzulisten, wenn Sie die ID einer Datei haben, können Sie den Ordner (n) der Datei erhalten, indem Aufruf
service.files.get
mit der fields:"parents"
Option
- Sie haben Sie die ID eines Ordners Sie die Dateien dieses Ordners mit durch den Aufruf
service.files.list
mit einer Abfrageoption q:'parents in "0B7..."'
(beachten Sie, dass die ID benötigt "..."
)
- Auflistung der Dateien in dem Ordner bekommen Der Pfad
/one/two/three
entspricht dem Auflisten der Dateien des Ordners three
- Sie benötigen jedoch zuerst die ID dieses Ordners.Sie können diese ID erhalten, indem iterativ den Weg
fs = require('fs')
readline = require('readline')
google = require('googleapis')
googleAuth = require('google-auth-library')
SCOPES = [ 'https://www.googleapis.com/auth/drive' ] # scope for everything :D
TOKEN_PATH = './token.json'
CLIENT_SECRET = <your client secret here>
CLIENT_ID = <your client id here>
REDIRECT = <your redirect url here>
authorize = (callback) ->
auth = new googleAuth
oauth2Client = new auth.OAuth2(CLIENT_ID, CLIENT_SECRET,REDIRECT)
# Read the Token at ./token.json or get a new one
fs.readFile TOKEN_PATH, (err, token) ->
if err
getNewToken oauth2Client, callback
else
oauth2Client.credentials = JSON.parse(token)
callback oauth2Client
getNewToken = (oauth2Client, callback) ->
authUrl = oauth2Client.generateAuthUrl({access_type: 'offline', scope: SCOPES})
console.log 'Authorize this app by visiting this url: ', authUrl
rl = readline.createInterface({input: process.stdin,output: process.stdout})
rl.question 'Enter the code in the address bar without the "#"(?code=<code>#)', (code) ->
rl.close()
oauth2Client.getToken code, (err, token) ->
oauth2Client.credentials = token
fs.writeFile TOKEN_PATH, JSON.stringify(token) # store token for later
callback oauth2Client
authorize (auth)->
service = google.drive('v3')
# get ids of the 10 most recent photos
# every request needs the auth:auth
service.files.list {auth:auth,pageSize: 10,orderBy: 'createdTime desc',q:"mimeType = 'image/jpeg'"},(err,response)->
for file in response.files
dest = fs.createWriteStream(file.name)
# you have to add the alt:"media" option to get the file contents
# if you want a link to the file that can be used in an <img src=''> tag: add fields:"webContentLink"
service.files.get({auth:auth,fileId:file.id,alt:"media"}).pipe(dest)
Werfen Sie einen Blick auf die [Dokumentation] zu Fuß nach unten (https://developers.google.com/picasa-web/docs/2.0/developers_guide_protocol #Fotos). – Robin