12.10.2023

Google Earth'ten duvar kağıtları

Durup durup duvar kağıtlarına takılıyormuşum gibi bir his var içimde [1], [2], [3]. Ama hem masaüstü görüntümü güzelleştirmesi, hem de powershell (veya bash) pratiği olması açısından ilgilenmekten hoşlandığım bir konu.

Yeni gözdem, Google Earth ile elde edilen büyüleyici görüntülerin duvar kağıdı olarak kullanılması. Hedef sitemiz https://earthview.withgoogle.com. Sitedeki resimleri görüntülemek için açılış ekranında gözüken "Explore Images" butonuna basarak ilerlemek gerekiyor. Kaynak kodundan baktığımızda bu aslında bir buton şeklindeki bir <a> HTML tag'i. Bu tag'in href attribute'unda ilk seferde gösterilecek resimlerden birinin bağlantısı rastgele yazılı geliyor. Örneğin şu şekilde

<a class="button intro__explore" href="/camaguey-cuba-13980" title="Explore Earth Views" data-navigo>Explore images</a>

Burada /camaguey-cuba-13980 şeklinde görüntülenen href değerinin sonunda yazan 13980 bizim için önemli. Bunu okumamız lazım. Muhtemel yöntemlerden biri şu:

PS> (((iwr "https://earthview.withgoogle.com").Links | where {$_.title -eq "Explore Earth Views"} | select -expand href) -split "-")[-1]

13980

Anasayfadaki Links nesnesinin süzüp, içinden Title değeri "Explore Earth Views" olanı çekiyorum. Bunun href değerini alııp, "-" karakteri bölümlere ayırıp en sonuncusunu çekiyorum. Bunun sonucunu bir değişkene attığımızı varsayalım. Eğer bu çalışmıyorsa Invoke-WebRequest'i -UseBasicParsing ile kullanmamız gerekiyor olabilir.

Bu butona (bağlantıya) tıklandığında bir sonraki sayfada üst köşede bir indirme butonu geliyor. Bu butonun da href'inde şöyle bir indirme adresi bulunuyor:

https://earthview.withgoogle.com/download/13980.jpg

O zaman bir sonraki adımda indirmek için şunu yapmamız gerekecek

PS> iwr "https://earthview.withgoogle.com/download/13980.jpg" -Outfile "D:\wallpaper\13980.jpg"

Şimdi işi uzatan kısımları değişkenlere atıp bunu tek satırda yazalım:

PS> $url="https://earthview.withgoogle.com";$hedef=(((iwr $url).Links | where {$_.title -eq "Explore Earth Views"} | select -expand href) -split "-")[-1];iwr "$url\download\$hedef.jpg" -Outfile "D:\wallpaper\$hedef.jpg"

Sonraki adımda bunu Windows'a duvar kağıdı olarak ayarlamak için şu yazımda bahsettiğim Set-Wallpaper gibi bir fonksiyon kullanmamız gerek.

Benzer bir şekilde bu işi Linux'ta yapmak için şöyle bir dizi komut kullanılabilir:

TARGET_URL="https://earthview.withgoogle.com"
IMAGE_ID=$(curl -s ${TARGET_URL} | grep -Eio '\/download\/[0-9]{5}.jpg')
curl -s $TARGET_URL$IMAGE_ID -o 'bugunkuresim.jpg'

Tek satırlık bir kod değil, Powershell'in birebir aynısı değil, ama aynı amaca hizmet eder.

Hiç yorum yok: