install.packages("FlickrAPI")
So, I think I need some photos in my website, and I have a Flickr account, and I use R.
There should be a library that… Oh yes! found it!
https://koki25ando.github.io/FlickrAPI/
Now I need a Flickr API key. Once I have the key I can save it as an environment variable and call it from R:
library(FlickrAPI)
setFlickrAPIKey(api_key = Sys.getenv("FLICKR_API_KEY"))
To install your API key for use in future sessions, run this function with `install = TRUE`.
I can query up to 1000 photos from one user using the getPhotos
function. But I figured out that I could use a foreach
loop to run and combine multiple queries.
library(foreach)
library(dplyr)
Attaching package: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
<- foreach(
photos the_user=c("jferrer", "jferrer", "199798864@N08"),
the_page=c(1,2,1),
.combine = "bind_rows") %do% {
getPhotos(
user_id = the_user,
img_size="m",
extras = c("description", "owner_name", "url_m"),
per_page=1000,
page=the_page)
}
dim(photos)
[1] 964 14
Now I have a collection of photos in R and I can select one by title or any other criteria:
<- slice(photos, grep("N/W", title)) selected_photo
And combine the R and markdown magic to show the photo in this document:
<- sprintf(
photo_md "![**%s** by %s@flickr](%s){.preview-image .lightbox}",
$title,
selected_photo$ownername,
selected_photo$url_m
selected_photo
)
cat(photo_md)
If I want to save the information for future use in my blog, I need first to create a folder to hold the file, and then save the R object into an RDS file. Like this:
::i_am("posts/foto-collection.qmd") here
here() starts at /Users/z3529065/proyectos/personal/spatial-one
<- here::here("Rdata")
data_dir if (!dir.exists(data_dir))
dir.create(data_dir)
<- here::here(data_dir, "flickr-photos.rds")
file_name saveRDS(file = file_name, photos)