Skip to content

Commit

Permalink
closes #19, closes #17, closes #15, closes #13,
Browse files Browse the repository at this point in the history
  • Loading branch information
Dorian25 committed Jan 19, 2023
1 parent 0a23af4 commit e3f47a7
Show file tree
Hide file tree
Showing 29 changed files with 817 additions and 340 deletions.
72 changes: 52 additions & 20 deletions App.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,16 @@
@author: Dorian
"""

import os, sys
import os
import sys
import random

from dotenv import load_dotenv
import pygame

from frames.LoadingFrame import LoadingFrame
from frames.ErrorFrame import ErrorFrame
from frames.SearchingFrame import SearchingFrame
from frames.SerieFrame import SerieFrame
from frames.MALRankingFrame import MALRankingFrame

import utils.mtTkinter as tk
from utils.DbManager import MongoDBManager
from utils.FileManager import FileManager, DIR_IMG_ICON
Expand All @@ -40,25 +39,34 @@ def __init__(self, *args, **kwargs):
self.iconbitmap(DIR_IMG_ICON + 'icon.ico')
self.title('Get-Mangas !')

self.series_available = MongoDBManager().get_all_series()
self.series_available = []

self.current_frame = None

if test_internet():
self.show_loading_frame(random.choice(quotes_anime))
else :
self.show_error_frame("No Internet")

self.show_loading_frame(random.choice(quotes_anime))

def show_searching_frame(self):
"""Show the SearchingFrame
"""

if self.current_frame :
self.current_frame.destroy()

self.current_frame = SearchingFrame(parent=self)
self.current_frame.pack(expand=True, fill="both")

if len(self.series_available) == 0:
self.series_available = MongoDBManager.get_all_series()

self.title("Get-Mangas ! ["+str(len(self.series_available))+" series available]")

def show_loading_frame(self, quote):
"""Show the LoadingFrame
Args:
quote (str): a quote
"""

if self.current_frame :
self.current_frame.destroy()

Expand All @@ -68,6 +76,12 @@ def show_loading_frame(self, quote):
self.current_frame.animate()

def show_serie_frame(self, serie):
"""_summary_
Args:
serie (_type_): _description_
"""

if self.current_frame :
self.current_frame.destroy()

Expand All @@ -77,15 +91,24 @@ def show_serie_frame(self, serie):
self.title(self.current_frame.serie_obj.titre)

def show_malranking_frame(self):
"""_summary_
"""

if self.current_frame :
self.current_frame.destroy()

self.current_frame = MALRankingFrame(parent=self)
self.current_frame.pack(expand=True, fill="both")

self.title("Ranking - MyAnimeList.net")
self.title("Top Manga - MyAnimeList.net")

def show_error_frame(self, error_msg):
"""_summary_
Args:
error_msg (_type_): _description_
"""

if self.current_frame :
self.current_frame.destroy()

Expand All @@ -96,19 +119,28 @@ def show_error_frame(self, error_msg):


###########

# TODO : revoir la gestion du pygame pour la musique etc...
# TODO : revoir la gestion du message d'erreur internet (position du bouton relancer showloading et showsearching)
# TODO : revoir la recherche via MAL (score doit être minimum de 10 sinon ce n'est pas le bon résultat)
# TODO : revoir la pipeline ETL pour MAL pour inclure les stats
# TODO : revoir les séries qui n'ont pas VOLUMES ou CHAPITRES
# TODO : revoir l'aspect graphique de l'application
# TODO : revoir l'onglet Stats
# TODO : essayer d'avoir des onglets de couleurs différentes


if __name__ == "__main__":
load_dotenv()

if getattr(sys, 'frozen', False) and hasattr(sys, '_MEIPASS'):
# sys._MEIPASS = C:\Users\xxxx\AppData\Local\Temp\_MEIxxxxxx
os.chdir(sys._MEIPASS)

#create tmp directories
os.makedirs(os.path.join("tmp", "pages"))
os.makedirs(os.path.join("tmp", "covers"))

FileManager().create_tmp_folders()

FileManager.create_tmp_folders()

app = App()
app.mainloop()

FileManager().delete_tmp_files()
pygame.quit()
FileManager.delete_tmp_files()
pygame.quit()
34 changes: 34 additions & 0 deletions font_family.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
from tkinter import *
from tkinter import font

root = Tk()
root.title('Font Families')
fonts=list(font.families())
fonts.sort()

def populate(frame):
'''Put in the fonts'''
listnumber = 1
for item in fonts:
label = "listlabel" + str(listnumber)
label = Label(frame,text=item,font=(item, 16)).pack()
listnumber += 1

def onFrameConfigure(canvas):
'''Reset the scroll region to encompass the inner frame'''
canvas.configure(scrollregion=canvas.bbox("all"))

canvas = Canvas(root, borderwidth=0, background="#ffffff")
frame = Frame(canvas, background="#ffffff")
vsb = Scrollbar(root, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=vsb.set)

vsb.pack(side="right", fill="y")
canvas.pack(side="left", fill="both", expand=True)
canvas.create_window((4,4), window=frame, anchor="nw")

frame.bind("<Configure>", lambda event, canvas=canvas: onFrameConfigure(canvas))

populate(frame)

root.mainloop()
58 changes: 58 additions & 0 deletions frames/DetailsTabFrame.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# -*- coding: utf-8 -*-
"""
Created on Mon Jul 18 22:00:34 2022
@author: Dorian
"""

import tkinter as tk

class DetailsTabFrame(tk.Frame):

def __init__(self, parent, serie_info):
tk.Frame.__init__(self, parent)

self.parent = parent
self.config(borderwidth=0)
self.config(highlightthickness=0)

self.label_score = tk.Label(self, text="score", font='Helvetica 18')
self.label_ranked = tk.Label(self, text="Ranked", font='Helvetica 14')
self.label_popularity = tk.Label(self, text="Popularity", font='Helvetica 14')
self.label_members = tk.Label(self, text="Members", font='Helvetica 14')
self.label_favorites = tk.Label(self, text="Favorites", font='Helvetica 14')

if serie_info :
self.label_score_val = tk.Label(self,
text=serie_info["Score"],
font='Helvetica 18 bold')
self.label_ranked_val = tk.Label(self,
text="#" + str(serie_info["Ranked"]),
font='Helvetica 14 bold')
self.label_popularity_val = tk.Label(self,
text="#" + str(serie_info["Popularity"]),
font='Helvetica 14 bold')
self.label_members_val = tk.Label(self,
text=serie_info["Members"],
font='Helvetica 14 bold')
self.label_favorites_val = tk.Label(self,
text=serie_info["Favorites"],
font='Helvetica 14 bold')
else :
self.label_score_val = tk.Label(self, text="?", font='Helvetica 14 bold')
self.label_ranked_val = tk.Label(self, text="?", font='Helvetica 14 bold')
self.label_popularity_val = tk.Label(self, text="?", font='Helvetica 14 bold')
self.label_members_val = tk.Label(self, text="?", font='Helvetica 14 bold')
self.label_favorites_val = tk.Label(self, text="?", font='Helvetica 14 bold')


self.label_score.pack(side="left")
self.label_score_val.pack(side="left")
self.label_ranked.pack(side="left", padx=10)
self.label_ranked_val.pack(side="left")
self.label_popularity.pack(side="left", padx=10)
self.label_popularity_val.pack(side="left")
self.label_members.pack(side="left", padx=10)
self.label_members_val.pack(side="left")
self.label_favorites.pack(side="left", padx=10)
self.label_favorites_val.pack(side="left")
4 changes: 1 addition & 3 deletions frames/ErrorFrame.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@
from tkinter import font

from PIL import Image, ImageTk
import pygame
import time

from utils.FileManager import FileManager, DIR_IMG_LOAD, DIR_MUSIC_LOAD
from utils.utils import *
Expand Down Expand Up @@ -58,7 +56,7 @@ def __init__(self, parent, error_txt):
"Veuillez vérifier votre connexion internet et réessayer.")

self.retry_button = ttk.Button(self, text = "Retry", command = self.retry)
self.canvas.create_window(10, 10, window=self.retry_button)
self.canvas.create_window(520, 300, window=self.retry_button)

def retry(self):
self.parent.show_loading_frame(random.choice(quotes_anime))
19 changes: 5 additions & 14 deletions frames/LoadingFrame.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,34 +74,25 @@ def __init__(self, parent, quote_txt):


def animate(self):
# Init pygame mixer
pygame.init()
pygame.mixer.init()
# Load and play sea sound
list_musics = os.listdir(DIR_MUSIC_LOAD)
pygame.mixer.music.load(DIR_MUSIC_LOAD+random.choice(list_musics))
#pygame.mixer.music.play(-1) #music repeats indefinitely
pygame.mixer.music.play()

try :
if test_internet():

self.default_animation()
self.animate_progressbar()

pygame.quit()
pygame.quit()

self.parent.show_searching_frame()
else:
#show error frame
self.parent.show_error_frame("internet")
except ConnectionError:
messagebox.showerror("Show error frame", "Please activate your connection !")
self.parent.show_searching_frame()


def default_animation(self):
def animate_progressbar(self):
# animation de chargement
for i in range(1,self.DEFAULT_MAX_VAL_PB+1):
self.progressbar["value"] = i
#self.canvas.itemconfig(self.progressbar_txt, text="{:.1f}%".format(100 * i/self.DEFAULT_MAX_VAL_PB))
self.update()
time.sleep(0.1)
time.sleep(0.1)
36 changes: 12 additions & 24 deletions frames/MALRankingFrame.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,12 @@
@author: Dorian
"""

