mirror of
https://github.com/Arrowar/StreamingCommunity.git
synced 2025-06-07 20:15:24 +00:00
start implementing download for tv series
This commit is contained in:
parent
a7ae9c590b
commit
fbdb3207be
@ -9,7 +9,7 @@ from rest_framework.response import Response
|
|||||||
from Src.Api import search, get_version_and_domain, download_film, anime_download_film
|
from Src.Api import search, get_version_and_domain, download_film, anime_download_film
|
||||||
from Src.Api.anime import EpisodeDownloader
|
from Src.Api.anime import EpisodeDownloader
|
||||||
from Src.Api.Class.Video import VideoSource
|
from Src.Api.Class.Video import VideoSource
|
||||||
from Src.Api.series import STREAM_SITE_NAME
|
from Src.Api.series import STREAM_SITE_NAME, donwload_video
|
||||||
from Src.Api.site import media_search_manager, anime_search
|
from Src.Api.site import media_search_manager, anime_search
|
||||||
|
|
||||||
|
|
||||||
@ -40,14 +40,13 @@ class SearchView(viewsets.ViewSet):
|
|||||||
|
|
||||||
return Response({"error": "No media found with that search query"})
|
return Response({"error": "No media found with that search query"})
|
||||||
|
|
||||||
@action(detail=False, methods=['get'])
|
@action(detail=False, methods=["get"])
|
||||||
def get_episodes_info(self, request):
|
def get_episodes_info(self, request):
|
||||||
self.media_id = request.query_params.get("media_id")
|
self.media_id = request.query_params.get("media_id")
|
||||||
self.media_slug = request.data.get("media_slug")
|
self.media_slug = request.data.get("media_slug")
|
||||||
self.type_media = request.query_params.get("type_media")
|
self.type_media = request.query_params.get("type_media")
|
||||||
self.page = self.request.query_params.get("page")
|
self.page = self.request.query_params.get("page")
|
||||||
|
|
||||||
|
|
||||||
match self.type_media:
|
match self.type_media:
|
||||||
case "TV":
|
case "TV":
|
||||||
self.site_version, self.domain = get_version_and_domain()
|
self.site_version, self.domain = get_version_and_domain()
|
||||||
@ -62,7 +61,6 @@ class SearchView(viewsets.ViewSet):
|
|||||||
video_source.collect_info_seasons()
|
video_source.collect_info_seasons()
|
||||||
seasons_count = video_source.obj_title_manager.get_length()
|
seasons_count = video_source.obj_title_manager.get_length()
|
||||||
|
|
||||||
|
|
||||||
episodes = {}
|
episodes = {}
|
||||||
for i_season in range(1, seasons_count + 1):
|
for i_season in range(1, seasons_count + 1):
|
||||||
video_source.obj_episode_manager.clear()
|
video_source.obj_episode_manager.clear()
|
||||||
@ -70,7 +68,9 @@ class SearchView(viewsets.ViewSet):
|
|||||||
episodes_count = video_source.obj_episode_manager.get_length()
|
episodes_count = video_source.obj_episode_manager.get_length()
|
||||||
episodes[i_season] = {}
|
episodes[i_season] = {}
|
||||||
for i_episode in range(1, episodes_count + 1):
|
for i_episode in range(1, episodes_count + 1):
|
||||||
episode = video_source.obj_episode_manager.episodes[i_episode - 1]
|
episode = video_source.obj_episode_manager.episodes[
|
||||||
|
i_episode - 1
|
||||||
|
]
|
||||||
episodes[i_season][i_episode] = episode.__dict__
|
episodes[i_season][i_episode] = episode.__dict__
|
||||||
|
|
||||||
return Response({"episodes": episodes})
|
return Response({"episodes": episodes})
|
||||||
@ -86,12 +86,17 @@ class SearchView(viewsets.ViewSet):
|
|||||||
page_indices = paginator.page(page_number)
|
page_indices = paginator.page(page_number)
|
||||||
|
|
||||||
for i in page_indices:
|
for i in page_indices:
|
||||||
print(f"Getting info for episode {i}")
|
|
||||||
episode_info = episodes_downloader.get_info_episode(index_ep=i)
|
episode_info = episodes_downloader.get_info_episode(index_ep=i)
|
||||||
|
episode_info["episode_id"] = i
|
||||||
episodes.append(episode_info)
|
episodes.append(episode_info)
|
||||||
return Response({"episodes": episodes})
|
return Response({"episodes": episodes})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return Response({"error": "Error while getting episodes info", "message": str(e)})
|
return Response(
|
||||||
|
{
|
||||||
|
"error": "Error while getting episodes info",
|
||||||
|
"message": str(e),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
return Response({"error": "No media found with that search query"})
|
return Response({"error": "No media found with that search query"})
|
||||||
|
|
||||||
@ -102,7 +107,7 @@ class DownloadView(viewsets.ViewSet):
|
|||||||
self.media_id = request.data.get("media_id")
|
self.media_id = request.data.get("media_id")
|
||||||
self.media_slug = request.data.get("media_slug")
|
self.media_slug = request.data.get("media_slug")
|
||||||
self.type_media = request.data.get("type_media").upper()
|
self.type_media = request.data.get("type_media").upper()
|
||||||
self.episode_id = request.data.get("episode_id")
|
self.download_id = request.data.get("download_id")
|
||||||
|
|
||||||
self.site_version, self.domain = get_version_and_domain()
|
self.site_version, self.domain = get_version_and_domain()
|
||||||
|
|
||||||
@ -110,18 +115,36 @@ class DownloadView(viewsets.ViewSet):
|
|||||||
|
|
||||||
if self.type_media == "MOVIE":
|
if self.type_media == "MOVIE":
|
||||||
download_film(self.media_id, self.media_slug, self.domain)
|
download_film(self.media_id, self.media_slug, self.domain)
|
||||||
response_dict = {"message": "Download done, it is saved in Video folder inside project root"}
|
response_dict = {
|
||||||
|
"message": "Download done, it is saved in Video folder inside project root"
|
||||||
|
}
|
||||||
elif self.type_media == "TV":
|
elif self.type_media == "TV":
|
||||||
pass
|
video_source = VideoSource()
|
||||||
|
video_source.set_url_base_name(STREAM_SITE_NAME)
|
||||||
|
video_source.set_version(self.site_version)
|
||||||
|
video_source.set_domain(self.domain)
|
||||||
|
video_source.set_series_name(self.media_slug)
|
||||||
|
video_source.set_media_id(self.media_id)
|
||||||
|
|
||||||
|
video_source.collect_info_seasons()
|
||||||
|
video_source.obj_episode_manager.clear()
|
||||||
|
|
||||||
|
video_source.collect_title_season(self.download_id)
|
||||||
|
episodes_count = video_source.obj_episode_manager.get_length()
|
||||||
|
for i_episode in range(1, episodes_count + 1):
|
||||||
|
donwload_video(self.media_slug, self.download_id, i_episode)
|
||||||
|
# FIXME - This is not working properly
|
||||||
|
|
||||||
elif self.type_media == "TV_ANIME":
|
elif self.type_media == "TV_ANIME":
|
||||||
# TODO test this
|
|
||||||
episodes_downloader = EpisodeDownloader(self.media_id, self.media_slug)
|
episodes_downloader = EpisodeDownloader(self.media_id, self.media_slug)
|
||||||
episodes_downloader.download_episode(self.episode_id)
|
episodes_downloader.download_episode(self.download_id)
|
||||||
|
response_dict = {
|
||||||
|
"message": "Download done, it is saved in Video folder inside project root"
|
||||||
|
}
|
||||||
elif self.type_media == "OVA":
|
elif self.type_media == "OVA":
|
||||||
anime_download_film(
|
anime_download_film(id_film=self.media_id, title_name=self.media_slug)
|
||||||
id_film=self.media_id,
|
response_dict = {
|
||||||
title_name=self.media_slug
|
"message": "Download done, it is saved in Video folder inside project root"
|
||||||
)
|
}
|
||||||
response_dict = {"message": "Download done, it is saved in Video folder inside project root"}
|
|
||||||
|
|
||||||
return Response(response_dict)
|
return Response(response_dict)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user