mirror of
https://github.com/Arrowar/StreamingCommunity.git
synced 2025-06-07 12:05:35 +00:00
finished get_episodes_info
This commit is contained in:
parent
96bc7ffb8a
commit
c287465011
@ -1,11 +1,15 @@
|
||||
import json
|
||||
|
||||
from django.core.paginator import Paginator
|
||||
|
||||
from rest_framework import viewsets
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.response import Response
|
||||
|
||||
from Src.Api import search, get_version_and_domain, download_film, anime_download_film
|
||||
from Src.Api.anime import EpisodeDownloader
|
||||
from Src.Api.Class.Video import VideoSource
|
||||
from Src.Api.series import STREAM_SITE_NAME
|
||||
from Src.Api.site import media_search_manager, anime_search
|
||||
|
||||
|
||||
@ -41,21 +45,53 @@ class SearchView(viewsets.ViewSet):
|
||||
self.media_id = request.query_params.get("media_id")
|
||||
self.media_slug = request.data.get("media_slug")
|
||||
self.type_media = request.query_params.get("type_media")
|
||||
self.page = self.request.query_params.get("page")
|
||||
|
||||
self.site_version, self.domain = get_version_and_domain()
|
||||
|
||||
match self.type_media.upper():
|
||||
match self.type_media:
|
||||
case "TV":
|
||||
pass
|
||||
self.site_version, self.domain = get_version_and_domain()
|
||||
|
||||
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()
|
||||
seasons_count = video_source.obj_title_manager.get_length()
|
||||
|
||||
|
||||
episodes = {}
|
||||
for i_season in range(1, seasons_count + 1):
|
||||
video_source.obj_episode_manager.clear()
|
||||
video_source.collect_title_season(i_season)
|
||||
episodes_count = video_source.obj_episode_manager.get_length()
|
||||
episodes[i_season] = {}
|
||||
for i_episode in range(1, episodes_count + 1):
|
||||
episode = video_source.obj_episode_manager.episodes[i_episode - 1]
|
||||
episodes[i_season][i_episode] = episode.__dict__
|
||||
|
||||
return Response({"episodes_count": episodes})
|
||||
case "TV_ANIME":
|
||||
episodes = []
|
||||
episodes_downloader = EpisodeDownloader(self.media_id, self.media_slug)
|
||||
episoded_count = episodes_downloader.get_count_episodes()
|
||||
for i in range(0, episoded_count - 210): # TODO: need to implement pagination, more than 5/6 episodes is slow
|
||||
print(f"Getting info for episode {i}")
|
||||
episode_info = episodes_downloader.get_info_episode(index_ep=i)
|
||||
episodes.append(episode_info)
|
||||
return Response({"episodes_count": episodes})
|
||||
items_per_page = 5
|
||||
try:
|
||||
paginator = Paginator(range(episoded_count), items_per_page)
|
||||
|
||||
page_number = self.page if self.page else 1
|
||||
page_indices = paginator.page(page_number)
|
||||
|
||||
for i in page_indices:
|
||||
print(f"Getting info for episode {i}")
|
||||
episode_info = episodes_downloader.get_info_episode(index_ep=i)
|
||||
episodes.append(episode_info)
|
||||
return Response({"episodes_count": episodes})
|
||||
except Exception as e:
|
||||
return Response({"error": "Error while getting episodes info", "message": str(e)})
|
||||
|
||||
return Response({"error": "No media found with that search query"})
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user