mirror of
https://github.com/Arrowar/StreamingCommunity.git
synced 2025-06-07 20:15:24 +00:00
add download for all anime episodes
This commit is contained in:
parent
3af9edec4f
commit
dde4a924ef
@ -30,15 +30,17 @@ export async function getEpisodesInfo(mediaId: number, mediaSlug: string, mediaT
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async function downloadMedia(mediaId: number, mediaSlug: string, mediaType: string): Promise<AxiosResponse<DownloadResponse>> {
|
async function downloadMedia(mediaId: number, mediaSlug: string, mediaType: string, downloadId?: number): Promise<AxiosResponse<DownloadResponse>> {
|
||||||
const url = `/download/`;
|
const url = `/download/`;
|
||||||
const data = {
|
const data = {
|
||||||
media_id: mediaId,
|
media_id: mediaId,
|
||||||
media_slug: mediaSlug,
|
media_slug: mediaSlug,
|
||||||
type_media: mediaType,
|
type_media: mediaType,
|
||||||
|
download_id: downloadId,
|
||||||
};
|
};
|
||||||
return post(url, data);
|
return post(url, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
export const downloadFilm = (mediaId: number, mediaSlug: string) => downloadMedia(mediaId, mediaSlug, 'MOVIE');
|
export const downloadFilm = (mediaId: number, mediaSlug: string) => downloadMedia(mediaId, mediaSlug, 'MOVIE');
|
||||||
export const downloadAnimeFilm = (mediaId: number, mediaSlug: string) => downloadMedia(mediaId, mediaSlug, 'OVA');
|
export const downloadAnimeFilm = (mediaId: number, mediaSlug: string) => downloadMedia(mediaId, mediaSlug, 'OVA');
|
||||||
|
export const downloadAnimeSeries = (mediaId: number, mediaSlug: string, downloadId: number) => downloadMedia(mediaId, mediaSlug, 'OVA', downloadId);
|
@ -2,7 +2,7 @@
|
|||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import type {DownloadResponse, Episode, MediaItem, Season, SeasonResponse} from "@/api/interfaces";
|
import type {DownloadResponse, Episode, MediaItem, Season, SeasonResponse} from "@/api/interfaces";
|
||||||
import { onMounted, ref } from "vue";
|
import { onMounted, ref } from "vue";
|
||||||
import {downloadAnimeFilm, downloadFilm, getEpisodesInfo} from "@/api/api";
|
import {downloadAnimeFilm, downloadAnimeSeries, downloadFilm, getEpisodesInfo} from "@/api/api";
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|
||||||
@ -54,31 +54,51 @@ const toggleEpisodeSelection = () => {
|
|||||||
|
|
||||||
const downloadItems = async () => {
|
const downloadItems = async () => {
|
||||||
try {
|
try {
|
||||||
let res: DownloadResponse;
|
|
||||||
switch (item.type) {
|
switch (item.type) {
|
||||||
case 'MOVIE':
|
case 'MOVIE':
|
||||||
res = (await downloadFilm(item.id, item.slug)).data;
|
await handleMovieDownload();
|
||||||
|
break;
|
||||||
|
case 'TV_ANIME':
|
||||||
|
await handleTVAnimeDownload();
|
||||||
break;
|
break;
|
||||||
case 'OVA':
|
case 'OVA':
|
||||||
case 'SPECIAL':
|
case 'SPECIAL':
|
||||||
res = (await downloadAnimeFilm(item.id, item.slug)).data;
|
await handleOVADownload();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new Error('Tipo di media non supportato');
|
throw new Error('Tipo di media non supportato');
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(res)
|
|
||||||
|
|
||||||
if (res.error) {
|
|
||||||
throw new Error(`${res.error} - ${res.message}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
alertDownload();
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
alertDownload(error);
|
alertDownload(error);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleMovieDownload = async () => {
|
||||||
|
alertDownload();
|
||||||
|
const res = (await downloadFilm(item.id, item.slug)).data;
|
||||||
|
handleDownloadError(res);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleTVAnimeDownload = async () => {
|
||||||
|
alertDownload();
|
||||||
|
for (const episode of animeEpisodes.value) {
|
||||||
|
const res = (await downloadAnimeSeries(item.id, item.slug, episode.episode_id)).data;
|
||||||
|
handleDownloadError(res);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleOVADownload = async () => {
|
||||||
|
alertDownload();
|
||||||
|
const res = (await downloadAnimeFilm(item.id, item.slug)).data;
|
||||||
|
handleDownloadError(res);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleDownloadError = (res: DownloadResponse) => {
|
||||||
|
if (res.error) {
|
||||||
|
throw new Error(`${res.error} - ${res.message}`);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const alertDownload = (message?: any) => {
|
const alertDownload = (message?: any) => {
|
||||||
if (message) {
|
if (message) {
|
||||||
alert(message)
|
alert(message)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user