import "pkg:/source/utils/misc.bs"
function ItemImages(id = "" as string, params = {} as object)
' This seems to cause crazy core dumps
' if there is a conflict between on disk images, and library.db
resp = APIRequest(Substitute("Items/{0}/Images", id))
data = getJson(resp)
if not isValid(data) then return invalid
results = []
for each item in data
tmp = CreateObject("roSGNode", "ImageData")
tmp.json = item
tmp.url = ImageURL(id, tmp.imagetype, params)
results.push(tmp)
end for
return results
end function
function PosterImage(id as string, params = {} as object)
images = ItemImages(id, params)
if not isValid(images) then return invalid
primary_image = invalid
for each image in images
if image.imagetype = "Primary"
primary_image = image
else if image.imagetype = "Logo" and not isValid(primary_image)
primary_image = image
else if image.imagetype = "Thumb" and not isValid(primary_image)
primary_image = image
' maybe find more fallback images
end if
end for
return primary_image
end function
' Returns an image URL for the specified item, or empty string if tag validation fails
' @param id - The item ID
' @param version - Image type/version (default: "Primary")
' @param params - URL parameters object. If "tag" or "Tag" key exists but contains
' invalid/empty value, function returns empty string to prevent 404 requests
function ImageURL(id, version = "Primary", params = {})
' Validate tag parameter if provided - return empty string for invalid tags to prevent 404 requests
if params.doesExist("tag") or params.doesExist("Tag")
tagValue = invalid
if params.doesExist("tag")
tagValue = params.tag
else if params.doesExist("Tag")
tagValue = params.Tag
end if
' Return empty string if tag is invalid or empty to prevent 404 requests
if not isValidAndNotEmpty(tagValue)
return ""
end if
end if
' set defaults
if not isValid(params.maxHeight)
param = { "maxHeight": "384" }
params.append(param)
end if
if not isValid(params.maxWidth)
param = { "maxWidth": "196" }
params.append(param)
end if
if not isValid(params.quality)
param = { "quality": "90" }
params.append(param)
end if
url = Substitute("Items/{0}/Images/{1}", id, version)
' ?maxHeight=384&maxWidth=256&tag=<tag>&quality=90"
return buildURL(url, params)
end function
function UserImageURL(id, params = {})
' set defaults
if not isValid(params.maxHeight)
params.append({ "maxHeight": "300" })
end if
if not isValid(params.maxWidth)
params.append({ "maxWidth": "300" })
end if
if not isValid(params.quality)
params.append({ "quality": "90" })
end if
url = Substitute("Users/{0}/Images/Primary", id)
return buildURL(url, params)
end function