cleaned up the codebase plus did some minor optimizations

This commit is contained in:
Benex254
2024-08-05 09:46:53 +03:00
parent bc551309a2
commit a59d8e5599
46 changed files with 549 additions and 4657 deletions

View File

@@ -9,15 +9,17 @@ class AnimeScreenController:
def __init__(self, model:AnimeScreenModel):
self.model = model
self.view = AnimeScreenView(controller=self, model=self.model)
# self.update_anime_view()
def get_view(self) -> AnimeScreenView:
return self.view
def update_anime_view(self,id):
data = self.model.get_anime_data(id)
if data[0]:
Clock.schedule_once(lambda _:self.view.update_layout(data[1]["data"]["Page"]["media"][0]))
def update_anime_view(self,id:int):
if self.model.anime_id != id:
data = self.model.get_anime_data(id)
if data[0]:
self.model.anime_id = id
Clock.schedule_once(lambda _:self.view.update_layout(data[1]["data"]["Page"]["media"][0]))
def update_my_list(self,*args):
self.model.update_user_anime_list(*args)

View File

@@ -6,6 +6,7 @@ from View.components.media_card.media_card import MediaCardsContainer
from Utility import show_notification
from kivy.clock import Clock
# TODO:Move the update home screen to homescreen.py
class HomeScreenController:
"""
The `MainScreenController` class represents a controller implementation.

View File

@@ -1,7 +1,6 @@
import json
import os
from Model.base_model import BaseScreenModel
from Utility import show_notification
from libs.anilist import AniList
from Utility.media_card_loader import MediaCardLoader
from kivy.storage.jsonstore import JsonStore
@@ -9,7 +8,7 @@ from kivy.storage.jsonstore import JsonStore
user_data= JsonStore("user_data.json")
class AnimeScreenModel(BaseScreenModel):
data = {}
id = 0
anime_id = 0
def media_card_generator(self):
for anime_item in self.data["data"]["Page"]["media"]:
@@ -19,8 +18,4 @@ class AnimeScreenModel(BaseScreenModel):
def get_anime_data(self,id:int):
return AniList.get_anime(id)
def get_anime_data_(self):
with open("anime.json","r") as file:
return json.load(file)

View File

@@ -1,12 +1,12 @@
import os
from Model.base_model import BaseScreenModel
from libs.anilist import AniList
from Utility.media_card_loader import MediaCardLoader
from kivy.storage.jsonstore import JsonStore
user_data= JsonStore("user_data.json")
class HomeScreenModel(BaseScreenModel):
class HomeScreenModel(BaseScreenModel):
def get_trending_anime(self):
success,data = AniList.get_trending()
if success:

View File

@@ -1,4 +1,4 @@
from .media_card_loader import MediaCardLoader
from .show_notification import show_notification
from .data import themes_available
from .utils import write_crash
from .utils import write_crash

View File

@@ -0,0 +1,20 @@
from datetime import datetime
# TODO: Add formating options for the final date
def format_anilist_date_object(anilist_date_object:dict|None):
if anilist_date_object:
return f"{anilist_date_object['day']}/{anilist_date_object['month']}/{anilist_date_object['year']}"
else:
return "Unknown"
def format_anilist_timestamp(anilist_timestamp:int|None):
if anilist_timestamp:
return datetime.fromtimestamp(anilist_timestamp).strftime("%d/%m/%Y %H:%M:%S")
else:
return "Unknown"
def format_list_data_with_comma(data:list|None):
if data:
return ", ".join(data)
else:
return "None"

View File

@@ -1,32 +1,27 @@
from html.parser import HTMLParser
import os
from kivy.storage.jsonstore import JsonStore
from collections import deque
import threading
from time import sleep
from View.components import MediaCard
import threading
from pytube import YouTube
from kivy.loader import _ThreadPool
from kivy.clock import Clock
from kivy.cache import Cache
from datetime import date,datetime
from kivy.loader import _ThreadPool
from kivy.logger import Logger
from View.components import MediaCard
from Utility import anilist_data_helper, user_data_helper
# Register anime cache in memory
Cache.register("anime")
today = date.today()
now = datetime.now()
user_data = JsonStore("user_data.json")
my_list = user_data.get("my_list")["list"] # returns a list of anime ids
user_anime_list = user_data_helper.get_user_animelist()
yt_cache = JsonStore("yt_cache.json")
yt_stream_links = []
name_of_yt_cache = f"{today}{0 if now.hour>=12 else 1}"
if yt_streams:=yt_cache.get("yt_stream_links").get(name_of_yt_cache):
yt_stream_links = yt_streams
if yt_stream_links:
for link in yt_stream_links:
Cache.append("anime",link[0],tuple(link[1]))
yt_stream_links = user_data_helper.get_anime_trailer_cache()
for link in yt_stream_links:
Cache.append("anime",link[0],tuple(link[1]))
# for youtube video links gotten from from pytube which is blocking
class MediaCardDataLoader(object):
@@ -78,15 +73,15 @@ class MediaCardDataLoader(object):
def cached_fetch_data(self,yt_watch_url):
data:tuple = Cache.get("anime",yt_watch_url) # type: ignore # trailer_url is the yt_watch_link
if not data[0]:
yt = YouTube(yt_watch_url)
preview_image = yt.thumbnail_url
try:
video_stream_url = yt.streams.filter(progressive=True,file_extension="mp4")[-1].url
# sleep(0.5)
data = preview_image,video_stream_url
yt_stream_links.append((yt_watch_url,data))
yt_cache.put("yt_stream_links",**{f"{name_of_yt_cache}":yt_stream_links})
user_data_helper.update_anime_trailer_cache(yt_stream_links)
except:
data = preview_image,None
return data
@@ -106,6 +101,7 @@ class MediaCardDataLoader(object):
self._q_done.appendleft((yt_watch_link, data))
self._trigger_update()
def _update(self,*largs):
if self._start_wanted:
if not self._running:
@@ -145,33 +141,51 @@ class MediaCardDataLoader(object):
media_card = MediaCard()
media_card.anime_id = anime_item["id"]
# TODO: ADD language preference
if anime_item["title"]["english"]:
media_card.title = anime_item["title"]["english"]
else:
media_card.title = anime_item["title"]["romaji"]
# if anime_item.get("cover_image"):
media_card.cover_image_url = anime_item["coverImage"]["medium"]
media_card.popularity = str(anime_item["popularity"])
media_card.favourites = str(anime_item["favourites"])
media_card.episodes = str(anime_item["episodes"])
if anime_item.get("description"):
media_card.description = anime_item["description"]
media_card.first_aired_on = f'{anime_item["startDate"]["day"]}-{anime_item["startDate"]["month"]}-{anime_item["startDate"]["year"]}'
media_card.studios = ", ".join([studio["name"] for studio in anime_item["studios"]["nodes"]])
else:
media_card.description = "None"
# TODO: switch to season and year
media_card.first_aired_on = f'{anilist_data_helper.format_anilist_date_object(anime_item["startDate"])}'
# TODO: update it to separate studio and producers
media_card.studios = anilist_data_helper.format_list_data_with_comma([studio["name"] for studio in anime_item["studios"]["nodes"]])
if anime_item.get("tags"):
media_card.tags = ", ".join([tag["name"] for tag in anime_item["tags"]])
media_card.tags = anilist_data_helper.format_list_data_with_comma([tag["name"] for tag in anime_item["tags"]])
media_card.media_status = anime_item["status"]
if anime_item.get("genres"):
media_card.genres = ",".join(anime_item["genres"])
# media_card.characters =
if anime_item["id"] in my_list:
media_card.genres = anilist_data_helper.format_list_data_with_comma(anime_item["genres"])
if anime_item["id"] in user_anime_list:
media_card.is_in_my_list = True
if anime_item["averageScore"]:
stars = int(anime_item["averageScore"]/100*6)
if stars:
for i in range(stars):
media_card.stars[i] = 1
# TODO: ADD a default image if trailer not available
# Setting up trailer info to be gotten if available
if anime_item["trailer"]:
yt_watch_link = "https://youtube.com/watch?v="+anime_item["trailer"]["id"]
data = Cache.get("anime",yt_watch_link) # type: ignore # trailer_url is the yt_watch_link
@@ -220,5 +234,5 @@ class LoaderThreadPool(MediaCardDataLoader):
self.pool.add_task(self._load, parameters)
MediaCardLoader = LoaderThreadPool()
# Logger.info('Loader: using a thread pool of {} workers'.format(
# Loader.num_workers))
Logger.info('MediaCardLoader: using a thread pool of {} workers'.format(
MediaCardLoader.num_workers))

View File

@@ -0,0 +1,42 @@
"""
Contains Helper functions to read and write the user data files
"""
from kivy.storage.jsonstore import JsonStore
from datetime import date,datetime
today = date.today()
now = datetime.now()
user_data = JsonStore("user_data.json")
yt_cache = JsonStore("yt_cache.json")
# Get the user data
def get_user_animelist():
try:
return user_data.get("my_list")["list"] # returns a list of anime ids
except:
return []
def update_user_anime_list(new_list:list):
try:
user_data.put("my_list",list=set(new_list))
except:
pass
def get_anime_trailer_cache():
try:
name_of_yt_cache = f"{today}{0 if now.hour>=12 else 1}"
return yt_cache["yt_stream_links"][f"{name_of_yt_cache}"]
except:
return []
def update_anime_trailer_cache(yt_stream_links:list):
try:
name_of_yt_cache = f"{today}{0 if now.hour>=12 else 1}"
yt_cache.put("yt_stream_links",**{f"{name_of_yt_cache}":yt_stream_links})
except:
pass

View File

@@ -1,181 +1,10 @@
from kivy.properties import ObjectProperty,StringProperty,DictProperty,ListProperty
from datetime import datetime
from kivy.properties import ObjectProperty,DictProperty
from Utility import anilist_data_helper
from View.base_screen import BaseScreenView
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.label import MDLabel
from kivy.utils import QueryDict,get_hex_from_color
from collections import defaultdict
from .components import AnimdlStreamDialog,DownloadAnimeDialog
# TODO:move the rest of the classes to their own files
class RankingsBar(MDBoxLayout):
rankings = DictProperty(
{
"Popularity":0,
"Favourites":0,
"AverageScore":0,
}
)
class AnimeDescription(MDBoxLayout):
description = StringProperty()
class AnimeCharacter(MDBoxLayout):
voice_actors = ObjectProperty({
"name":"",
"image":""
})
character = ObjectProperty({
"name":"",
"gender":"",
"dateOfBirth":"",
"image":"",
"age":"",
"description":""
})
class AnimeCharacters(MDBoxLayout):
container = ObjectProperty()
characters = ListProperty()
def on_characters(self,instance,characters):
format_date = lambda date_: f"{date_['day']}/{date_['month']}/{date_['year']}" if date_ else ""
self.container.clear_widgets()
for character_ in characters: # character (character,actor)
character = character_[0]
actors = character_[1]
anime_character = AnimeCharacter()
anime_character.character = {
"name":character["name"]["full"],
"gender":character["gender"],
"dateOfBirth":format_date(character["dateOfBirth"]),
"image":character["image"]["medium"],
"age":character["age"],
"description":character["description"]
}
anime_character.voice_actors = {
"name":", ".join([actor["name"]["full"] for actor in actors])
}
# anime_character.voice_actor =
self.container.add_widget(anime_character)
class AnimeReview(MDBoxLayout):
review = ObjectProperty({
"username":"",
"avatar":"",
"summary":""
})
class AnimeReviews(MDBoxLayout):
reviews = ListProperty()
container = ObjectProperty()
def on_reviews(self,instance,reviews):
self.container.clear_widgets()
for review in reviews:
review_ = AnimeReview()
review_.review = {
"username":review["user"]["name"],
"avatar":review["user"]["avatar"]["medium"],
"summary":review["summary"]
}
self.container.add_widget(review_)
class AnimeHeader(MDBoxLayout):
titles = StringProperty()
banner_image = StringProperty()
class SideBarLabel(MDLabel):
pass
class SideBarHeaderLabel(MDLabel):
pass
class AnimeSideBar(MDBoxLayout):
screen = ObjectProperty()
image = StringProperty()
alternative_titles = DictProperty({
"synonyms":"",
"english":"",
"japanese":"",
})
information = DictProperty({
"episodes":"",
"status":"",
"aired":"",
"nextAiringEpisode":"",
"premiered":"",
"broadcast":"",
"countryOfOrigin":"",
"hashtag":"",
"studios":"", # { "name": "Sunrise", "isAnimationStudio": true }
"source":"",
"genres":"",
"duration":"",
"producers":"",
})
statistics = ListProperty()
statistics_container = ObjectProperty()
external_links = ListProperty()
external_links_container = ObjectProperty()
tags = ListProperty()
tags_container = ObjectProperty()
def on_statistics(self,instance,value):
self.statistics_container.clear_widgets()
header = SideBarHeaderLabel()
header.text = "Rankings"
self.statistics_container.add_widget(header)
for stat in value:
# stat (rank,context)
label = SideBarLabel()
label.text = "[color={}]{}:[/color] {}".format(
get_hex_from_color(label.theme_cls.primaryColor),
stat[0].capitalize(),
f"{stat[1]}")
self.statistics_container.add_widget(label)
def on_tags(self,instance,value):
self.tags_container.clear_widgets()
header = SideBarHeaderLabel()
header.text = "Tags"
self.tags_container.add_widget(header)
for tag in value:
label = SideBarLabel()
label.text = "[color={}]{}:[/color] {}".format(
get_hex_from_color(label.theme_cls.primaryColor),
tag[0].capitalize(),
f"{tag[1]} %")
self.tags_container.add_widget(label)
def on_external_links(self,instance,value):
self.external_links_container.clear_widgets()
header = SideBarHeaderLabel()
header.text = "External Links"
self.external_links_container.add_widget(header)
for site in value:
# stat (rank,context)
label = SideBarLabel()
label.text = "[color={}]{}:[/color] {}".format(
get_hex_from_color(label.theme_cls.primaryColor),
site[0].capitalize(),
site[1])
self.external_links_container.add_widget(label)
class Controls(MDBoxLayout):
screen = ObjectProperty()
from .components import (AnimeHeader,AnimeSideBar,AnimeDescription,AnimeReviews,AnimeCharacters,AnimdlStreamDialog,DownloadAnimeDialog,RankingsBar)
class AnimeScreenView(BaseScreenView):
@@ -186,20 +15,12 @@ class AnimeScreenView(BaseScreenView):
anime_characters:AnimeCharacters = ObjectProperty()
anime_reviews:AnimeReviews = ObjectProperty()
data = DictProperty()
def model_is_changed(self) -> None:
"""
Called whenever any change has occurred in the data model.
The view in this method tracks these changes and updates the UI
according to these changes.
"""
def update_layout(self,data):
self.data = data
# uitlity functions
format_date = lambda date_: f"{date_['day']}/{date_['month']}/{date_['year']}" if date_ else ""
format_list_with_comma = lambda list_: ", ".join(list_) if list_ else ""
to_human_date = lambda utc_date: datetime.fromtimestamp(utc_date).strftime("%d/%m/%Y %H:%M:%S")
extract_next_airing_episode = lambda airing_episode: f"Episode: {airing_episode['episode']} on {to_human_date(airing_episode['airingAt'])}" if airing_episode else "Completed"
extract_next_airing_episode = lambda airing_episode: f"Episode: {airing_episode['episode']} on {anilist_data_helper.format_anilist_timestamp(airing_episode['airingAt'])}" if airing_episode else "Completed"
# variables
english_title = data["title"]["english"]
@@ -219,7 +40,7 @@ class AnimeScreenView(BaseScreenView):
# update alternative titles
alternative_titles = {
"synonyms":format_list_with_comma(data["synonyms"]), # list
"synonyms":anilist_data_helper.format_list_data_with_comma(data["synonyms"]), # list
"japanese":jp_title,
"english":english_title,
}
@@ -230,15 +51,15 @@ class AnimeScreenView(BaseScreenView):
"episodes":data["episodes"],
"status":data["status"],
"nextAiringEpisode":extract_next_airing_episode(data["nextAiringEpisode"]),
"aired":f"{format_date(data['startDate'])} to {format_date(data['endDate'])}",
"aired":f"{anilist_data_helper.format_anilist_date_object(data['startDate'])} to {anilist_data_helper.format_anilist_date_object(data['endDate'])}",
"premiered":f"{data['season']} {data['seasonYear']}",
"broadcast":data["format"],
"countryOfOrigin":data["countryOfOrigin"],
"hashtag":data["hashtag"],
"studios": format_list_with_comma([studio["name"] for studio in studios if studio["isAnimationStudio"]]), # { "name": "Sunrise", "isAnimationStudio": true }
"producers": format_list_with_comma([studio["name"] for studio in studios if not studio["isAnimationStudio"]]), # { "name": "Sunrise", "isAnimationStudio": true }
"studios": anilist_data_helper.format_list_data_with_comma([studio["name"] for studio in studios if studio["isAnimationStudio"]]), # { "name": "Sunrise", "isAnimationStudio": true }
"producers": anilist_data_helper.format_list_data_with_comma([studio["name"] for studio in studios if not studio["isAnimationStudio"]]), # { "name": "Sunrise", "isAnimationStudio": true }
"source":data["source"],
"genres": format_list_with_comma(data["genres"]),
"genres": anilist_data_helper.format_list_data_with_comma(data["genres"]),
"duration":data["duration"],
# "rating":data["rating"],
}
@@ -279,17 +100,17 @@ class AnimeScreenView(BaseScreenView):
self.anime_reviews.reviews = data["reviews"]["nodes"]
# for r in data["recommendation"]["nodes"]:
# r["mediaRecommendation"]
def stream_anime_with_custom_cmds_dialog(self):
"""
Called when user wants to stream with custom commands
"""
AnimdlStreamDialog(self.data).open()
def open_download_anime_dialog(self):
"""
Opens the download anime dialog
"""
DownloadAnimeDialog(self.data).open()
DownloadAnimeDialog(self.data).open()

View File

@@ -1,2 +1,10 @@
from .side_bar import AnimeSideBar
from .header import AnimeHeader
from .rankings_bar import RankingsBar
from .controls import Controls
from .description import AnimeDescription
from .characters import AnimeCharacters
from .review import AnimeReviews
from .animdl_stream_dialog import AnimdlStreamDialog
from .download_anime_dialog import DownloadAnimeDialog
from .download_anime_dialog import DownloadAnimeDialog

View File

@@ -1,7 +1,8 @@
from kivy.uix.modalview import ModalView
from kivymd.uix.behaviors import StencilBehavior,CommonElevationBehavior,BackgroundColorBehavior
from kivymd.theming import ThemableBehavior
# from main import AniXStreamApp
class AnimdlStreamDialog(ThemableBehavior,StencilBehavior,CommonElevationBehavior,BackgroundColorBehavior,ModalView):
def __init__(self,data,**kwargs):
super(AnimdlStreamDialog,self).__init__(**kwargs)
@@ -29,6 +30,4 @@ class AnimdlStreamDialog(ThemableBehavior,StencilBehavior,CommonElevationBehavio
if quality:
cmds = [*cmds,"-q",quality]
# print(title,episodes_range,latest,quality)
print(cmds)
app.watch_on_animdl(custom_options = cmds)

View File

@@ -0,0 +1,46 @@
from kivy.properties import ObjectProperty,ListProperty
from kivymd.uix.boxlayout import MDBoxLayout
class AnimeCharacter(MDBoxLayout):
voice_actors = ObjectProperty({
"name":"",
"image":""
})
character = ObjectProperty({
"name":"",
"gender":"",
"dateOfBirth":"",
"image":"",
"age":"",
"description":""
})
class AnimeCharacters(MDBoxLayout):
container = ObjectProperty()
characters = ListProperty()
def on_characters(self,instance,characters):
format_date = lambda date_: f"{date_['day']}/{date_['month']}/{date_['year']}" if date_ else ""
self.container.clear_widgets()
for character_ in characters: # character (character,actor)
character = character_[0]
actors = character_[1]
anime_character = AnimeCharacter()
anime_character.character = {
"name":character["name"]["full"],
"gender":character["gender"],
"dateOfBirth":format_date(character["dateOfBirth"]),
"image":character["image"]["medium"],
"age":character["age"],
"description":character["description"]
}
anime_character.voice_actors = {
"name":", ".join([actor["name"]["full"] for actor in actors])
}
# anime_character.voice_actor =
self.container.add_widget(anime_character)

View File

@@ -0,0 +1,7 @@
from kivy.properties import ObjectProperty
from kivymd.uix.boxlayout import MDBoxLayout
class Controls(MDBoxLayout):
screen = ObjectProperty()

View File

@@ -0,0 +1,8 @@
from kivy.properties import StringProperty
from kivymd.uix.boxlayout import MDBoxLayout
class AnimeDescription(MDBoxLayout):
description = StringProperty()

View File

@@ -0,0 +1,9 @@
from kivy.properties import StringProperty
from kivymd.uix.boxlayout import MDBoxLayout
class AnimeHeader(MDBoxLayout):
titles = StringProperty()
banner_image = StringProperty()

View File

@@ -0,0 +1,14 @@
from kivy.properties import DictProperty
from kivymd.uix.boxlayout import MDBoxLayout
class RankingsBar(MDBoxLayout):
rankings = DictProperty(
{
"Popularity":0,
"Favourites":0,
"AverageScore":0,
}
)

View File

@@ -0,0 +1,26 @@
from kivy.properties import ObjectProperty,ListProperty
from kivymd.uix.boxlayout import MDBoxLayout
class AnimeReview(MDBoxLayout):
review = ObjectProperty({
"username":"",
"avatar":"",
"summary":""
})
class AnimeReviews(MDBoxLayout):
reviews = ListProperty()
container = ObjectProperty()
def on_reviews(self,instance,reviews):
self.container.clear_widgets()
for review in reviews:
review_ = AnimeReview()
review_.review = {
"username":review["user"]["name"],
"avatar":review["user"]["avatar"]["medium"],
"summary":review["summary"]
}
self.container.add_widget(review_)

View File

@@ -0,0 +1,85 @@
from kivy.properties import ObjectProperty,StringProperty,DictProperty,ListProperty
from kivy.utils import get_hex_from_color
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.label import MDLabel
class SideBarHeaderLabel(MDLabel):
pass
class SideBarLabel(MDLabel):
pass
class AnimeSideBar(MDBoxLayout):
screen = ObjectProperty()
image = StringProperty()
alternative_titles = DictProperty({
"synonyms":"",
"english":"",
"japanese":"",
})
information = DictProperty({
"episodes":"",
"status":"",
"aired":"",
"nextAiringEpisode":"",
"premiered":"",
"broadcast":"",
"countryOfOrigin":"",
"hashtag":"",
"studios":"", # { "name": "Sunrise", "isAnimationStudio": true }
"source":"",
"genres":"",
"duration":"",
"producers":"",
})
statistics = ListProperty()
statistics_container = ObjectProperty()
external_links = ListProperty()
external_links_container = ObjectProperty()
tags = ListProperty()
tags_container = ObjectProperty()
def on_statistics(self,instance,value):
self.statistics_container.clear_widgets()
header = SideBarHeaderLabel()
header.text = "Rankings"
self.statistics_container.add_widget(header)
for stat in value:
# stat (rank,context)
label = SideBarLabel()
label.text = "[color={}]{}:[/color] {}".format(
get_hex_from_color(label.theme_cls.primaryColor),
stat[0].capitalize(),
f"{stat[1]}")
self.statistics_container.add_widget(label)
def on_tags(self,instance,value):
self.tags_container.clear_widgets()
header = SideBarHeaderLabel()
header.text = "Tags"
self.tags_container.add_widget(header)
for tag in value:
label = SideBarLabel()
label.text = "[color={}]{}:[/color] {}".format(
get_hex_from_color(label.theme_cls.primaryColor),
tag[0].capitalize(),
f"{tag[1]} %")
self.tags_container.add_widget(label)
def on_external_links(self,instance,value):
self.external_links_container.clear_widgets()
header = SideBarHeaderLabel()
header.text = "External Links"
self.external_links_container.add_widget(header)
for site in value:
# stat (rank,context)
label = SideBarLabel()
label.text = "[color={}]{}:[/color] {}".format(
get_hex_from_color(label.theme_cls.primaryColor),
site[0].capitalize(),
site[1])
self.external_links_container.add_widget(label)

View File

@@ -1,9 +1,8 @@
from kivy.properties import ObjectProperty
from View.base_screen import BaseScreenView
from kivy.uix.modalview import ModalView
from kivy.utils import format_bytes_to_human
class DownloadAnimePopup(ModalView):
pass
from View.base_screen import BaseScreenView
class DownloadsScreenView(BaseScreenView):
main_container = ObjectProperty()
@@ -11,5 +10,5 @@ class DownloadsScreenView(BaseScreenView):
download_progress_label = ObjectProperty()
def on_episode_download_progress(self,current_bytes_downloaded,total_bytes,episode_info):
percentage_completion = (current_bytes_downloaded/total_bytes)*100
self.progress_bar.value= percentage_completion
self.progress_bar.value= max(min(percentage_completion,100),0)
self.download_progress_label.text = f"Downloading: {episode_info['anime_title']} - {episode_info['episode']} ({format_bytes_to_human(current_bytes_downloaded)}/{format_bytes_to_human(total_bytes)})"

View File

@@ -1,9 +1,3 @@
#:import get_color_from_hex kivy.utils.get_color_from_hex
#:import StringProperty kivy.properties.StringProperty
# custom components
<HomeScreenView>
md_bg_color: self.theme_cls.backgroundColor
main_container:main_container

View File

@@ -4,13 +4,3 @@ from View.base_screen import BaseScreenView
class HomeScreenView(BaseScreenView):
main_container = ObjectProperty()
def write_data(self):
self.controller.write_data()
def model_is_changed(self) -> None:
"""
Called whenever any change has occurred in the data model.
The view in this method tracks these changes and updates the UI
according to these changes.
"""

View File

@@ -0,0 +1,3 @@
from .filters import Filters
from .pagination import SearchResultsPagination
from .trending_sidebar import TrendingAnimeSideBar

View File

@@ -23,5 +23,4 @@
text:"Status"
FilterDropDown:
id:status_filter
# text:root.filters["status"]
on_release: root.open_filter_menu(self,"status")

View File

@@ -0,0 +1,42 @@
from kivy.properties import StringProperty,DictProperty
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.dropdownitem import MDDropDownItem
from kivymd.uix.menu import MDDropdownMenu
class FilterDropDown(MDDropDownItem):
text:str = StringProperty()
class Filters(MDBoxLayout):
filters:dict = DictProperty({
"sort":"SEARCH_MATCH"
})
def open_filter_menu(self, menu_item,filter_name):
items = []
match filter_name:
case "sort":
items = ["ID","ID_DESC", "TITLE_ROMANJI", "TITLE_ROMANJI_DESC", "TITLE_ENGLISH", "TITLE_ENGLISH_DESC", "TITLE_NATIVE", "TITLE_NATIVE_DESC", "TYPE", "TYPE_DESC", "FORMAT", "FORMAT_DESC", "START_DATE", "START_DATE_DESC", "END_DATE", "END_DATE_DESC", "SCORE", "SCORE_DESC", "TRENDING", "TRENDING_DESC", "EPISODES", "EPISODES_DESC", "DURATION", "DURATION_DESC", "STATUS", "STATUS_DESC", "UPDATED_AT", "UPDATED_AT_DESC", "SEARCH_MATCH" "POPULARITY","POPULARITY_DESC","FAVOURITES","FAVOURITES_DESC"]
case "status":
items = ["FINISHED", "RELEASING", "NOT_YET_RELEASED", "CANCELLED", "HIATUS"]
case _:
items = []
if items:
menu_items = [
{
"text": f"{item}",
"on_release": lambda filter_value=f"{item}": self.filter_menu_callback(filter_name,filter_value),
} for item in items
]
MDDropdownMenu(caller=menu_item, items=menu_items).open()
def filter_menu_callback(self, filter_name,filter_value):
match filter_name:
case "sort":
self.ids.sort_filter.text = filter_value
self.filters["sort"] = filter_value
case "status":
self.ids.status_filter.text = filter_value
self.filters["status"] = filter_value

View File

@@ -0,0 +1,9 @@
from kivy.properties import ObjectProperty,NumericProperty
from kivymd.uix.boxlayout import MDBoxLayout
class SearchResultsPagination(MDBoxLayout):
current_page = NumericProperty()
total_pages = NumericProperty()
search_view = ObjectProperty()

View File

@@ -0,0 +1,4 @@
from kivymd.uix.boxlayout import MDBoxLayout
class TrendingAnimeSideBar(MDBoxLayout):
pass

View File

@@ -1,71 +1,22 @@
from kivy.properties import ObjectProperty,StringProperty,DictProperty,NumericProperty
from View.base_screen import BaseScreenView
from kivymd.uix.dropdownitem import MDDropDownItem
from kivymd.uix.menu import MDDropdownMenu
from kivymd.uix.boxlayout import MDBoxLayout
from kivy.properties import ObjectProperty,StringProperty
from kivy.clock import Clock
class FilterDropDown(MDDropDownItem):
text = StringProperty()
class Filters(MDBoxLayout):
filters = DictProperty({
"sort":"SEARCH_MATCH"
})
def open_filter_menu(self, menu_item,filter_name):
items = []
match filter_name:
case "sort":
items = ["ID","ID_DESC", "TITLE_ROMANJI", "TITLE_ROMANJI_DESC", "TITLE_ENGLISH", "TITLE_ENGLISH_DESC", "TITLE_NATIVE", "TITLE_NATIVE_DESC", "TYPE", "TYPE_DESC", "FORMAT", "FORMAT_DESC", "START_DATE", "START_DATE_DESC", "END_DATE", "END_DATE_DESC", "SCORE", "SCORE_DESC", "TRENDING", "TRENDING_DESC", "EPISODES", "EPISODES_DESC", "DURATION", "DURATION_DESC", "STATUS", "STATUS_DESC", "UPDATED_AT", "UPDATED_AT_DESC", "SEARCH_MATCH" "POPULARITY","POPULARITY_DESC","FAVOURITES","FAVOURITES_DESC"]
case "status":
items = ["FINISHED", "RELEASING", "NOT_YET_RELEASED", "CANCELLED", "HIATUS"]
case _:
items = []
if items:
menu_items = [
{
"text": f"{item}",
"on_release": lambda filter_value=f"{item}": self.filter_menu_callback(filter_name,filter_value),
} for item in items
]
MDDropdownMenu(caller=menu_item, items=menu_items).open()
def filter_menu_callback(self, filter_name,filter_value):
match filter_name:
case "sort":
self.ids.sort_filter.text = filter_value
self.filters["sort"] = filter_value
case "status":
self.ids.status_filter.text = filter_value
self.filters["status"] = filter_value
class SearchResultsPagination(MDBoxLayout):
current_page = NumericProperty()
total_pages = NumericProperty()
search_view = ObjectProperty()
class TrendingAnimeSideBar(MDBoxLayout):
pass
from View.base_screen import BaseScreenView
from .components import TrendingAnimeSideBar,Filters,SearchResultsPagination
class SearchScreenView(BaseScreenView):
trending_anime_sidebar:TrendingAnimeSideBar = ObjectProperty()
search_results_pagination:SearchResultsPagination = ObjectProperty()
filters:Filters = ObjectProperty()
search_results_container = ObjectProperty()
trending_anime_sidebar = ObjectProperty()
search_results_pagination = ObjectProperty()
search_term = StringProperty()
filters = ObjectProperty()
search_term:str = StringProperty()
is_searching = False
has_next_page = False
current_page = 0
total_pages = 0
def model_is_changed(self) -> None:
"""
Called whenever any change has occurred in the data model.
The view in this method tracks these changes and updates the UI
according to these changes.
"""
def handle_search_for_anime(self,search_widget=None,page=None):
if search_widget:
search_term = search_widget.text

View File

@@ -1,9 +1,11 @@
from kivy.properties import ObjectProperty
from kivymd.uix.navigationrail import MDNavigationRail
from kivymd.uix.boxlayout import MDBoxLayout
from kivy.properties import ObjectProperty,StringProperty
from kivymd.app import MDApp
from kivymd.uix.screen import MDScreen
from kivymd.uix.navigationrail import MDNavigationRail
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.button import MDIconButton
from kivymd.uix.tooltip import MDTooltip
from Utility.observer import Observer
@@ -12,10 +14,19 @@ from Utility.observer import Observer
class NavRail(MDNavigationRail):
screen=ObjectProperty()
class SearchBar(MDBoxLayout):
screen=ObjectProperty()
class Tooltip(MDTooltip):
pass
class TooltipMDIconButton(Tooltip,MDIconButton):
tooltip_text = StringProperty()
class BaseScreenView(MDScreen, Observer):
"""
A base class that implements a visual representation of the model data.

