import os from PIL import Image, ImageDraw, ImageFont from pyrogram import Client, filters from pyrogram.types import Message import io import asyncio cekilecek_kanallar = ["dakika_son", "bpthaber"] atilacak_kanal = "sondakikahaberlericanli" cekilecek_kanallar2 = ["futboland_yt","FutbolSonDakika"] atilacak_kanal2 = "sporhaberleriguncel" cekilecek_kanallar3 = ["binbirkitap","kitapsozlerii"] atilacak_kanal3 = "bomontisokagim" cekilecek_kanallar4 = ["muzikodasii","muzikanali1","melankolikarmasi","muzikpaylasimm","Turkce_Sarkilar_Muzikler"] atilacak_kanal4 = "muzikdinleindir" cekilecek_kanallar5 = ["hayvanlaralemi","dunyadankareler"] atilacak_kanal5 = "DuvarKagitlariTr" cekilecek_kanallar6 = ["direktfutboll"] atilacak_kanal6 = "futboleditvideolari" cekilecek_kanallar7 = ["coinotag"] atilacak_kanal7 = "kriptohaberlerisondakika" banner = "\n\n🔔 Bildirimi Aç İlk Senin Haberin Olsun\n➡️ @sondakikahaberlericanli" ustbanner = "🔴 " banner2 = "\n\n🔔 Bildirimi Aç İlk Senin Haberin Olsun\n➡️ @sporhaberleriguncel" banner3 = "\n\n🎭 #bomontisokağım" banner4= "\n◉━━━━━──────\n↻ㅤ ◁ㅤㅤ❚❚       ▷    ⇆" banner5= "🖼️ #DuvarKağıdı" banner6= "\n\n🏟️ #FreeFutbol\n\n⚽ Spor Kanalımız: @sporhaberleriguncel" banner7= "\n\n🔔 #SonDakika\n💬 Göz At : @kanalistesi" SESSION = "BABBQ5wANtNSlIzm8piPpEQMwKUJgQcECdoMblasnrTLx21Y3NyY8Bob--Yij3qseQdb6vheHy6VrEY_pLOwSShrUte-Q4hKU_5akje3uDgBenZg79zhWZ3gjVTdCT-s0neZvV59liiEDwcF7mm2tY_chfb7uZM28ScA5JagSQqJQ8waNKnygWfAx_k0ORkEIReSaLRL2YWNRTi1H6WbBRbhSKf2968zdzZSgko0M-fkeIBFx9kwXoip5U1WaCDrB5NJNvm1XZiRwiFXgdsmslMUrd_2WwuprBCell3qTeGY3LC-T1hovgI0HrBUhhLpLQAAvzto7stZa-lc817h7Z-UCnWrggAAAAAuD2vzAA" app = Client("session", 4277148, "8a4746a91d0b0fea7884ef369e807793", session_string=SESSION) # Asenkron işlemleri sıraya almak için Queue oluşturun queue = asyncio.Queue() def add_watermark_to_image(input_image_bytes, watermark_text, opacity=50): # Şeffaflık seviyesini en düşük değerin 2 tık üstüne çıkar opacity = min(255, opacity + 2) # Resmi yükle image = Image.open(io.BytesIO(input_image_bytes)).convert("RGBA") width, height = image.size # Yazı için yeni bir resim oluştur txt = Image.new("RGBA", image.size, (255, 255, 255, 0)) font_size = min(width, height) // 20 # Metin boyutunu resmin boyutuna göre belirle font = ImageFont.truetype("arial.ttf", font_size) d = ImageDraw.Draw(txt) # Metni resmin ortasından çapraz şekilde yerleştir text_width, text_height = d.textsize(watermark_text, font=font) position = ((width - text_width) // 2, (height - text_height) // 2) # Yazıyı resmin üstüne ekle d.text(position, watermark_text, font=font, fill=(255, 255, 255, opacity)) # İki resmi birleştir watermarked = Image.alpha_composite(image, txt) # Yeni resmi byte dizisi olarak döndür output_image_bytes = io.BytesIO() watermarked.save(output_image_bytes, format='JPG') return output_image_bytes.getvalue() def add_watermark_to_video(input_video_path, watermark_text, output_video_path, opacity=50): # Şeffaflık seviyesini en düşük değerin 2 tık üstüne çıkar opacity = min(255, opacity + 2) # Video dosyasını yükleyin watermark_text = f"drawtext='text={watermark_text}:x=(w-text_w)/2:y=(h-text_h)/2:fontsize=20:fontcolor=white@{opacity}'" os.system(f"ffmpeg -i {input_video_path} -vf \"{watermark_text}\" {output_video_path}") @app.on_message(filters.chat(cekilecek_kanallar)) async def main(c: Client, m: Message): if m.media: if m.photo: # Resim if not m.caption: caption = banner else: caption = ustbanner + str(m.caption) + banner if "t.me" not in caption and "https" not in caption: # Filigran eklemek için resmi al ve sıraya ekle image_bytes = await c.download_media(m) watermark_text = "Sizin filigranınız" await queue.put((add_watermark_to_image, (image_bytes, watermark_text))) await queue.put((save_and_send_photo, (c, atilacak_kanal, caption))) elif m.video: # Video if not m.caption: caption = banner else: caption = ustbanner + str(m.caption) + banner if "t.me" not in caption and "https" not in caption: # Filigran eklemek için videoyu indir, filigranı ekleyin ve yeni bir video oluşturun video_path = await c.download_media(m) watermark_text = "Sizin filigranınız" output_video_path = "output_video.mp4" # Çıktı olarak oluşturulacak video yolunu belirleyin await queue.put((add_watermark_to_video, (video_path, watermark_text, output_video_path))) await queue.put((save_and_send_video, (c, atilacak_kanal, output_video_path, caption))) os.remove(output_video_path) # Gönderdikten sonra kaynak dosyayı sil else: text = ustbanner + str(m.text) + banner if "t.me" not in text and "https" not in text: await c.send_message(atilacak_kanal, text=text) async def process_queue(): while True: task, args, kwargs = await queue.get() await task(*args, **kwargs) queue.task_done() async def save_and_send_photo(c, chat_id, caption): image_bytes = await queue.get() with open("indirilenler/image.png", "wb") as f: f.write(image_bytes) await c.send_photo(chat_id=chat_id, photo="indirilenler/image.png", caption=caption) os.remove("indirilenler/image.png") # Gönderdikten sonra kaynak dosyayı sil async def save_and_send_video(c, chat_id, video_path, caption): watermark_text = "Sizin filigranınız" output_video_path = "output_video.mp4" # Çıktı olarak oluşturulacak video yolunu belirleyin add_watermark_to_video(video_path, watermark_text, output_video_path) with open(output_video_path, "rb") as f: video_bytes = f.read() await c.send_video(chat_id=chat_id, video=video_bytes, caption=caption) os.remove(output_video_path) # Gönderdikten sonra kaynak dosyayı sil @app.on_message(filters.chat(cekilecek_kanallar2)) async def main(c: Client, m: Message): if m.media: if not m.caption: caption = banner2 else: caption = str(m.caption) + banner2 if "t.me" not in caption and "https" not in caption: await m.copy(atilacak_kanal2, caption=caption) else: text = str(m.text) + banner2 if "t.me" not in text and "https" not in text: await c.send_message(atilacak_kanal2, text=text) @app.on_message(filters.chat(cekilecek_kanallar3)) async def main(c: Client, m: Message): if m.media: if not m.caption: caption = banner3 else: caption = str(m.caption) + banner3 if "t.me" not in caption and "https" not in caption: await m.copy(atilacak_kanal3, caption=caption) else: text = str(m.text) + banner3 if "t.me" not in text and "https" not in text: await c.send_message(atilacak_kanal3, text=text) @app.on_message(filters.chat(cekilecek_kanallar4)) async def main(c: Client, m: Message): if m.media: if not m.caption: caption = banner4 else: caption = str(m.caption) + banner4 if "t.me" not in caption and "https" not in caption: await m.copy(atilacak_kanal4, caption=caption) else: text = str(m.text) + banner4 if "t.me" not in text and "https" not in text: await c.send_message(atilacak_kanal4, text=text) @app.on_message(filters.chat(cekilecek_kanallar5)) async def main(c: Client, m: Message): if m.media: if not m.caption: caption = banner5 else: caption = str(m.caption) + banner5 if "t.me" not in caption and "https" not in caption: await m.copy(atilacak_kanal5, caption=caption) else: text = str(m.text) + banner5 if "t.me" not in text and "https" not in text: await c.send_message(atilacak_kanal5, text=text) @app.on_message(filters.chat(cekilecek_kanallar6)) async def main(c: Client, m: Message): if m.media: if not m.caption: caption = banner6 else: caption = str(m.caption) + banner6 if "t.me" not in caption and "https" not in caption: await m.copy(atilacak_kanal6, caption=caption) else: text = str(m.text) + banner6 if "t.me" not in text and "https" not in text: await c.send_message(atilacak_kanal6, text=text) @app.on_message(filters.chat(cekilecek_kanallar7)) async def main(c: Client, m: Message): if m.media: if not m.caption: caption = banner7 else: caption = str(m.caption) + banner7 if "http" not in caption and "https" not in caption: await m.copy(atilacak_kanal7, caption=caption) else: text = str(m.text) + banner7 if "http" not in text and "https" not in text: await c.send_message(atilacak_kanal7, text=text) print("Bot Çalışıyor") if __name__ == "__main__": asyncio.run(main())