Вот красиво оформленный материал с подсветкой кода и пояснениями, который вы можете разместить на сайте, блоге или в README.md на GitHub:
🖼️ Telegram Image Parser
Telegram Image Parser — это удобное графическое приложение на Python, которое позволяет автоматически скачивать все изображения из указанных Telegram-каналов. Программа анализирует HTML-страницы каналов, находит ссылки на изображения и сохраняет их в указанную вами папку.
📥 Как это работает?
-
Вы выбираете текстовый файл с ссылками на каналы Telegram (например:
https://t.me/s/somechannel
); -
Указываете папку, куда сохранять изображения;
-
Нажимаете «Начать парсинг»;
-
Программа проходит по каждому каналу, находит изображения и скачивает их к вам.
🧠 Основные возможности
-
✅ Поддержка форматов:
.jpg
,.jpeg
,.png
,.gif
,.bmp
,.webp
; -
📁 Каждому каналу создается отдельная подпапка;
-
🧵 Парсинг в фоновом потоке (не зависает интерфейс);
-
⏹ Возможность остановить парсинг;
-
📋 Встроенный лог выполнения и прогрессбар.
🛠️ Код программы (Python + Tkinter)
import os
import re
import requests
import tkinter as tk
from tkinter import ttk, filedialog, messagebox
from threading import Thread
class TelegramImageParserApp:
def __init__(self, root):
self.root = root
self.root.title("Telegram Image Parser")
self.root.geometry("600x400")
self.create_widgets()
self.setup_layout()
self.parsing = False
self.stop_parsing = False
def create_widgets(self):
# Область выбора файла
self.file_frame = ttk.LabelFrame(self.root, text="Файл с каналами Telegram")
self.file_path_var = tk.StringVar()
self.file_entry = ttk.Entry(self.file_frame, textvariable=self.file_path_var, width=50)
self.browse_btn = ttk.Button(self.file_frame, text="Обзор...", command=self.browse_file)
# Папка сохранения
self.settings_frame = ttk.LabelFrame(self.root, text="Настройки сохранения")
self.folder_path_var = tk.StringVar(value="downloaded_images")
self.folder_entry = ttk.Entry(self.settings_frame, textvariable=self.folder_path_var, width=50)
self.folder_browse_btn = ttk.Button(self.settings_frame, text="Обзор...", command=self.browse_folder)
# Кнопки управления
self.control_frame = ttk.Frame(self.root)
self.start_btn = ttk.Button(self.control_frame, text="Начать парсинг", command=self.start_parsing)
self.stop_btn = ttk.Button(self.control_frame, text="Остановить", command=self.stop_parsing_func, state=tk.DISABLED)
# Лог и прогресс
self.log_frame = ttk.LabelFrame(self.root, text="Лог выполнения")
self.log_text = tk.Text(self.log_frame, height=10, wrap=tk.WORD)
self.log_scroll = ttk.Scrollbar(self.log_frame, orient=tk.VERTICAL, command=self.log_text.yview)
self.log_text.configure(yscrollcommand=self.log_scroll.set)
self.progress_var = tk.DoubleVar()
self.progress_bar = ttk.Progressbar(self.root, variable=self.progress_var, maximum=100, mode='determinate')
# (Полный код программы можно посмотреть в GitHub репозитории по ссылке ниже)
📎 Скачать и установить
-
📁 EXE-файл (для Windows, без установки Python):
Скачать .exe (Google Drive) -
🧾 Исходный код на GitHub:
GitHub — yemorkovin/parser_telegram_channels
📝 Пример входного файла
Файл channels.txt
должен содержать одну ссылку на канал в каждой строке:
https://t.me/s/examplechannel1
https://t.me/s/examplechannel2
https://t.me/s/examplechannel3
❓ Часто задаваемые вопросы
Какую ссылку нужно вставлять?
→ Только публичные каналы, желательно в формате https://t.me/s/название
.
Можно ли остановить парсинг?
→ Да, кнопка Остановить завершает процесс корректно.
Почему нет картинок?
→ Возможно, в канале только текст или Telegram применяет защиту от ботов.
🧑💻 Автор
Разработчик: @yemorkovin
Автор: Евгений Морковин
0 комментариев