View File

@@ -0,0 +1,2 @@
from .media_player import MediaPopupVideoPlayer
from .media_popup import MediaPopup

View File

@@ -0,0 +1,5 @@
from kivy.uix.video import Video
class MediaPopupVideoPlayer(Video):
pass

View File

@@ -9,6 +9,7 @@
<PopupBoxLayout@MDBoxLayout>
adaptive_height:True
# TODO: subdivide each main component to its own file
<MediaPopup>
size_hint: None, None
height: dp(500)
@@ -104,12 +105,15 @@
on_press:
root.dismiss()
app.show_anime_screen(root.caller.anime_id)
MDIconButton:
TooltipMDIconButton:
tooltip_text:"Add to your anime list"
icon: "plus-circle" if not(root.caller.is_in_my_list) else "check-circle"
on_release:
root.caller.is_in_my_list = not(root.caller.is_in_my_list)
self.icon = "plus-circle" if not(root.caller.is_in_my_list) else "check-circle"
MDIconButton:
TooltipMDIconButton:
disabled:True
tooltip_text:"Coming soon"
icon: "bell-circle" if not(root.caller.is_in_my_notify) else "bell-check"
PopupBoxLayout:
pos_hint: {'center_y': 0.5}

View File

@@ -0,0 +1,58 @@
from kivy.properties import ObjectProperty
from kivy.clock import Clock
from kivy.animation import Animation
from kivy.uix.modalview import ModalView
from kivymd.theming import ThemableBehavior
from kivymd.uix.behaviors import BackgroundColorBehavior,StencilBehavior,CommonElevationBehavior,HoverBehavior
class MediaPopup(ThemableBehavior,HoverBehavior,StencilBehavior,CommonElevationBehavior,BackgroundColorBehavior,ModalView):
caller = ObjectProperty()
player = ObjectProperty()
def __init__(self, caller,*args,**kwarg):
self.caller = caller
super(MediaPopup,self).__init__(*args,**kwarg)
def open(self, *_args, **kwargs):
"""Display the modal in the Window.
When the view is opened, it will be faded in with an animation. If you
don't want the animation, use::
view.open(animation=False)
"""
from kivy.core.window import Window
if self._is_open:
return
self._window = Window
self._is_open = True
self.dispatch('on_pre_open')
Window.add_widget(self)
Window.bind(
on_resize=self._align_center,
on_keyboard=self._handle_keyboard)
self.center = self.caller.to_window(*self.caller.center)
self.fbind('center', self._align_center)
self.fbind('size', self._align_center)
if kwargs.get('animation', True):
ani = Animation(_anim_alpha=1., d=self._anim_duration)
ani.bind(on_complete=lambda *_args: self.dispatch('on_open'))
ani.start(self)
else:
self._anim_alpha = 1.
self.dispatch('on_open')
def _align_center(self, *_args):
if self._is_open:
self.center = self.caller.to_window(*self.caller.center)
def on_leave(self,*args):
def _leave(dt):
if not self.hovering:
self.dismiss()
Clock.schedule_once(_leave,2)

