Подключите нашего Telegram-бота для уведомлений о новых проектах
Доработка парсера
Разместить заказ

n
Заказчик
Отзывы фрилансеров:
+ 0
- 0
Зарегистрирован на сайте 1 год и 2 месяца
Бюджет:
по договоренности
Необходимо доработать втоматический парсер Telegram-каналов, который собирает посты из заданных источников, обрабатывает их (переписывает текст, добавляет медиа) и публикует в целевые каналы с возможностью ручного управления через кнопки. Сначала опишу функционал, принцип работы и путь поста, в конце опишу что необходимо сделать:
Функционал парсера и принцип работы:
Если коротко, посты парсятся, отправляются на промежуточный канал на доработку и проверку после рерайта, если всё ок, прожимаются кнопки публикации через очередь или мгновенную публикацию на конечный канал
Логика работы
Скрипт парсит посты из Telegram-каналов, обрабатывает их и публикует с ручным управлением через кнопки.
Основные задачи:
1. Сбор постов из source_channels.
2. Обработка: переписка текста (Yandex GPT), фильтр мата, фото через Google Search.
3. Публикация: в telegram_channel_id (проверка) и secondary_channel_id (финал).
4. Управление кнопками (одобрение, редактура).
5. Очереди для обработки и публикации.
Как работает:
1. Запуск: Инициализация Telethon и AsyncTeleBot, загрузка очередей из .json.
2. Сбор: handle_new_post ловит посты, игнорирует рекламу, качает медиа.
3. Обработка: Текст → clean_text → Yandex GPT, фильтр (filter_profanity), фото (search_image).
4. Очереди:
pending_posts: новый пост (оригинал + обработка).
publish_queue: для финальной публикации с таймингом.
task_queue: задачи (переписать, добавить фото).
5. Публикация в основной канал: publish_next_post → telegram_channel_id (оригинал + с кнопками), хранение в posts_storage.
6. Кнопки (handle_reaction):
✅ → publish_queue (2-3 ч, до 23:30).
➕ → переписать текст (+50-100 символов).
📓 → убрать/вернуть медиа.
📸 → новое фото.
💪 → сразу в secondary_channel_id.
❌ → удалить.
7. Финал: process_publish_queue публикует в secondary_channel_id с чередованием источников.
8. Доп. функции:
Удаление постов > 24 ч (cleanup_old_messages).
Сброс pending_posts в 00:00 (reset_pending_queue).
Обновление статуса очередей (update_queue_message).
Техдетали:
Токены: Yandex IAM (автообновление), Google API.
Логи: parser_detailed.log (10 МБ, 5 файлов).
Асинхронность: asyncio, задачи в main.
Переподключение: run_client_with_reconnect.
Что необходимо доработать:
1. Парсер не обрабатывает посты если в них больше 1 фото или если в посте видео. Надо что бы он обрабатывал их так же, как и посты с одним фото. Через очередь на рассмотрение опубликовывал их по одному (оригинал и рерайт вариант) на промежуточном канале.
В случае одобрения к публикации пост с видео или всеми фото что в нём были или добавлены вручную должны уходить на публикацию (через очередь, в случае нажатия на кнопку "Like" или сразу на конечный канал при нажатии на кнопку "Publish Now")
2. Иногда парсер зависает, что приводит к потере работоспособности кнопок и необходимости перезапускать парсер, что влечёт за собой сброс очередей. Надо добавить ещё одну кнопку, которая будет сбрасывать текущий пост к рассмотрению, вызывая следующий
3. На этапе рассмотрения публикуется оригинал поста и его рерайт версия. Все изменения применяемые к рерайт версии поста (изменения форматирования, добавления абзацов, дополнительные отступы, эмодзи, добавление фотографий, видео и т. д.) должны сохраняться при его финальной публикации на конечный канал. Сейчас, к примеру, если на этапе рассмотрения я делаю текст жирным, на конечном канале пост публикуется * *так* * (без пробелов). Надо добиться сохранения всего редактирования что было применено к посту. В каком виде пост уходит с промежуточного канала, в таком виде он должен быть опубликован на конечный канал
4. Кнопки для редактирования поста должны быть только у версии поста после рерайта + у всех сообщений отправленных вручную в промежуточный канал (сейчас это работает). У оригинала их быть не должно, надо убрать появление кнопок у оригинала
5. Зашить в слово ОРИГИНАЛ, которым подписываются посты оригиналы, ссылку на пост оригинал, что бы это была гиперссылка
6. Функционал кнопки ➕ (переписать текст):
Действие: Расширяет текст поста, добавляя 50-100 символов новой информации.
Процесс:
Вызывается handle_reaction с call.data == "expand".
Задача добавляется в task_queue с параметром expand=True.
process_task_queue обрабатывает задачу:
Текст отправляется в rephrase_text_with_yandex_gpt с флагом расширения.
Yandex GPT переписывает текст в формальном стиле, добавляя новые детали.
Счётчик expand_count увеличивается.
Старый пост удаляется, новый публикуется с обновлённым текстом и кнопками.
Результат: Пост обновляется в telegram_channel_id с расширенным текстом, сохраняя медиа и метаданные в posts_storage.
Но по факту, при нажатии на неё не всегда происходит расширение текста, рерайт остаётся в том же виде. Надо починить функцию, кнопка должна производить рерайт по определённому промпту, но с добавлением доп. информации
Функционал парсера и принцип работы:
Если коротко, посты парсятся, отправляются на промежуточный канал на доработку и проверку после рерайта, если всё ок, прожимаются кнопки публикации через очередь или мгновенную публикацию на конечный канал
Логика работы
Скрипт парсит посты из Telegram-каналов, обрабатывает их и публикует с ручным управлением через кнопки.
Основные задачи:
1. Сбор постов из source_channels.
2. Обработка: переписка текста (Yandex GPT), фильтр мата, фото через Google Search.
3. Публикация: в telegram_channel_id (проверка) и secondary_channel_id (финал).
4. Управление кнопками (одобрение, редактура).
5. Очереди для обработки и публикации.
Как работает:
1. Запуск: Инициализация Telethon и AsyncTeleBot, загрузка очередей из .json.
2. Сбор: handle_new_post ловит посты, игнорирует рекламу, качает медиа.
3. Обработка: Текст → clean_text → Yandex GPT, фильтр (filter_profanity), фото (search_image).
4. Очереди:
pending_posts: новый пост (оригинал + обработка).
publish_queue: для финальной публикации с таймингом.
task_queue: задачи (переписать, добавить фото).
5. Публикация в основной канал: publish_next_post → telegram_channel_id (оригинал + с кнопками), хранение в posts_storage.
6. Кнопки (handle_reaction):
✅ → publish_queue (2-3 ч, до 23:30).
➕ → переписать текст (+50-100 символов).
📓 → убрать/вернуть медиа.
📸 → новое фото.
💪 → сразу в secondary_channel_id.
❌ → удалить.
7. Финал: process_publish_queue публикует в secondary_channel_id с чередованием источников.
8. Доп. функции:
Удаление постов > 24 ч (cleanup_old_messages).
Сброс pending_posts в 00:00 (reset_pending_queue).
Обновление статуса очередей (update_queue_message).
Техдетали:
Токены: Yandex IAM (автообновление), Google API.
Логи: parser_detailed.log (10 МБ, 5 файлов).
Асинхронность: asyncio, задачи в main.
Переподключение: run_client_with_reconnect.
Что необходимо доработать:
1. Парсер не обрабатывает посты если в них больше 1 фото или если в посте видео. Надо что бы он обрабатывал их так же, как и посты с одним фото. Через очередь на рассмотрение опубликовывал их по одному (оригинал и рерайт вариант) на промежуточном канале.
В случае одобрения к публикации пост с видео или всеми фото что в нём были или добавлены вручную должны уходить на публикацию (через очередь, в случае нажатия на кнопку "Like" или сразу на конечный канал при нажатии на кнопку "Publish Now")
2. Иногда парсер зависает, что приводит к потере работоспособности кнопок и необходимости перезапускать парсер, что влечёт за собой сброс очередей. Надо добавить ещё одну кнопку, которая будет сбрасывать текущий пост к рассмотрению, вызывая следующий
3. На этапе рассмотрения публикуется оригинал поста и его рерайт версия. Все изменения применяемые к рерайт версии поста (изменения форматирования, добавления абзацов, дополнительные отступы, эмодзи, добавление фотографий, видео и т. д.) должны сохраняться при его финальной публикации на конечный канал. Сейчас, к примеру, если на этапе рассмотрения я делаю текст жирным, на конечном канале пост публикуется * *так* * (без пробелов). Надо добиться сохранения всего редактирования что было применено к посту. В каком виде пост уходит с промежуточного канала, в таком виде он должен быть опубликован на конечный канал
4. Кнопки для редактирования поста должны быть только у версии поста после рерайта + у всех сообщений отправленных вручную в промежуточный канал (сейчас это работает). У оригинала их быть не должно, надо убрать появление кнопок у оригинала
5. Зашить в слово ОРИГИНАЛ, которым подписываются посты оригиналы, ссылку на пост оригинал, что бы это была гиперссылка
6. Функционал кнопки ➕ (переписать текст):
Действие: Расширяет текст поста, добавляя 50-100 символов новой информации.
Процесс:
Вызывается handle_reaction с call.data == "expand".
Задача добавляется в task_queue с параметром expand=True.
process_task_queue обрабатывает задачу:
Текст отправляется в rephrase_text_with_yandex_gpt с флагом расширения.
Yandex GPT переписывает текст в формальном стиле, добавляя новые детали.
Счётчик expand_count увеличивается.
Старый пост удаляется, новый публикуется с обновлённым текстом и кнопками.
Результат: Пост обновляется в telegram_channel_id с расширенным текстом, сохраняя медиа и метаданные в posts_storage.
Но по факту, при нажатии на неё не всегда происходит расширение текста, рерайт остаётся в том же виде. Надо починить функцию, кнопка должна производить рерайт по определённому промпту, но с добавлением доп. информации
Разделы:
Заказ
Опубликован:
09.04.2025 | 08:47 [поднят: 09.04.2025 | 08:47]