konversi status

This commit is contained in:
Kusaeni 2024-10-02 12:39:37 +07:00
parent 4232d84949
commit 2bad6764d1
3 changed files with 47 additions and 16 deletions

View file

@ -40,5 +40,6 @@ Saat ini ada 4 environment variable yaitu:
4. TELE_CHATID : Chat Id dari channel telegram. 4. TELE_CHATID : Chat Id dari channel telegram.
## Kekurangan ## Kekurangan
1. Konversi dari html ke text/markdown masih buruk, perlu perbaikan disini 1. ~Konversi dari html ke text/markdown masih buruk~, Sulit pakai Markdown karena bermasalah dengan entities, jadi pakai html (perlu perbaikan disini)
2. Setiap instance punya cara sendiri - sendiri untuk menyimpan data status, ada yang pakai `<p>` untuk memisahkan baris atau membuat new line, ada pula yang pakai `<br>
2. Sedikit lebih lambat dibandingkan Deno TS? 2. Sedikit lebih lambat dibandingkan Deno TS?

15
main.py
View file

@ -126,9 +126,14 @@ async def kirim_ke_tele():
# html_strip = re.compile("<.*?>") # html_strip = re.compile("<.*?>")
# status = str(notif.status) # status = str(notif.status)
# status_text = re.sub(html_strip, "", status) # status_text = re.sub(html_strip, "", status)
html_p = re.sub(r"<p.*?>", "\n\n", str(notif.status)) raw = str(notif.status)
raw = html_p.replace("<p>", "\n")
status_text = re.sub(r"<.*?>", "", raw) # raw = raw.strip()
raw = raw.replace("<p>", "", 1)
raw = raw.rsplit("</p>", 1)[0]
rubah_p = re.sub(r"</p>", "\n\n", raw)
status_text = re.sub(r"<.*?>", "", rubah_p)
try: try:
await bot.send_message( await bot.send_message(
@ -162,8 +167,8 @@ async def jalan():
await getNotif() await getNotif()
await asyncio.sleep(5) await asyncio.sleep(5)
await kirim_ke_tele() await kirim_ke_tele()
await asyncio.sleep(5) # await asyncio.sleep(5)
await tandai_notif() # await tandai_notif()
# #

View file

@ -1,22 +1,47 @@
import asyncio
import os
import re import re
from sqlalchemy import desc import telegram
from dotenv import load_dotenv
from markdownify import markdownify
from telegram.helpers import escape_markdown
from models import Notifikasi, Session from models import Notifikasi, Session
load_dotenv()
TELE_BOT = os.getenv("TELE_BOT")
TELE_CHATID = os.getenv("TELE_CHATID")
session = Session() session = Session()
bot = telegram.Bot(token=f"{TELE_BOT}")
def main_test():
cek_data = ( async def test():
session.query(Notifikasi).order_by(desc(Notifikasi.created_at)).limit(10).all() cek_data = session.query(Notifikasi).filter(Notifikasi.id > 18).limit(2).all()
)
for notif in cek_data: for notif in cek_data:
html_p = re.sub(r"<p.*?>", "\n\n", str(notif.status))
raw = html_p.replace("<p>", "\n") def buang_href(x):
html_content = re.sub(r"<.*?>", "", raw) return re.sub(r'<a\s+(?:[^>]*?\s+)?href="([^"]*)">(.*?)</a>', r"\2", x)
print(html_content)
y = buang_href(str(notif.status))
n = markdownify(y)
t = escape_markdown(n, version=2)
# print(t)
try:
await bot.send_message(
parse_mode="MarkdownV2",
chat_id=str(TELE_CHATID),
text=f"""
{t}
""",
)
except Exception as e:
print("Mentions: Ada masalah saat kirim ke Telebot", e)
main_test() asyncio.run(test())