File diff suppressed because it is too large Load Diff

View File

@@ -1,78 +1,11 @@
import os
from kivy.properties import ObjectProperty,StringProperty,BooleanProperty,ListProperty,NumericProperty
from kivy.clock import Clock
from kivy.uix.behaviors import ButtonBehavior
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.tooltip import MDTooltip
from kivymd.uix.behaviors import BackgroundColorBehavior,StencilBehavior,CommonElevationBehavior,HoverBehavior
from kivymd.uix.button import MDIconButton
from kivymd.theming import ThemableBehavior
from kivy.uix.modalview import ModalView
from kivy.properties import ObjectProperty,StringProperty,BooleanProperty,ListProperty,NumericProperty
from kivy.uix.video import Video
from kivy.animation import Animation
class Tooltip(MDTooltip):
pass
class TooltipMDIconButton(Tooltip,MDIconButton):
tooltip_text = StringProperty()
class MediaPopupVideoPlayer(Video):
# self.prev
pass
class MediaPopup(ThemableBehavior,HoverBehavior,StencilBehavior,CommonElevationBehavior,BackgroundColorBehavior,ModalView):
caller = ObjectProperty()
player = ObjectProperty()
def __init__(self, caller,*args,**kwarg):
self.caller:MediaCard = caller
super(MediaPopup,self).__init__(*args,**kwarg)
def open(self, *_args, **kwargs):
"""Display the modal in the Window.
When the view is opened, it will be faded in with an animation. If you
don't want the animation, use::
view.open(animation=False)
"""
from kivy.core.window import Window
if self._is_open:
return
self._window = Window
self._is_open = True
self.dispatch('on_pre_open')
Window.add_widget(self)
Window.bind(
on_resize=self._align_center,
on_keyboard=self._handle_keyboard)
self.center = self.caller.to_window(*self.caller.center)
self.fbind('center', self._align_center)
self.fbind('size', self._align_center)
if kwargs.get('animation', True):
ani = Animation(_anim_alpha=1., d=self._anim_duration)
ani.bind(on_complete=lambda *_args: self.dispatch('on_open'))
ani.start(self)
else:
self._anim_alpha = 1.
self.dispatch('on_open')
def _align_center(self, *_args):
if self._is_open:
self.center = self.caller.to_window(*self.caller.center)
def on_leave(self,*args):
def _leave(dt):
if not self.hovering:
self.dismiss()
Clock.schedule_once(_leave,2)
from kivymd.uix.behaviors import HoverBehavior
from .components import MediaPopup
class MediaCard(ButtonBehavior,HoverBehavior,MDBoxLayout):
anime_id = NumericProperty()
@@ -97,6 +30,8 @@ class MediaCard(ButtonBehavior,HoverBehavior,MDBoxLayout):
preview_image = StringProperty()
screen = ObjectProperty()
has_trailer_color = ListProperty([1,1,1,0])
def __init__(self,trailer_url=None,**kwargs):
super().__init__(**kwargs)
self.orientation = "vertical"

View File

@@ -1,23 +1,23 @@
<CommonNavigationRailItem@MDNavigationRailItem>
icon:""
text:""
<CommonNavigationRailItem>
MDNavigationRailItemIcon:
icon:root.icon
MDNavigationRailItemLabel:
text: root.text
<NavRail>:
anchor:"top"
type: "labeled"
md_bg_color: self.theme_cls.secondaryContainerColor
MDNavigationRailFabButton:
icon: "home"
on_press:
root.screen.manager_screens.current = "home screen"
CommonNavigationRailItem:
icon: "magnify"
text: "Search"
@@ -25,8 +25,8 @@
root.screen.manager_screens.current = "search screen"
CommonNavigationRailItem:
icon: "bookmark" #if root.screen.manager_screens.current=="my list screen" else "bookmark-outline"
text: "Bookmark"
icon: "bookmark"
text: "MyList"
on_press:
root.screen.manager_screens.current = "my list screen"
CommonNavigationRailItem:

View File

@@ -0,0 +1,3 @@
<Tooltip>
MDTooltipPlain:
text:root.tooltip_text

View File

