doc and style: formatted the whole codebase to pep8 plus added documentation where necessary

This commit is contained in:
Benedict Xavier Wanyonyi
2024-05-30 15:43:45 +03:00
parent e526e31083
commit b94987dfd7
54 changed files with 555 additions and 346 deletions

View File

@@ -1,5 +1,9 @@
from datetime import datetime
from libs.anilist.anilist_data_schema import AnilistDateObject,AnilistMediaNextAiringEpisode
from libs.anilist.anilist_data_schema import (
AnilistDateObject,
AnilistMediaNextAiringEpisode,
)
# TODO: Add formating options for the final date
@@ -24,7 +28,7 @@ def format_list_data_with_comma(data: list | None):
return "None"
def extract_next_airing_episode(airing_episode:AnilistMediaNextAiringEpisode):
def extract_next_airing_episode(airing_episode: AnilistMediaNextAiringEpisode):
if airing_episode:
return f"Episode: {airing_episode['episode']} on {format_anilist_timestamp(airing_episode['airingAt'])}"
else:

View File

@@ -1,6 +1,6 @@
"""
Just contains some useful data used across the codebase
"""
themes_available = ['Aliceblue', 'Antiquewhite', 'Aqua', 'Aquamarine', 'Azure', 'Beige', 'Bisque', 'Black', 'Blanchedalmond', 'Blue', 'Blueviolet', 'Brown', 'Burlywood', 'Cadetblue', 'Chartreuse', 'Chocolate', 'Coral', 'Cornflowerblue', 'Cornsilk', 'Crimson', 'Cyan', 'Darkblue', 'Darkcyan', 'Darkgoldenrod', 'Darkgray', 'Darkgrey', 'Darkgreen', 'Darkkhaki', 'Darkmagenta', 'Darkolivegreen', 'Darkorange', 'Darkorchid', 'Darkred', 'Darksalmon', 'Darkseagreen', 'Darkslateblue', 'Darkslategray', 'Darkslategrey', 'Darkturquoise', 'Darkviolet', 'Deeppink', 'Deepskyblue', 'Dimgray', 'Dimgrey', 'Dodgerblue', 'Firebrick', 'Floralwhite', 'Forestgreen', 'Fuchsia', 'Gainsboro', 'Ghostwhite', 'Gold', 'Goldenrod', 'Gray', 'Grey', 'Green', 'Greenyellow', 'Honeydew', 'Hotpink', 'Indianred', 'Indigo', 'Ivory', 'Khaki', 'Lavender', 'Lavenderblush', 'Lawngreen', 'Lemonchiffon', 'Lightblue', 'Lightcoral', 'Lightcyan', 'Lightgoldenrodyellow', 'Lightgreen', 'Lightgray', 'Lightgrey', 'Lightpink', 'Lightsalmon', 'Lightseagreen', 'Lightskyblue', 'Lightslategray', 'Lightslategrey', 'Lightsteelblue', 'Lightyellow', 'Lime', 'Limegreen', 'Linen', 'Magenta', 'Maroon', 'Mediumaquamarine', 'Mediumblue', 'Mediumorchid', 'Mediumpurple', 'Mediumseagreen', 'Mediumslateblue', 'Mediumspringgreen', 'Mediumturquoise', 'Mediumvioletred', 'Midnightblue', 'Mintcream', 'Mistyrose', 'Moccasin', 'Navajowhite', 'Navy', 'Oldlace', 'Olive', 'Olivedrab', 'Orange', 'Orangered', 'Orchid', 'Palegoldenrod', 'Palegreen', 'Paleturquoise', 'Palevioletred', 'Papayawhip', 'Peachpuff', 'Peru', 'Pink', 'Plum', 'Powderblue', 'Purple', 'Red', 'Rosybrown', 'Royalblue', 'Saddlebrown', 'Salmon', 'Sandybrown', 'Seagreen', 'Seashell', 'Sienna', 'Silver', 'Skyblue', 'Slateblue', 'Slategray', 'Slategrey', 'Snow', 'Springgreen', 'Steelblue', 'Tan', 'Teal', 'Thistle', 'Tomato', 'Turquoise', 'Violet', 'Wheat', 'White', 'Whitesmoke', 'Yellow',
'Yellowgreen']
# import time
# from datetime import date,datetime
# print(datetime.fromtimestamp(1716412399))
# print(time.daylight,date.max,date.min)
'Yellowgreen']

View File

@@ -8,38 +8,47 @@ from kivy.utils import get_hex_from_color
def bolden(text: str):
return f"[b]{text}[/b]"
def italicize(text: str):
return f"[i]{text}[/i]"
def underline(text: str):
return f"[u]{text}[/u]"
def strike_through(text: str):
return f"[s]{text}[/s]"
def sub_script(text: str):
return f"[sub]{text}[/sub]"
def super_script(text: str):
return f"[sup]{text}[/sup]"
def color_text(text: str, color: tuple):
hex_color = get_hex_from_color(color)
return f"[color={hex_color}]{text}[/color]"
def font(text: str, font_name: str):
return f"[font={font_name}]{text}[/font]"
def font_family(text: str, family: str):
return f"[font_family={family}]{text}[/font_family]"
def font_context(text: str, context: str):
return f"[font_context={context}]{text}[/font_context]"
def font_size(text: str, size: int):
return f"[size={size}]{text}[/size]"
def text_ref(text: str, ref: str):
return f"[ref={ref}]{text}[/ref]"