import os
import random

import tkinter as tk
from tkinter import ttk

from tkinter import filedialog
from tkinter import messagebox
from tkinter import font

from PIL import Image, ImageTk

from utils.DbManager import SQLiteManager
from utils.FileManager import DIR_IMG_SEARCH, DIR_IMG_ICON
from frames.AllMangaFrame import AllMangaFrame

Expand All @@ -34,7 +27,7 @@ def __init__(self, parent):
self.config(highlightthickness=0)

self.parent = parent

self.covers_img = []

self.nav_bar = ttk.Notebook(self)

Expand All @@ -46,32 +39,27 @@ def __init__(self, parent):
self.nav_bar.add(self.tab2, text="Top Manga")
self.nav_bar.add(self.tab3, text="Most Popular")

image = Image.open("images\icons\icon_left.png")
tk_image_button = ImageTk.PhotoImage(image)
self.covers_img.append(tk_image_button)
self.button_back = tk.Button(self,
background="#333333",
image= tk_image_button,
command=self.return_searching_frame,
borderwidth=0)


self.back_button = tk.Button(self,
text="Back",
bd=0,
highlightthickness=0,
relief='ridge',
command=self.return_searching_frame)

self.back_button.pack(side="top")
self.button_back.pack(side="left", fill="y")
self.nav_bar.pack(side="top", expand=True, fill="both", padx=30, pady=30)


def return_searching_frame(self):
# delete all covers in tmp dir
self.parent.show_searching_frame(None)
self.parent.show_searching_frame()


"""
self.top100 = self.get_top100()
self.treeview = ttk.Treeview(root,
columns=self.COLUMNS,
show='headings')
Expand Down
4 changes: 1 addition & 3 deletions frames/MediaPlayerFrame.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,9 @@ def __init__(self, parent):
self.button_play.pack(side=tk.LEFT)
self.button_next.pack(side=tk.LEFT)

def play_song(self) :
# Init pygame mixer
def play_song(self):
pygame.init()
pygame.mixer.init()

if self.var_status_mp.get() == "play" :
pygame.mixer.music.pause()
self.var_status_mp.set("pause")
Expand Down
Loading

0 comments on commit e3f47a7

Please sign in to comment.