Top.Mail.Ru

Парсинг картинок из списка telegram каналов

Парсинг картинок из списка telegram каналов

Вот красиво оформленный материал с подсветкой кода и пояснениями, который вы можете разместить на сайте, блоге или в README.md на GitHub:


🖼️ Telegram Image Parser

Telegram Image Parser — это удобное графическое приложение на Python, которое позволяет автоматически скачивать все изображения из указанных Telegram-каналов. Программа анализирует HTML-страницы каналов, находит ссылки на изображения и сохраняет их в указанную вами папку.


📥 Как это работает?

  1. Вы выбираете текстовый файл с ссылками на каналы Telegram (например: https://t.me/s/somechannel);

  2. Указываете папку, куда сохранять изображения;

  3. Нажимаете «Начать парсинг»;

  4. Программа проходит по каждому каналу, находит изображения и скачивает их к вам.


🧠 Основные возможности

  • ✅ Поддержка форматов: .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 репозитории по ссылке ниже)

📎 Скачать и установить


📝 Пример входного файла

Файл channels.txt должен содержать одну ссылку на канал в каждой строке:

https://t.me/s/examplechannel1
https://t.me/s/examplechannel2
https://t.me/s/examplechannel3

❓ Часто задаваемые вопросы

Какую ссылку нужно вставлять?
→ Только публичные каналы, желательно в формате https://t.me/s/название.

Можно ли остановить парсинг?
→ Да, кнопка Остановить завершает процесс корректно.

Почему нет картинок?
→ Возможно, в канале только текст или Telegram применяет защиту от ботов.


🧑‍💻 Автор

Разработчик: @yemorkovin

Автор:

158

Читайте также

0 комментариев

Бот: Здравствуйте! Я чат-бот веб-разработчика. Чем могу помочь в создании или доработке вашего сайта?