feat:Finished stable v0.10.0

This commit is contained in:
Benex254
2024-08-05 09:46:54 +03:00
parent 4a5c82bd08
commit 2c5506b62f
38 changed files with 169 additions and 165 deletions

19
LICENSE Normal file
View File

@@ -0,0 +1,19 @@
Copyright (c) 2018 The Python Packaging Authority
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -2,8 +2,8 @@ from kivy.clock import Clock
from kivy.logger import Logger
from kivy.cache import Cache
from Model import AnimeScreenModel
from View import AnimeScreenView
from anixstream.Model import AnimeScreenModel
from anixstream.View import AnimeScreenView
Cache.register("data.anime", limit=20, timeout=600)

View File

@@ -1,6 +1,6 @@
from View import CrashLogScreenView
from Model import CrashLogScreenModel
from anixstream.View import CrashLogScreenView
from anixstream.Model import CrashLogScreenModel

View File

@@ -1,6 +1,6 @@
from View import DownloadsScreenView
from Model import DownloadsScreenModel
from anixstream.View import DownloadsScreenView
from anixstream.Model import DownloadsScreenModel
class DownloadsScreenController:

View File

@@ -1,6 +1,6 @@
from View import HelpScreenView
from Model import HelpScreenModel
from anixstream.View import HelpScreenView
from anixstream.Model import HelpScreenModel
class HelpScreenController:

View File

@@ -4,10 +4,10 @@ from inspect import isgenerator
from kivy.clock import Clock
from kivy.logger import Logger
from View import HomeScreenView
from Model import HomeScreenModel
from View.components import MediaCardsContainer
from Utility import show_notification
from anixstream.View import HomeScreenView
from anixstream.Model import HomeScreenModel
from anixstream.View.components import MediaCardsContainer
from anixstream.Utility import show_notification
# TODO:Move the update home screen to homescreen.py

View File

@@ -4,9 +4,9 @@ from kivy.logger import Logger
# from kivy.clock import Clock
from kivy.utils import difference
from View import MyListScreenView
from Model import MyListScreenModel
from Utility import user_data_helper
from anixstream.View import MyListScreenView
from anixstream.Model import MyListScreenModel
from anixstream.Utility import user_data_helper
class MyListScreenController:
"""

View File

@@ -3,8 +3,8 @@ from inspect import isgenerator
from kivy.clock import Clock
from kivy.logger import Logger
from View import SearchScreenView
from Model import SearchScreenModel
from anixstream.View import SearchScreenView
from anixstream.Model import SearchScreenModel
class SearchScreenController:

View File

@@ -1,5 +1,5 @@
from Model.base_model import BaseScreenModel
from libs.anilist import AniList
from .base_model import BaseScreenModel
from anixstream.libs.anilist import AniList
class AnimeScreenModel(BaseScreenModel):
"""the Anime screen model

View File

@@ -1,4 +1,4 @@
from Model.base_model import BaseScreenModel
from .base_model import BaseScreenModel
class CrashLogScreenModel(BaseScreenModel):

View File

@@ -1,4 +1,4 @@
from Model.base_model import BaseScreenModel
from .base_model import BaseScreenModel
class DownloadsScreenModel(BaseScreenModel):

View File

@@ -1,4 +1,5 @@
from Model.base_model import BaseScreenModel
from .base_model import BaseScreenModel
class HelpScreenModel(BaseScreenModel):

View File

@@ -1,6 +1,6 @@
from Model.base_model import BaseScreenModel
from libs.anilist import AniList
from Utility.media_card_loader import MediaCardLoader
from .base_model import BaseScreenModel
from anixstream.libs.anilist import AniList
from anixstream.Utility.media_card_loader import MediaCardLoader
class HomeScreenModel(BaseScreenModel):

View File

@@ -1,6 +1,6 @@
from libs.anilist import AniList
from Model.base_model import BaseScreenModel
from Utility import MediaCardLoader,show_notification
from anixstream.libs.anilist import AniList
from .base_model import BaseScreenModel
from anixstream.Utility import MediaCardLoader,show_notification
class MyListScreenModel(BaseScreenModel):

View File

@@ -1,6 +1,6 @@
from Model.base_model import BaseScreenModel
from libs.anilist import AniList
from Utility import MediaCardLoader, show_notification
from .base_model import BaseScreenModel
from anixstream.libs.anilist import AniList
from anixstream.Utility import MediaCardLoader, show_notification
class SearchScreenModel(BaseScreenModel):

View File

