Files
App/api/queries/functions/images.ts
Violet Caulfield 2cf1db787c oh baby
2025-01-20 21:09:16 -06:00

55 lines
1.7 KiB
TypeScript

import { Api } from "@jellyfin/sdk/lib/api"
import { ImageFormat, ImageType } from "@jellyfin/sdk/lib/generated-client/models"
import { getImageApi } from "@jellyfin/sdk/lib/utils/api"
import _ from "lodash"
import { queryConfig } from "../query.config"
import Client from "../../../api/client"
export function fetchImage(api: Api, itemId: string, imageType?: ImageType) : Promise<string> {
return new Promise(async (resolve) => {
let imageResponse = await api.axiosInstance
.get(getImageApi(api).getItemImageUrlById(
itemId,
imageType,
{
format: queryConfig.images.format,
fillHeight: queryConfig.images.fillHeight,
fillWidth: queryConfig.images.fillWidth
}
))
console.debug(convertFileToBase64(imageResponse.data));
console.debug(typeof imageResponse.data)
resolve(convertFileToBase64(imageResponse.data));
});
}
export function fetchItemImage(itemId: string, imageType?: ImageType, width?: number) {
return getImageApi(Client.api!)
.getItemImage({
itemId,
imageType: imageType ? imageType : ImageType.Primary,
format: ImageFormat.Jpg
})
.then((response) => {
console.log(response.data)
return convertFileToBase64(response.data);
});
}
function base64toJpeg(encode: string) : string {
return `data:image/jpeg;base64,${encode}`;
}
function convertFileToBase64(file: any): string {
console.debug("Converting file to base64", file)
let encode = base64toJpeg(Buffer.from(file, 'binary').toString('base64'));
console.debug(encode);
return encode;
}