Добро пожаловать на мой новый урок на YouTube, где я покажу вам, как полностью автоматизировать процесс поиска и публикации контента с помощью парсинга постов Reddit и их автоматической публикации в вашем Telegram канале. Если вы хотите сократить время, затрачиваемое на поиск и публикацию интересного контента, то это видео для вас!
В этом уроке я покажу вам, как использовать Python для парсинга постов с популярного сайта Reddit. Вы узнаете, как извлечь информацию о постах, такую как заголовок, текст, изображения и другие элементы, используя мощный инструмент парсинга данных.
Затем я покажу вам, как настроить автоматическую публикацию этих постов в вашем Telegram канале. Вы научитесь создавать ботов, которые будут публиковать посты с Reddit напрямую в ваш канал. Это позволит вам сохранить время и силы, и сосредоточиться на других аспектах управления вашим каналом.
Но это еще не все! Я также расскажу вам о библиотеке apscheduler и покажу, как использовать ее для запуска скрипта по расписанию. Вы научитесь настраивать автоматический запуск скрипта на определенное время или в определенные интервалы, что позволит вам полностью автоматизировать процесс публикации контента.
Я покажу весь процесс шаг за шагом и предоставлю вам полный код, который вы сможете использовать в своих проектах. Вы увидите, как каждый этап автоматизации взаимодействует между собой, чтобы сделать вашу работу проще и более эффективной.
В конце видеоурока я предоставлю вам полный код и объясню каждый шаг настройки и использования парсинга Reddit, Telegram бота и apscheduler.
import asyncio
import logging
import asyncpraw
from aiogram import Bot
from datetime import datetime
from apscheduler.schedulers.asyncio import AsyncIOScheduler
PUBLIC_POSTS = []
TELEGRAM_CHANNEL = -1001705326511
async def get_posts():
reddit_client = asyncpraw.Reddit(
client_id="bDr5IC444OQYbwBBwxv4lg",
client_secret="2wa1JXrevxIk_sqdOAzXo45D2QbSnA",
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/110.0.0.0 Safari/537.36"
)
list_posts = []
posts_sub = await reddit_client.subreddit('facepalm')
posts_new = posts_sub.hot(limit=5)
async for post_new in posts_new:
if post_new.title not in PUBLIC_POSTS:
list_posts.append(post_new.url)
PUBLIC_POSTS.append(post_new.title)
return list_posts
async def publish_content():
bot = Bot(token='1695706849:AAG91Yzkhvxe0whMP9TtUj7IssaGQPEzVuk', parse_mode='HTML')
try:
posts = await get_posts()
for post in posts:
post: str
if post.lower().split('.')[-1] in ['png', 'jpg', 'jpeg']:
await bot.send_photo(chat_id=TELEGRAM_CHANNEL, photo=post)
elif post.lower().split('.')[-1] in ['gif']:
await bot.send_animation(chat_id=TELEGRAM_CHANNEL, animation=post)
finally:
await bot.session.close()
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO,
format="%(asctime)s - [%(levelname)s] - %(name)s - "
"(%(filename)s).%(funcName)s(%(lineno)d) - %(message)s"
)
loop = asyncio.new_event_loop()
apscheduler = AsyncIOScheduler(event_loop=loop, timezone="Europe/Moscow")
apscheduler.add_job(
func=publish_content,
trigger='interval',
minutes=1,
next_run_time=datetime.now()
)
apscheduler.start()
loop.run_forever()













