Mirror von https://git.sr.ht/~hrbrmstr/splashr
Du kannst nicht mehr als 25 Themen auswählen
Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
73 Zeilen
2.9 KiB
73 Zeilen
2.9 KiB
#' Return a image (in JPEG format) of the javascript-rendered page.
|
|
#'
|
|
#' @md
|
|
#' @param quality JPEG quality parameter in range from 0 to 100. Default is quality=75.
|
|
#' @inheritParams render_html
|
|
#' @inheritParams render_png
|
|
#' @family splash_renderers
|
|
#' @return a [magick] image object
|
|
#' @references [Splash docs](http://splash.readthedocs.io/en/stable/index.html)
|
|
#' @export
|
|
render_jpeg <- render_jpg <- function(
|
|
splash_obj = splash_local, url, base_url=NULL, quality=75, width, height,
|
|
timeout=30, resource_timeout, wait=0, render_all=TRUE,
|
|
proxy, js, js_src, filters, allowed_domains, allowed_content_types,
|
|
forbidden_content_types, viewport="full", images, headers, body,
|
|
http_method, save_args, load_args, http2 = FALSE,
|
|
engine = c("webkit", "chromium")) {
|
|
|
|
wait <- check_wait(wait)
|
|
|
|
engine <- match.arg(engine[1], c("webkit", "chromium"))
|
|
|
|
http2 <- if (engine == "chromium") NULL else as.integer(as.logical(http2[1]))
|
|
viewport <- if (engine == "chromium") NULL else jsonlite::unbox(viewport[1])
|
|
render_all <- if (engine == "chromium") NULL else as.integer(render_all[1])
|
|
|
|
wait <- if (is.null(render_all)) 0.5 else if (render_all & wait == 0) 0.5 else wait
|
|
|
|
list(
|
|
url = url,
|
|
timeout = timeout,
|
|
wait = wait,
|
|
viewport = viewport,
|
|
render_all = render_all,
|
|
quality = quality,
|
|
http2 = http2,
|
|
engine = engine
|
|
) -> params
|
|
|
|
if (!missing(width)) params$width <- width
|
|
if (!missing(height)) params$height <- height
|
|
|
|
if (!missing(base_url)) params$base_url <- jsonlite::unbox(base_url)
|
|
if (!missing(resource_timeout)) params$resource_timeout <- resource_timeout
|
|
if (!missing(proxy)) params$proxy <- jsonlite::unbox(proxy)
|
|
if (!missing(js)) params$js <- jsonlite::unbox(js)
|
|
if (!missing(js_src)) params$js_src <- jsonlite::unbox(js_src)
|
|
if (!missing(filters)) params$filters <- jsonlite::unbox(filters)
|
|
if (!missing(allowed_domains)) params$allowed_domains <- jsonlite::unbox(allowed_domains)
|
|
if (!missing(allowed_content_types)) params$allowed_content_types <- jsonlite::unbox(allowed_content_types)
|
|
if (!missing(forbidden_content_types)) params$forbidden_content_types <- jsonlite::unbox(forbidden_content_types)
|
|
if (!missing(images)) params$images <- as.numeric(images)
|
|
if (!missing(headers)) params$headers <- headers
|
|
if (!missing(body)) params$body <- jsonlite::unbox(body)
|
|
if (!missing(http_method)) params$http_method <- jsonlite::unbox(http_method)
|
|
if (!missing(save_args)) params$save_args <- jsonlite::unbox(save_args)
|
|
if (!missing(load_args)) params$load_args <- jsonlite::unbox(load_args)
|
|
|
|
if (is.null(splash_obj$user)) {
|
|
res <- httr::GET(splash_url(splash_obj), path="render.jpeg", encode="json", query=params)
|
|
} else {
|
|
res <- httr::GET(
|
|
splash_url(splash_obj), path="render.jpeg", encode="json", query=params,
|
|
httr::authenticate(splash_obj$user, splash_obj$pass)
|
|
)
|
|
}
|
|
|
|
check_or_report_status(res)
|
|
|
|
magick::image_read(httr::content(res, as="raw"))
|
|
|
|
}
|
|
|
|
|