Site Üzerinden Rastgele Bir Satır Okumak – Bilimsel Gaflar
tr.wikiquote.org sitesinde birçok ünlü söz bulunmakta. Bu sözler kategorilere göre ayrılmakta. Bu örneğimizde Bilimsel Gaflar bölümünde olan herhangi bir gafı CEYD-A ya söyletelim.
Bu komut CEYD-A lara yayıldığında siz de başka konuda örnekler oluşturabilirsiniz.
Nasıl yapıldığına gelince..
Önce https://tr.wikiquote.org/wiki/Bilimsel_gaflar sitesinin Mobil görüntülü sayfasına gidip html kodunu açalım.
Sayfanın kodu aşağıdaki gibidir. Tarayıcınızda Control-U tuşlarına basarak aşağıdaki gibi bir kod görmeniz mümkün. Bizim alacağımız alan işaretli olarak gösterilen alanın içindeki <ul> alanları. Her <ul> alanında gaf bulunmakta, sonrasında gelen <dl><dd> ler içinde de kimin söylediği bilgisi bulunmakta.
Cevap şablonunda sayfayı okuyoruz ve doc değişkenine atıyoruz. arr değişkenine işaretli olan yerden sonraki tüm ul leri alıyoruz. Bu işlem sırasında statik olan fetchtagsize değişkenine kaç tane ul olduğu bilgisi yazılıyor. Diyelim 52 tane ul var o zaman toplamda 52 gaf bilgisi var. rastgele değişkenine 0 52 arası rastgele bir değer atıyoruz. Yani herhangi bir gafı seçtiriyoruz. Son 2 satırda ise decodefetchtagsrc ile yazının içindeki ul lerden belirtlediğimiz rastgele satırı yazdırıyoruz. Burada :nth-child sıra bilgisini belirtmekte.
Soru kelimesinde muhakkak olması gereken kelimeleri yazıyoruz. Bu örnekte gaf muhakkak olmalı o yüzden sadece gaf diyebiliriz. Söyleyeceğimiz cümlenin tam seçiciliğini soru şablonu belirtemekte. Başında ve sonunda ne geçerse geçsin ama ortalarda muhakkak bilimsel kelimesi geçsin. Zaten içinde gaf geçiyordu. O zaman içinde hem bilimsel hem de gaf geçen tüm cümleler bunu kapsamakta. Örneğin: bana bir bilimsel gaf söyle, gaf söyle ama bilimsel olsun gibi.
SORU ŞABLONU:.*bilimsel.*
SORU KELİMELERİ:gaf,20|
CEVAP ŞABLONU:
1 2 3 4 5 6 7 |
{!SET doc={!RET loadurlencode https://tr.wikiquote.org/wiki/Bilimsel_gaflar!}!} {!SET arr={!RET decodefetchtagsrc $doc,div[class~=mf-section-.*]>ul!}!} {!SET rastgele={!RET fetchnumeric {!RET random {!GET fetchtagsize!}!}!}!} {!RET decodefetchtagsrc $doc,div[class~=mf-section-.*]>ul:nth-child({!GET $rastgele!})!} {!RET decodefetchtagsrc $doc,dl>dd:nth-child({!GET $rastgele!})!}| |
ÖRNEK KULLANIM:bilimsel bir gaf söyle