Hafta sonunuza eğlenceli bir
#Python post'u bırakmaya geldim 🥳 Aynı zamanda faydalı olacağını da düşünüyorum.
Devir otomatize devri. Manuel işleri hem kişisel hem de profesyonel hayatımızda bitirmeliyiz. Çünkü zaman önemli. Hep önemliydi ama şimdi yetmiyor.
Neler yapacağız?
* yfinance kütüphanesi ile istediğimiz bir finansal varlığın dakikalık verilerini çekeceğiz.
* Çektiğimiz bu verileri iki farklı tipte (çizgi ve histogram birleştirilecek) görselleştireceğiz.
* Verileri (.xlsx formatında) ve görseli (.jpg formatında) kaydedeceğiz.
* Bu işlem her 5 dakikada 1 yapılacak. Bunun için de Task Scheduler (windows) kullanacağız.
* Task Scheduler'daki görev her çalıştığında görselleri bir mesaj ile WhatsApp numaramıza göndereceğiz.
Başlayalım!
.py uzantılı bir script açıyoruz ve kodlarımızı burada yazıyoruz.
Gerekli kütüphaneleri içe aktardıktan sonra verileri çekecek kodları yazıyoruz.
Yukarıdaki kodda, `ticker`, `start_date`, `interval` ve `base_column` dinamik bir şekilde gelecek. Buradaki değerleri istediğiniz gibi değiştirebilirsiniz. Aynı zamanda .xlsx uzantılı kaydedileceği zaman tarihi de dinamik yapıyoruz. Bunun için `
datetime.now()` ile bugünün tarihini alıp `strftime()` ile tarihin yazılma biçimini değiştiriyoruz. Yani, YYYYMMDD olacak.
Şu satıra özellikle değinmek istiyorum:
data.index =
data.index.tz_localize(None)
Burada, zaman bilgisini ortadan kaldırıyoruz. Bunu yapmazsak dosyanın kaydı sırasında hata alırız. İlgili satırda `data.index`, DataFrame'in indeksine erişim sağlar. `tz_localize(None)` ise zaman dilimini (timezone) sıfırlar.
Verilerin çekilmesi ve kaydedilmesi aşamasından sonra görselleştirme bölümüne geçiyoruz. Burada `base_column` ne girildiyse (örnekte Adj Close) o kolonun çizgi (zaman serisi) grafiğini oluşturuyoruz. Yine `base_column` 'a girilen kolonun getirilerini de histogram (dağılım) grafiğinde gösteriyoruz. Bu iki tip görseli de ayrı ayrı göstermek yerine tek bir ekranda birleştiriyoruz.
Kodun son aşaması WhatsApp mesajının gönderilmesi olacak.
İnceleyelim.
`kit.sendwhats_image()` fonksiyonu, belirtilen WhatsApp numarasına resim dosyası göndermek için kullanılıyor.
`receiver` parametresi, resmin gönderileceği WhatsApp numarasını temsil eder. Bu, önceki adımda oluşturulan `to_whatsapp_number` değişkenini içerir.
`img_path` parametresi, gönderilecek olan resim dosyasının yolunu içerir. Bu, önceki adımda oluşturulan
`plot_path` değişkenini içerir.
`caption` parametresi, resimle birlikte gönderilecek olan mesajdır. Bu, önceki adımda oluşturulan `message` değişkenini içerir.
`tab_close=True` parametresi, gönderimden sonra otomatik olarak sekmeyi kapatma özelliğini etkinleştirir.
`close_time=60` parametresi, sekmeyi kapatma süresini saniye cinsinden belirtir. Bu örnekte, 60 saniye (1 dakika) olarak ayarlanmıştır.
NOT: Kodları çalıştırmadan önce mutlaka WhatsApp Web'e bağlanın. Senkronizasyondan sonra kod çalıştığında yeni bir sekme açılıp kapanacaktır.
Script bölümünü bitirdik.
Geldik Task Scheduler aşamasına. Bunu oluşturmanın birçok yolu bulunmaktadır. Size temel yolu anlatacağım.
Bilgisayarımızdan Task Scheduler'ı açıyoruz. Ardından Create Task'e tıklıyoruz.
General sekmesi hariç her sekmede işlerimiz bitince OK diyoruz.
General sekmesi:
* Name, My Python Task olabilir.
* Description, A Python script that fetches financial data olabilir.
* Run only when user is logged on olarak bırakıyoruz. Yani, kullanıcı oturumu açık olduğunda çalışacaktır.
* Run with highest privileges'e tıklıyoruz. Yani, en yüksek ayrıcalıklar ile çalıştırıyoruz.
Trigger sekmesi:
New diyoruz.
* One time varsayılan olarak kalacak. Start'ı bugünün tarihi ve çalıştırılmasına hazır hissettiğiniz bir saate ayarlayabilirsiniz.
* Repeat task every'e tıklayıp 5 minutes'i; devamındaki for a duration of'u ise Indefinitely olacak şekilde seçiyoruz. Ancak siz bu görevi belli bir zaman sonra da bitirebilirsiniz.
* Stop task if it runs longer than'i 30 minutes seçiyoruz. Kodun sonsuz döngüye girmesi gibi durumlarda 30 dakika sonra görev sonlansın demektir.
Actions sekmesi:
New diyoruz.
* Program/script bölümüne python.exe'nin olduğu dosya yolunu yapıştırıyoruz. Bunu da cmd'yi açıp where python komutu ile bulabilirsiniz. Örneğin bende, C:\Users\Uraz\AppData\Local\Programs\Python\Python312\python.exe
* Add arguments (optional) bölümüne çalıştırmak istediğimiz Python dosyasını yazıyoruz. Örneğin bende, x_post12.py
* Start in (optional) bölümüne ise çalıştırmak istediğimiz Python dosyasının dosya yolunu yapıştırıyoruz. Dosyayı nereye kaydettiyseniz klasörün içinden yolu alabilirsiniz. Örneğin bende, C:\Users\Uraz\Desktop\X-posts\X-post12
Settings sekmesi:
Burası normalde yok ama görev ilk defa çalıştıktan sonra bir daha çalışmıyor. The operator or administrator has refused the request uyarısı veriyor. Bunu aşmak için Settings sekmesinden If the task is already running, then the following rule applies cümlesinin altındaki açılır menüden Stop the existing instance'ı seçin.
En son genel bir OK deyince şifre sorabilir. Buraya PC şifrenizi giriyorsunuz ve görev açılıyor. Task Scheduler ekranından görebilirsiniz.
Artık görevin çalışmasını bekleyeceğiz.
Önce dosyalar kaydedilecek. Sonra bir sekme açılacak. Mesaj gönderilecek ve açılan sekme kapanacak.
İşte bu kadar! 😌
X'te Python postları için oluşturduğum GitHub reposundan kodlara ulaşabilirsiniz.
github.com/urazakgul/X-posts…