@@ -1,969 +0,0 @@
{
"data": {
"Page": {
"media": [
{
"title": { "romaji": "Cowboy Bebop", "english": "Cowboy Bebop" },
"coverImage": {
"extraLarge": "https://s4.anilist.co/file/anilistcdn/media/anime/cover/large/bx1-CXtrrkMpJ8Zq.png"
},
"episodes":24,
"characters": {
"edges": [
{
"node": {
"name": { "full": "Spike Spiegel" },
"gender": "Male",
"dateOfBirth": { "year": 2044, "month": 6, "day": 26 },
"age": "27",
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/character/medium/b1-ChxaldmieFlQ.png"
},
"description": "__Height:__ 185 cm \n\nSpike Spiegel is a tall and lean 27-year-old bounty hunter born on Mars."
},
"voiceActors": [
{
"name": { "full": "Kouichi Yamadera" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n95011-2RfLzncNyvbR.png"
}
},
{
"name": { "full": "Steven Blum" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n95012-jnlK6VyCTf9P.png"
}
},
{
"name": { "full": "Massimo De Ambrosis" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/781.jpg"
}
},
{
"name": { "full": "Viktor Neumann" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/1638.jpg"
}
},
{
"name": { "full": "Zolt\u00e1n Juh\u00e1sz" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/default.jpg"
}
},
{
"name": { "full": "Yann Pichon" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/9237.jpg"
}
},
{
"name": { "full": "Ja hyeong Gu" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/14781.jpg"
}
},
{
"name": { "full": "Guilherme Briggs" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n96099-n1wxTRslU9gj.jpg"
}
},
{
"name": { "full": "Yamil Atala" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/10028.jpg"
}
},
{
"name": { "full": "Genaro V\u00e1squez" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n206333-oYkemxJhn4bk.png"
}
},
{
"name": { "full": "Jos\u00e9 Gilberto Vilchis" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n105021-Bn6vy2ClY3uX.png"
}
}
]
},
{
"node": {
"name": { "full": "Faye Valentine" },
"gender": "Female",
"dateOfBirth": { "year": 1994, "month": 8, "day": 14 },
"age": "23 (Physical), 77 (Actual)",
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/character/medium/b2-0Iszg6Izgt4p.png"
},
"description": "One of the members of the bounty hunting crew in the anime series Cowboy Bebop. Often seen with a cigarette and in a revealing outfit complete with bright yellow hot pants and a matching, revealing top, black suspenders, white boots, and a long-sleeved red shirt worn normally through the sleeves, not to mention her signature headband, she is unusually attractive, sporting a bob of violet hair, green eyes, fair skin, and a voluptuous body. \n\nAlthough appearing to be no more than her 23 years alive suggests, Faye is actually upwards of 74-years-old, having been put into cryogenic freeze after a space shuttle accident. During the course of the series (set in 2071), Faye manages to cross paths with Spike and Jet twice before she finally makes herself at home aboard their ship the second time, much to the consternation and disapproval of the two men, both of whom have their own reservations about women in general. Faye herself is brash, egotistical, and quite lazy, despite taking plenty of time to pamper and care for her own appearance. Faye has also been placed under arrest several times in the series and spends much time in handcuffs on the ship. She, at times, expects the boys to take care of bounties for her, while she sits by idly to reap the benefits and eat all their food, another source of conflict. \n\nSeemingly little more than a thorn in her partners\u2019 sides, Faye is actually a well-rounded member of the team. She can handle herself exceptionally well for a woman of her slight appearance, displaying at least once in the series (in \"Cowboy Funk\") that she packs quite a mean punch. Adept at flying, Faye has stood her ground just as well as Spike has in an aerial dogfight in her ship Red Tail, at times even against Spike in an aerial dogfight. She also excels with guns, and is first seen in the series completely disabling a ship with a Heckler &amp; Koch MP5, though she is immediately apprehended afterward. In the movie, she is seen with the same gun, in addition to her normal companion: a Glock 30. Where Faye really shines, however, is with her mouth. She has an almost unstoppable attitude, and even her sometimes innocent smile can be seen as dangerous. Sarcastic and presumptuous, she rarely appears weak or in need of support. She brags and takes care of herself, never trusting others, cheating and lying her way from one day to the next. \n\nShe is a woman who is skilled at getting what she wants; however, her indomitable exterior hides a more delicate interior. Upon awakening from her 54-year cryogenic sleep, not only was she saddled with a massive amount of debt that she had no means to pay, but she was also diagnosed with total amnesia, a stranger in a mysterious world that she was not a part of and did not understand, surrounded by people who claimed to be helping her but were only there to take advantage of her naivet\u00e9. The surname \"Valentine\" was merely a name given to her by the doctor who woke her; the circumstances of her accident, her previous life, and even her real name all remain a mystery, and are only gradually revealed as the series progresses. It has been hinted that she came from Singapore on Earth, and was the daughter of a very wealthy family, as the city's famous Merlion Statue features prominently in scenes of her childhood, and that memories and a film from her childhood showed her living in a large mansion. In an early episode, she states that she is descended from Roma people, but she may well have been lying. Utterly betrayed by someone she thought she could trust after waking, Faye found herself burdened with even more money to pay, and the situation resulted in the hardening of her personality to an extreme degree. She even says in Session 11: \u201cwe deceive or we are deceived\u201d, and that \u201cnothing good ever happened to me when I trusted others.\u201d \n\nThroughout the series, though she retains her sarcastic demeanor and unpleasant nature up until the very end, it is easy to see her grow as a character. She learns to value her comrades, coming back to the Bebop when she realizes that it is the only home that she has left, naming it as the \u201conly place I could return to\u201d. She grows to understand the disadvantages of being a loner, and that even though her \"family\" is somewhat dysfunctional it is still a place where she will always belong."
},
"voiceActors": [
{
"name": { "full": "Megumi Hayashibara" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n95014-VqxNuufY94V3.png"
}
},
{
"name": { "full": "Wendee Lee" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n95036-UkyIYVtEhoPk.png"
}
},
{
"name": { "full": "Barbara De Bortoli" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n95763-Ci0xdLc6Z3a0.jpg"
}
},
{
"name": { "full": "Barbara Szit\u00e1s" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/7828.jpg"
}
},
{
"name": { "full": "Antje von der Ahe" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/8549.jpg"
}
},
{
"name": { "full": "Mi Sook Jeong" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/8812.jpg"
}
},
{
"name": { "full": "Carmen Ambr\u00f3s" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/default.jpg"
}
},
{
"name": { "full": "B\u00e9rang\u00e8re Jean" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n163357-UI9zFTe0wI6y.png"
}
},
{
"name": { "full": "Miriam Ficher" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/540.jpg"
}
},
{
"name": { "full": "Elsa Covi\u00e1n" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n153194-gLoOTnSq8k6H.jpg"
}
},
{
"name": { "full": "Karla Falc\u00f3n" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n181977-cMmWSouBCpJN.png"
}
}
]
},
{
"node": {
"name": { "full": "Edward Wong Hau Pepelu Tivrusky IV" },
"gender": "Female",
"dateOfBirth": { "year": 2058, "month": 1, "day": 1 },
"age": "~13",
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/character/medium/b16-80wd87nl1Rue.png"
},
"description": "Ed is an eccentric, resourceful, childlike, tomboyish, and intelligent teenager. Ed first encounters the Bebop and its crew when she hacks the ship on its way to Earth. After Ed helps the Bebop crew cash in the Earth hacker bounty, she insists on joining the crew. When Faye tries to leave Earth without her, Ed hacks the Bebop and holds it hostage until she is permitted to join.\n\n~!\nLater in the story when the Bebop is back on Earth, the crew stumbles across an orphanage that Ed used to live in. After seeing some old friends there, Ed is informed that her father has come looking for her recently. Ed decides to make up a bounty on her father to convince Spike to find him. When Spike finds him, Ed decides to leave the Bebop with Ein to live with her father on Earth.!~"
},
"voiceActors": [
{
"name": { "full": "Melissa Fahn" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n95452-ID2nbW1E8fLk.png"
}
},
{
"name": { "full": "Aoi Tada" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n95658-paHKYOWkhoOd.png"
}
},
{
"name": { "full": "Isabel Marti\u00f1\u00f3n" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/1686.jpg"
}
},
{
"name": { "full": "Ilona Brokowski" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/6138.jpg"
}
},
{
"name": { "full": "Patricia Legrand" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/7223.jpg"
}
},
{
"name": { "full": "Jeong-Hwa Yang" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/14755.jpg"
}
},
{
"name": { "full": "Gemma Donati" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/default.jpg"
}
},
{
"name": { "full": "Leticia Celini" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n180473-RxcWwuazq2t5.png"
}
}
]
},
{
"node": {
"name": { "full": "Jet Black" },
"gender": "Male",
"dateOfBirth": { "year": 2035, "month": 12, "day": 3 },
"age": "36",
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/character/medium/b3-JjH9Si9UM1NZ.png"
},
"description": "Jet, known on his home satellite as the \"Black Dog\" for his tenacity, is a 36-year-old former cop from Ganymede (a Jovian satellite) and acts as Spike's foil during the series. Physically, Jet is very tall with a muscular build. He wears a beard with no mustache, and is completely bald save for the back of his head. Spike acts lazy and uninterested, whereas Jet is hard working and a jack-of-all-trades. Jet was once an investigator in the Inter Solar System Police (ISSP) for many years until he lost his arm in an investigation that went awry when his corrupt partner (and friend at the time) betrayed him. His arm was replaced with a cybernetic limb (later revealed to be by choice, as biological replacements were possible, he wanted the fake arm as a reminder of what happened), yet his loss of limb coupled with the general corruption of the police force prompted Jet to quit the ISSP in disgust and become a freelance bounty hunter. Jet also considers himself something of a renaissance man: he cultivates bonsai trees, cooks, enjoys jazz/blues music (he named his ship the Bebop, referring to a type of jazz), especially Charlie Parker, and even has interest in Goethe. As a character, Jet is the quintessential oyaji or \"dad\" even though he often wishes people would view him as a more brotherly figure (so as not to seem old). Jet is skilled with handguns, typically carrying a pre-2004 Walther P99, as well as the use of the netgun. He is good with hand to hand combat as well. Unlike Spike, Jet tends to use more raw muscle than technique. He is also a great mechanic and pilot. Aside from the converted interplanetary fishing trawler vessel Bebop, Jet flies a smaller ship called Hammerhead. The Hammerhead appears to be a modified (Jet added larger engines and fuel tanks) salvage-craft that uses a mechanical arm equipped with a harpoon as its main weapon, which is somewhat analogous to his own mechanical arm. Both the Hammerhead and the Bebop are able to land on water, and have a fishing theme, most likely because Ganymede's surface is mostly covered with water (it is later revealed that the Bebop was originally a fishing ship that Jet \"customized\" with larger engines). ~!During the series, it is revealed that Jet once lived with a woman named Alisa, who left him because he was too controlling. Later they meet up again when Alisa's new boyfriend Rhint is wanted for murder. Jet then ends up in a situation somewhat similar to that of Vicious, where he must hunt down a woman who broke his heart, and her lover. In a later episode, another Vicious/Spike parallel is set up when Jet finds out that it was his old partner Fad who betrayed him (though in Jet's case, there was no love affair involved). Fad arranged for Jet's death in a setup, but he survived with only a missing arm and a scar on his face. It is worth noting that Jet managed to face the demons of his past and let them go, in contrast to Spike, who was killed when he confronted his. This is likely due to the contrast in the two approaches to the past. While Spike hid and fled from his past, Jet tracked it down and confronted it.!~"
},
"voiceActors": [
{
"name": { "full": "Unshou Ishizuka" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n95357-umndcceko65h.png"
}
},
{
"name": { "full": "Beau Billingslea" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n95358-WswC6Q3j7dnB.jpg"
}
},
{
"name": { "full": "Philippe Roullier" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/9256.jpg"
}
},
{
"name": { "full": "Alfonso Ram\u00edrez" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n105030-gxZbxXNbufOh.jpg"
}
},
{
"name": { "full": "Gi hyeon Kim" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/14779.jpg"
}
},
{
"name": { "full": "Karl Schulz" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/default.jpg"
}
},
{
"name": { "full": "Nino Prester" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/default.jpg"
}
},
{
"name": { "full": "Mauro Ramos" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n180569-d5ctTE6UNLfi.jpg"
}
},
{
"name": { "full": "Ricardo Tejedo" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n182551-z5pxnDy9L0DJ.jpg"
}
}
]
},
{
"node": {
"name": { "full": "Ein" },
"gender": null,
"dateOfBirth": { "year": null, "month": null, "day": null },
"age": null,
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/character/medium/4.jpg"
},
"description": "Ein is a Pembroke Welsh Corgi brought aboard the Bebop by Spike after a failed attempt to capture a bounty. Ein is a \"data dog\": while the televised series only briefly hints on the fact that this means Ein's brain was somehow enhanced drastically, the manga shows Ed accessing data stored in Ein's brain via a virtual reality-type interface with which she has a conversation with a human proprietor. It is obvious that Ein is abnormally intelligent, as he is able to answer the telephone, drive a car (just the wheel), use the SSW, play sh\u014dgi, and generally do a number of other things that an average canine should not be able to do, but he never talks in a human language during the show. He does, however, speak in Session 18 \"Speak Like A Child\" after the credits Ein tells Spike \"Next Episode: Wild Horses\". He is able to \"speak\" to other species, as demonstrated in Session 17, \"Mushroom Samba\" (he spoke to a cow with a subtitled bark of \"Thanks\", to which the cow has a subtitled moo back of \"No problem\"). It is likely that Ed is the only crew member with any idea of Ein's capabilities, as the other crew members are quick to dismiss Ein, and never seem to acknowledge him as more than a pet. Ein initially takes a shine to Jet, but when Ed joins the crew, he comes around to her as well. Frequently the two trade roles, with Ein expressing very human sentiments via facial expression and Ed regressing to a feral state. He went with Ed after she left the crew, probably because of his attachment to her. His name is a pun on the Japanese word for \"dog\" (\u72ac inu) but is also German for \"one\". \"Ein\" may also be short for \"Einstein\", after Albert Einstein, because of the extraordinary intelligence he possesses."
},
"voiceActors": [
{
"name": { "full": "Kouichi Yamadera" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n95011-2RfLzncNyvbR.png"
}
},
{
"name": { "full": "Jonatas Carmona" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n231351-hjXONdRlwtsG.jpg"
}
}
]
},
{
"node": {
"name": { "full": "Vicious" },
"gender": "Male",
"dateOfBirth": { "year": null, "month": null, "day": null },
"age": null,
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/character/medium/b2734-aglO8RKNVxnn.jpg"
},
"description": "It&#039;s all in the name with Vicious: he is ruthless, bloodthirsty, cunning and ambitious, willing to do anything in order to secure a position of power. He is a member of the Red Dragon Crime Syndicate in Tharsis, and is often referred to or depicted as a venomous snake. His weapon of choice is not a firearm, but a katana which he wields skillfully, even against gun-wielders. \n\n~!After Spike&#039;s supposed death, Vicious also leaves the Red Dragons briefly to fight in the Titan War of 2068 although his precise motivations for enlisting are debated.!~"
},
"voiceActors": [
{
"name": { "full": "Norio Wakamoto" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n95084-RTrZSU38POPF.png"
}
},
{
"name": { "full": "Skip Stellrecht" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/384.jpg"
}
},
{
"name": { "full": "Roberto Chevalier" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/1266.jpg"
}
},
{
"name": { "full": "Szabolcs P\u00e1lmai" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/7814.jpg"
}
},
{
"name": { "full": "Marcos Pati\u00f1o" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n105020-ZpspJDXu5iTS.png"
}
},
{
"name": { "full": "Andreas Hosang" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/default.jpg"
}
},
{
"name": { "full": "Jacques Albaret" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n113869-wF45sVu1JAxR.jpg"
}
},
{
"name": { "full": "William Viana" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n153462-TiLeyrUYBRTa.jpg"
}
},
{
"name": { "full": "Rafael Pacheco" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n182222-0Fz9qcwIYdVr.jpg"
}
},
{
"name": { "full": "Andr\u00e9s Guti\u00e9rrez Coto" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n108301-MdWBMH4h79NP.png"
}
}
]
},
{
"node": {
"name": { "full": "Grencia Mars Elijah Guo Eckener" },
"gender": null,
"dateOfBirth": { "year": null, "month": null, "day": null },
"age": null,
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/character/medium/b2736-0Eoluq9UxXu4.png"
},
"description": "Gren was once a soldier for the war on Titan, and appears in the two-part episodes of &#039;Jupiter Jazz&#039;. On Titan he fought beside Vicious, who he admired and found encouragement in, during the war. After the war, Gren came back hoping to be a jazz musician, but that plan was cut short when he was arrested on the pretense of being a spy. In prison, Gren heard that Vicious testified against him; this and the isolation drove him mad. The prison used prisoners for drug experiments, and he was forced to become a test subject. (from Wikipedia) Height: 6ft 2 inches Age : 29 Weight : 172 pounds "
},
"voiceActors": [
{
"name": { "full": "Kenyuu Horiuchi" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/262.jpg"
}
},
{
"name": { "full": "Michael Gregory" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/668.jpg"
}
},
{
"name": { "full": "Seung jun Kim" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/14819.jpg"
}
},
{
"name": { "full": "Charles Rettinghaus" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n156036-a3yI3vcZscWP.jpg"
}
},
{
"name": { "full": "Marcelo Campos" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n96423-YaAvwaxG5fNk.jpg"
}
},
{
"name": { "full": "Luis Leonardo Su\u00e1rez" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n182235-4nWPBHLcz65x.png"
}
},
{
"name": { "full": "Roberto Mendiola" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n198310-yBOdbNEZylzU.png"
}
},
{
"name": { "full": "Vittorio De Angelis" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n158538-6FsfCIOtHUzx.png"
}
}
]
},
{
"node": {
"name": { "full": "Julia" },
"gender": null,
"dateOfBirth": { "year": null, "month": null, "day": null },
"age": null,
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/character/medium/b2735-0NRiXHK4PSWs.png"
},
"description": "Julia is a beautiful and mysterious woman from both Spike and Vicious&#039; pasts. A love triangle among the three caused Spike to leave the syndicate rather than challenge Vicious. Spike had wanted to take her with him when he left the syndicate, but she was blackmailed by Vicious into almost shooting Spike. Vicious found out they were planning to run away together and confronted Julia, telling her that she would have to kill Spike, or both of them would be killed. To protect not only herself but also the man she loved, she ran away, never meeting Spike at the cemetery as both of them had planned. (from Wikipedia)"
},
"voiceActors": [
{
"name": { "full": "Mary Elizabeth McGlynn" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n95269-PhQ87wkVzLBb.jpg"
}
},
{
"name": { "full": "Gara Takashima" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n95497-ZisMmeLQfZr7.png"
}
},
{
"name": { "full": "Orsolya Ol\u00e1h" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/default.jpg"
}
},
{
"name": { "full": "Susan Sindberg" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n104747-3HN1vSuPSlEb.jpg"
}
},
{
"name": { "full": "Dulce Guerrero" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n106424-aHMqVAmkh5OD.png"
}
},
{
"name": { "full": "Anke Reitzenstein" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/default.jpg"
}
},
{
"name": { "full": "Eleonora De Angelis" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n157374-iq3dNBXijHRy.jpg"
}
},
{
"name": { "full": "Let\u00edcia Quinto" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n100136-x5kzXdgnFpS2.jpg"
}
}
]
},
{
"node": {
"name": { "full": "Judy" },
"gender": null,
"dateOfBirth": { "year": null, "month": null, "day": null },
"age": null,
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/character/medium/b6694-y0PmKzrcVa7A.png"
},
"description": "Co-hosts the TV show Big Shot along with Punch. The show features the duo in western attire and provides information on popular Bounty Heads throughout the star system. Judy acts like a stereotypical dumb-blonde, and wears a very revealing outfit. After Punch announces that the show has been cancelled, Judy reacts violently and exclaims that &quot;The station will hear from her agent about this!&quot; Later, it is revealed that she is engaged to be married to her agent."
},
"voiceActors": [
{
"name": { "full": "Miki Nagasawa" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n95209-9RHgLGkMrska.png"
}
},
{
"name": { "full": "Lia Sargent" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/835.jpg"
}
},
{
"name": { "full": "Rossella Acerbo" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/1677.jpg"
}
},
{
"name": { "full": "Angela Ringer" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/default.jpg"
}
},
{
"name": { "full": "Susan Sindberg" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n104747-3HN1vSuPSlEb.jpg"
}
},
{
"name": { "full": "Cec\u00edlia Lemes" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/12095.jpg"
}
},
{
"name": { "full": "Alicia Barrag\u00e1n" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n182221-N9LZsRKJBTCd.jpg"
}
},
{
"name": { "full": "Monserrat Mendoza" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n139011-PtSpM8k7zwlf.png"
}
}
]
},
{
"node": {
"name": { "full": "Andy Von de Oniyate" },
"gender": null,
"dateOfBirth": { "year": null, "month": null, "day": null },
"age": null,
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/character/medium/b23740-NCE7b9okKmeI.png"
},
"description": "Andy is a hunter who went after a criminal called Teddy Bomber whom he thought to be Spike. He is always with his mare, Onyx. He&#039;s a member of YMCA, Young Man&#039;s Cowboy Association. After fighting and losing he gives his cowboy title to Spike and turns into a samurai."
},
"voiceActors": [
{
"name": { "full": "Masashi Ebara" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n95179-ZXxATX9muGcD.png"
}
},
{
"name": { "full": "Daran Norris" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n95719-xM38IFuIRqgv.jpg"
}
},
{
"name": { "full": "N\u00e1ndor Holl" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/7786.jpg"
}
},
{
"name": { "full": "Constantin Pappas" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n154153-y6Y8JWyyPnBG.png"
}
},
{
"name": { "full": "Marco Ant\u00f4nio Costa" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n191888-8c9SpkajaMmq.png"
}
},
{
"name": { "full": "Idzi Dutkiewicz" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n108299-vems5azPxtU5.png"
}
},
{
"name": { "full": "Ulises Zavala" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/n232410-ZNSOyFA2EHO7.png"
}
},
{
"name": { "full": "Sandro Acerbo" },
"image": {
"medium": "https://s4.anilist.co/file/anilistcdn/staff/medium/1096.jpg"
}
}
]
}
]
},
"studios": {
"nodes": [
{ "name": "Sunrise", "isAnimationStudio": true },
{ "name": "Bandai Visual", "isAnimationStudio": false },
{ "name": "Bandai Entertainment", "isAnimationStudio": false }
]
},
"season": "SPRING",
"format": "TV",
"status": "FINISHED",
"seasonYear": 1998,
"description": "Enter a world in the distant future, where Bounty Hunters roam the solar system. Spike and Jet, bounty hunting partners, set out on journeys in an ever struggling effort to win bounty rewards to survive.<br><br>\nWhile traveling, they meet up with other very interesting people. Could Faye, the beautiful and ridiculously poor gambler, Edward, the computer genius, and Ein, the engineered dog be a good addition to the group?",
"genres": ["Action", "Adventure", "Drama", "Sci-Fi"],
"synonyms": [
"\uce74\uc6b0\ubcf4\uc774 \ube44\ubc25",
"\u05e7\u05d0\u05d5\u05d1\u05d5\u05d9 \u05d1\u05d9\u05d1\u05d5\u05e4",
"\u0e04\u0e32\u0e27\u0e1a\u0e2d\u0e22 \u0e1a\u0e35\u0e1a\u0e4a\u0e2d\u0e1b",
"\u041a\u043e\u0432\u0431\u043e\u0439 \u0411\u0438\u0431\u043e\u043f",
"\u039a\u03b1\u03bf\u03c5\u03bc\u03c0\u03cc\u03b7\u03b4\u03b5\u03c2 \u03c4\u03bf\u03c5 \u0394\u03b9\u03b1\u03c3\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2",
"Kowboj Bebop"
],
"startDate": { "year": 1998, "month": 4, "day": 3 },
"endDate": { "year": 1999, "month": 4, "day": 24 },
"duration": 24,
"countryOfOrigin": "JP",
"averageScore": 86,
"source": "ORIGINAL",
"hashtag": null,
"siteUrl": "https://anilist.co/anime/1",
"nextAiringEpisode": null,
"tags": [
{ "name": "Space", "rank": 94 },
{ "name": "Crime", "rank": 92 },
{ "name": "Episodic", "rank": 88 },
{ "name": "Ensemble Cast", "rank": 86 },
{ "name": "Primarily Adult Cast", "rank": 85 },
{ "name": "Tragedy", "rank": 80 },
{ "name": "Travel", "rank": 80 },
{ "name": "Noir", "rank": 80 },
{ "name": "Male Protagonist", "rank": 78 },
{ "name": "Guns", "rank": 78 },
{ "name": "Cyberpunk", "rank": 77 },
{ "name": "Philosophy", "rank": 72 },
{ "name": "Tomboy", "rank": 71 },
{ "name": "Martial Arts", "rank": 67 },
{ "name": "Terrorism", "rank": 66 },
{ "name": "Anti-Hero", "rank": 64 },
{ "name": "Found Family", "rank": 60 },
{ "name": "Amnesia", "rank": 60 },
{ "name": "Cyborg", "rank": 58 },
{ "name": "Gambling", "rank": 57 },
{ "name": "Yakuza", "rank": 50 },
{ "name": "Drugs", "rank": 49 },
{ "name": "Cult", "rank": 42 },
{ "name": "Police", "rank": 37 },
{ "name": "Tanned Skin", "rank": 35 },
{ "name": "Nudity", "rank": 30 },
{ "name": "Circus", "rank": 10 }
],
"reviews": {
"nodes": [
{
"summary": "I think it's time we blow this scene, get everybody and the stuff together... okay, three, two, one, let's jam.",
"user": {
"name": "Pursueth",
"avatar": {
"medium": "https://s4.anilist.co/file/anilistcdn/user/avatar/medium/b5984516-vVhftslD3YbM.jpg"
}
}
},
{
"summary": "Been carrying the weight for two years now. Truly my favorite anime.",
"user": {
"name": "honkytonkwomen",
"avatar": {
"medium": "https://s4.anilist.co/file/anilistcdn/user/avatar/medium/b5382323-LaMixPweP4eB.jpg"
}
}
},
{
"summary": "Okay, 3, 2, 1 let's jam",
"user": {
"name": "TheRealKyuubey",
"avatar": {
"medium": "https://s4.anilist.co/file/anilistcdn/user/avatar/medium/b173334-U6tLWQoaepDP.png"
}
}
},
{
"summary": "Cowboy Bebop: A Timeless Journey Through Space and Jazz",
"user": {
"name": "3dnane",
"avatar": {
"medium": "https://s4.anilist.co/file/anilistcdn/user/avatar/medium/b6497672-U4Ljca8ZT4bn.jpg"
}
}
},
{
"summary": "A story from the past that teaches us to look to the future",
"user": {
"name": "Arikarikita",
"avatar": {
"medium": "https://s4.anilist.co/file/anilistcdn/user/avatar/medium/b883323-qLr1bYr6GGhv.png"
}
}
},
{
"summary": "Cowboy Bebop was a bet.",
"user": {
"name": "paradigm",
"avatar": {
"medium": "https://s4.anilist.co/file/anilistcdn/user/avatar/medium/b211063-M7bZqsY3D98s.png"
}
}
}
]
},
"recommendations": {
"nodes": [
{
"mediaRecommendation": {
"title": {
"romaji": "Samurai Champloo",
"english": "Samurai Champloo"
}
}
},
{
"mediaRecommendation": {
"title": { "romaji": "TRIGUN", "english": "Trigun" }
}
},
{
"mediaRecommendation": {
"title": {
"romaji": "GREAT PRETENDER",
"english": "Great Pretender"
}
}
},
{
"mediaRecommendation": {
"title": {
"romaji": "Space\u2606Dandy",
"english": "Space Dandy"
}
}
},
{
"mediaRecommendation": {
"title": {
"romaji": "BLACK LAGOON",
"english": "Black Lagoon"
}
}
},
{
"mediaRecommendation": {
"title": { "romaji": "Baccano!", "english": "Baccano!" }
}
},
{
"mediaRecommendation": {
"title": {
"romaji": "Michiko to Hatchin",
"english": "Michiko & Hatchin"
}
}
},
{
"mediaRecommendation": {
"title": { "romaji": "Lupin III", "english": "Lupin the 3rd" }
}
},
{
"mediaRecommendation": {
"title": {
"romaji": "Koukaku Kidoutai: STAND ALONE COMPLEX",
"english": "Ghost in the Shell: Stand Alone Complex"
}
}
},
{
"mediaRecommendation": {
"title": {
"romaji": "Seihou Bukyou Outlaw Star",
"english": "Outlaw Star"
}
}
},
{
"mediaRecommendation": {
"title": {
"romaji": "TRIGUN STAMPEDE",
"english": "TRIGUN STAMPEDE"
}
}
},
{
"mediaRecommendation": {
"title": {
"romaji": "Shin Seiki Evangelion",
"english": "Neon Genesis Evangelion"
}
}
},
{
"mediaRecommendation": {
"title": {
"romaji": "Cyberpunk: Edgerunners",
"english": "Cyberpunk: Edgerunners"
}
}
},
{
"mediaRecommendation": {
"title": {
"romaji": "Kekkai Sensen",
"english": "Blood Blockade Battlefront"
}
}
},
{
"mediaRecommendation": {
"title": { "romaji": "THE Big O", "english": "The Big O" }
}
}
]
},
"relations": {
"nodes": [
{
"title": {
"romaji": "Cowboy Bebop: Tengoku no Tobira",
"english": "Cowboy Bebop: The Movie - Knockin' on Heaven's Door",
"native": "\u30ab\u30a6\u30dc\u30fc\u30a4\u30d3\u30d0\u30c3\u30d7\u5929\u56fd\u306e\u6249"
}
},
{
"title": {
"romaji": "Cowboy Bebop: Ein no Natsuyasumi",
"english": "Ein's Summer Vacation",
"native": "\u30a2\u30a4\u30f3\u306e\u306a\u3064\u3084\u3059\u307f"
}
},
{
"title": {
"romaji": "Cowboy Bebop",
"english": "Cowboy Bebop",
"native": "\u30ab\u30a6\u30dc\u30fc\u30a4\u30d3\u30d0\u30c3\u30d7"
}
},
{
"title": {
"romaji": "Shooting Star Bebop: Cowboy Bebop",
"english": "Cowboy Bebop Shooting Star",
"native": "\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u30b9\u30bf\u30fc\u30d3\u30d0\u30c3\u30d7 \u30ab\u30a6\u30dc\u30fc\u30a4\u30d3\u30d0\u30c3\u30d7"
}
},
{
"title": {
"romaji": "Cowboy Bebop: Yoseatsume Blues",
"english": null,
"native": "\u30ab\u30a6\u30dc\u30fc\u30a4\u30d3\u30d0\u30c3\u30d7 \u3088\u305b\u3042\u3064\u3081\u30d6\u30eb\u30fc\u30b9"
}
}
]
},
"externalLinks": [
{
"url": "http://www.hulu.com/cowboy-bebop",
"site": "Hulu",
"icon": "https://s4.anilist.co/file/anilistcdn/link/icon/7-rM06PQyWONGC.png"
},
{
"url": "http://www.crunchyroll.com/cowboy-bebop",
"site": "Crunchyroll",
"icon": "https://s4.anilist.co/file/anilistcdn/link/icon/5-AWN2pVlluCOO.png"
},
{
"url": "https://www.amazon.com/gp/video/detail/B00R2KO8ZE/",
"site": "Amazon Prime Video",
"icon": "https://s4.anilist.co/file/anilistcdn/link/icon/21-bDoNIomehkOx.png"
},
{
"url": "https://tubitv.com/series/2052",
"site": "Tubi TV",
"icon": "https://s4.anilist.co/file/anilistcdn/link/icon/30-H2h0Fxnog1Pr.png"
},
{
"url": "https://www.adultswim.com/videos/cowboy-bebop",
"site": "Adult Swim",
"icon": "https://s4.anilist.co/file/anilistcdn/link/icon/28-W1L8AHW0O4xE.png"
},
{
"url": "https://www.netflix.com/title/80001305",
"site": "Netflix",
"icon": "https://s4.anilist.co/file/anilistcdn/link/icon/10-rVGPom8RCiwH.png"
},
{
"url": "https://cowboy-bebop.net/",
"site": "Official Site",
"icon": null
}
],
"rankings": [
{ "rank": 44, "context": "highest rated all time" },
{ "rank": 54, "context": "most popular all time" },
{ "rank": 1, "context": "highest rated" },
{ "rank": 1, "context": "most popular" }
],
"bannerImage": "https://s4.anilist.co/file/anilistcdn/media/anime/banner/1-OquNCNB6srGe.jpg"
}
]
}
}
}

