Skip to content

Instantly share code, notes, and snippets.

@revodavid
Created March 27, 2018 22:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save revodavid/3bdb4be873c5b516ebdf452a7d8ab21b to your computer and use it in GitHub Desktop.
Save revodavid/3bdb4be873c5b516ebdf452a7d8ab21b to your computer and use it in GitHub Desktop.
random_image <- function() {
## Return the URL random image in Wikimedia Commons
random_query <- paste0("https://commons.wikimedia.org/w/api.php?",
"action=query",
"&generator=random", # get a random page
"&grnlimit=1", # return 1 page
"&grnnamespace=6", # category: File
"&prop=imageinfo",
"&iiprop=url|size|extmetadata",
"&iiurlheight=1080", # limit images height (sometimes)
"&format=json&formatversion=2")
random_response <- POST(random_query)
output <- content(random_response)
url <- output$query$pages[[1]]$imageinfo[[1]]$url
ext <- tolower(file_ext(url))
w <- output$query$pages[[1]]$imageinfo[[1]]$width
h <- output$query$pages[[1]]$imageinfo[[1]]$height
size <- output$query$pages[[1]]$imageinfo[[1]]$size
desc <- output$query$pages[[1]]$imageinfo[[1]]$extmetadata$ImageDescription$value
if(w<50 || h<50) stop("Image too small")
if(size > 4000000) stop("Image too large")
if(!(ext %in% c("jpg","jpeg","png","gif","bmp"))) stop(paste("invalid image type:",ext))
attr(url, "dims") <- c(w=w,h=h)
attr(url, "desc") <- desc
url
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment