Мой бот должен отправлять пост на канал в телеграмме когда на ютуб канале выходит новое видео
Бот работает, но отправляет одну и туже ссылку несколько раз через какое-то время
from bot_token import TOKEN
from aiogram import Bot, Dispatcher, types, executor
from time import sleep
from bs4 import BeautifulSoup as BS
import requests
import asyncio
#каналы
URL1 = "https://www.youtube.com/feeds/videos.xml?channel_id=UC3MABpy7-4AJBrpEAX7dmbw"
URL2 = "https://www.youtube.com/feeds/videos.xml?channel_id=UCEeo0NAAV7OUmYlNVkiMWig"
URL3 = "https://www.youtube.com/feeds/videos.xml?channel_id=UCrQoclxYh_kzzWal122tcqQ"
URL4 = "https://www.youtube.com/feeds/videos.xml?channel_id=UCUV4byORlumh7GnDKute8hw"
URL5 = "https://www.youtube.com/feeds/videos.xml?channel_id=UCTpwi2jy5h9eWx_nAs8D8ZQ"
URL6 = "https://www.youtube.com/feeds/videos.xml?channel_id=UCymoo8CR0fs-WhQaHLTJl7g"
URL7 = "https://www.youtube.com/feeds/videos.xml?channel_id=UCYpxizH4xpScTAK_OzGrt6Q"
URL8 = "https://www.youtube.com/feeds/videos.xml?channel_id=UCTa57-frrVMJXCcmsd4RGkg"
URL9 = "https://www.youtube.com/feeds/videos.xml?channel_id=UCIYvu5x1KeouKFSB9E7yNIQ"
#получение последних видео с канала
def getUrlVideo(URL):
re = requests.get(URL).text
soup = BS(re, "lxml")
link = soup.find_all("link")
urls = []
for i in range(len(link)):
urls.append(link[i]["href"])
return urls
#подключение бота
bot = Bot(token=TOKEN)
dp = Dispatcher(bot)
#начало работы
@dp.message_handler(commands='start')
async def test(message: types.Message):
url1_p = getUrlVideo(URL1)
url2_p = getUrlVideo(URL2)
url3_p = getUrlVideo(URL3)
url4_p = getUrlVideo(URL4)
url5_p = getUrlVideo(URL5)
url6_p = getUrlVideo(URL6)
url7_p = getUrlVideo(URL7)
url8_p = getUrlVideo(URL8)
url9_p = getUrlVideo(URL9)
while True:
await asyncio.sleep(10)
if url1_p != getUrlVideo(URL1):
await bot.send_message("канал", url1_p[2])
print("Новое видео")
elif url2_p != getUrlVideo(URL2):
url2_p = getUrlVideo(URL2)
await bot.send_message("канал", url2_p[2])
print("Новое видео")
elif url3_p != getUrlVideo(URL3):
url3_p = getUrlVideo(URL3)
await bot.send_message("канал", url3_p[2])
print("Новое видео")
elif url4_p != getUrlVideo(URL4):
url4_p = getUrlVideo(URL4)
await bot.send_message("канал", url4_p[2])
print("Новое видео")
elif url5_p != getUrlVideo(URL5):
url5_p = getUrlVideo(URL5)
await bot.send_message("канал", url5_p[2])
print("Новое видео")
elif url6_p != getUrlVideo(URL6):
url6_p = getUrlVideo(URL6)
await bot.send_message("канал", url6_p[2])
print("Новое видео")
elif url7_p != getUrlVideo(URL7):
url7_p = getUrlVideo(URL7)
await bot.send_message("канал", url7_p[2])
print("Новое видео")
elif url8_p != getUrlVideo(URL8):
url8_p = getUrlVideo(URL8)
await bot.send_message("канал", url8_p[2])
print("Новое видео")
elif url9_p != getUrlVideo(URL9):
url9_p = getUrlVideo(URL9)
await bot.send_message("канал", url9_p[2])
print("Новое видео")
#запуск бота
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)