Üstümüzdeki yıldızlar her zaman bir merak ve bilgi kaynağı olmuştur. İnsanları aya gönderen ve Apollo 13’ü güvenli bir şekilde Dünya’ya geri getirmeyi başaran Apollo programını çocukluğumdan öğrendim.
Uzay çok güzel, nebulalar, yıldızlar, gezegenler ve diğer astronomik nesnelerle dolu ve ne mutlu ki NASA’nın radyo teleskoplarından, gözlemevlerinden ve uydulardan alınan günlük görüntüleri görmek için kullanabileceğimiz ücretsiz bir kaynağı var. Bu nasıl yapılır kitabında, Windows 10 ve 11 duvar kağıdımızı en son astronomik görüntüye değiştirmek için NASA’nın ücretsiz hizmetini nasıl kullanacağımızı öğreneceğiz.
NASA API Anahtarı Alma
NASA, kaynaklarının kullanımını gerçekten kolaylaştırıyor ancak kaynaklarından en iyi şekilde yararlanmak için bir API anahtarına ihtiyacımız var. API (Uygulama Programlama Arayüzü), uygulamaların bir şirket (veya bizim durumumuzda NASA) tarafından sağlanan kaynakları kullanmasına yönelik bir araçtır. Arayüz, iki veya daha fazla makinenin birbiriyle konuşmasına ve istekte bulunmasına izin verir. Bu projede günlük Günün Astronomi Resmini (APOD) elde etmek için NASA API’sini kullanacağız.
1. Bir tarayıcıda şu adrese gidin: NASA’nın API sayfası ve bir API anahtarı için kaydolun. Ücretsizdir ve binlerce NASA kaynağına erişim sağlar.
2. API anahtarı için e-postanızı kontrol edin, bunu el altında bulundurun ancak kimseyle paylaşmayın.
Python ortamını ayarlama
Proje kodumuzda ekstra özellikler sağlamak için ekstra iki Python kütüphanesi (modül) kurmamız gerekiyor. İlk olarak Win11Tost Uygulama çalıştığında başarı/başarısızlık mesajlarını göstermek için kullandığımız Windows 10 ve 11 için bir açılır bildirim aracı. İkinci kütüphane ise pyinstallerPython projelerini ve bağımlılıklarını tek bir yürütülebilir dosyada paketleyen son derece kullanışlı bir araç. Daha önce bu uygulamanın yürütülebilir dosyalar oluşturmak için bir GUI’si olan Auto Py to Exe’yi kullanmıştık, ancak bu nasıl yapılır bölümünde sadece basit bir yürütülebilir dosyaya ihtiyacımız var.
Bu nasıl yapılacağına başlamadan önce, Windows 10/11 bilgisayarınızda Python’un kurulu olduğundan emin olun. bizde bir bunu nasıl kapatacağız.
1. Bir Komut İstemi açın. Windows tuşuna basın ve CMD yazın ve Enter’a basın.
2. İki kitaplığı yüklemek için Python paketleme aracı olan pip’i kullanın.
pip install win11toast
pip install pyinstaller
Proje kodunun yazılması
API key ve Python ortam kurulumu ile artık proje kodunu yazmaya başlayabiliriz. Biz Thonny Python düzenleyicisini kullanıyoruz, ancak siz herhangi bir düzenleyiciyi kullanabilirsiniz. Notepad++ ve Microsoft’un VS Code’u harika alternatiflerdir.
1. Boş bir proje sayfasında üç kütüphaneyi içe aktararak başlayın. İstekler, NASA API’sinden veri istemek için kullanılır. Ctype’ler kodumuzun Windows DLL’lerinde değişiklik yapmasını sağlar. Sadece “tost”u içe aktaran Win11toast, Windows’ta açılır bildirimler yapmak için kullanılır.
import requests
import ctypes
from win11toast import toast
2. “URL” adında bir nesne oluşturun ve API isteği URL’sini API anahtarınızla birlikte burada saklayın. Anahtarınız URL’deki = işaretinden sonra gelmelidir.
url = "https://api.nasa.gov/planetary/apod?api_key=YOUR_API_KEY_HERE”
3. Bir “r” nesnesi oluşturun ve bunu, NASA API’sine yapılan bir istekten döndürülen verileri depolamak için kullanın.
r = requests.get(url)
4. “r” nesnesinde veri olup olmadığını kontrol etmek için ilk koşullu testi oluşturun. Eğer bu doğruysa, o zaman bir dizi görev gerçekleştirilir.
if r:
5. “APOD” adında bir nesne oluşturun ve bunu APOD’a ilişkin JSON verilerini depolamak için kullanın. Temel olarak bu bize, JSON nesnesinde bir değer olarak saklanan günün APOD görüntüsünün URL’sini verecektir.
APOD = r.json()['url']
6. “pic” adında bir nesne oluşturun ve APOD nesnesini kullanarak görüntüyü NASA API’sinden isteyin. Bu, dosyayı belleğe indirir, henüz diske dosya olarak yazılmamıştır.
pic = requests.get(APOD, allow_redirects=True)
7. APOD güncellemesinin bir video değil JPEG görüntüsü olduğunu kontrol etmek için ek bir koşullu test ekleyin. O güne ait görsel yoksa Windows’ta kullanıcıya bunu bildiren bir bildirim açılır. NASA, APOD’u her gün günceller, ancak bazı günler güncelleme bir YouTube videosu şeklindedir. Bu hata işleme testi olmadan video güncellemesi sağlandığında kod başarısız olur.
if "jpg" not in APOD:
toast("No image for today, must be a YouTube video 📺")
8. Başka bir koşul kullanarak, kullanıcı hesabınızın Resimler dizininde APOD.jpg adlı bir dosyayı açın ve ardından bellekte saklanan görüntüyü dosyaya yazın. Kullanıcı hesabı adını kendi hesabınızla eşleşecek şekilde değiştirin, bizimki lespo’dur. Dosya yoluna çift ters eğik çizgi (\\) eklemeyi unutmayın, aksi takdirde Python kaçış karakterlerini kullanmak istediğimizi düşünecektir.
else:
open("C:\\Users\\lespo\\Pictures\\APOD.jpg", "wb").write(pic.content)
9. Duvar kağıdını APOD.jpg dosyasına ayarlamak için ctypes’i kullanarak DLL’yi güncelleyin. Tam dosya yolunu kullanmayı unutmayın.
ctypes.windll.user32.SystemParametersInfoW(20, 0, "C:\\Users\\lespo\\Pictures\\APOD.jpg", 3)
10. Tost kullanarak kullanıcıya görüntünün değiştirildiğini bildiren bir açılır mesaj oluşturun. Bildirimlerimizde emoji kullanabiliriz, emojilerimizi buradan aldık Emojipedia.
toast("Enjoy the latest image from NASA 🚀")
11. Orijinal if..else koşullu ifadesine dönersek (APOD’un bir görüntü veya video olup olmadığını ele alır), başka bir koşul ekleyin ve bunu Python REPL’e “Hata” yazdırmak için kullanın.
else:
print("Error")
12. Kodu apod.py olarak kaydedin ve ardından düzenleyicide çalışıp çalışmadığını test edin. Thonny’de Çalıştır’a tıkladık ve değişen görselle birlikte açılır bildirim penceresini gördük.
Bildirimleri göremiyorum!
Kodu çalıştırırken Python REPL bir hata üretti, “win11toast (
1. Ayarlar’a gidin ve Sistem’i seçin.
2. Bildirimler ve eylemler’i seçin ve ardından bildirimleri açın. Alacağınız bildirimlerin ayrıntı düzeyi, onay kutuları kullanılarak değiştirilebilir.
3. Uygulama penceresini kapatın ve bildirimlerin göründüğünden emin olmak için kodunuzu yeniden deneyin.
Yürütülebilir bir dosya oluşturma
Proje kodu test edildiğinde ve çalıştığında dikkatimiz yürütülebilir bir dosya oluşturmaya yönelir. Bunu yaparak dosyayı herhangi bir Windows bilgisayarına bırakabiliriz ve işe yarayacaktır. Bunu, uygulamanın çalışacağı Python ortamının anlık görüntüsünü alan pyinstaller kullanarak yapar. Daha sonra yürütülebilir dosyanın içinde kendi ortamını yaratır. Yani kullandığımız tüm kütüphaneler (requests, ctypes, win11toast vs.) dosya içerisinde paketlenmiştir, yani onları hedef sisteme kurmamıza gerek yoktur. Bu aynı zamanda yürütülebilir dosyayı başlangıç dizinine bırakabileceğimiz anlamına da gelir, ancak bu konuya daha sonra değineceğiz.
1. Bir Komut İstemi açın. Windows tuşuna basın ve CMD yazın ve Enter’a basın.
2. Proje kodunun bulunduğu dizine gidin.
3. pyinstaller’ı -F argümanıyla çalıştırın ve proje dosyasının adını iletin. -F kullanılması tüm Python ortamını tek bir dosyada sıkıştıracaktır.
pyinstaller -F apod.py
4. İşlemin bitmesini bekleyin ve ardından Komut İstemi’ni kapatın.
5. Proje kodunun kaydedildiği dizini açın ve “dist” dizinini arayın ve açın. İçinde yürütülebilir dosya var.
6. Test etmek için dosyaya çift tıklayın. Resmin değiştirildiğini / bunun bir YouTube videosu olduğunu belirten bildirim açılır. Bu dosyanın çalıştığını kanıtlar.
Duvar kağıdını otomatik olarak değiştirme
Duvar kağıdımızı değiştirmek için yürütülebilir dosyaya çift tıklamak çok zor değil, peki ya Windows bunu bizim için yapabilseydi? Yürütülebilir dosyayı, Windows her başlatıldığında çalıştırılacağı başlangıç dizinine taşıyacağız.
1. Çalıştır iletişim kutusunu açmak için Windows ve R tuşlarına basın ve Shell:startup yazın.
2. Apod.exe dosyasını dist klasöründen Başlangıç klasörüne kopyalayın. Bu, uygulamayı Windows başlatıldığında çalışacak şekilde ayarlayacaktır.
3. Pencereyi kapatın, Windows’u yeniden başlatın ve paneldeki bildirimi izleyin.