View File

@@ -26,6 +26,8 @@ for link in yt_stream_links:
# for youtube video links gotten from from pytube which is blocking
class MediaCardDataLoader(object):
"""this class loads an anime media card and gets the trailer url from pytube"""
def __init__(self):
self._resume_cond = threading.Condition()
self._num_workers = 5

View File

@@ -1,22 +1,29 @@
from kivymd.uix.snackbar import MDSnackbar,MDSnackbarText,MDSnackbarSupportingText
from kivymd.uix.snackbar import MDSnackbar, MDSnackbarText, MDSnackbarSupportingText
from kivy.clock import Clock
def show_notification(title,details):
def show_notification(title, details):
"""helper function to display notifications
Args:
title (str): the title of your message
details (str): the details of your message
"""
def _show(dt):
MDSnackbar(
MDSnackbarText(
text=title,
adaptive_height=True,
),
MDSnackbarSupportingText(
text=details,
shorten=False,
max_lines=0,
adaptive_height=True
text=details, shorten=False, max_lines=0, adaptive_height=True
),
duration=5,
y="10dp",
pos_hint={"bottom": 1,"right":.99},
pos_hint={"bottom": 1, "right": 0.99},
padding=[0, 0, "8dp", "8dp"],
size_hint_x=.4
size_hint_x=0.4,
).open()
Clock.schedule_once(_show,1)
Clock.schedule_once(_show, 1)

View File

@@ -2,9 +2,8 @@
Contains Helper functions to read and write the user data files
"""
from kivy.storage.jsonstore import JsonStore
from datetime import date,datetime
from datetime import date, datetime
from kivy.logger import Logger
today = date.today()
@@ -15,56 +14,68 @@ yt_cache = JsonStore("yt_cache.json")
# Get the user data
def get_user_anime_list()->list:
def get_user_anime_list() -> list:
try:
return user_data.get("user_anime_list")["user_anime_list"] # returns a list of anime ids
return user_data.get("user_anime_list")[
"user_anime_list"
] # returns a list of anime ids
except Exception as e:
Logger.warning(f"User Data:Read failure:{e}")
return []
def update_user_anime_list(updated_list:list):
def update_user_anime_list(updated_list: list):
try:
updated_list_ = list(set(updated_list))
user_data.put("user_anime_list",user_anime_list=updated_list_)
user_data.put("user_anime_list", user_anime_list=updated_list_)
except Exception as e:
Logger.warning(f"User Data:Update failure:{e}")
# Get the user data
def get_user_downloads()->list:
def get_user_downloads() -> list:
try:
return user_data.get("user_downloads")["user_downloads"] # returns a list of anime ids
return user_data.get("user_downloads")[
"user_downloads"
] # returns a list of anime ids
except Exception as e:
Logger.warning(f"User Data:Read failure:{e}")
return []
def update_user_downloads(updated_list:list):
def update_user_downloads(updated_list: list):
try:
user_data.put("user_downloads",user_downloads=list(set(updated_list)))
user_data.put("user_downloads", user_downloads=list(set(updated_list)))
except Exception as e:
Logger.warning(f"User Data:Update failure:{e}")
# Yt persistent anime trailer cache
# Yt persistent anime trailer cache
t = 1
if now.hour<=6:
if now.hour <= 6:
t = 1
elif now.hour<=12:
elif now.hour <= 12:
t = 2
elif now.hour<=18:
elif now.hour <= 18:
t = 3
else:
t = 4
yt_anime_trailer_cache_name = f"{today}{t}"
def get_anime_trailer_cache()->list:
def get_anime_trailer_cache() -> list:
try:
return yt_cache["yt_stream_links"][f"{yt_anime_trailer_cache_name}"]
except Exception as e:
Logger.warning(f"User Data:Read failure:{e}")
return []
def update_anime_trailer_cache(yt_stream_links:list):
def update_anime_trailer_cache(yt_stream_links: list):
try:
yt_cache.put("yt_stream_links",**{f"{yt_anime_trailer_cache_name}":yt_stream_links})
yt_cache.put(
"yt_stream_links", **{f"{yt_anime_trailer_cache_name}": yt_stream_links}
)
except Exception as e:
Logger.warning(f"User Data:Update failure:{e}")

View File

@@ -1,23 +1,26 @@
from datetime import datetime
# import tempfile
import shutil
# import os
# TODO: make it use color_text instead of fixed vals
# from .kivy_markup_helper import color_text
# utility functions
def write_crash(e:Exception):
def write_crash(e: Exception):
index = datetime.today()
error = f"[b][color=#fa0000][ {index} ]:[/color][/b]\n(\n\n{e}\n\n)\n"
try:
with open("crashdump.txt","a") as file:
with open("crashdump.txt", "a") as file:
file.write(error)
except:
with open("crashdump.txt","w") as file:
with open("crashdump.txt", "w") as file:
file.write(error)
return index
def move_file(source_path,dest_path):
def move_file(source_path, dest_path):
try:
path = shutil.move(source_path,dest_path)
return (1,path)
path = shutil.move(source_path, dest_path)
return (1, path)
except Exception as e:
return (0,e)
return (0, e)