async def rss_worker(): log.info("RSS Worker started") while True: feeds = await get_rss_feeds() if not feeds: await sleep(RSS_DELAY) continue loop = get_event_loop() for _feed in feeds: chat = _feed["chat_id"] try: url = _feed["url"] last_title = _feed.get("last_title") parsed = await loop.run_in_executor(None, parse, url) feed = Feed(parsed) if feed.title == last_title: continue await app.send_message( chat, feed.parsed(), disable_web_page_preview=True ) await update_rss_feed(chat, feed.title) except (ChannelInvalid, ChannelPrivate, InputUserDeactivated): await remove_rss_feed(chat) log.info(f"Removed RSS Feed from {chat} (Invalid Chat)") except Exception as e: log.info(f"RSS in {chat}: {str(e)}") pass await sleep(RSS_DELAY)
async def add_feed_func(_, m: Message): if len(m.command) != 2: return await m.reply("Read 'RSS' section in help menu.") url = m.text.split(None, 1)[1].strip() if not url: return await m.reply("[ERROR]: Invalid Argument") urls = get_urls_from_text(url) if not urls: return await m.reply("[ERROR]: Invalid URL") url = urls[0] status = await get_http_status_code(url) if status != 200: return await m.reply("[ERROR]: Invalid Url") ns = "[ERROR]: This feed isn't supported." try: loop = get_event_loop() parsed = await loop.run_in_executor(None, parse, url) feed = Feed(parsed) except Exception: return await m.reply(ns) if not feed: return await m.reply(ns) chat_id = m.chat.id if await is_rss_active(chat_id): return await m.reply("[ERROR]: You already have an RSS feed enabled.") try: await m.reply(feed.parsed(), disable_web_page_preview=True) except Exception: return await m.reply(ns) await add_rss_feed(chat_id, parsed.url, feed.title)
async def rss_worker(): print("[INFO]: RSS WORKER STARTED") while True: t1 = time() feeds = await get_rss_feeds() if not feeds: await sleep(RSS_DELAY) continue for _feed in feeds: try: chat = _feed["chat_id"] url = _feed["url"] last_title = _feed.get("last_title") feed = Feed(url) if feed.title == last_title: continue await app.send_message(chat, feed.parsed(), disable_web_page_preview=True) await update_rss_feed(chat, feed.title) except Exception as e: print(str(e), f"RSS {chat}") pass t2 = time() if (t2 - t1) >= RSS_DELAY: continue await sleep(RSS_DELAY - (t2 - t1))