add download for all anime episodes

This commit is contained in:
Francesco Grazioso 2024-05-05 12:59:09 +02:00
parent 3af9edec4f
commit dde4a924ef
2 changed files with 36 additions and 14 deletions

View File

@ -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 data = {
media_id: mediaId,
media_slug: mediaSlug,
type_media: mediaType,
download_id: downloadId,
};
return post(url, data);
}
export const downloadFilm = (mediaId: number, mediaSlug: string) => downloadMedia(mediaId, mediaSlug, 'MOVIE');
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);

View File

@ -2,7 +2,7 @@
import { useRoute } from 'vue-router'
import type {DownloadResponse, Episode, MediaItem, Season, SeasonResponse} from "@/api/interfaces";
import { onMounted, ref } from "vue";
import {downloadAnimeFilm, downloadFilm, getEpisodesInfo} from "@/api/api";
import {downloadAnimeFilm, downloadAnimeSeries, downloadFilm, getEpisodesInfo} from "@/api/api";
const route = useRoute()
@ -54,31 +54,51 @@ const toggleEpisodeSelection = () => {
const downloadItems = async () => {
try {
let res: DownloadResponse;
switch (item.type) {
case 'MOVIE':
res = (await downloadFilm(item.id, item.slug)).data;
await handleMovieDownload();
break;
case 'TV_ANIME':
await handleTVAnimeDownload();
break;
case 'OVA':
case 'SPECIAL':
res = (await downloadAnimeFilm(item.id, item.slug)).data;
await handleOVADownload();
break;
default:
throw new Error('Tipo di media non supportato');
}
console.log(res)
if (res.error) {
throw new Error(`${res.error} - ${res.message}`);
}
alertDownload();
} catch (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) => {
if (message) {
alert(message)