View File

@@ -1,71 +0,0 @@
query($query:String){
Page(perPage:15,page:$page){
pageInfo{
total
currentPage
}
media(
search:$query,
genre_in:$genre_in,
genre_not_in:$genre_not_in,
tag_in:$tag_in,
tag_not_in:$tag_not_in,
status_in:$status_in,
status_not_in:$status_not_in,
popularity_greater:$popularity_greater,
popularity_lesser:$popularity_lesser,
averageScore_greater:$averageScore_greater,
averageScore_lesser:$averageScore_lesser,
startDate_greater:$startDate_greater,
startDate_lesser:$startDate_lesser,
endDate_greater:$endDate_greater,
endDate_lesser:$endDate_lesser,
sort:$sort,
type:ANIME
)
{
id
title{
romaji
english
}
coverImage{
medium
}
trailer {
site
id
}
popularity
favourites
averageScore
episodes
genres
studios{
nodes{
name
favourites
}
}
tags {
name
}
startDate {
year
month
day
}
endDate {
year
month
day
}
status
nextAiringEpisode {
timeUntilAiring
airingAt
episode
}
}
}

View File

@@ -1,425 +0,0 @@
[
{
"episode": 1,
"streams": [
{
"quality": 2160,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-281210110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=cb00cb784589adbaceceb0fa139943fa&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=0fff2748095c5e0330934793408757d3f51ce260eff3d39b6b96e6dc51201cc8&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=419c3e929cd04770d08cb0eb8f95470d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=93ee08fbb96878bc55af2ed52bf9d176d96d93656ff865d59ed817bb04ecdedc&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=81958d2e221d15d2c338619036f29c0e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=bfcfa2cdb0b8deb5154d651a96ce22a6b4b0745d10b28fca87a6908328c5aa17&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=d808b57371897bb4174112c3a53c6ed2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=30bb7b24ea912715ec2e9e76dfbb7b2703a824389d867b78b472d2d555b94b0c&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_1_sub_English"
]
},
{
"quality": 1080,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-261210110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=02ff8e9f9060bc3437356a7cb6cc1ed1&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=836a02ef21ecc1a02034d7d10083bdf97103df2a586d8ba6009d8521abd855ac&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=419c3e929cd04770d08cb0eb8f95470d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=93ee08fbb96878bc55af2ed52bf9d176d96d93656ff865d59ed817bb04ecdedc&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=81958d2e221d15d2c338619036f29c0e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=bfcfa2cdb0b8deb5154d651a96ce22a6b4b0745d10b28fca87a6908328c5aa17&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=d808b57371897bb4174112c3a53c6ed2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=30bb7b24ea912715ec2e9e76dfbb7b2703a824389d867b78b472d2d555b94b0c&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_1_sub_English"
]
},
{
"quality": 1080,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-251210110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=f99d431016260b0922d9020489ba7199&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=d94064afd352f39f9a57c1fe0b0c97eec231849dbdbcb0fdd070497cc5d86877&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=419c3e929cd04770d08cb0eb8f95470d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=93ee08fbb96878bc55af2ed52bf9d176d96d93656ff865d59ed817bb04ecdedc&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=81958d2e221d15d2c338619036f29c0e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=bfcfa2cdb0b8deb5154d651a96ce22a6b4b0745d10b28fca87a6908328c5aa17&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=d808b57371897bb4174112c3a53c6ed2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=30bb7b24ea912715ec2e9e76dfbb7b2703a824389d867b78b472d2d555b94b0c&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_1_sub_English"
]
},
{
"quality": 720,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-241210110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=730fa341c3839f233e8a367d04c59306&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=7b2539b70f4a7f8c354e297a974a21fea81d571775c1a18dd754d4f58b061d90&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=419c3e929cd04770d08cb0eb8f95470d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=93ee08fbb96878bc55af2ed52bf9d176d96d93656ff865d59ed817bb04ecdedc&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=81958d2e221d15d2c338619036f29c0e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=bfcfa2cdb0b8deb5154d651a96ce22a6b4b0745d10b28fca87a6908328c5aa17&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=d808b57371897bb4174112c3a53c6ed2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=30bb7b24ea912715ec2e9e76dfbb7b2703a824389d867b78b472d2d555b94b0c&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_1_sub_English"
]
},
{
"quality": 480,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-231210110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=a09b45f68cb418e807eeb090b23d510e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=7da6b3ffe8d32c9495fb77af7b18b358d5d1eced6ced88c99312a38522e13340&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=419c3e929cd04770d08cb0eb8f95470d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=93ee08fbb96878bc55af2ed52bf9d176d96d93656ff865d59ed817bb04ecdedc&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=81958d2e221d15d2c338619036f29c0e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=bfcfa2cdb0b8deb5154d651a96ce22a6b4b0745d10b28fca87a6908328c5aa17&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=d808b57371897bb4174112c3a53c6ed2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=30bb7b24ea912715ec2e9e76dfbb7b2703a824389d867b78b472d2d555b94b0c&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_1_sub_English"
]
},
{
"quality": 360,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-211210110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=9e17e8e2f788307cd6ab4208332c45b2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=65ea6b54125595f8ebc55362d30b9367fac6517e2fe8b32aabb08ad0abfb5a8c&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=419c3e929cd04770d08cb0eb8f95470d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=93ee08fbb96878bc55af2ed52bf9d176d96d93656ff865d59ed817bb04ecdedc&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=81958d2e221d15d2c338619036f29c0e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=bfcfa2cdb0b8deb5154d651a96ce22a6b4b0745d10b28fca87a6908328c5aa17&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=d808b57371897bb4174112c3a53c6ed2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=30bb7b24ea912715ec2e9e76dfbb7b2703a824389d867b78b472d2d555b94b0c&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_1_sub_English"
]
},
{
"quality": 240,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2e1210110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=53991473cb3bce40502a72593be91b52&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=29e7fcc042beae346d067210649fc6d31e60b7d438bb00d9877ac4049ed7afd9&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=419c3e929cd04770d08cb0eb8f95470d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=93ee08fbb96878bc55af2ed52bf9d176d96d93656ff865d59ed817bb04ecdedc&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=81958d2e221d15d2c338619036f29c0e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=bfcfa2cdb0b8deb5154d651a96ce22a6b4b0745d10b28fca87a6908328c5aa17&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=d808b57371897bb4174112c3a53c6ed2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=30bb7b24ea912715ec2e9e76dfbb7b2703a824389d867b78b472d2d555b94b0c&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_1_sub_English"
]
},
{
"quality": 144,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2f1210110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=38d619a08803fbeae4ce516df0025aa3&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=d7abaf668ed19a948b6597721d47b5c69cae7aa3f7ae965121e07ee23b82ef3f&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=419c3e929cd04770d08cb0eb8f95470d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=93ee08fbb96878bc55af2ed52bf9d176d96d93656ff865d59ed817bb04ecdedc&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=81958d2e221d15d2c338619036f29c0e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=bfcfa2cdb0b8deb5154d651a96ce22a6b4b0745d10b28fca87a6908328c5aa17&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=d808b57371897bb4174112c3a53c6ed2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=30bb7b24ea912715ec2e9e76dfbb7b2703a824389d867b78b472d2d555b94b0c&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_1_sub_English"
]
},
{
"quality": 2160,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-281220110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=0d3feddd596b49619e240c063f47de83i&mid=1715226141&platform=pc&upsig=83e007567b4a487687b013ee6179d405&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=59635b60fa44105a97b961210f58d8918e7269900cdda1e621b9e947e5d86c36&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=419c3e929cd04770d08cb0eb8f95470d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=93ee08fbb96878bc55af2ed52bf9d176d96d93656ff865d59ed817bb04ecdedc&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=81958d2e221d15d2c338619036f29c0e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=bfcfa2cdb0b8deb5154d651a96ce22a6b4b0745d10b28fca87a6908328c5aa17&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=d808b57371897bb4174112c3a53c6ed2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=30bb7b24ea912715ec2e9e76dfbb7b2703a824389d867b78b472d2d555b94b0c&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_1_sub_English"
]
},
{
"quality": 1080,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-261220110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=0d3feddd596b49619e240c063f47de83i&mid=1715226141&platform=pc&upsig=5a765ca2a4bc69821cf8f13fe1864fb9&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=9fc3d5682ac7a4cdbe37dad60f49c3b6f53dc84979f2b71e5d1e0b4ca2784374&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=419c3e929cd04770d08cb0eb8f95470d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=93ee08fbb96878bc55af2ed52bf9d176d96d93656ff865d59ed817bb04ecdedc&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=81958d2e221d15d2c338619036f29c0e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=bfcfa2cdb0b8deb5154d651a96ce22a6b4b0745d10b28fca87a6908328c5aa17&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=d808b57371897bb4174112c3a53c6ed2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=30bb7b24ea912715ec2e9e76dfbb7b2703a824389d867b78b472d2d555b94b0c&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_1_sub_English"
]
},
{
"quality": 1080,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-251220110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=0d3feddd596b49619e240c063f47de83i&mid=1715226141&platform=pc&upsig=d0c61918b0e282f76f736d1c736f9ec8&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=fdff82180978f3b07104033dddd2014f9a5e49f1124995f35cfcc29785abb570&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=419c3e929cd04770d08cb0eb8f95470d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=93ee08fbb96878bc55af2ed52bf9d176d96d93656ff865d59ed817bb04ecdedc&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=81958d2e221d15d2c338619036f29c0e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=bfcfa2cdb0b8deb5154d651a96ce22a6b4b0745d10b28fca87a6908328c5aa17&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=d808b57371897bb4174112c3a53c6ed2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=30bb7b24ea912715ec2e9e76dfbb7b2703a824389d867b78b472d2d555b94b0c&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_1_sub_English"
]
},
{
"quality": 720,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-241220110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=0d3feddd596b49619e240c063f47de83i&mid=1715226141&platform=pc&upsig=d62ed27057c8b6a6bd9c3d5dfce6c244&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=2bbef8b303b91623bf8f4c7a822a6a732edddda155093e363608bbecea77f0d4&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=419c3e929cd04770d08cb0eb8f95470d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=93ee08fbb96878bc55af2ed52bf9d176d96d93656ff865d59ed817bb04ecdedc&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=81958d2e221d15d2c338619036f29c0e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=bfcfa2cdb0b8deb5154d651a96ce22a6b4b0745d10b28fca87a6908328c5aa17&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=d808b57371897bb4174112c3a53c6ed2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=30bb7b24ea912715ec2e9e76dfbb7b2703a824389d867b78b472d2d555b94b0c&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_1_sub_English"
]
},
{
"quality": 480,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-231220110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=0d3feddd596b49619e240c063f47de83i&mid=1715226141&platform=pc&upsig=3f133a535a1f792e6f2344634d6ac519&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=0bd35aae28c3c0c8eb48f20e68958f7c95ec7be94db9da75ed3642569f3e18fb&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=419c3e929cd04770d08cb0eb8f95470d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=93ee08fbb96878bc55af2ed52bf9d176d96d93656ff865d59ed817bb04ecdedc&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=81958d2e221d15d2c338619036f29c0e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=bfcfa2cdb0b8deb5154d651a96ce22a6b4b0745d10b28fca87a6908328c5aa17&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=d808b57371897bb4174112c3a53c6ed2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=30bb7b24ea912715ec2e9e76dfbb7b2703a824389d867b78b472d2d555b94b0c&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_1_sub_English"
]
},
{
"quality": 360,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-211220110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=0d3feddd596b49619e240c063f47de83i&mid=1715226141&platform=pc&upsig=9cc8f9105cf2b103498edcb0b598172b&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=c53f5655b975d10dc84e3e64d0a4cef05e28570eebb463d83fed2a3d8f9b7811&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=419c3e929cd04770d08cb0eb8f95470d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=93ee08fbb96878bc55af2ed52bf9d176d96d93656ff865d59ed817bb04ecdedc&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=81958d2e221d15d2c338619036f29c0e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=bfcfa2cdb0b8deb5154d651a96ce22a6b4b0745d10b28fca87a6908328c5aa17&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=d808b57371897bb4174112c3a53c6ed2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=30bb7b24ea912715ec2e9e76dfbb7b2703a824389d867b78b472d2d555b94b0c&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_1_sub_English"
]
},
{
"quality": 240,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2e1220110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=0d3feddd596b49619e240c063f47de83i&mid=1715226141&platform=pc&upsig=94e89139eb6c68c3abaa60732b71d9b5&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=857664970a080beafe4c0eecfd55d74d02488ab2540f3fb7a761d8de1cbb7d73&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=419c3e929cd04770d08cb0eb8f95470d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=93ee08fbb96878bc55af2ed52bf9d176d96d93656ff865d59ed817bb04ecdedc&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=81958d2e221d15d2c338619036f29c0e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=bfcfa2cdb0b8deb5154d651a96ce22a6b4b0745d10b28fca87a6908328c5aa17&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=d808b57371897bb4174112c3a53c6ed2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=30bb7b24ea912715ec2e9e76dfbb7b2703a824389d867b78b472d2d555b94b0c&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_1_sub_English"
]
},
{
"quality": 144,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2f1220110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=0d3feddd596b49619e240c063f47de83i&mid=1715226141&platform=pc&upsig=b1cf645fb59d1a842513c0e1009ebe48&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=027ee786681aa3a335293a80df939a5c07566acaca78b1634665ea4a69f06ed9&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=419c3e929cd04770d08cb0eb8f95470d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=93ee08fbb96878bc55af2ed52bf9d176d96d93656ff865d59ed817bb04ecdedc&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=81958d2e221d15d2c338619036f29c0e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=bfcfa2cdb0b8deb5154d651a96ce22a6b4b0745d10b28fca87a6908328c5aa17&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/9v/lr/n230705er39jxogp0ap3b823gkkylr9v-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806416&gen=playurlv2&os=akam&oi=2823883151&trid=cdad1de563c743629bdbef3a82d44df0i&mid=1715226141&platform=pc&upsig=d808b57371897bb4174112c3a53c6ed2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806416~hmac=30bb7b24ea912715ec2e9e76dfbb7b2703a824389d867b78b472d2d555b94b0c&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_1_sub_English"
]
},
{
"stream_url": "https://tools.fast4speed.rsvp//media7/videos/LYKSutL2PaAjYyXWz/sub/1",
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_1_sub_English"
]
}
]
},
{
"episode": 2,
"streams": [
{
"quality": 2160,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-281210110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=524b69564543fbf4f3d4c68b6c3c1d09&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=6d81e4cd3e315752490834a7a10b0c87aed91c328b5c7bf3bf6d26f05ac88497&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=1db546d64c64be51daa2a29c5d174445&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=b44869856e3c8a7d8e7e83fbee0cd9dab8cb5f85897ea559a54d332554c5d309&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=3631738cb91c22b18272e76b136b3528&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=7c49369f5d56c50d4ad05efcf296bcfc2b8915970315eab22153144a5cad38d6&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=9e88250822bf3a37ef07d3db28264aef&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=46af0b8bc556f8b9ff8c2d31f2e474803c8feb9516e76b08ef9a18514c7be347&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_2_sub_English"
]
},
{
"quality": 1080,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-261210110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=cb2fea1f90e4446670dff59f478b4ae9&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=8c9def323472882639cd860c4fa9597383f738ea15f87c642555095c04735e5f&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=1db546d64c64be51daa2a29c5d174445&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=b44869856e3c8a7d8e7e83fbee0cd9dab8cb5f85897ea559a54d332554c5d309&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=3631738cb91c22b18272e76b136b3528&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=7c49369f5d56c50d4ad05efcf296bcfc2b8915970315eab22153144a5cad38d6&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=9e88250822bf3a37ef07d3db28264aef&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=46af0b8bc556f8b9ff8c2d31f2e474803c8feb9516e76b08ef9a18514c7be347&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_2_sub_English"
]
},
{
"quality": 1080,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-251210110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=43c3d1bae3d7eb6a8bc0288f12e1bc9f&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=17755eaa1600fb6e16fc1e1e6752e2a36f54f12a8bbccadbf59e21c44e2227b1&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=1db546d64c64be51daa2a29c5d174445&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=b44869856e3c8a7d8e7e83fbee0cd9dab8cb5f85897ea559a54d332554c5d309&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=3631738cb91c22b18272e76b136b3528&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=7c49369f5d56c50d4ad05efcf296bcfc2b8915970315eab22153144a5cad38d6&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=9e88250822bf3a37ef07d3db28264aef&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=46af0b8bc556f8b9ff8c2d31f2e474803c8feb9516e76b08ef9a18514c7be347&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_2_sub_English"
]
},
{
"quality": 720,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-241210110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=ed96f5dbb3243056c2184c5f0b6043bc&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=3376b48990131bd8e8e72e328ba519b329956d9fe83cdef4884de957840d4048&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=1db546d64c64be51daa2a29c5d174445&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=b44869856e3c8a7d8e7e83fbee0cd9dab8cb5f85897ea559a54d332554c5d309&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=3631738cb91c22b18272e76b136b3528&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=7c49369f5d56c50d4ad05efcf296bcfc2b8915970315eab22153144a5cad38d6&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=9e88250822bf3a37ef07d3db28264aef&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=46af0b8bc556f8b9ff8c2d31f2e474803c8feb9516e76b08ef9a18514c7be347&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_2_sub_English"
]
},
{
"quality": 480,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-231210110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=9b5e3042a4b7ef1c297da688491a597f&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=db7e82bea1c34954c95350128a9b36aa99115a5720876ab7d4f04b4ab5d27296&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=1db546d64c64be51daa2a29c5d174445&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=b44869856e3c8a7d8e7e83fbee0cd9dab8cb5f85897ea559a54d332554c5d309&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=3631738cb91c22b18272e76b136b3528&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=7c49369f5d56c50d4ad05efcf296bcfc2b8915970315eab22153144a5cad38d6&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=9e88250822bf3a37ef07d3db28264aef&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=46af0b8bc556f8b9ff8c2d31f2e474803c8feb9516e76b08ef9a18514c7be347&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_2_sub_English"
]
},
{
"quality": 360,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-211210110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=eb082a3debd772ec8ec7652e0269eef0&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=331c2ef5a5a9fd182462062134e35567a62ab7598edf7a93678918c76d7f2754&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=1db546d64c64be51daa2a29c5d174445&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=b44869856e3c8a7d8e7e83fbee0cd9dab8cb5f85897ea559a54d332554c5d309&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=3631738cb91c22b18272e76b136b3528&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=7c49369f5d56c50d4ad05efcf296bcfc2b8915970315eab22153144a5cad38d6&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=9e88250822bf3a37ef07d3db28264aef&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=46af0b8bc556f8b9ff8c2d31f2e474803c8feb9516e76b08ef9a18514c7be347&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_2_sub_English"
]
},
{
"quality": 240,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2e1210110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=c7978f5178ca0041e4f9edf8d57a899f&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=5d7fe506b0f7784eb47aa85f2dcc99fffeb6d715ee71bb3766a51a8c747e6b39&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=1db546d64c64be51daa2a29c5d174445&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=b44869856e3c8a7d8e7e83fbee0cd9dab8cb5f85897ea559a54d332554c5d309&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=3631738cb91c22b18272e76b136b3528&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=7c49369f5d56c50d4ad05efcf296bcfc2b8915970315eab22153144a5cad38d6&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=9e88250822bf3a37ef07d3db28264aef&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=46af0b8bc556f8b9ff8c2d31f2e474803c8feb9516e76b08ef9a18514c7be347&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_2_sub_English"
]
},
{
"quality": 144,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2f1210110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=59e5be290a3224956c898b95cef6b149&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=a44bca5b557490d30ef52537a93dd0ce47a5dab8db5c19fbe5935e49b0bfc71f&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=1db546d64c64be51daa2a29c5d174445&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=b44869856e3c8a7d8e7e83fbee0cd9dab8cb5f85897ea559a54d332554c5d309&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=3631738cb91c22b18272e76b136b3528&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=7c49369f5d56c50d4ad05efcf296bcfc2b8915970315eab22153144a5cad38d6&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=9e88250822bf3a37ef07d3db28264aef&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=46af0b8bc556f8b9ff8c2d31f2e474803c8feb9516e76b08ef9a18514c7be347&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_2_sub_English"
]
},
{
"quality": 2160,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-281220110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=893c4505892c4e239a3a1aa3cc0ad30ai&mid=1715226141&platform=pc&upsig=31265763ba5db068abf292c0f97e4b66&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=006292cd147652fe63354536afdc1cb063b996b370efe2790d4e49a98fd84ef3&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=1db546d64c64be51daa2a29c5d174445&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=b44869856e3c8a7d8e7e83fbee0cd9dab8cb5f85897ea559a54d332554c5d309&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=3631738cb91c22b18272e76b136b3528&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=7c49369f5d56c50d4ad05efcf296bcfc2b8915970315eab22153144a5cad38d6&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=9e88250822bf3a37ef07d3db28264aef&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=46af0b8bc556f8b9ff8c2d31f2e474803c8feb9516e76b08ef9a18514c7be347&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_2_sub_English"
]
},
{
"quality": 1080,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-261220110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=893c4505892c4e239a3a1aa3cc0ad30ai&mid=1715226141&platform=pc&upsig=0119546d4b9d3470ac382dd9de3bb4c7&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=cae44130401286c51353667dc3a0bc14f86fdfe12461da839786008d2013c773&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=1db546d64c64be51daa2a29c5d174445&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=b44869856e3c8a7d8e7e83fbee0cd9dab8cb5f85897ea559a54d332554c5d309&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=3631738cb91c22b18272e76b136b3528&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=7c49369f5d56c50d4ad05efcf296bcfc2b8915970315eab22153144a5cad38d6&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=9e88250822bf3a37ef07d3db28264aef&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=46af0b8bc556f8b9ff8c2d31f2e474803c8feb9516e76b08ef9a18514c7be347&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_2_sub_English"
]
},
{
"quality": 1080,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-251220110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=893c4505892c4e239a3a1aa3cc0ad30ai&mid=1715226141&platform=pc&upsig=a165d30b028da157106f918dd1da47b8&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=70eb53d921969914a41ecc829799aaf93f771f2896aa0f24895fa08563011b4a&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=1db546d64c64be51daa2a29c5d174445&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=b44869856e3c8a7d8e7e83fbee0cd9dab8cb5f85897ea559a54d332554c5d309&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=3631738cb91c22b18272e76b136b3528&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=7c49369f5d56c50d4ad05efcf296bcfc2b8915970315eab22153144a5cad38d6&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=9e88250822bf3a37ef07d3db28264aef&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=46af0b8bc556f8b9ff8c2d31f2e474803c8feb9516e76b08ef9a18514c7be347&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_2_sub_English"
]
},
{
"quality": 720,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-241220110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=893c4505892c4e239a3a1aa3cc0ad30ai&mid=1715226141&platform=pc&upsig=44f1f4283a9ab0477d54ee1b17920439&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=ccfde33644f85a1bd17e2fe959d517015a2abbfad81c53633b607f9d46536a7e&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=1db546d64c64be51daa2a29c5d174445&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=b44869856e3c8a7d8e7e83fbee0cd9dab8cb5f85897ea559a54d332554c5d309&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=3631738cb91c22b18272e76b136b3528&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=7c49369f5d56c50d4ad05efcf296bcfc2b8915970315eab22153144a5cad38d6&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=9e88250822bf3a37ef07d3db28264aef&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=46af0b8bc556f8b9ff8c2d31f2e474803c8feb9516e76b08ef9a18514c7be347&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_2_sub_English"
]
},
{
"quality": 480,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-231220110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=893c4505892c4e239a3a1aa3cc0ad30ai&mid=1715226141&platform=pc&upsig=d7c85bc331e1969ef09e10af9fb955e4&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=1fd5b2f944f87f8d22499ba46cacee299080dd82136489ac15063d7d40377708&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=1db546d64c64be51daa2a29c5d174445&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=b44869856e3c8a7d8e7e83fbee0cd9dab8cb5f85897ea559a54d332554c5d309&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=3631738cb91c22b18272e76b136b3528&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=7c49369f5d56c50d4ad05efcf296bcfc2b8915970315eab22153144a5cad38d6&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=9e88250822bf3a37ef07d3db28264aef&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=46af0b8bc556f8b9ff8c2d31f2e474803c8feb9516e76b08ef9a18514c7be347&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_2_sub_English"
]
},
{
"quality": 360,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-211220110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=893c4505892c4e239a3a1aa3cc0ad30ai&mid=1715226141&platform=pc&upsig=2d41ffea376120e178ece52948ad95f5&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=c95c968cb54a6647fd17015d14d09cfb4a9901e54bd30f3811419e03334efc38&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=1db546d64c64be51daa2a29c5d174445&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=b44869856e3c8a7d8e7e83fbee0cd9dab8cb5f85897ea559a54d332554c5d309&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=3631738cb91c22b18272e76b136b3528&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=7c49369f5d56c50d4ad05efcf296bcfc2b8915970315eab22153144a5cad38d6&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=9e88250822bf3a37ef07d3db28264aef&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=46af0b8bc556f8b9ff8c2d31f2e474803c8feb9516e76b08ef9a18514c7be347&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_2_sub_English"
]
},
{
"quality": 240,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2e1220110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=893c4505892c4e239a3a1aa3cc0ad30ai&mid=1715226141&platform=pc&upsig=08807f4673a635863fa9d5f137e202b9&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=78774c1e1784e1dd7bf6b6e697a0da2d1f6d0a748b33b82a879ae3bb17de5c2d&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=1db546d64c64be51daa2a29c5d174445&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=b44869856e3c8a7d8e7e83fbee0cd9dab8cb5f85897ea559a54d332554c5d309&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=3631738cb91c22b18272e76b136b3528&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=7c49369f5d56c50d4ad05efcf296bcfc2b8915970315eab22153144a5cad38d6&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=9e88250822bf3a37ef07d3db28264aef&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=46af0b8bc556f8b9ff8c2d31f2e474803c8feb9516e76b08ef9a18514c7be347&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_2_sub_English"
]
},
{
"quality": 144,
"stream_url": "https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2f1220110000.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=893c4505892c4e239a3a1aa3cc0ad30ai&mid=1715226141&platform=pc&upsig=2e8a816bc0df4223db2ac78908801676&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=d6abfa29491f1c32f66707d6285895389bc70abfae9095851acf8f183a4230ef&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"audio_tracks": [
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2d1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=1db546d64c64be51daa2a29c5d174445&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=b44869856e3c8a7d8e7e83fbee0cd9dab8cb5f85897ea559a54d332554c5d309&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2c1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=3631738cb91c22b18272e76b136b3528&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=7c49369f5d56c50d4ad05efcf296bcfc2b8915970315eab22153144a5cad38d6&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0",
"https://upos-bstar1-mirrorakam.akamaized.net/iupxcodeboss/3h/zb/n230713erpauupbrgz8d631feuarzb3h-1-2a1301000023.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1715806421&gen=playurlv2&os=akam&oi=2823883151&trid=83363b1f112c42b2b8cf9d738318ac28i&mid=1715226141&platform=pc&upsig=9e88250822bf3a37ef07d3db28264aef&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&hdnts=exp=1715806421~hmac=46af0b8bc556f8b9ff8c2d31f2e474803c8feb9516e76b08ef9a18514c7be347&bvc=vod&nettype=0&orderid=0,1&logo=00000000&f=i_0_0"
],
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_2_sub_English"
]
},
{
"stream_url": "https://tools.fast4speed.rsvp//media7/videos/LYKSutL2PaAjYyXWz/sub/2",
"subtitle": [
"https://allanime.pro/apiak/sk.json?sub=dx-ep-LYKSutL2PaAjYyXWz_2_sub_English"
]
}
]
},
{
"episode": 1,
"streams": [
{
"stream_url": "https://tools.fast4speed.rsvp//media6/videos/Mk8Z4bqjYq9FNeRDS/sub/1"
}
]
},
{
"episode": 2,
"streams": [
{
"stream_url": "https://tools.fast4speed.rsvp//media6/videos/Mk8Z4bqjYq9FNeRDS/sub/2",
"title": "Miyuki Shirogane Wants to Mediate / Kaguya Wants to Distract Him / Kaguya Preemptively Strikes"
}
]
}
]

