did a lot of syle work and started search and detail pages
This commit is contained in:
parent
7c5d2a25ff
commit
275fb87eeb
23 changed files with 301155 additions and 243 deletions
|
@ -1,5 +1,3 @@
|
|||
"use server";
|
||||
|
||||
import type { paths } from "./jellyfin.generated"; // generated by openapi-typescript
|
||||
import createClient from "openapi-fetch";
|
||||
import { query } from "@solidjs/router";
|
||||
|
@ -20,42 +18,29 @@ type ItemImageType =
|
|||
| "BoxRear"
|
||||
| "Profile";
|
||||
|
||||
const baseUrl = process.env.JELLYFIN_BASE_URL;
|
||||
const client = createClient<paths>({
|
||||
baseUrl,
|
||||
headers: {
|
||||
Authorization: `MediaBrowser DeviceId="Streamarr", Token="${process.env.JELLYFIN_API_KEY}"`,
|
||||
"Content-Type": 'application/json; profile="CamelCase"',
|
||||
},
|
||||
});
|
||||
const getBaseUrl = () => {
|
||||
"use server";
|
||||
|
||||
export const TEST = query(async () => {
|
||||
const userId = "a9c51af8-4bf5-4578-a99a-b4dd0ebf0763";
|
||||
const itemId = "919dfa97-e4da-d275-8a92-5d056e590a28";
|
||||
const seriesId = "5230ddbcd-9400-733d-c07e-5b8cb7a4f49";
|
||||
return process.env.JELLYFIN_BASE_URL;
|
||||
};
|
||||
|
||||
const { data: seriesData } = await client.GET(
|
||||
"/UserItems/{itemId}/UserData",
|
||||
{
|
||||
params: {
|
||||
path: { itemId: seriesId },
|
||||
query: { userId },
|
||||
},
|
||||
|
||||
const getClient = () => {
|
||||
"use server";
|
||||
|
||||
return createClient<paths>({
|
||||
baseUrl: getBaseUrl(),
|
||||
headers: {
|
||||
Authorization: `MediaBrowser DeviceId="Streamarr", Token="${process.env.JELLYFIN_API_KEY}"`,
|
||||
"Content-Type": 'application/json; profile="CamelCase"',
|
||||
},
|
||||
);
|
||||
|
||||
const { data: epData } = await client.GET("/UserItems/{itemId}/UserData", {
|
||||
params: {
|
||||
path: { itemId },
|
||||
query: { userId },
|
||||
},
|
||||
});
|
||||
|
||||
console.log(seriesData, epData);
|
||||
}, "jellyfin.TEST");
|
||||
})
|
||||
};
|
||||
|
||||
export const getCurrentUser = query(async () => {
|
||||
const { data, error, response } = await client.GET("/Users/Public", {
|
||||
"use server";
|
||||
|
||||
const { data, error, response } = await getClient().GET("/Users/Public", {
|
||||
params: {},
|
||||
});
|
||||
|
||||
|
@ -63,7 +48,9 @@ export const getCurrentUser = query(async () => {
|
|||
}, "jellyfin.getCurrentUser");
|
||||
|
||||
export const listUsers = query(async () => {
|
||||
const { data, error } = await client.GET("/Users", {
|
||||
"use server";
|
||||
|
||||
const { data, error } = await getClient().GET("/Users", {
|
||||
params: {},
|
||||
});
|
||||
|
||||
|
@ -72,7 +59,9 @@ export const listUsers = query(async () => {
|
|||
|
||||
export const listItems = query(
|
||||
async (userId: string): Promise<Entry[] | undefined> => {
|
||||
const { data, error } = await client.GET("/Items", {
|
||||
"use server";
|
||||
|
||||
const { data, error } = await getClient().GET("/Items", {
|
||||
params: {
|
||||
query: {
|
||||
userId,
|
||||
|
@ -99,7 +88,7 @@ export const listItems = query(
|
|||
// id: item.Id!,
|
||||
id: item.ProviderIds!["Tmdb"]!,
|
||||
title: item.Name!,
|
||||
thumbnail: new URL(`/Items/${item.Id!}/Images/Primary`, baseUrl), //await getItemImage(data.Id!, 'Primary'),
|
||||
thumbnail: new URL(`/Items/${item.Id!}/Images/Primary`, getBaseUrl()), //await getItemImage(data.Id!, 'Primary'),
|
||||
})) ?? []
|
||||
);
|
||||
},
|
||||
|
@ -107,14 +96,19 @@ export const listItems = query(
|
|||
);
|
||||
|
||||
export const getRandomItem = query(
|
||||
async (userId: string): Promise<Entry | undefined> =>
|
||||
getRandomItems(userId, 1).then((items) => items?.at(0)),
|
||||
async (userId: string): Promise<Entry | undefined> => {
|
||||
"use server";
|
||||
|
||||
return getRandomItems(userId, 1).then((items) => items?.at(0));
|
||||
},
|
||||
"jellyfin.listRandomItem",
|
||||
);
|
||||
|
||||
export const getRandomItems = query(
|
||||
async (userId: string, limit: number = 10): Promise<Entry[]> => {
|
||||
const { data, error } = await client.GET("/Items", {
|
||||
async (userId: string, limit: number = 20): Promise<Entry[]> => {
|
||||
"use server";
|
||||
|
||||
const { data, error } = await getClient().GET("/Items", {
|
||||
params: {
|
||||
query: {
|
||||
userId,
|
||||
|
@ -140,8 +134,8 @@ export const getRandomItems = query(
|
|||
// id: item.Id!,
|
||||
id: item.ProviderIds!["Tmdb"]!,
|
||||
title: item.Name!,
|
||||
thumbnail: new URL(`/Items/${item.Id!}/Images/Primary`, baseUrl), //await getItemImage(data.Id!, 'Primary'),
|
||||
image: new URL(`/Items/${item.Id!}/Images/Backdrop`, baseUrl), //await getItemImage(data.Id!, 'Primary'),
|
||||
thumbnail: new URL(`/Items/${item.Id!}/Images/Primary`, getBaseUrl()), //await getItemImage(data.Id!, 'Primary'),
|
||||
image: new URL(`/Items/${item.Id!}/Images/Backdrop`, getBaseUrl()), //await getItemImage(data.Id!, 'Primary'),
|
||||
})) ?? []
|
||||
);
|
||||
},
|
||||
|
@ -150,7 +144,9 @@ export const getRandomItems = query(
|
|||
|
||||
export const getItem = query(
|
||||
async (userId: string, itemId: string): Promise<Entry | undefined> => {
|
||||
const { data, error } = await client.GET("/Items/{itemId}", {
|
||||
"use server";
|
||||
|
||||
const { data, error } = await getClient().GET("/Items/{itemId}", {
|
||||
params: {
|
||||
path: {
|
||||
itemId,
|
||||
|
@ -180,8 +176,8 @@ export const getItem = query(
|
|||
id: data.ProviderIds!["Tmdb"]!,
|
||||
title: data.Name!,
|
||||
overview: data.Overview!,
|
||||
thumbnail: new URL(`/Items/${itemId}/Images/Primary`, baseUrl), //await getItemImage(data.Id!, 'Primary'),
|
||||
image: new URL(`/Items/${itemId}/Images/Backdrop`, baseUrl),
|
||||
thumbnail: new URL(`/Items/${itemId}/Images/Primary`, getBaseUrl()), //await getItemImage(data.Id!, 'Primary'),
|
||||
image: new URL(`/Items/${itemId}/Images/Backdrop`, getBaseUrl()),
|
||||
// ...data,
|
||||
};
|
||||
},
|
||||
|
@ -193,7 +189,9 @@ export const getItemImage = query(
|
|||
itemId: string,
|
||||
imageType: ItemImageType,
|
||||
): Promise<any | undefined> => {
|
||||
const { data, error } = await client.GET(
|
||||
"use server";
|
||||
|
||||
const { data, error } = await getClient().GET(
|
||||
"/Items/{itemId}/Images/{imageType}",
|
||||
{
|
||||
parseAs: "blob",
|
||||
|
@ -214,7 +212,9 @@ export const getItemImage = query(
|
|||
|
||||
export const getItemPlaybackInfo = query(
|
||||
async (userId: string, itemId: string): Promise<any | undefined> => {
|
||||
const { data, error, response } = await client.GET(
|
||||
"use server";
|
||||
|
||||
const { data, error, response } = await getClient().GET(
|
||||
"/Items/{itemId}/PlaybackInfo",
|
||||
{
|
||||
parseAs: "text",
|
||||
|
@ -236,7 +236,9 @@ export const getItemPlaybackInfo = query(
|
|||
);
|
||||
|
||||
export const queryItems = query(async () => {
|
||||
const { data, error } = await client.GET("/Items", {
|
||||
"use server";
|
||||
|
||||
const { data, error } = await getClient().GET("/Items", {
|
||||
params: {
|
||||
query: {
|
||||
mediaTypes: ["Video"],
|
||||
|
@ -254,7 +256,9 @@ export const queryItems = query(async () => {
|
|||
|
||||
export const getContinueWatching = query(
|
||||
async (userId: string): Promise<Entry[]> => {
|
||||
const { data, error } = await client.GET("/UserItems/Resume", {
|
||||
"use server";
|
||||
|
||||
const { data, error } = await getClient().GET("/UserItems/Resume", {
|
||||
params: {
|
||||
query: {
|
||||
userId,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue