Я работаю над скриптом узла, чтобы загрузить все изображения, которые используются в моей учетной записи на Google Диске.
Я врезаюсь в стену так же, как другие писали о переполнении стека: Google Диск Ограничения по скорости просмотра файлов API.
Экспоненциальный откат имеет для меня большой смысл, я просто не знаю, как это реализовать.
Любое понимание, которое я смогу получить, было бы невероятно полезным. Даже просто "начать с ..." было бы здорово!
Я добавил метод, над которым работаю, ниже. Auth и все работает нормально, дело только в получении ошибки userRateLimitExceeded
.
Любая помощь была бы фантастической и очень ценилась бы.
Спасибо!
/**
* Download all of the shared images.
*
* @param {google.auth.OAuth2} auth An authorized OAuth2 client.
*/
function downloadImages(auth) {
const gDrive = google.drive({
version: 'v3',
auth: auth
});
gDrive.files.list({
q: 'sharedWithMe = true and mimeType = "image/jpeg"'
}, (err, resp) => {
if(err) {
console.log('The API returned an error: ' + err);
return;
}
if(!resp.files.length) {
console.error('No files found.');
} else {
// Remove existing images.
// removeImages();
_.each(resp.files, (file) => {
if(fs.existsSync(IMAGE_DIR + file.name)) {
return;
}
gDrive.files.get({
fileId: file.id
})
.on('end', () => {
console.log(chalk.green(file.name + ' successfully downloaded.'));
})
.on('error', (err) => {
console.log(err);
})
.pipe(fs.createWriteStream(IMAGE_DIR + file.name));
});
}
});
}
РЕДАКТИРОВАТЬ: я изучал пакетную обработку, но полагаю, что google-api-nodejs-client не поддерживает пакеты. Я попробовал стороннюю библиотеку под названием «Бэтчелор». До сих пор не могу заставить его работать, хоть убей. :(
gDrive.fkiles.get()
, когда у вас ограничена скорость? У вас есть определенная ошибка в обработчике событий.on('error', ...)
, которую вы можете обнаружить? Если да, то что это за конкретная ошибка? По сути, если вы можете помочь нам узнать, как определить, когда ваша скорость ограничена, мы можем помочь с кодом, чтобы справиться с этим. - person jfriend00   schedule 18.12.2016console.error('error', error)
, я бы вообще не увидел свою метку журнала. :( - person Will   schedule 18.12.2016