File diff suppressed because it is too large Load Diff

View File

@@ -1,15 +1,15 @@
import os
from subprocess import Popen, run, PIPE
# from difflib import SequenceMatcher
from fuzzywuzzy import fuzz
import time
import json
import re
import requests
import shutil
from subprocess import Popen, run, PIPE
from fuzzywuzzy import fuzz
broken_link_pattern = r"https://tools.fast4speed.rsvp/\w*"
# TODO: WRITE Docs for each method
class AnimdlApi:
@classmethod
def run_animdl_command(cls,cmds:list,capture = True):
@@ -33,7 +33,6 @@ class AnimdlApi:
child_process = Popen([*base_cmds,*parsed_cmds])
return child_process
@classmethod
def stream_anime_by_title(cls,title,episodes_range=None):
anime = cls.get_anime_url_by_title(title)
@@ -187,7 +186,6 @@ class AnimdlApi:
if isfailure:
raise Exception
@classmethod
def get_anime_match(cls,anime_item,title):
return fuzz.ratio(title,anime_item[0])

View File

@@ -1,118 +0,0 @@
{
Page{
media(id:90) {
title {
romaji
english
}
coverImage {
extraLarge
}
characters(perPage: 10, sort: FAVOURITES_DESC) {
edges {
node {
name {
full
}
gender
dateOfBirth {
year
month
day
}
age
image {
medium
}
description
}
voiceActors {
name {
full
}
image {
medium
}
}
}
}
studios {
nodes {
name
isAnimationStudio
}
}
season
format
status
seasonYear
description
genres
synonyms
startDate {
year
month
day
}
endDate {
year
month
day
}
duration
countryOfOrigin
averageScore
source
hashtag
siteUrl
tags {
name
rank
}
reviews(sort: SCORE_DESC, perPage: 6) {
nodes {
summary
user {
name
avatar {
medium
}
}
}
}
recommendations(sort: RATING_DESC, perPage: 15) {
nodes {
rating
mediaRecommendation {
title {
romaji
english
native
userPreferred
}
}
}
}
relations {
nodes {
title {
romaji
english
native
}
}
}
externalLinks {
url
site
icon
}
rankings {
rank
context
}
bannerImage
}
}
}

