https://archive.org/details/telegramdaki-bir-gruptaki-dosyalarin-isim-listesini-alma
gerekli düzenlemeleri notepad ++ ile yapın.Shift sağ klik ile powershell çalıştır. Python komutu ile bu belgeyi çalıstır.

Telegramdaki Bir Gruptaki Dosyaların Isim Listesini Alma : Free Download,...

Türkçe Reklam / Tanıtım Metni Telegram Grup Dosyalarını Anında Listele! – Süper Pratik Python Scripti Telegram'da bir grupta paylaşılan yüzlerce,...
BeğenFavori PaylaşYorum yap
  • DünyayaEcnebi @dunyayaecnebi

    import os
    import sqlite3
    from datetime import datetime, timezone
    import asyncio
    from telethon import TelegramClient
    from telethon.tl.types import DocumentAttributeFilename
    import time

    # Telegram bilgileri
    api_id = 106101
    api_hash = '7b0c7355ceaf469e5402'
    chat_link = 'https://t.me/+lB'

    # Yerel klasör
    YEREL_KLASOR = r"F:\Al1999-2024 part1"

    # Veritabanı dosyası
    DB_DOSYA = 'telegram_dosya_hafiza.db' # İstersen yolunu değiştir

    def veritabani_olustur():
    conn = sqlite3.connect(DB_DOSYA)
    cursor = conn.cursor()
    cursor.execute('''
    CREATE TABLE IF NOT EXISTS dosyalar (
    isim TEXT,
    boyut INTEGER,
    PRIMARY KEY (isim, boyut)
    )
    ''')
    cursor.execute('''
    CREATE TABLE IF NOT EXISTS meta (
    anahtar TEXT PRIMARY KEY,
    deger TEXT
    )
    ''')
    conn.commit()
    conn.close()

    def son_tarama_tarihi_al():
    conn = sqlite3.connect(DB_DOSYA)
    cursor = conn.cursor()
    cursor.execute('SELECT deger FROM meta WHERE anahtar = "son_tarama"')
    sonuc = cursor.fetchone()
    conn.close()
    if sonuc:
    return datetime.fromisoformat(sonuc[0]).replace(tzinfo=timezone.utc)
    else:
    return datetime(2000, 1, 1, tzinfo=timezone.utc)

    def son_tarama_tarihi_kaydet(tarih):
    conn = sqlite3.connect(DB_DOSYA)
    cursor = conn.cursor()
    cursor.execute('INSERT OR REPLACE INTO meta (anahtar, deger) VALUES ("son_tarama", ?)',
    (tarih.isoformat(),))
    conn.commit()
    conn.close()

    def veritabani_kayit_sayisi():
    conn = sqlite3.connect(DB_DOSYA)
    cursor = conn.cursor()
    cursor.execute('SELECT COUNT(*) FROM dosyalar')
    sayi = cursor.fetchone()[0]
    conn.close()
    return sayi

    async def telegram_dosya_hafiza_guncelle(client):
    veritabani_olustur()
    conn = sqlite3.connect(DB_DOSYA)
    cursor = conn.cursor()

    try:
    entity = await client.get_entity(chat_link)
    print(f"Chat bulundu: {entity.title}")
    except Exception as e:
    print(f"Chat bulunamadı! Hata: {e}")
    conn.close()
    return

    baslangic_tarihi = son_tarama_tarihi_al()
    bitis_tarihi = datetime.now(timezone.utc)

    print(f"Sadece {baslangic_tarihi.strftime('%Y-%m-%d')} sonrası yeni dosyalar taranıyor...")

    eklenen_sayisi = 0
    en_son_tarih = baslangic_tarihi

    async for message in client.iter_messages(entity, limit=None):
    if message.date bitis_tarihi:
    continue

    if message.date > en_son_tarih:
    en_son_tarih = message.date

    if message.media and hasattr(message.media, 'document'):
    doc = message.media.document
    file_name = "İsim_Bulunamadı"
    for attr in doc.attributes:
    if isinstance(attr, DocumentAttributeFilename):
    file_name = attr.file_name
    break

    boyut = doc.size

    try:
    cursor.execute('INSERT OR IGNORE INTO dosyalar (isim, boyut) VALUES (?, ?)', (file_name, boyut))
    if cursor.rowcount > 0:
    eklenen_sayisi += 1
    except Exception as e:
    print(f"Ekleme hatası: {e}")

    conn.commit()
    conn.close()

    if eklenen_sayisi > 0:
    print(f"{eklenen_sayisi} yeni dosya hafızaya eklendi.")
    son_tarama_tarihi_kaydet(en_son_tarih)
    print("Son tarama tarihi güncellendi.")
    else:
    print("Yeni dosya bulunamadı.")

    print(f"Toplam hafızada kayıt: {veritabani_kayit_sayisi()}")

    def yerel_dosya_kontrol_et_ve_sil():
    if not os.path.exists(YEREL_KLASOR):
    print(f"Klasör bulunamadı: {YEREL_KLASOR}")
    return

    conn = sqlite3.connect(DB_DOSYA)
    cursor = conn.cursor()

    silinen_sayisi = 0
    for dosya_adi in os.listdir(YEREL_KLASOR):
    dosya_yolu = os.path.join(YEREL_KLASOR, dosya_adi)
    if not os.path.isfile(dosya_yolu):
    continue

    # Sadece .zip dosyalarını kontrol et (istersen kaldırabilirsin)
    if not dosya_adi.lower().endswith('.zip'):
    continue

    boyut = os.path.getsize(dosya_yolu)

    cursor.execute('SELECT 1 FROM dosyalar WHERE isim = ? AND boyut = ?', (dosya_adi, boyut))
    if cursor.fetchone():
    try:
    os.remove(dosya_yolu)
    gb = boyut / (1024**3)
    print(f"Silindi: {dosya_adi} ({gb:.2f} GB)")
    silinen_sayisi += 1
    except Exception as e:
    print(f"Silme hatası ({dosya_adi}): {e}")

    conn.close()
    print(f"\nİşlem tamamlandı. Toplam {silinen_sayisi} dosya otomatik silindi.")

    async def main():
    print("Telegram'a bağlanılıyor...")
    client = TelegramClient('session', api_id, api_hash)
    await client.start()
    print("Bağlantı başarılı!")

    await telegram_dosya_hafiza_guncelle(client)

    while True:
    print("\n" + "="*60)
    print(f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')} - Yerel klasör kontrol ediliyor...")
    yerel_dosya_kontrol_et_ve_sil()
    print("60 saniye bekleniyor...\n")
    time.sleep(60)

    if __name__ == '__main__':
    asyncio.run(main())

  • DünyayaEcnebi @dunyayaecnebi

    import os
    import time
    import asyncio
    import sys
    from dotenv import load_dotenv
    from telethon import TelegramClient
    from telethon.errors import FloodWaitError

    # .env dosyasını yükle
    load_dotenv()

    # Yapılandırma Kontrolü
    try:
    API_ID = int(os.getenv("API_ID"))
    API_HASH = os.getenv("API_HASH")
    BOT_TOKEN = os.getenv("BOT_TOKEN")
    CHAT_ID = int(os.getenv("CHAT_ID"))
    except Exception as e:
    print(f"❌ .env dosyasında hata var veya eksik: {e}")
    input("Kapatmak için Enter'a basın...")
    sys.exit()

    # --- KLASÖR AYARLARI ---
    # ÖNEMLİ: Windows yollarını yazarken r"C:\Klasor" şeklinde 'r' harfi ekleyin
    # veya düz slash "/" kullanın.
    WATCH_DIRS = [".", r"C:\Users\Kullanıcı\Downloads"]
    WATCH_EXT = (".zip", ".rar", ".7z", ".mp4", ".mkv")
    MAX_PENCERE = 2

    semaphore = asyncio.Semaphore(MAX_PENCERE)

    def get_progress_bar(current, total, start_time, file_name):
    elapsed = time.time() - start_time
    if elapsed 15 else file_name
    print(f"\r📤 {short_name} | %{percent:.1f} | {speed:.2f} MB/s", end="")

    async def fast_upload(client, file_path):
    async with semaphore:
    file_name = os.path.basename(file_path)
    start_time = time.time()
    try:
    print(f"\n🚀 Yükleme Başladı: {file_name}")
    await client.send_file(
    CHAT_ID,
    file_path,
    caption=file_name,
    progress_callback=lambda c, t: get_progress_bar(c, t, start_time, file_name),
    part_size_kb=512
    )
    print(f"\n✅ Tamamlandı ve Siliniyor: {file_name}")
    os.remove(file_path)
    except Exception as e:
    print(f"\n❌ Yükleme Hatası ({file_name}): {e}")

    async def watcher():
    print("--- BAĞLANTI KURULUYOR ---")
    client = TelegramClient("speed_session", API_ID, API_HASH)

    try:
    await client.start(bot_token=BOT_TOKEN)
    print("✅ Bot Aktif.")
    except Exception as e:
    print(f"❌ Telegram Bağlantı Hatası: {e}")
    return

    # Geçerli klasörleri ayıkla (Hata almamak için)
    valid_dirs = []
    for d in WATCH_DIRS:
    if os.path.exists(d):
    valid_dirs.append(d)
    print(f"📂 İzleniyor: {os.path.abspath(d)}")
    else:
    print(f"⚠️ UYARI: Klasör bulunamadı, atlanıyor: {d}")

    if not valid_dirs:
    print("❌ İzlenecek hiçbir geçerli klasör bulunamadı!")
    return

    active_tasks = set()

    while True:
    for folder in valid_dirs:
    try:
    files = [
    os.path.join(folder, f) for f in os.listdir(folder)
    if f.endswith(WATCH_EXT) and os.path.isfile(os.path.join(folder, f))
    ]

    for file_path in files:
    if file_path not in active_tasks:
    active_tasks.add(file_path)
    # Dosya yazım kontrolü
    old_size = -1
    while old_size != os.path.getsize(file_path):
    old_size = os.path.getsize(file_path)
    await asyncio.sleep(1)

    task = asyncio.create_task(fast_upload(client, file_path))
    task.add_done_callback(lambda t, fp=file_path: active_tasks.remove(fp))
    except Exception as e:
    pass # Anlık klasör hatalarını görmezden gel

    await asyncio.sleep(3)

    if __name__ == "__main__":
    try:
    asyncio.run(watcher())
    except Exception as e:
    print(f"\n‼️ KRİTİK HATA: {e}")
    finally:
    print("\n--- PROGRAM DURDU ---")
    input("Kapatmak için Enter'a basın...")

  • DünyayaEcnebi @dunyayaecnebi

    ve aynı klasörde txt dosaysından .env dosyası oluştur bilgilerini gir. API_ID=1051
    API_HASH=7b5402
    BOT_TOKEN=81955387E4L5XU
    CHAT_ID=-1002062