Разработать шаблон Python-скрипта для чтения каналов (который не забанит tg-аккаунт)

Задание закрыто
Статус рабочей области:Поиск исполнителя
Стоимость:1 500 рублей
Срок выполнения:3 дня
Варианты оплаты:По договоренности
Дата публикации:2024-09-16 10:55
Был(а) на сайте:2024-10-23 22:10

Разработать шаблон Python-скрипта для чтения каналов (который не забанит tg-аккаунт)

 
Задача

Необходимо разработать скрипт клиента telegram который будет сохранять все публикации из каналов по списку (около 50 штук). Публикации сохраняются в файлы папки со скриптом. Нужно сохранять текст, картинки и видео. Оперативность сохранения не важна: приемлем рандомный перерыв до 2 часов.

Не нужно ничего парсить, кроме контента.

Клиент будет запускаться в единственном экземпляре для одного аккаунта. Это личное использование, не промышленное с кучей подключенных аккаунтов.

Важно написать клиента так, чтобы телеграмм не банил аккаунт. Это самое главное в этой задаче, остальное я доработаю сам. Нужна экспертиза того, кто делал подобную задачу: знает как написать такого клиента, которого не заблокирует сам телеграмм.

Оставлять заявки могут только авторизованные пользователи.
Stanislav Ricci
Основная специализация: Веб-разработка и IT
    Для решения задачи чтения публикаций из Telegram-каналов, можно использовать библиотеку Telethon — это асинхронная библиотека для работы с Telegram API на Python. Она позволяет получать доступ к сообщениям в каналах, а также скачивать медиафайлы (фото, видео). Чтобы избежать бана аккаунта, важно не перегружать API частыми запросами и сделать интервалы между действиями, как вы упомянули, случайными, вплоть до 2 часов.

    Вот шаблон Python-скрипта, который выполняет ваши требования, сохраняя текст, изображения и видео из списка каналов. Скрипт будет работать с перерывами, чтобы не превышать допустимые лимиты Telegram:

    Установка зависимостей
    Установите библиотеку Telethon через pip:
    bash
    pip install telethon

    Вам понадобятся API ID и API Hash, которые можно получить, зарегистрировавшись как разработчик на Telegram API.

    import os
    import asyncio
    import random
    import time
    from telethon import TelegramClient
    from telethon.tl.types import MessageMediaPhoto, MessageMediaDocument

    # Ваши API ID и Hash от Telegram
    API_ID = 'your_api_id'
    API_HASH = 'your_api_hash'
    PHONE_NUMBER = 'your_phone_number' # Телефонный номер вашего аккаунта

    # Папка для сохранения медиа и текста
    SAVE_DIR = "telegram_channel_content"

    # Список каналов для мониторинга
    CHANNELS = ['channel_username_1', 'channel_username_2'] # Подставьте ваши каналы

    # Функция для сохранения текста и медиа из сообщений
    async def save_message_content(message):
    if not os.path.exists(SAVE_DIR):
    os.makedirs(SAVE_DIR)

    # Сохраняем текст
    if message.message:
    file_path = os.path.join(SAVE_DIR, f"{message.date.strftime('%Y-%m-%d_%H-%M-%S')}_{message.id}.txt")
    with open(file_path, 'w', encoding='utf-8') as f:
    f.write(message.message)

    Остальной код при выборе;)
    Для этой задачи можно использовать библиотеку Telethon, которая позволяет взаимодействовать с Telegram API.

    Установите библиотеку Telethon:
    pip install telethon

    Создайте файл telegram_scraper.py и добавьте следующий код:


    from telethon import TelegramClient, events
    import os

    # Ваши API ID и API Hash, которые можно получить на https://my.telegram.org
    api_id = 'YOUR_API_ID'
    api_hash = 'YOUR_API_HASH'

    # Список каналов для мониторинга
    channels = ['channel1', 'channel2', 'channel3'] # Замените на ваши каналы

    # Создание клиента
    client = TelegramClient('session_name', api_id, api_hash)

    # Функция для сохранения медиафайлов
    async def save_media(message, folder):
    if message.photo:
    path = await message.download_media(file=folder)
    print(f'Фото сохранено: {path}')
    elif message.video:
    path = await message.download_media(file=folder)
    print(f'Видео сохранено: {path}')
    elif message.document:
    path = await message.download_media(file=folder)
    print(f'Документ сохранен: {path}')

    # Обработчик новых сообщений
    @client.on(events.NewMessage(chats=channels))
    async def handler(event):
    folder = os.path.join(os.getcwd(), 'downloads')
    os.makedirs(folder, exist_ok=True)

    # Сохранение текста сообщения
    if event.message.message:
    with open(os.path.join(folder, f'{event.message.id}.txt'), 'w', encoding='utf-8') as f:
    f.write(event.message.message)
    print(f'Текст сообщения сохранен: {event.message.id}.txt')

    # Сохранение медиафайлов
    await save_media(event.message, folder)

    # Запуск клиента
    client.start()
    client.run_until_disconnected()


    Этот скрипт будет сохранять текстовые сообщения в файлы с расширением .txt, а медиафайлы (фото, видео, документы) в соответствующие файлы в папке downloads.

    Не забудьте заменить YOUR_API_ID и YOUR_API_HASH на ваши реальные значения, которые можно получить на my.telegram.org.
    13:18 16.09.24
    Вот и все мои мысли, бана быть не должно ,так как мы используем встроенные инструменты Telegram API
    Думаю полтарашку я заработал?
    Здравствуйте, я начинающий разработчик на python, в принципе есть опыт работы с библиотекой telebot, могу попробовать выполнить, связь - @KaspiyT (телеграмм)
    Я имею большой опыт разработки Python скриптов, включая Telethon. Я могу создать для вас скрипт для чтения каналов Telegram и сохранения их контента, включая текст, картинки и видео. Я знаю, как написать такого клиента, чтобы телеграмм не забанил ваш аккаунт. Контакты, опыт:
    Привет,готов сделать
    ТГ: @virgilius_hack
    Здравствуйте! Совсем недавно делал подобное. Обращайтесь! Готов выполнить работу.

    ЕЩЕ РАЗ ВЫБИРИТЕ ИСПОЛНИТЕЛЕМ. А ЛУЧШЕ В ТЕЛЕГРАМ ЕЩЕ МНЕ НАПИШИТЕ.
    import os
    import time
    import random
    from telethon import TelegramClient, events

    # Укажите свои данные API
    api_id = 'YOUR_API_ID'
    api_hash = 'YOUR_API_HASH'
    phone_number = 'YOUR_PHONE_NUMBER'

    # Список каналов для подписки
    channels = [
    'channel_username_1',
    'channel_username_2',
    # Добавьте остальные каналы...
    ]

    # Создание папки для сохранения контента
    os.makedirs('saved_posts', exist_ok=True)

    client = TelegramClient('session_name', api_id, api_hash)

    async def save_post(message):
    # Сохранение текста сообщения
    if message.message:
    with open(f'saved_posts/{message.id}.txt', 'w', encoding='utf-8') as f:
    f.write(message.message)

    # Сохранение медиа (картинки и видео)
    if message.media:
    await client.download_media(message.media, f'saved_posts/{message.id}')

    async def main():
    await client.start()

    for channel in channels:
    async for message in client.iter_messages(channel):
    await save_post(message)
    # Рандомная пауза до 2 часов (7200 секунд)
    time.sleep(random.randint(60, 7200))

    with client:
    client.loop.run_until_complete(main())
    Здравствуйте, сделаю
    Готов выполнить заказ. Если необходима читаемость данных (чтобы можно было открыть и посмотреть), предлагаю добавить форматирование текста в Word-файле
    Сроки реальные. Задача понятна и проста

    Имею опыт работы с разными парсерами, ботами-перепоста из одного канала в другой. Гарантирую, что аккаунт не будет заблокирован от работы парсера
    Добрый день!
    Готов выполнить ваш проект.
    Ранее писал большое количество раз такой скрипт. Парсить можно с одного аккаунта без проблем, просто нужно с небольшим паузами это делать.

    Напишите в тг мне : @pro_ficient_python
    Здравствуйте, Сергей, могу написать код.У меня уже есть заготовка, мне ее немного надо доделать, поэтому примерно через часа 2 могу скинуть.
    http://project10882159.tilda.ws/ . здравствуйте такой сайт подаёт
    Здравствуйте! Предлагаю свои услуги по выполнению вашего заказа.

    Оставлять заявки могут только авторизованные пользователи.

    Другие открытые задания:

    поиск заданий