From 2f29314faa7ed9f0ddc21f0d93df9a0f23883a46 Mon Sep 17 00:00:00 2001 From: Kusaeni Date: Tue, 1 Oct 2024 11:32:29 +0700 Subject: [PATCH] ruff: fix something --- README.md | 2 +- main.py | 141 +++++++++++++++++++++++++++++++++--------------------- models.py | 11 +++-- 3 files changed, 94 insertions(+), 60 deletions(-) diff --git a/README.md b/README.md index 3e20213..1ee2527 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ App ini masih dalam pengembangan dan banyak hal yang belum bisa dilakukan, berik - [x] Boost/Reblog - [x] Follow - [x] Tandai data di database jika sudah terkirim -- [ ] Delay antar fungsi +- [x] Delay antar fungsi - [ ] Cron internal - [ ] Build diff --git a/main.py b/main.py index f758d2e..0a6bb30 100644 --- a/main.py +++ b/main.py @@ -1,128 +1,160 @@ # %% # ZED Python REPL -import requests -import os -import logging import asyncio -import telegram +import os import re -import json -from models import Notifikasi, Session -from sqlalchemy import and_, or_, func, update -from sqlalchemy.exc import IntegrityError -from dotenv import load_dotenv from datetime import datetime +import requests +import telegram +from dotenv import load_dotenv +from sqlalchemy import update +from sqlalchemy.exc import IntegrityError + +from models import Notifikasi, Session + # Request ke kauaku load_dotenv() -gts_api = os.getenv('GTS_API') -gts_token = os.getenv('GTS_TOKEN') +gts_api = os.getenv("GTS_API") +gts_token = os.getenv("GTS_TOKEN") headers = {"Authorization": f"Bearer {gts_token}"} session = Session() -TELE_BOT = os.getenv('TELE_BOT') -TELE_CHATID = os.getenv('TELE_CHATID') -bot = telegram.Bot(token=f'{TELE_BOT}') +TELE_BOT = os.getenv("TELE_BOT") +TELE_CHATID = os.getenv("TELE_CHATID") +bot = telegram.Bot(token=f"{TELE_BOT}") + async def getNotif(): - req = requests.get(f'{gts_api}?limit=5', headers=headers) + req = requests.get(f"{gts_api}?limit=5", headers=headers) if req.status_code == 200: data = req.json() print(data.__class__) try: for notif in data: - type = notif['type'] + type = notif["type"] inreply = None status_content = None url = None - if 'status' in notif: - inreply = notif['status']['in_reply_to_id'] - status_content = notif['status']['content'] - url = notif['status']['url'] - postid = notif['id'] - created = datetime.strptime(notif['created_at'], "%Y-%m-%dT%H:%M:%S.%fZ") - handler = notif['account']['acct'] - username = notif['account']['display_name'] - kirim = 'Belum' + if "status" in notif: + inreply = notif["status"]["in_reply_to_id"] + status_content = notif["status"]["content"] + url = notif["status"]["url"] + postid = notif["id"] + created = datetime.strptime( + notif["created_at"], "%Y-%m-%dT%H:%M:%S.%fZ" + ) + handler = notif["account"]["acct"] + username = notif["account"]["display_name"] + kirim = "Belum" - if type == 'follow': - insert_follow = Notifikasi(post_id=postid, created_at=created, handler=handler, display_name=username, type=type, remark=kirim) + if type == "follow": + insert_follow = Notifikasi( + post_id=postid, + created_at=created, + handler=handler, + display_name=username, + type=type, + remark=kirim, + ) session.add(insert_follow) else: - insert_mentions = Notifikasi(post_id=postid, created_at=created, handler=handler, display_name=username, type=type, status=status_content,url=url, remark=kirim) + insert_mentions = Notifikasi( + inreplyto=inreply, + post_id=postid, + created_at=created, + handler=handler, + display_name=username, + type=type, + status=status_content, + url=url, + remark=kirim, + ) session.add(insert_mentions) session.commit() except IntegrityError as err: session.rollback() - if 'post_id' in str(err.orig): + if "post_id" in str(err.orig): print("Post Id sudah ada") else: - print(f"Integritas data bermasalah", str(err)) + print("Integritas data bermasalah", str(err)) finally: session.close() async def kirim_ke_tele(): - cek_data = session.query(Notifikasi).filter(Notifikasi.remark.like('%elu%')).limit(10).all() - + cek_data = ( + session.query(Notifikasi) + .filter(Notifikasi.remark.like("%elu%")) + .limit(10) + .all() + ) for notif in cek_data: + def icon_(type_): - if type_ == 'mention': - return '💬 mention your note' - elif type_ == 'reblog': - return '🚀 boost your note' - elif type_ == 'favourite': - return '💖 falling in love with your note' - elif type_ == 'follow': - return '✋ started to follow you' + if type_ == "mention": + return "💬 mention your note" + elif type_ == "reblog": + return "🚀 boost your note" + elif type_ == "favourite": + return "💖 falling in love with your note" + elif type_ == "follow": + return "✋ started to follow you" else: return None flag = icon_(notif.type) - if str(notif.type) == 'follow': + if str(notif.type) == "follow": try: - await bot.send_message(parse_mode='html',chat_id=str(TELE_CHATID), text=f""" + await bot.send_message( + parse_mode="html", + chat_id=str(TELE_CHATID), + text=f""" {notif.display_name}\n{notif.handler}\n{flag}\n from python - """ + """, ) except Exception as e: - print(f'Follow: Ada masalah saat kirim ke Telebot', e) + print("Follow: Ada masalah saat kirim ke Telebot", e) else: - html_strip = re.compile('<.*?>') + html_strip = re.compile("<.*?>") status = str(notif.status) - status_text = re.sub(html_strip,'', status) + status_text = re.sub(html_strip, "", status) try: - await bot.send_message(parse_mode='html',chat_id=str(TELE_CHATID), text=f""" + await bot.send_message( + parse_mode="html", + chat_id=str(TELE_CHATID), + text=f""" {notif.display_name}\n{notif.handler}\n{flag}\n\n{status_text}\nfrom python\n{notif.url} - """ + """, ) except Exception as e: - print(f'Mentions: Ada masalah saat kirim ke Telebot', e) + print("Mentions: Ada masalah saat kirim ke Telebot", e) session.close() + async def tandai_notif(): try: - cek_data = session.query(Notifikasi).filter(Notifikasi.remark == 'Belum').all() session.execute( - update(Notifikasi). - where(Notifikasi.remark == 'Belum'). - values(remark='Sudah') + update(Notifikasi) + .where(Notifikasi.remark == "Belum") + .values(remark="Sudah") ) session.commit() except Exception as e: - print(f'Ada masalah saat update remark', e) + print("Ada masalah saat update remark", e) finally: session.close() + async def jalan(): await asyncio.sleep(2) await getNotif() @@ -131,6 +163,7 @@ async def jalan(): await asyncio.sleep(5) await tandai_notif() + # if __name__ == "__main__": asyncio.run(jalan()) diff --git a/models.py b/models.py index fbf81a9..f609198 100644 --- a/models.py +++ b/models.py @@ -1,20 +1,20 @@ # %% # ZED Python REPL -from enum import unique -from sqlalchemy import create_engine, Column, Integer, String, ForeignKey, Date -from sqlalchemy.orm import sessionmaker +from sqlalchemy import Column, Date, Integer, String, create_engine from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy.orm import sessionmaker # Engine -engine = create_engine('sqlite:///gotodon.db') +engine = create_engine("sqlite:///gotodon.db") # Base Base = declarative_base() + # Models class Notifikasi(Base): - __tablename__ = 'notifikasi' + __tablename__ = "notifikasi" id = Column(Integer, primary_key=True) inreplyto = Column(String) @@ -30,6 +30,7 @@ class Notifikasi(Base): def __repr__(self) -> str: return f"<{self.id} : {self.handler} >" + # Buat tabel Base.metadata.create_all(engine)