mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-24 02:02:36 -04:00
Front: better Format of Video Metadata for Episodes
This commit is contained in:
parent
7bc07baf47
commit
ddc3e8f61a
@ -65,6 +65,17 @@ const mapData = (
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const formatTitleMetadata = (item: Item) => {
|
||||||
|
if (item.type === "movie") {
|
||||||
|
return item.name;
|
||||||
|
}
|
||||||
|
return `${item.name} (${episodeDisplayNumber({
|
||||||
|
seasonNumber: item.seasonNumber,
|
||||||
|
episodeNumber: item.episodeNumber,
|
||||||
|
absoluteNumber: item.absoluteNumber,
|
||||||
|
})})`;
|
||||||
|
};
|
||||||
|
|
||||||
export const Player = ({
|
export const Player = ({
|
||||||
slug,
|
slug,
|
||||||
type,
|
type,
|
||||||
@ -81,10 +92,7 @@ export const Player = ({
|
|||||||
const [playbackError, setPlaybackError] = useState<string | undefined>(undefined);
|
const [playbackError, setPlaybackError] = useState<string | undefined>(undefined);
|
||||||
const { data, error } = useFetch(Player.query(type, slug));
|
const { data, error } = useFetch(Player.query(type, slug));
|
||||||
const { data: info, error: infoError } = useFetch(Player.infoQuery(type, slug));
|
const { data: info, error: infoError } = useFetch(Player.infoQuery(type, slug));
|
||||||
const image =
|
const image = data && data.type === "episode" ? data.show?.poster ?? data?.poster : data?.poster;
|
||||||
data && data.type === "episode"
|
|
||||||
? data.show?.poster ?? data?.thumbnail
|
|
||||||
: data?.thumbnail;
|
|
||||||
const previous =
|
const previous =
|
||||||
data && data.type === "episode" && data.previousEpisode
|
data && data.type === "episode" && data.previousEpisode
|
||||||
? `/watch/${data.previousEpisode.slug}?t=0`
|
? `/watch/${data.previousEpisode.slug}?t=0`
|
||||||
@ -93,15 +101,8 @@ export const Player = ({
|
|||||||
data && data.type === "episode" && data.nextEpisode
|
data && data.type === "episode" && data.nextEpisode
|
||||||
? `/watch/${data.nextEpisode.slug}?t=0`
|
? `/watch/${data.nextEpisode.slug}?t=0`
|
||||||
: undefined;
|
: undefined;
|
||||||
const title =
|
const title = data && formatTitleMetadata(data);
|
||||||
data &&
|
const subtitle = data && data.type === "episode" ? data.show?.name : undefined;
|
||||||
(data.type === "movie"
|
|
||||||
? data.name
|
|
||||||
: `${data.show!.name} ${episodeDisplayNumber({
|
|
||||||
seasonNumber: data.seasonNumber,
|
|
||||||
episodeNumber: data.episodeNumber,
|
|
||||||
absoluteNumber: data.absoluteNumber,
|
|
||||||
})}`);
|
|
||||||
|
|
||||||
useVideoKeyboard(info?.subtitles, info?.fonts, previous, next);
|
useVideoKeyboard(info?.subtitles, info?.fonts, previous, next);
|
||||||
|
|
||||||
@ -145,6 +146,7 @@ export const Player = ({
|
|||||||
<Video
|
<Video
|
||||||
metadata={{
|
metadata={{
|
||||||
title: title ?? t("show.episodeNoMetadata"),
|
title: title ?? t("show.episodeNoMetadata"),
|
||||||
|
subtitle: subtitle ?? undefined,
|
||||||
description: data?.overview ?? undefined,
|
description: data?.overview ?? undefined,
|
||||||
imageUri: image?.medium,
|
imageUri: image?.medium,
|
||||||
next: next,
|
next: next,
|
||||||
|
@ -26,11 +26,13 @@ import { durationAtom, playAtom, progressAtom } from "./state";
|
|||||||
|
|
||||||
export const MediaSessionManager = ({
|
export const MediaSessionManager = ({
|
||||||
title,
|
title,
|
||||||
|
subtitle,
|
||||||
imageUri,
|
imageUri,
|
||||||
previous,
|
previous,
|
||||||
next,
|
next,
|
||||||
}: {
|
}: {
|
||||||
title?: string;
|
title?: string;
|
||||||
|
subtitle?: string;
|
||||||
imageUri?: string | null;
|
imageUri?: string | null;
|
||||||
previous?: string;
|
previous?: string;
|
||||||
next?: string;
|
next?: string;
|
||||||
@ -45,9 +47,10 @@ export const MediaSessionManager = ({
|
|||||||
if (!("mediaSession" in navigator)) return;
|
if (!("mediaSession" in navigator)) return;
|
||||||
navigator.mediaSession.metadata = new MediaMetadata({
|
navigator.mediaSession.metadata = new MediaMetadata({
|
||||||
title: title,
|
title: title,
|
||||||
|
album: subtitle,
|
||||||
artwork: imageUri ? [{ src: imageUri }] : undefined,
|
artwork: imageUri ? [{ src: imageUri }] : undefined,
|
||||||
});
|
});
|
||||||
}, [title, imageUri]);
|
}, [title, subtitle, imageUri]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!("mediaSession" in navigator)) return;
|
if (!("mediaSession" in navigator)) return;
|
||||||
|
@ -116,6 +116,7 @@ export const Video = memo(function Video({
|
|||||||
startTime?: number | null;
|
startTime?: number | null;
|
||||||
metadata: {
|
metadata: {
|
||||||
title?: string;
|
title?: string;
|
||||||
|
subtitle?: string;
|
||||||
description?: string;
|
description?: string;
|
||||||
imageUri?: string;
|
imageUri?: string;
|
||||||
previous?: string;
|
previous?: string;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user