@@ -1,6 +1,6 @@
from datetime import datetime
from libs.anilist.anilist_data_schema import (
from anixstream.libs.anilist.anilist_data_schema import (
AnilistDateObject,
AnilistMediaNextAiringEpisode,
)

View File

@@ -9,9 +9,9 @@ from kivy.cache import Cache
from kivy.loader import _ThreadPool
from kivy.logger import Logger
from View.components import MediaCard
from Utility import anilist_data_helper, user_data_helper
from libs.anilist.anilist_data_schema import AnilistBaseMediaDataSchema
from anixstream.View.components import MediaCard
from anixstream.Utility import anilist_data_helper, user_data_helper
from anixstream.libs.anilist.anilist_data_schema import AnilistBaseMediaDataSchema
# Register anime cache in memory

View File

@@ -1,11 +1,10 @@
from datetime import datetime
from kivy.properties import ObjectProperty, DictProperty, StringProperty
from Utility import anilist_data_helper
from libs.anilist import AnilistBaseMediaDataSchema
from anixstream.Utility import anilist_data_helper
from anixstream.libs.anilist import AnilistBaseMediaDataSchema
from View.base_screen import BaseScreenView
from anixstream.View.base_screen import BaseScreenView
from .components import (
AnimeHeader,
AnimeSideBar,

View File

@@ -1,8 +1,8 @@
from kivy.properties import StringProperty
from View.base_screen import BaseScreenView
from Utility.utils import read_crash_file
from Utility.kivy_markup_helper import color_text, bolden
from anixstream.View.base_screen import BaseScreenView
from anixstream.Utility.utils import read_crash_file
from anixstream.Utility.kivy_markup_helper import color_text, bolden
class CrashLogScreenView(BaseScreenView):

View File

@@ -1,4 +1,4 @@
#:import color_text Utility.kivy_markup_helper.color_text
#:import color_text anixstream.Utility.kivy_markup_helper.color_text
<TaskText@MDLabel>:
adaptive_height:True

View File

@@ -3,7 +3,7 @@ from kivy.properties import ObjectProperty
from kivy.logger import Logger
from kivy.utils import format_bytes_to_human
from View.base_screen import BaseScreenView
from anixstream.View.base_screen import BaseScreenView
from .components.task_card import TaskCard

View File

@@ -1,8 +1,8 @@
from kivy.properties import ObjectProperty, StringProperty
from View.base_screen import BaseScreenView
from Utility.kivy_markup_helper import bolden, color_text, underline
from Utility.data import themes_available
from anixstream.View.base_screen import BaseScreenView
from anixstream.Utility.kivy_markup_helper import bolden, color_text, underline
from anixstream.Utility.data import themes_available
class HelpScreenView(BaseScreenView):

View File

@@ -1,6 +1,6 @@
from kivy.properties import ObjectProperty
from View.base_screen import BaseScreenView
from anixstream.View.base_screen import BaseScreenView
class HomeScreenView(BaseScreenView):

View File

@@ -1,7 +1,7 @@
from kivy.properties import ObjectProperty, StringProperty, DictProperty
from kivy.clock import Clock
from View.base_screen import BaseScreenView
from anixstream.View.base_screen import BaseScreenView
class MyListScreenView(BaseScreenView):

View File

@@ -1,7 +1,7 @@
from kivy.properties import ObjectProperty, StringProperty
from kivy.clock import Clock
from View.base_screen import BaseScreenView
from anixstream.View.base_screen import BaseScreenView
from .components import TrendingAnimeSideBar, Filters, SearchResultsPagination

View File

@@ -7,7 +7,7 @@ from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.button import MDIconButton
from kivymd.uix.tooltip import MDTooltip
from Utility.observer import Observer
from anixstream.Utility.observer import Observer
class NavRail(MDNavigationRail):
@@ -65,7 +65,7 @@ class BaseScreenView(MDScreen, Observer):
super().__init__(**kw)
# Often you need to get access to the application object from the view
# class. You can do this using this attribute.
from main import AniXStreamApp
from anixstream.__main__ import AniXStreamApp
self.app: AniXStreamApp = MDApp.get_running_app() # type: ignore
# Adding a view class as observer.

View File

@@ -1,4 +1,4 @@
from Controller import (
from anixstream.Controller import (
SearchScreenController,
HomeScreenController,
MyListScreenController,
@@ -7,7 +7,7 @@ from Controller import (
HelpScreenController,
CrashLogScreenController,
)
from Model import (
from anixstream.Model import (
HomeScreenModel,
SearchScreenModel,
MyListScreenModel,

View File

@@ -1,6 +1,5 @@
import os
import random
os.environ["KIVY_VIDEO"] = "ffpyplayer"
from queue import Queue
@@ -11,11 +10,26 @@ import webbrowser
import plyer
from kivy.config import Config
from kivy.resources import resource_find,resource_add_path
resource_add_path("_internal")
resource_add_path("assets")
resource_add_path("configs")
resource_add_path("data")
from kivy.resources import resource_find,resource_add_path,resource_remove_path
# resource_add_path("_internal")
app_dir = os.path.dirname(__file__)
# test
# test_end
# make sure we aint searching dist folder
dist_folder = os.path.join(app_dir,"dist")
resource_remove_path(dist_folder)
assets_folder = os.path.join(app_dir,"assets")
resource_add_path(assets_folder)
conigs_folder = os.path.join(app_dir,"configs")
resource_add_path(conigs_folder)
data_folder = os.path.join(app_dir,"data")
resource_add_path(data_folder)
Config.set("graphics","width","1000")
Config.set("graphics","minimum_width","1000")
@@ -38,15 +52,15 @@ from kivy.uix.settings import SettingsWithSidebar, Settings
from kivymd.icon_definitions import md_icons
from kivymd.app import MDApp
from View.screens import screens
from libs.animdl import AnimdlApi
from Utility import (
from anixstream.View.screens import screens
from anixstream.libs.animdl import AnimdlApi
from anixstream.Utility import (
themes_available,
show_notification,
user_data_helper,
animdl_config_manager,
)
from anixstream.Utility.utils import write_crash
# Ensure the user data fields exist
if not (user_data_helper.user_data.exists("user_anime_list")):
@@ -411,5 +425,11 @@ class AniXStreamApp(MDApp):
show_notification("Streamer", "Started streaming")
if __name__ == "__main__":
def run_app():
AniXStreamApp().run()
if __name__ == "__main__":
try:
run_app()
except Exception as e:
write_crash(e)

View File

@@ -1,40 +0,0 @@
# -*- mode: python ; coding: utf-8 -*-
import sys
import os
from kivy_deps import sdl2, glew
from kivymd.icon_definitions import md_icons
from kivymd import hooks_path as kivymd_hooks_path
path = os.path.abspath(".")
a = Analysis(
["main.py"],
datas=[
('./assets/*', './assets'),("./data/*","./data/*"),("./configs/*","./configs")
],
pathex=[path],
hiddenimports=["kivymd.icon_definitions.md_icons"],
hookspath=[kivymd_hooks_path],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=None,
noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=None)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
*[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
debug=False,
strip=False,
upx=True,
name="AniXStream",
console=False,
icon="./assets/logo.ico"
)

View File

@@ -408,7 +408,7 @@ class AnimdlApi:
# extract progress info from mpv
for stream in mpv_child_process.stderr: # type: ignore
Logger.info(f"Animdl Api Downloader: {stream}")
# Logger.info(f"Animdl Api Downloader: {stream}")
if progress_matches := progress_regex.findall(stream):
current_bytes, total_bytes = [
float(val) for val in progress_matches[0].split("/")

View File

@@ -3,7 +3,7 @@ import logging
Logger = logging.getLogger(__name__)
Logger.setLevel(logging.DEBUG)
# formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
# console_handler = logging.StreamHandler()
# console_handler.setLevel(logging.INFO)
# console_handler.setFormatter(formatter)
Logger.addHandler(console_handler)
# Logger.addHandler(console_handler)

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',
)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 240 KiB

View File

@@ -9,13 +9,27 @@ from kivymd import hooks_path as kivymd_hooks_path
path = os.path.abspath(".")
kv_file_paths = []
app_dir = os.path.join(os.getcwd(),"anixstream")
print(app_dir)
views_folder = os.path.join(app_dir,"View")
for dirpath,dirnames,filenames in os.walk(views_folder):
for filename in filenames:
if os.path.splitext(filename)[1]==".kv":
kv_file = os.path.join(dirpath,filename)
kv_file_paths.append((kv_file,"./Views/"))
a = Analysis(
["main.py"],
datas=[
('./assets/*', './assets'),("./data/*","./data/*"),("./configs/*","./configs")
['./anixstream/__main__.py'],
datas=[ *kv_file_paths,
(f'{app_dir}./assets/*', './assets/'),(f"{app_dir}./data/*","./data/"),(f"{app_dir}./configs/*","./configs/")
],
pathex=[path],
hiddenimports=["kivymd.icon_definitions.md_icons"],
hiddenimports=["kivymd.icon_definitions.md_icons","plyer.platforms","plyer.platforms.win","plyer.platforms.win.storagepath","win32timezone"],
hookspath=[kivymd_hooks_path],
win_no_prefer_redirects=False,
win_private_assemblies=False,
@@ -35,8 +49,9 @@ exe = EXE(
strip=False,
upx=True,
name="AniXStream",
console=True,
icon="./assets/logo.ico"
console=False,
icon=f"{app_dir}./assets/logo.ico",
exclude_binaries=True,
bootloader_ignore_signals=False,
disable_windowed_traceback=False,
argv_emulation=False,
@@ -48,9 +63,10 @@ exe = EXE(
coll = COLLECT(
exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='anixstream',
name='AniXStream',
)

33
pyproject.toml Normal file
View File

@@ -0,0 +1,33 @@
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
[project]
name = "AniXStream"
version = "0.0.1"
authors = [
{ name="Benex254", email="benexprojects@gmail.com" },
]
description = "A wrapper over all and every anime cli or package"
readme = "README.md"
requires-python = ">=3.10"
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
]
dependencies = [
"kivy",
"plyer",
"fuzzywuzzy",
"python-Levenshtein",
"kivymd @ https://github.com/kivymd/KivyMD/archive/master.zip",
"ffpyplayer",
"pytube",
"animdl"
]
[project.urls]
Homepage = "https://github.com/benex254/aniXstream"
Issues = "https://github.com/benex254/aniXstream"
[project.scripts]
anixstream="anixstream.__main__:run_app"