feat: change amvstrm to point to self hosted instance

This commit is contained in:
2024-08-18 17:05:53 -04:00
parent 30abd1eba8
commit 36aa521bf8
8 changed files with 77 additions and 72 deletions

View File

@@ -5,7 +5,7 @@ export async function getEpisodesFromAmvstrm(
): Promise<EpisodesResponse | null> { ): Promise<EpisodesResponse | null> {
try { try {
const episodes: Episode[] | null = await fetch( const episodes: Episode[] | null = await fetch(
`https://api.amvstr.me/api/v2/episode/${aniListId}`, `https://amvstrm.up.railway.app/api/v2/episode/${aniListId}`,
) )
.then((res) => res.json<AmvstrmEpisodesResponse>()) .then((res) => res.json<AmvstrmEpisodesResponse>())
.then(({ code, message, episodes }) => { .then(({ code, message, episodes }) => {

View File

@@ -3,7 +3,9 @@ import type { FetchUrlResponse } from "./responseType";
export async function getSourcesFromAmvstrm( export async function getSourcesFromAmvstrm(
watchId: string, watchId: string,
): Promise<FetchUrlResponse | null> { ): Promise<FetchUrlResponse | null> {
const source = await fetch(`https://api.amvstr.me/api/v2/stream/${watchId}`) const source = await fetch(
`https://amvstrm.up.railway.app/api/v2/stream/${watchId}`,
)
.then((res) => res.json<AmvstrmStreamResponse>()) .then((res) => res.json<AmvstrmStreamResponse>())
.then(({ stream }) => { .then(({ stream }) => {
const streamObj = stream?.multi; const streamObj = stream?.multi;

View File

@@ -4,7 +4,7 @@ export async function fetchSearchResultsFromAmvstrm(
limit: number, limit: number,
) { ) {
return fetch( return fetch(
`https://api.amvstr.me/api/v2/search?q=${query}&p=${page}&limit=${limit}`, `https://amvstrm.up.railway.app/api/v2/search?q=${query}&p=${page}&limit=${limit}`,
) )
.then((res) => res.json<any>()) .then((res) => res.json<any>())
.then(({ pageInfo: { hasNextPage }, results }) => ({ .then(({ pageInfo: { hasNextPage }, results }) => ({

View File

@@ -4,8 +4,8 @@ export async function fetchTitleFromAmvstrm(
aniListId: number, aniListId: number,
): Promise<Title | undefined> { ): Promise<Title | undefined> {
return Promise.all([ return Promise.all([
fetch(`https://api.amvstr.me/api/v2/info/${aniListId}`).then((res) => fetch(`https://amvstrm.up.railway.app/api/v2/info/${aniListId}`).then(
res.json<any>(), (res) => res.json<any>(),
), ),
fetchMissingInformationFromAnify(aniListId).catch((err) => { fetchMissingInformationFromAnify(aniListId).catch((err) => {
console.error("Failed to get missing information from Anify", err); console.error("Failed to get missing information from Anify", err);

View File

@@ -2,7 +2,7 @@ import { HttpResponse, http } from "msw";
export function getAmvstrmEpisodes() { export function getAmvstrmEpisodes() {
return http.get( return http.get(
"https://api.amvstr.me/api/v2/episode/:aniListId", "https://amvstrm.up.railway.app/api/v2/episode/:aniListId",
({ params }) => { ({ params }) => {
const aniListId = Number(params["aniListId"]); const aniListId = Number(params["aniListId"]);
if (aniListId === 4) { if (aniListId === 4) {

View File

@@ -2,7 +2,7 @@ import { HttpResponse, http } from "msw";
export function getAmvstrmSearchResults() { export function getAmvstrmSearchResults() {
return http.get( return http.get(
"https://api.amvstr.me/api/v2/search", "https://amvstrm.up.railway.app/api/v2/search",
({ request: { url: urlString } }) => { ({ request: { url: urlString } }) => {
const url = new URL(urlString); const url = new URL(urlString);
const query = url.searchParams.get("q"); const query = url.searchParams.get("q");

View File

@@ -1,74 +1,77 @@
import { HttpResponse, http } from "msw"; import { HttpResponse, http } from "msw";
export function getAmvstrmSources() { export function getAmvstrmSources() {
return http.get("https://api.amvstr.me/api/v2/stream/:id", ({ params }) => { return http.get(
const { id } = params; "https://amvstrm.up.railway.app/api/v2/stream/:id",
({ params }) => {
const { id } = params;
if (id === "unknown") { if (id === "unknown") {
return HttpResponse.json( return HttpResponse.json(
{ {
code: 404, code: 404,
message: message:
"The requested resource could not be found but may be available in the future. Subsequent requests by the client are permissible.", "The requested resource could not be found but may be available in the future. Subsequent requests by the client are permissible.",
}, },
{ status: 404 }, { status: 404 },
); );
} }
return HttpResponse.json({ return HttpResponse.json({
code: 200, code: 200,
message: "success", message: "success",
info: { info: {
title: "Mushoku Tensei II: Isekai Ittara Honki Dasu Part 2", title: "Mushoku Tensei II: Isekai Ittara Honki Dasu Part 2",
id: "mushoku-tensei-ii-isekai-ittara-honki-dasu-part-2", id: "mushoku-tensei-ii-isekai-ittara-honki-dasu-part-2",
episode: "1", episode: "1",
}, },
stream: { stream: {
multi: { multi: {
main: { main: {
url: "https://www032.vipanicdn.net/streamhls/aa804a2400535d84dd59454b28d329fb/ep.1.1712504065.m3u8", url: "https://www032.vipanicdn.net/streamhls/aa804a2400535d84dd59454b28d329fb/ep.1.1712504065.m3u8",
label: "hls P", label: "hls P",
isM3U8: true, isM3U8: true,
quality: "default", quality: "default",
},
backup: {
url: "https://www032.anicdnstream.info/videos/hls/6Ogzt4UOJPbzciJM8EJvgg/1717137410/223419/aa804a2400535d84dd59454b28d329fb/ep.1.1712504065.m3u8",
label: "hls P",
isM3U8: true,
quality: "backup",
},
}, },
backup: { tracks: "",
url: "https://www032.anicdnstream.info/videos/hls/6Ogzt4UOJPbzciJM8EJvgg/1717137410/223419/aa804a2400535d84dd59454b28d329fb/ep.1.1712504065.m3u8", },
label: "hls P", iframe: [
isM3U8: true, {
quality: "backup", name: "Multiquality Server",
iframe:
"https://embtaku.com/embedplus?id=MjIzNDE5&token=dvjcF3MKtKBIeAe7rQhIpw&expires=1717137409",
}, },
{
name: "Streamwish",
iframe: "https://awish.pro/e/nr6ogony8osz",
},
{
name: "Doodstream",
iframe: "https://dood.wf/e/4g6gt8yygdnz",
},
{
name: "Mp4upload",
iframe: "https://www.mp4upload.com/embed-3dshuf4wf6md.html",
},
],
plyr: {
main: "https://plyr.link/p/player.html#aHR0cHM6Ly93d3cwMzIudmlwYW5pY2RuLm5ldC9zdHJlYW1obHMvYWE4MDRhMjQwMDUzNWQ4NGRkNTk0NTRiMjhkMzI5ZmIvZXAuMS4xNzEyNTA0MDY1Lm0zdTg=",
backup:
"https://plyr.link/p/player.html#aHR0cHM6Ly93d3cwMzIuYW5pY2Ruc3RyZWFtLmluZm8vdmlkZW9zL2hscy82T2d6dDRVT0pQYnpjaUpNOEVKdmdnLzE3MTcxMzc0MTAvMjIzNDE5L2FhODA0YTI0MDA1MzVkODRkZDU5NDU0YjI4ZDMyOWZiL2VwLjEuMTcxMjUwNDA2NS5tM3U4",
}, },
tracks: "", nspl: {
}, main: "https://nspl.nyt92.eu.org/player?p=JnRpdGxlPW11c2hva3UtdGVuc2VpLWlpLWlzZWthaS1pdHRhcmEtaG9ua2ktZGFzdS1wYXJ0LTItZXBpc29kZS0xJmZpbGU9aHR0cHM6Ly93d3cwMzIudmlwYW5pY2RuLm5ldC9zdHJlYW1obHMvYWE4MDRhMjQwMDUzNWQ4NGRkNTk0NTRiMjhkMzI5ZmIvZXAuMS4xNzEyNTA0MDY1Lm0zdTgmdGh1bWJuYWlscz11bmRlZmluZWQ=",
iframe: [ backup:
{ "https://nspl.nyt92.eu.org/player?p=JnRpdGxlPW11c2hva3UtdGVuc2VpLWlpLWlzZWthaS1pdHRhcmEtaG9ua2ktZGFzdS1wYXJ0LTItZXBpc29kZS0xJmZpbGU9aHR0cHM6Ly93d3cwMzIuYW5pY2Ruc3RyZWFtLmluZm8vdmlkZW9zL2hscy82T2d6dDRVT0pQYnpjaUpNOEVKdmdnLzE3MTcxMzc0MTAvMjIzNDE5L2FhODA0YTI0MDA1MzVkODRkZDU5NDU0YjI4ZDMyOWZiL2VwLjEuMTcxMjUwNDA2NS5tM3U4JnRodW1ibmFpbHM9dW5kZWZpbmVk",
name: "Multiquality Server",
iframe:
"https://embtaku.com/embedplus?id=MjIzNDE5&token=dvjcF3MKtKBIeAe7rQhIpw&expires=1717137409",
}, },
{ });
name: "Streamwish", },
iframe: "https://awish.pro/e/nr6ogony8osz", );
},
{
name: "Doodstream",
iframe: "https://dood.wf/e/4g6gt8yygdnz",
},
{
name: "Mp4upload",
iframe: "https://www.mp4upload.com/embed-3dshuf4wf6md.html",
},
],
plyr: {
main: "https://plyr.link/p/player.html#aHR0cHM6Ly93d3cwMzIudmlwYW5pY2RuLm5ldC9zdHJlYW1obHMvYWE4MDRhMjQwMDUzNWQ4NGRkNTk0NTRiMjhkMzI5ZmIvZXAuMS4xNzEyNTA0MDY1Lm0zdTg=",
backup:
"https://plyr.link/p/player.html#aHR0cHM6Ly93d3cwMzIuYW5pY2Ruc3RyZWFtLmluZm8vdmlkZW9zL2hscy82T2d6dDRVT0pQYnpjaUpNOEVKdmdnLzE3MTcxMzc0MTAvMjIzNDE5L2FhODA0YTI0MDA1MzVkODRkZDU5NDU0YjI4ZDMyOWZiL2VwLjEuMTcxMjUwNDA2NS5tM3U4",
},
nspl: {
main: "https://nspl.nyt92.eu.org/player?p=JnRpdGxlPW11c2hva3UtdGVuc2VpLWlpLWlzZWthaS1pdHRhcmEtaG9ua2ktZGFzdS1wYXJ0LTItZXBpc29kZS0xJmZpbGU9aHR0cHM6Ly93d3cwMzIudmlwYW5pY2RuLm5ldC9zdHJlYW1obHMvYWE4MDRhMjQwMDUzNWQ4NGRkNTk0NTRiMjhkMzI5ZmIvZXAuMS4xNzEyNTA0MDY1Lm0zdTgmdGh1bWJuYWlscz11bmRlZmluZWQ=",
backup:
"https://nspl.nyt92.eu.org/player?p=JnRpdGxlPW11c2hva3UtdGVuc2VpLWlpLWlzZWthaS1pdHRhcmEtaG9ua2ktZGFzdS1wYXJ0LTItZXBpc29kZS0xJmZpbGU9aHR0cHM6Ly93d3cwMzIuYW5pY2Ruc3RyZWFtLmluZm8vdmlkZW9zL2hscy82T2d6dDRVT0pQYnpjaUpNOEVKdmdnLzE3MTcxMzc0MTAvMjIzNDE5L2FhODA0YTI0MDA1MzVkODRkZDU5NDU0YjI4ZDMyOWZiL2VwLjEuMTcxMjUwNDA2NS5tM3U4JnRodW1ibmFpbHM9dW5kZWZpbmVk",
},
});
});
} }

View File

@@ -2,7 +2,7 @@ import { HttpResponse, http } from "msw";
export function getAmvstrmTitle() { export function getAmvstrmTitle() {
return http.get( return http.get(
"https://api.amvstr.me/api/v2/info/:aniListId", "https://amvstrm.up.railway.app/api/v2/info/:aniListId",
({ params }) => { ({ params }) => {
const aniListId = Number(params["aniListId"] as string); const aniListId = Number(params["aniListId"] as string);