Как программно получить продолжительность файла (видео) файла google drive? - PullRequest
1 голос
/ 05 мая 2019

Либо с помощью API отдыха, Google Scripts, Node SDK, что бы ни работало.

Я вижу это в документах, но это не говорит мне о продолжительности:

function watchFile(fileId, channelId, channelType, channelAddress) {
  var resource = {
    'id': channelId,
    'type': channelType,
    'address': channelAddress
  };
  var request = gapi.client.drive.files.watch({
    'fileId': fileId,
    'resource': resource
  });
  request.execute(function(channel){console.log(channel);});
}

Я нашел эту ссылку, но, похоже, она не помогает https://apis -nodejs.firebaseapp.com / drive / classes / Resource $ Files.html # watch

1 Ответ

1 голос
/ 05 мая 2019
  • Вы хотите получить продолжительность видео на вашем Google Диске.
  • Вы хотите добиться этого с помощью Google Apps Script.

Если мое понимание верно, как насчет этого примера сценария? В этой модификации я использовал методы files.get и files.list Drive API. Из вашего вопроса я подумал, что сценарий, который конечная точка запрашивает напрямую, может быть полезен для вашей ситуации. Поэтому я предложил следующий сценарий.

1. Использование метода files.get

В этом примере сценария продолжительность извлекается из видеофайла.

Пример сценария:

function sample1() {
  var fileId = "###"; // Please set the file ID of the video file.

  var fields = "mimeType,name,videoMediaMetadata"; // duration is included in "videoMediaMetadata"
  var url = "https://www.googleapis.com/drive/v3/files/" + fileId + "?fields=" + encodeURIComponent(fields) + "&access_token=" + ScriptApp.getOAuthToken();
  var res = UrlFetchApp.fetch(url);
  var obj = JSON.parse(res);
  Logger.log("filename: %s, duration: %s seconds", obj.name, obj.videoMediaMetadata.durationMillis / 1000);

  // DriveApp.getFiles() // This line is put for automatically detecting the scope (https://www.googleapis.com/auth/drive.readonly) for this script.
}

2. Использование метода files.list

В этом примере сценария длительности извлекаются из папки, включая видеофайлы.

Пример сценария:

function sample2() {
  var folderId = "###"; // Please set the folder ID including the video files.

  var q = "'" + folderId + "' in parents and trashed=false";
  var fields = "files(mimeType,name,videoMediaMetadata)"; // duration is included in "videoMediaMetadata"
  var url = "https://www.googleapis.com/drive/v3/files?q=" + encodeURIComponent(q) + "&fields=" + encodeURIComponent(fields) + "&access_token=" + ScriptApp.getOAuthToken();
  var res = UrlFetchApp.fetch(url);
  var obj = JSON.parse(res);
  for (var i = 0; i < obj.files.length; i++) {
    Logger.log("filename: %s, duration: %s seconds", obj.files[i].name, obj.files[i].videoMediaMetadata.durationMillis / 1000);
  }

  // DriveApp.getFiles() // This line is put for automatically detecting the scope (https://www.googleapis.com/auth/drive.readonly) for this script.
}

Примечание:

  • Это простые примеры сценариев. Поэтому, пожалуйста, измените их для вашей ситуации.
  • Я не уверен насчет формата ваших видеофайлов. Поэтому, если приведенный выше сценарий не может быть использован для вашей ситуации, я прошу прощения.

Ссылки

Если я неправильно понял ваш вопрос, и это был не тот результат, которого вы хотите, я прошу прощения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...