Selamlar Ben Pion Yeni Bitirdiğim Projemi Sizlerlede Paylaşmak İstedim
Projenin Amacı Youtube Videolarından Altyazıları Çekip, İstenirse Farklı Bir Dile Çevirerek Zaman Damgalarıyla Birlikte
Listelemek ve Kullanıcıya Bu Altyazıları Kaydetme Arama Yapma Gibi Ek İmkanlar Sunmaktır.
Uzatmadan Konuya Geçelim.
Aşşağıdaki Fonksiyon Saniye Cinsinden Verilen Bir Süreyi "Saat: Dakika" Formatına Çevirmekte
Örneğin: 125 saniyeyi "0:02:05" olarak formatlar.
Python:
def zaman_formatla(seconds):
return str(timedelta(seconds=seconds))
Burada İse Verile Video Url Adresi İçin Mevcut Altyazı Dillerini Listemekte.
Python:
def altyazi_dilleri(video_kimlik):
try:
altyazi_listesi = YouTubeTranscriptApi.list_transcripts(video_kimlik)
return altyazi_listesi
except Exception as hata:
print(f"Bir hata oluştu: {hata}")
return None
Burada Belirli Bir Dilde (Default Olarak İngilizce) Videoda Bulunan Altyazıları Çekmek İşlemi Yapmaktadır.
Python:
def altyazi_cek(video_kimlik, dil='en'):
try:
altyazi_listesi = YouTubeTranscriptApi.get_transcript(video_kimlik, languages=[dil])
return altyazi_listesi
except Exception as hata:
print(f"Bir hata oluştu: {hata}")
return None
Burada İse Liste Halinde Bulunan Altyazıları Belirli Bir Dile (Varsayılan Olarak Türkçe) Çevirme İşlemi Yapar.
Google Translate API'si İle Altyazıları Çevirir ve "cevrilmis_altyazilar" Listesine Ekler.
Python:
def altyazi_cevirisi(altyazi_listesi, hedef_dil='tr'):
translator = Translator()
cevrilmis_altyazilar = []
for kayit in altyazi_listesi:
cevrilmis_metin = translator.translate(kayit['text'], dest=hedef_dil).text
cevrilmis_altyazilar.append({
'start': kayit['start'],
'text': cevrilmis_metin
})
return cevrilmis_altyazilar
Bu Kısımda Youtube Videosunun Başlığını Alır.
Python:
def video_bilgilerini_al(youtube_link):
try:
yt = YouTube(youtube_link)
video_baslik = yt.title
video_aciklama = yt.description
return video_baslik, video_aciklama
except Exception as hata:
print(f"Bir hata oluştu: {hata}")
return None, None
Bu Kısımda Kullanıcıdan Vİdeo Linki İstenir Daha Sonra İse
YouTube Linkindeki "v=" Parametresinden Sonra Gelen ID, Videoyu Tekil Olarak Tanımlar.
Python:
try:
youtube_link = input("YouTube video linkini girin: ")
video_kimlik = youtube_link.split('v=')[1]
altyazi_dil_secenekleri = altyazi_dilleri(video_kimlik) Fonksiyonunu Çağırıp Mevcut Olan Alt Yazı Dillerini Çeker.
Mevcut Olan Dİlleri Listeler Daha Sonra İse Dil Kodu ve Dil İsmi Olarak Ekrana Yazdırır.
Python:
altyazi_dil_secenekleri = altyazi_dilleri(video_kimlik)
if altyazi_dil_secenekleri:
print("Mevcut Altyazı Dilleri:")
for altyazi in altyazi_dil_secenekleri:
print(f"{altyazi.language_code} - {altyazi.language}")
Kullanıcıdan Hangi Dilde Altyazı İstediğini Sorar, Eğer Bir Dil Girilmezse Varsayılan Olarak İngilizce (En)
Seçilen Dilde Altyazılar Çekilir.
Daha Sonra Altyazılar Başarıyla Çekildiyse, Çeviri Opsiyonu Sorulur.
Kullanıcıya Altyazıları Çevirmek İsteyip İstemediğini Sorar.
Python:
secilen_dil = input("Hangi dilde altyazı çekmek istersiniz? (varsayılan: en): ").strip() or 'en'
altyazilar = altyazi_cek(video_kimlik, secilen_dil)
if altyazilar:
ceviri_secim = input("Altyazıları çevirmek ister misiniz? (E/H): ").strip().lower()
if ceviri_secim == 'e':
hedef_dil = input("Hangi dile çevirmek istersiniz? (varsayılan: tr): ").strip() or 'tr'
altyazilar = altyazi_cevirisi(altyazilar, hedef_dil)
Bu Kısım Altyazıların ve Zaman Damgalarının Saklanacağı Boş Bir Liste Oluşturur.
Çekilen Altyazıların Üzerinde Döngü Yapılır.
Her Bir Altyazı Kaydının Başlangıç Zamanı Formatlanır.
Altyazı Metni ve Zamanı Listeye Eklenir.
Daha Sonra İse Kullanıcıdan Altyazılarda Aramak İstediği Kelime Sorulur Eğer Bir Kelime Girilirse Bu Kelimeyi İçeren Altyazılar Ekrana Yazdırılır.
Python:
altyazi_listesi = []
for kayit in altyazilar:
baslangic_zamani = zaman_formatla(kayit['start'])
metin = kayit['text']
altyazi_listesi.append(f"{baslangic_zamani} - {metin}")
print(f"{baslangic_zamani} - {metin}")
kelime_ara = input("Altyazılarda aramak istediğiniz kelimeyi girin (boş bırakabilirsiniz): ").strip()
if kelime_ara:
print(f"'{kelime_ara}' kelimesi için arama sonuçları:")
for kayit in altyazilar:
if kelime_ara.lower() in kayit['text'].lower():
baslangic_zamani = zaman_formatla(kayit['start'])
print(f"{baslangic_zamani} - {kayit['text']}")
Burada Youtube Linkinden Video Başlığı ve Açıklaması Alınır.
Video Başlığı Ekrana Yazdırılır.
Kullanıcıya Altyazıları Bir .txt Dosyasına Kaydetmek İsteyip İstemediği Sorulur.
Python:
video_baslik, video_aciklama = video_bilgilerini_al(youtube_link)
print(f"Video Başlık: {video_baslik}")
print(f"Video Açıklama: {video_aciklama}")
kaydet_secim = input("Altyazıları bir txt dosyasına kaydetmek ister misiniz? (E/H): ").strip().lower()
if kaydet_secim == 'e':
dosya_adi = f"{video_kimlik}_altyazilar.txt"
dosya_yolu = os.path.join(os.getcwd(), dosya_adi)
with open(dosya_yolu, 'w', encoding='utf-8') as dosya:
dosya.write("\n".join(altyazi_listesi))
print(f"Altyazılar '{dosya_yolu}' konumuna kaydedildi.")
GİTHUB
Okuduğunuz İçin Teşekkürler...





