Загрузка файлов изображений с Google Drive с помощью R - PullRequest
0 голосов
/ 17 января 2019

Я создал форму Google, которую я использую для ввода данных в поле. Некоторые поля в форме Google требуют сделать фотографию. В данном случае это фотография птицы, которую мы запечатлели под разными углами (хвост, спина, передняя часть и т. Д.).

Мне интересно, можно ли загрузить эти изображения, прочитав ответы Google Form в R.

Вот как выглядят ответы Google Form в форме Google Sheet:

library(tidyverse)
dat <- tribble(
  ~birdID, ~date, ~tailphoto,
189307134, '2019-01-15', 'https://drive.google.com/open?id=1SfmmmYTahcmwGnyCFuXoecn_ofXpagAr',
189307135, '2019-01-13', 'https://drive.google.com/open?id=1e4FGSK6jaLPyeu_TFGPXxSZAcv3obQMd'
)


# A tibble: 2 x 3
     birdID date       tailphoto                                                         
      <dbl> <chr>      <chr>                                                             
1 189307134 2019-01-15 https://drive.google.com/open?id=1SfmmmYTahcmwGnyCFuXoecn_ofXpagAr
2 189307135 2019-01-13 https://drive.google.com/open?id=1e4FGSK6jaLPyeu_TFGPXxSZAcv3obQMd

Таким образом, вопрос заключается в том, как загрузить изображения, используя ссылку Google Drive в каждом столбце фотографий. В идеале, я хотел бы назвать каждую фотографию по номеру группы (идентификационный номер птицы), дате и типу фотографии, например:

189307145_2019-01-15_tail.jpg

Если у меня есть имя файла, я могу просто сделать это, чтобы хотя бы загрузить фотографию:

library(googledrive)

image = 'IMG_20190114_090554.jpg'

drive_download(file = image, path = 'bird.jpg')

Проблема заключается в том, что не существует способа связать ссылку на диск и соответствующее имя файла ...

1 Ответ

0 голосов
/ 19 января 2019

Вот способ подойти к моему вопросу:

# first part of link needs to look like this for downloading
 export <- 'https://drive.google.com/uc?export=download&id='

# convert all sharing links to downloading links by 1) chopping off photo ID at end of link,
# and 2) adding the export format in front of the photo ID
dat <- dat %>%
  mutate_at(vars(tailphoto), ~str_sub(., start = -33, end = -1)) %>%
  mutate_at(vars(tailphoto), ~paste0(export, .)) 
dat

Я использовал mutate_at, потому что в моем исходном наборе данных есть несколько типов фотографий. Затем вы можете использовать curl_download для загрузки каждого изображения в цикле.

...