diff --git a/v2.py b/main.py similarity index 96% rename from v2.py rename to main.py index 9f5953a..ae842ae 100644 --- a/v2.py +++ b/main.py @@ -1,88 +1,88 @@ -import yt_dlp -from PIL import Image -import requests -from io import BytesIO -from tkinter import * -from PIL import Image, ImageTk - - -def add_url(): - - url = EntryURL.get() - - ydl_opts = {} - - with yt_dlp.YoutubeDL(ydl_opts) as ydl: - info = ydl.extract_info(url, download=False) - - title = info.get('title', 'Titre indisponible') - subtitlte = info.get('artist', info.get('uploader', 'Artiste indisponible')) + ' · ' + '{:,}'.format(info.get('view_count', 'Nombre de vue indisponible')).replace(',', ' ') + ' vues' - thumbnail_url = info.get('thumbnail') - - response = requests.get(thumbnail_url) - image = Image.open(BytesIO(response.content)) - width, height = image.size - - # Calculer les dimensions du carré - square_size = min(width, height) # Le carré a la taille de la plus petite dimension (largeur ou hauteur) - - # Calculer les coordonnées du coin supérieur gauche du carré - left = (width - square_size) // 2 - top = (height - square_size) // 2 - - # Calculer les coordonnées du coin inférieur droit du carré - right = left + square_size - bottom = top + square_size - - # Découper l'image carrée - image = image.crop((left, top, right, bottom)) - image.thumbnail((50, 50)) - - # Création d'un cadre pour contenir chaque élément - cadre = Frame(MoviesList) - cadre.pack(fill=X, padx=10, pady=5) - - # Charger l'image et la convertir en PhotoImage pour nter - image = ImageTk.PhotoImage(image) - image_label = Label(cadre, image=image) - image_label.image = image # Garder une référence pour éviter le garbage collection - image_label.pack(side=LEFT, padx=5) - - # Ajouter les textes (texte1 et texte2) - texte_frame = Frame(cadre) - texte_frame.pack(side=LEFT, padx=10, fill=BOTH, expand=True) - - label_texte1 = Label(texte_frame, text=title, font=("Arial", 12, "bold")) - label_texte1.pack(anchor="w") - - label_texte2 = Label(texte_frame, text=subtitlte, font=("Arial", 10)) - label_texte2.pack(anchor="w") - - # Ajouter un menu contextuel sur le côté droit - - menu_button = Menubutton(cadre, text="Suprimer", relief=FLAT) - menu_button.pack(side=RIGHT) - - EntryURL.delete(0,END) - -# Fenêtre principale -root = Tk() -root.title("Téléchargeur youtube") -root.geometry("400x200") - - -EntryFrame = Frame(root) -EntryFrame.pack(fill="x", expand=True, padx=5, pady=2.5) - -EntryURL = Entry(EntryFrame) -EntryURL.pack(side=LEFT, fill="x", expand=True, padx=2.5) - -EntryButton = Button(EntryFrame, text="Ajouter", command=add_url) -EntryButton.pack(side=RIGHT, padx=3.5) - -MoviesList = LabelFrame(root, text="Vidéo à télécharger", relief=GROOVE) -MoviesList.pack(fill="both", expand=True, padx=5, pady=2.5) - - - -root.mainloop() +import yt_dlp +from PIL import Image +import requests +from io import BytesIO +from tkinter import * +from PIL import Image, ImageTk + + +def add_url(): + + url = EntryURL.get() + + ydl_opts = {} + + with yt_dlp.YoutubeDL(ydl_opts) as ydl: + info = ydl.extract_info(url, download=False) + + title = info.get('title', 'Titre indisponible') + subtitlte = info.get('artist', info.get('uploader', 'Artiste indisponible')) + ' · ' + '{:,}'.format(info.get('view_count', 'Nombre de vue indisponible')).replace(',', ' ') + ' vues' + thumbnail_url = info.get('thumbnail') + + response = requests.get(thumbnail_url) + image = Image.open(BytesIO(response.content)) + width, height = image.size + + # Calculer les dimensions du carré + square_size = min(width, height) # Le carré a la taille de la plus petite dimension (largeur ou hauteur) + + # Calculer les coordonnées du coin supérieur gauche du carré + left = (width - square_size) // 2 + top = (height - square_size) // 2 + + # Calculer les coordonnées du coin inférieur droit du carré + right = left + square_size + bottom = top + square_size + + # Découper l'image carrée + image = image.crop((left, top, right, bottom)) + image.thumbnail((50, 50)) + + # Création d'un cadre pour contenir chaque élément + cadre = Frame(MoviesList) + cadre.pack(fill=X, padx=10, pady=5) + + # Charger l'image et la convertir en PhotoImage pour nter + image = ImageTk.PhotoImage(image) + image_label = Label(cadre, image=image) + image_label.image = image # Garder une référence pour éviter le garbage collection + image_label.pack(side=LEFT, padx=5) + + # Ajouter les textes (texte1 et texte2) + texte_frame = Frame(cadre) + texte_frame.pack(side=LEFT, padx=10, fill=BOTH, expand=True) + + label_texte1 = Label(texte_frame, text=title, font=("Arial", 12, "bold")) + label_texte1.pack(anchor="w") + + label_texte2 = Label(texte_frame, text=subtitlte, font=("Arial", 10)) + label_texte2.pack(anchor="w") + + # Ajouter un menu contextuel sur le côté droit + + menu_button = Menubutton(cadre, text="Suprimer", relief=FLAT) + menu_button.pack(side=RIGHT) + + EntryURL.delete(0,END) + +# Fenêtre principale +root = Tk() +root.title("Téléchargeur youtube") +root.geometry("400x200") + + +EntryFrame = Frame(root) +EntryFrame.pack(fill="x", expand=True, padx=5, pady=2.5) + +EntryURL = Entry(EntryFrame) +EntryURL.pack(side=LEFT, fill="x", expand=True, padx=2.5) + +EntryButton = Button(EntryFrame, text="Ajouter", command=add_url) +EntryButton.pack(side=RIGHT, padx=3.5) + +MoviesList = LabelFrame(root, text="Vidéo à télécharger", relief=GROOVE) +MoviesList.pack(fill="both", expand=True, padx=5, pady=2.5) + + + +root.mainloop()