View File

@@ -1,62 +1,52 @@
from kivy.config import Config,ConfigParser
# Config.set('kivy', 'window_icon', "logo.ico")
# Config.write()
import os
from kivy.loader import Loader
Loader.num_workers = 5
Loader.max_upload_per_frame = 5
from libs.animdl.animdl_api import AnimdlApi
os.environ["KIVY_VIDEO"] = "ffpyplayer"
from kivymd.icon_definitions import md_icons
import json
from queue import Queue
from threading import Thread
from subprocess import Popen
import webbrowser
import plyer
# plyer.facades.StoragePath.get_application_dir
# plyer.facades.StoragePath.get_downloads_dir
# plyer.facades.StoragePath.get_videos_dir()
# plyer.facades.StoragePath.
# plyer.facades.StoragePath.get_application_dir
from kivy.config import Config
# Config.set('kivy', 'window_icon', "logo.ico")
# Config.write()
from kivy.clock import Clock
from kivy.uix.screenmanager import ScreenManager,FadeTransition
from kivy.uix.settings import SettingsWithSidebar,Settings
from kivymd.icon_definitions import md_icons
from kivymd.app import MDApp
from kivy.uix.settings import SettingsWithSidebar,Settings
from kivy.uix.screenmanager import ScreenManager,FadeTransition
from kivy.clock import Clock
from kivy.storage.jsonstore import JsonStore
from datetime import date,datetime
from subprocess import Popen
from View.screens import screens
from View import DownloadAnimePopup,AnimdlDialogPopup
import time
from libs.animdl.animdl_api import AnimdlApi
from Utility import themes_available,show_notification,user_data_helper
import webbrowser
from Utility import themes_available,show_notification
# TODO: ADD logging across the codebase
user_data = JsonStore("user_data.json")
today = date.today()
now = datetime.now()
if not(user_data.exists("my_list")):
user_data.put("my_list",list=[])
yt_cache = JsonStore("yt_cache.json")
links_cache_name= f"{today}{0 if now.hour>=12 else 1}"
if not(yt_cache.exists("yt_stream_links")):
yt_cache.put("yt_stream_links",**{f"{links_cache_name}":[]})
elif not( yt_cache.get("yt_stream_links").get(f"{links_cache_name}")):
yt_cache.put("yt_stream_links",**{f"{links_cache_name}":[]})
# Ensure the user data fields exist
if not(user_data_helper.user_data.exists("my_list")):
user_data_helper.update_user_anime_list([])
if not(user_data_helper.yt_cache.exists("yt_stream_links")):
user_data_helper.update_anime_trailer_cache([])
# TODO: Arrange the app methods
class AniXStreamApp(MDApp):
queue = Queue()
downloads_queue = Queue()
animdl_streaming_subprocess:Popen|None = None
def worker(self,queue:Queue):
while True:
task = queue.get() # task should be a function
task()
self.queue.task_done()
def downloads_worker(self,queue:Queue):
while True:
download_task = queue.get() # task should be a function
@@ -118,7 +108,6 @@ class AniXStreamApp(MDApp):
def build_settings(self,settings:Settings):
settings.add_json_panel("Settings",self.config,"settings.json")
def on_config_change(self, config, section, key, value):
if section=="Preferences":
match key:
@@ -135,9 +124,8 @@ class AniXStreamApp(MDApp):
if self.animdl_streaming_subprocess:
self.animdl_streaming_subprocess.terminate()
# custom methods
# TODO: move theme to a personalized class
# TODO: may move theme to a personalized class
def search_for_anime(self,search_field,**kwargs):
if self.manager_screens.current != "search screen":
self.manager_screens.current = "search screen"
@@ -164,11 +152,12 @@ class AniXStreamApp(MDApp):
else:
show_notification("Failure",f"Failed to open {title} in browser on allanime site")
def download_anime_complete(self,successful_downloads:list,failed_downloads:list,anime_title:str):
show_notification(f"Finished Dowloading {anime_title}",f"There were {len(successful_downloads)} successful downloads and {len(failed_downloads)} failed downloads")
def download_anime(self,default_cmds):
show_notification("New Download Task Queued",f"{default_cmds.get('title')} has been queued for downloading")
# TODO:Add custom download cmds functionality
on_progress = lambda *args:self.download_screen.on_episode_download_progress(*args)
output_path = self.config.get("Preferences","downloads_dir")
@@ -211,8 +200,7 @@ class AniXStreamApp(MDApp):
stream_func = lambda:self.stream_anime_with_custom_input_cmds(*custom_options)
self.queue.put(stream_func)
if __name__ == "__main__":
# try:
AniXStreamApp().run()
# except:
# print(plyer.storagepath.get_videos_dir())
AniXStreamApp().run()

