Amazing-Python-Scripts

Форк
0
71 строка · 1.7 Кб
1
import tkinter as tk
2
from tkinter import messagebox
3
import os
4
import requests
5

6

7
def get_ext(url: str) -> str | None:
8
    exts = [".png", ".jpeg", ".jpg"]
9
    for ext in exts:
10
        if ext in url:
11
            return ext
12
    return None
13

14

15
def download_img():
16
    u = url_ent.get()
17
    n = name_ent.get()
18
    f = folder_ent.get()
19

20
    if not u or not n or not f:
21
        messagebox.showerror("Error", "Please fill in all fields.")
22
        return
23

24
    ext = get_ext(u)
25
    if not ext:
26
        messagebox.showerror("Error", "Invalid image URL.")
27
        return
28

29
    img_path = os.path.join(f, f"{n}{ext}")
30

31
    if os.path.isfile(img_path):
32
        messagebox.showerror(
33
            "Error", "A file with the same name already exists.")
34
        return
35

36
    try:
37
        img_content = requests.get(u).content
38
        with open(img_path, "wb") as handler:
39
            handler.write(img_content)
40
            messagebox.showinfo("Success", f"Image downloaded to:\n{img_path}")
41
    except Exception as e:
42
        messagebox.showerror("Error", f"An error occurred: {e}")
43

44

45
root = tk.Tk()
46
root.title("Image Downloader")
47
root.configure(bg="#1e1e1e")
48

49
ul = tk.Label(root, text="Image URL:", bg="#1e1e1e", fg="white")
50
ul.pack(pady=5)
51

52
url_ent = tk.Entry(root, width=50)
53
url_ent.pack(pady=5)
54

55
nl = tk.Label(root, text="Image Name:", bg="#1e1e1e", fg="white")
56
nl.pack(pady=5)
57

58
name_ent = tk.Entry(root, width=50)
59
name_ent.pack(pady=5)
60

61
fl = tk.Label(root, text="Folder Path:", bg="#1e1e1e", fg="white")
62
fl.pack(pady=5)
63

64
folder_ent = tk.Entry(root, width=50)
65
folder_ent.pack(pady=5)
66

67
dl_btn = tk.Button(root, text="Download",
68
                   command=download_img, bg="#303030", fg="white")
69
dl_btn.pack(pady=10)
70

71
root.mainloop()
72

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.