Selam Dsotlar, pythonda istediğiniz sitenin haberlerini otomatik bir şekilde başlık,url olarak çekebilen bir kod yapısı yazdım umarım işinize yarar yapmanız gerekenler: Telgram...

Selam Dsotlar, pythonda istediğiniz sitenin haberlerini otomatik bir şekilde başlık,url olarak çekebilen bir kod yapısı yazdım umarım işinize yarar
yapmanız gerekenler:
Telgram botunuzun tokenini gerekli yere yapıştırmak
istediğiniz kanalın adresini "@ornekkanaladi" olarak girmeniz
son olarak istediğiniz sitenin rss URL adresini girmeniz.
Bot hata aldığı zmanlarda botlog.txt dosyası oluşturur ve paylaşılan linkleri bir daha atmaması adına bir json dosyası oluşturur bilginiz olsun. Kodda değişiklik yapıp kendinize göre uyarlarsınız iyi forumlar.

NOT: gerekli kütüphaneleri indirmeyi unutmayın gerekn yerde iletişim kurun yardımcı olurum.

import asyncio import feedparser import json from datetime import datetime from telegram import Bot BOT_TOKEN = "Bot_yoken" CHANNEL_USERNAME = "Kanal_Adı" RSS_URL = "URL_RSS" SENT_LINKS_FILE = "sent_links.json" ERROR_LOG_FILE = "error_log.txt" bot = Bot(token=BOT_TOKEN) bot_status = "Bot çalışıyor" def log_error(error_message): """Hataları log dosyasına yazar.""" with open(ERROR_LOG_FILE, "a") as file: timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") file.write(f"[{timestamp}] {error_message}\n") print(f"[{timestamp}] Hata loglandı: {error_message}") def load_sent_links(): """Daha önce gönderilen haber bağlantılarını dosyadan yükler.""" try: with open(SENT_LINKS_FILE, "r") as file: return json.load(file) except FileNotFoundError: return [] except json.JSONDecodeError: log_error("Gönderilen haber dosyası bozuk. Liste sıfırlandı.") return [] def save_sent_links(sent_links): """Gönderilen haber bağlantılarını dosyaya kaydeder.""" with open(SENT_LINKS_FILE, "w") as file: json.dump(sent_links, file) async def fetch_rss(): """RSS beslemesinden yeni haberleri alır.""" feed = feedparser.parse(RSS_URL) new_entries = [] for entry in feed.entries: if entry.link not in sent_links: new_entries.append((entry.title, entry.link)) sent_links.append(entry.link) save_sent_links(sent_links) return new_entries async def send_to_channel(entries): """Kanalda yeni haberleri paylaşır.""" for entry in entries: title, link = entry message = f"📰 *{title}*\n \n({link})" await bot.send_message(chat_id=CHANNEL_USERNAME, text=message, parse_mode="Markdown") async def main(): """Botun ana işleyiş döngüsü.""" global sent_links, bot_status sent_links = load_sent_links() error_logged = False while True: try: bot_status = "Bot çalışıyor" print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] {bot_status}") new_entries = await fetch_rss() if new_entries: await send_to_channel(new_entries) await asyncio.sleep(30) except Exception as e: bot_status = "Bot hataya düştü" print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] {bot_status}: {e}") if not error_logged: log_error(str(e)) error_logged = True await asyncio.sleep(60) finally: bot_status = "Bot çalışmıyor" print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] {bot_status}") # Asenkron ana döngüyü çalıştır if __name__ == "__main__": try: asyncio.run(main()) except KeyboardInterrupt: print("Bot manuel olarak durduruldu.")
 
Son düzenleme:
💬 SpyHackerz Telegram — Anlık tartışmalar ve duyurular için katıl
132,717Konular
3,283,096Mesajlar
317,947Kullanıcılar
parolben1Son Üye
Üst Alt