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.
Teknoseyir gündemi
#TeknoYardım#Satılık#winwing#WorldCup2026#gothic#Samsung#vibecoding#oneui8#Playstation#oneui85#SonySon bir saat içinde 261 ziyaretçi, 119 kayıtlı kullanıcı giriş yaptı.
- © 2026 TeknoSeyir
- Hakkımızda
- İletişim
- Kullanım Koşulları
- Gizlilik Politikası
- Sosyal Ağ Kuralları
- RAM desteği bilendenal.com tarafından sağlanmaktadır.
- Sunucu desteği DGN Teknoloji tarafından
sağlanmaktadır.
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())
telegramdaki chat ile yerel klasörü karşılaştırır.Yerel dosyalar zaten telegramda varsa, yerel dosyaları siler.
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...")
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