Aby pobrać najnowsze 10 zdjęć ze zdjęć Google, wykonaj pierwsze 2 kroki z quickstart, włóż tajny klucz klienta, identyfikator klienta i przekierowanie do poniższego coffeescript i uruchom go. (npm install --global coffeescript
następnie coffee quickstart.coffee
do uruchomienia lub coffee -c quickstart.coffee
do kompilacji do javascript)
Myślę, że użytkownik musi połączyć swoje konto Google zdjęć z dysku Google, aby to zadziałało.
wskazówki dotyczące pracy z napędem Reference (v3) i google w ogóle:
- Nie zapomnij obiekt
auth
podczas wywoływania funkcji API, które wymagają uwierzytelniania: service.files.list({auth:auth, other params here...},callback)
- jeśli zapomnisz, to zwraca błąd Daily Limit for Unauthenticated Use Exceeded
- każdy plik ma wiele właściwości, ale w wersji 3 programu Api domyślnie nie zwraca wszystkich pól zasobu. Musisz określić je za pomocą opcji jak ten
fields
: service.files.get({auth:auth,fileId:"1y3....",fields:"mimeType, webContentLink, webViewLink, thumbnailLink"},callback)
- jeśli chcesz pobrać plik, umieścić
alt:"media"
w opcjach
- można wyszukać pliki z opcją
q
. Spójrz na available serach parameters. Zauważ, że możesz łączyć i zagnieżdżać wyszukiwania przez and
, or
i not
.
- nie ma prawdziwych "folderów" na dysku google. każdy plik może mieć wielu "rodziców".
- można uzyskać identyfikatory wszystkich folderów poprzez wywołanie
service.files.list
z opcją zapytań q:'mimeType = "application/vnd.google-apps.folder"'
- dostać folder używać nazwy zapytania
q:'name = "<name of folder>" and mimeType = "application/vnd.google-apps.folder"'
- można uzyskać identyfikator folderu głównego wywołując
service.files.get({auth:auth, fileId:"root"},callback)
- ale możesz po prostu użyć root
gdzie umieścić ten identyfikator
- do listy wszystkich rzeczy, w zaproszeniu folderu korzeń
service.files.list({auth:auth,q:'parents in "root"'},callback)
- jeśli masz identyfikator pliku, można uzyskać folder (y) pliku przez wywołanie
service.files.get
z opcją fields:"parents"
- ty masz identyfikator folderu można pobrać pliki z tego folderu wywołując
service.files.list
z opcją zapytań q:'parents in "0B7..."'
(zauważ, że identyfikator musi "..."
)
- wymieniające pliki w folderze z ścieżka
/one/two/three
jest tym samym, co lista plików w folderze three
- ale musisz najpierw podać identyfikator tego folderu.można dostać ten identyfikator poprzez iteracyjne idąc ścieżką
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)
Spójrz na [dokumentacja] (https://developers.google.com/picasa-web/docs/2.0/developers_guide_protocol #Zdjęcia). – Robin