View File

@@ -1,44 +0,0 @@
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['main.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
[],
exclude_binaries=True,
name='main',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)
coll = COLLECT(
exe,
a.binaries,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='main',
)

View File

@@ -1 +0,0 @@
{"data": {"Page": {"pageInfo": {"total": 1, "currentPage": 1, "hasNextPage": false}, "media": [{"id": 21, "title": {"romaji": "ONE PIECE", "english": "ONE PIECE"}, "coverImage": {"medium": "https://s4.anilist.co/file/anilistcdn/media/anime/cover/small/bx21-YCDoj1EkAxFn.jpg"}, "trailer": null, "popularity": 521138, "favourites": 76037, "averageScore": 88, "episodes": null, "genres": ["Action", "Adventure", "Comedy", "Drama", "Fantasy"], "studios": {"nodes": [{"name": "Toei Animation", "favourites": 3149}, {"name": "Funimation", "favourites": 928}, {"name": "Fuji TV", "favourites": 71}, {"name": "4Kids Entertainment", "favourites": 30}, {"name": "TAP", "favourites": 4}, {"name": "Asatsu DK", "favourites": 4}, {"name": "Magic Bus", "favourites": 28}, {"name": "Mushi Production", "favourites": 64}, {"name": "Studio Guts", "favourites": 3}, {"name": "Asahi Production", "favourites": 30}, {"name": "Avex Pictures", "favourites": 13}]}, "tags": [{"name": "Pirates"}, {"name": "Travel"}, {"name": "Ensemble Cast"}, {"name": "Shounen"}, {"name": "Super Power"}, {"name": "Found Family"}, {"name": "Male Protagonist"}, {"name": "Slapstick"}, {"name": "Tragedy"}, {"name": "Ships"}, {"name": "Conspiracy"}, {"name": "Time Skip"}, {"name": "Slavery"}, {"name": "Politics"}, {"name": "Crime"}, {"name": "Fugitive"}, {"name": "War"}, {"name": "Dystopian"}, {"name": "Gods"}, {"name": "Lost Civilization"}, {"name": "Swordplay"}, {"name": "Anthropomorphism"}, {"name": "Prison"}, {"name": "Samurai"}, {"name": "Medicine"}, {"name": "Food"}, {"name": "Monster Boy"}, {"name": "Henshin"}, {"name": "Robots"}, {"name": "Shapeshifting"}, {"name": "Cyborg"}, {"name": "Primarily Adult Cast"}, {"name": "Artificial Intelligence"}, {"name": "Anti-Hero"}, {"name": "Coming of Age"}, {"name": "Animals"}, {"name": "Guns"}, {"name": "Desert"}, {"name": "Trains"}, {"name": "Skeleton"}, {"name": "Marriage"}, {"name": "Post-Apocalyptic"}, {"name": "Anachronism"}, {"name": "Espionage"}, {"name": "Monster Girl"}, {"name": "Fairy"}, {"name": "Dragons"}, {"name": "Philosophy"}, {"name": "Drugs"}, {"name": "Female Protagonist"}, {"name": "Assassins"}, {"name": "Asexual"}, {"name": "Clone"}, {"name": "Kuudere"}, {"name": "Adoption"}, {"name": "Ninja"}, {"name": "Gender Bending"}, {"name": "Revenge"}, {"name": "Angels"}, {"name": "Mermaid"}, {"name": "Battle Royale"}, {"name": "CGI"}, {"name": "Time Manipulation"}, {"name": "Musical"}, {"name": "LGBTQ+ Themes"}, {"name": "Female Harem"}, {"name": "Zombie"}, {"name": "Body Swapping"}, {"name": "Unrequited Love"}, {"name": "Achromatic"}, {"name": "Acting"}], "startDate": {"year": 1999, "month": 10, "day": 20}, "endDate": {"year": null, "month": null, "day": null}, "status": "RELEASING", "description": "Gold Roger was known as the Pirate King, the strongest and most infamous being to have sailed the Grand Line. The capture and death of Roger by the World Government brought a change throughout the world. His last words before his death revealed the location of the greatest treasure in the world, One Piece. It was this revelation that brought about the Grand Age of Pirates, men who dreamed of finding One Piece (which promises an unlimited amount of riches and fame), and quite possibly the most coveted of titles for the person who found it, the title of the Pirate King.<br><br>\nEnter Monkey D. Luffy, a 17-year-old boy that defies your standard definition of a pirate. Rather than the popular persona of a wicked, hardened, toothless pirate who ransacks villages for fun, Luffy\u2019s reason for being a pirate is one of pure wonder; the thought of an exciting adventure and meeting new and intriguing people, along with finding One Piece, are his reasons of becoming a pirate. Following in the footsteps of his childhood hero, Luffy and his crew travel across the Grand Line, experiencing crazy adventures, unveiling dark mysteries and battling strong enemies, all in order to reach One Piece.<br><br>\n<b>*This includes following special episodes:</b><br>\n- Chopperman to the Rescue! Protect the TV Station by the Shore! (Episode 336)<br>\n- The Strongest Tag-Team! Luffy and Toriko's Hard Struggle! (Episode 492)<br>\n- Team Formation! Save Chopper (Episode 542)<br>\n- History's Strongest Collaboration vs. Glutton of the Sea (Episode 590)<br>\n- 20th Anniversary! Special Romance Dawn (Episode 907)", "nextAiringEpisode": {"timeUntilAiring": 328669, "airingAt": 1716683400, "episode": 1106}}]}}}