mirror of
https://github.com/p-stream/p-stream.git
synced 2026-08-19 05:35:38 +00:00
Scrape skip intro time
This commit is contained in:
parent
5f7650dfdd
commit
5570f9818e
2 changed files with 46 additions and 1 deletions
44
src/components/player/hooks/useSkipTime.ts
Normal file
44
src/components/player/hooks/useSkipTime.ts
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
import { useEffect, useState } from "react";
|
||||
|
||||
import { usePlayerMeta } from "@/components/player/hooks/usePlayerMeta";
|
||||
|
||||
// Thanks Nemo, Custom, and Roomba for this API
|
||||
const BASE_URL = "https://fed-api-production.up.railway.app";
|
||||
|
||||
export function useSkipTime() {
|
||||
const { playerMeta: meta } = usePlayerMeta();
|
||||
const [skiptime, setSkiptime] = useState(0);
|
||||
|
||||
useEffect(() => {
|
||||
const fetchSkipTime = async () => {
|
||||
if (!meta?.tmdbId) return;
|
||||
|
||||
try {
|
||||
const isMovie = meta.type === "movie";
|
||||
const apiUrl = isMovie
|
||||
? `${BASE_URL}/movie/${meta.tmdbId}`
|
||||
: `${BASE_URL}/tv/${meta.tmdbId}/${meta.season?.number}/${meta.episode?.number}`;
|
||||
|
||||
const response = await fetch(apiUrl);
|
||||
if (!response.ok) throw new Error("API request failed");
|
||||
|
||||
const data = await response.json();
|
||||
|
||||
if (data?.error) {
|
||||
console.error("API error:", data.error);
|
||||
return;
|
||||
}
|
||||
|
||||
const skipTime = data?.streams?.introSkipTime || null;
|
||||
setSkiptime(skipTime);
|
||||
} catch (error) {
|
||||
console.error("Error fetching skip time:", error);
|
||||
setSkiptime(0);
|
||||
}
|
||||
};
|
||||
|
||||
fetchSkipTime();
|
||||
}, [meta?.tmdbId, meta?.type, meta?.season?.number, meta?.episode?.number]);
|
||||
|
||||
return skiptime;
|
||||
}
|
||||
|
|
@ -9,6 +9,7 @@ import { SkipIntroButton } from "@/components/player/atoms/SkipIntroButton";
|
|||
import { Widescreen } from "@/components/player/atoms/Widescreen";
|
||||
import { usePlayerMeta } from "@/components/player/hooks/usePlayerMeta";
|
||||
import { useShouldShowControls } from "@/components/player/hooks/useShouldShowControls";
|
||||
import { useSkipTime } from "@/components/player/hooks/useSkipTime";
|
||||
import { useIsMobile } from "@/hooks/useIsMobile";
|
||||
import { PlayerMeta, playerStatus } from "@/stores/player/slices/source";
|
||||
import { usePlayerStore } from "@/stores/player/store";
|
||||
|
|
@ -54,7 +55,7 @@ export function PlayerPart(props: PlayerPartProps) {
|
|||
}
|
||||
});
|
||||
|
||||
const skiptime = null;
|
||||
const skiptime = useSkipTime();
|
||||
|
||||
return (
|
||||
<Player.Container onLoad={props.onLoad} showingControls={showTargets}>
|
||||
|
|
|
|||
Loading…
Reference in a new issue