IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   mIRC Parça Kodlar (https://www.ircforumlari.net/mirc-parca-kodlar/)
-   -   Wikipedia'dan veri çekme (https://www.ircforumlari.net/mirc-parca-kodlar/1061029-wikipediadan-veri-cekme.html)

Che 17 Mayıs 2025 13:20

Wikipedia'dan veri çekme
 
örnek; /wiki Ankara

Kod:

alias wiki {
  if ($1 == $null) { echo -a Lütfen bir arama terimi girin. | return }
  var %term = $replace($1-, $chr(32), %20)
  sockclose wiki
  sockopen wiki tr.wikipedia.org 80
  set %wikiterm %term
}
on *:sockopen:wiki:{
  if ($sockerr > 0) return
  sockwrite -n $sockname GET /w/api.php?action=query&prop=extracts&exintro&explaintext&format=json&titles= $+ %wikiterm HTTP/1.1
  sockwrite -n $sockname Host: tr.wikipedia.org
  sockwrite -n $sockname Connection: close
  sockwrite -n $sockname $crlf
}
on *:sockread:wiki:{
  var %tmp
  sockread %tmp
  if (%tmp != $null) {
    if ($regex(%tmp, /"extract":"([^"]+)"/)) {
      var %summary = $regml(1)
      echo -a Wikipedia özeti: $replace(%summary, \n, $crlf)
    }
  }
}


Feragat 19 Mayıs 2025 21:33

Cevap: Wikipedia'dan veri çekme
 
Merhaba,

Açılan socketin site ile bağlantı kurabilmesi için

Bu satırı:
Kod:

sockopen wiki tr.wikipedia.org 80
Bu şekilde değiştirmek gerekiyor:
Kod:

sockopen -e wiki tr.wikipedia.org 443
Faydalı olabilecek kaynak: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Kolay gelsin.

Comanche 21 Mayıs 2025 15:36

Cevap: Wikipedia'dan veri çekme
 
slmlar...

Bu code çalışmıyor galiba.. Codeyi mrce ekledim, komutuda verdim fakat hiç bir işlem olmuyor. Herhangi bir hatada vermiyor...

Coderlab 21 Mayıs 2025 17:06

Cevap: Wikipedia'dan veri çekme
 
Alıntı:

Feragat Nickli Üyeden Alıntı (Mesaj 1043021735)
Merhaba,

Açılan socketin site ile bağlantı kurabilmesi için

Bu satırı:
Kod:

sockopen wiki tr.wikipedia.org 80
Bu şekilde değiştirmek gerekiyor:
Kod:

sockopen -e wiki tr.wikipedia.org 443
Faydalı olabilecek kaynak: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Kolay gelsin.

bu iş öyle sadece sockopen -e ile olmaz json parse + chunk decode edilmesi lazım. onun içinde mirc byte sınırlamasına takılacak. en mantıklısı txt kaydettirip echolatmak gibi görünüyor.

Feragat 21 Mayıs 2025 17:29

Cevap: Wikipedia'dan veri çekme
 
Alıntı:

Coderlab Nickli Üyeden Alıntı (Mesaj 1043022593)
bu iş öyle sadece sockopen -e ile olmaz json parse + chunk decode edilmesi lazım. onun içinde mirc byte sınırlamasına takılacak. en mantıklısı txt kaydettirip echolatmak gibi görünüyor.

Özür dilerim cahilliğime ve aptallığıma verin.

Coderlab 21 Mayıs 2025 18:05

Cevap: Wikipedia'dan veri çekme
 
Alıntı:

Feragat Nickli Üyeden Alıntı (Mesaj 1043022614)
Özür dilerim cahilliğime ve aptallığıma verin.

estf. öyle bi imada bulunmadı. sadece remote nin sadece -e parametresi ile çalışmayacagını belirttim.

--IRCForumlari.NET ; Flood Engellendi -->-> Yeni yazılan mesaj 18:02 -->-> Daha önceki mesaj 17:43 --

Alıntı:

Coderlab Nickli Üyeden Alıntı (Mesaj 1043022618)
estf. öyle bi imada bulunmadı. sadece remote nin sadece -e parametresi ile çalışmayacagını belirttim.

Mirc ile json parse edilmemiş veriyi özellikle çok uzunsa almak biraz sıkıntı bunun yerine basit bi php yapısıyla kolaylıkla bu iş hallolur.
Aşağıya gereken php betigi ile mirc remotesini bırakıyorum.

wiki.php

Kod:

<?php
if (!isset($_GET['kelime'])) exit;
$kelime = $_GET['kelime'];
$url = "https://tr.wikipedia.org/w/api.php?action=query&prop=extracts&exintro&explaintext&format=json&titles=" . urlencode($kelime);
$json = file_get_contents($url);
$data = json_decode($json, true);
$page = array_values($data['query']['pages'])[0];
$extract = iconv("UTF-8", "Windows-1254//TRANSLIT", $page['extract']);

header('Content-Type: text/plain; charset=windows-1254');
echo $extract;

Mirc için gerekli kod:

Kod:

alias wiki {
  if ($1 == $null) { echo -a 4 Kullanım: /wiki <kelime> | return }
  var %term = $replace($1-, $chr(32), +)
  sockclose wiki
  if ($isfile(wikipedia_db.txt)) { .remove wikipedia_db.txt }
  set %wikiKelime %term
  set %wikwik 0
  sockopen -e wiki siteadresiniz.com 443
  echo -a 3 HTTPS ile bağlanılıyor: %term
}
on *:sockopen:wiki:{
  sockwrite -n $sockname GET /wiki.php?kelime= $+ %wikiKelime HTTP/1.1
  sockwrite -n $sockname Host: siteadresiniz.com
  sockwrite -n $sockname Connection: close
  sockwrite -n $sockname $crlf
}
on *:sockread:wiki:{
  var %line
  sockread %line
  if ($sockerr) return

  if (%wikwik == 0) {
    if (%line == $null) {
      set %wikwik 1
    }
    return
  }

  while ($len(%line) > 0) {
    write wikipedia_db.txt $left(%line, 400)
    var %line = $mid(%line, 401)
  }
}
on *:sockclose:wiki:{
  if (!$isfile(wikipedia_db.txt)) {
    echo -a 3 Veri alınamadı
    unset %wikiKelime
    unset %wikwik
    return
  }

  var %i = 1
  echo -a 4 Wikipedia Özeti: %wikiKelime
  while ($read(wikipedia_db.txt, %i) != $null) {
    echo -a $read(wikipedia_db.txt, %i)
    inc %i
  }

  echo -a 4 https://tr.wikipedia.org/wiki/ $+ %wikiKelime

  .remove wikipedia_db.txt
  unset %wikiKelime
  unset %wikwik
}

mirc codesinin içerisindeki siteadresiniz.com kısmını kendi sitenize göre düzenledikten sonra wiki.php dosyasını sitenizin public_html/ kök dizinine atmanız yeterli.

Not: siteadresiniz.com (HTTPS) yani SSL li olması gerektigini unutmayın.

sonrasında Mircinizde

Kod:

/wiki ankara
/wiki adana

şeklinde kullanabilirsiniz.

Hayırlı IF'ler.

--IRCForumlari.NET ; Flood Engellendi -->-> Yeni yazılan mesaj 18:05 -->-> Daha önceki mesaj 18:02 --

Belirtmeyi unutmuşum /wiki ankara yazdıgınızda MIRC'te önünüze bi GÜVENLİK UYARISI cıkar https:// baglanmaya çalıştıgınız için onu Kabul Etmeniz Gerekmekte.

Feragat 21 Mayıs 2025 22:35

Cevap: Wikipedia'dan veri çekme
 
Alıntı:

Coderlab Nickli Üyeden Alıntı (Mesaj 1043022618)
estf. öyle bi imada bulunmadı. sadece remote nin sadece -e parametresi ile çalışmayacagını belirttim.[COLOR="Silver"]

Ben kodun site ile bağlantı kurması açısından söylemiştim. Elbette gelen veri düzenli olmayacaktı.
Çıkan karakter hataları aliastaki gibi replace edilebilir.
Tabi farklı yollar da güzeldir.
Web sitesi olmayanlar bu yolu deneyebilirler.
Test ettiğim mirc versiyonu 7.77
Kolay gelsin.


Örnek:
Kod:

alias conv {
  return $replace($1-,\u00fc,ü, \u015f, ş, \u011f, ğ, \u00e7, ç, \u00c7, Ç, \u00e2, â, \u0131, ı, \u0130, i, \u00f6, ö, \u015e, Ş)
}

alias wiki {
  if ($1 == $null) { echo -a Lütfen bir arama terimi girin. | return }
  var %term = $replace($1-, $chr(32), %20)
  sockclose wiki
  sockopen -e wiki tr.wikipedia.org 443
  set %wikiterm %term
}
on *:sockopen:wiki:{
  if ($sockerr > 0) { echo -a HATA: $sock($sockname).wsmsg ** sock($sockname).wserr | return }
  sockwrite -n $sockname GET /w/api.php?action=query&prop=extracts&exintro&explaintext&format=json&titles= $+ %wikiterm HTTP/1.1
  sockwrite -n $sockname Host: tr.wikipedia.org
  sockwrite -n $sockname Connection: close
  sockwrite -n $sockname $crlf
}
on *:sockread:wiki:{
  var %tmp
  sockread %tmp
  if (%tmp != $null) {
    if ($regex(%tmp, /"extract":"([^"]+)"/)) {
      var %summary = $regml(1)
      echo -a Wikipedia özeti: $conv($replace(%summary, \n, $crlf))
    }
  }
}

Sonuç:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Coderlab 22 Mayıs 2025 00:17

Cevap: Wikipedia'dan veri çekme
 
Alıntı:

Feragat Nickli Üyeden Alıntı (Mesaj 1043022757)
Ben kodun site ile bağlantı kurması açısından söylemiştim. Elbette gelen veri düzenli olmayacaktı.
Çıkan karakter hataları aliastaki gibi replace edilebilir.
Tabi farklı yollar da güzeldir.
Web sitesi olmayanlar bu yolu deneyebilirler.
Test ettiğim mirc versiyonu 7.77
Kolay gelsin.


Örnek:
Kod:

alias conv {
  return $replace($1-,\u00fc,ü, \u015f, ş, \u011f, ğ, \u00e7, ç, \u00c7, Ç, \u00e2, â, \u0131, ı, \u0130, i, \u00f6, ö, \u015e, Ş)
}

alias wiki {
  if ($1 == $null) { echo -a Lütfen bir arama terimi girin. | return }
  var %term = $replace($1-, $chr(32), %20)
  sockclose wiki
  sockopen -e wiki tr.wikipedia.org 443
  set %wikiterm %term
}
on *:sockopen:wiki:{
  if ($sockerr > 0) { echo -a HATA: $sock($sockname).wsmsg ** sock($sockname).wserr | return }
  sockwrite -n $sockname GET /w/api.php?action=query&prop=extracts&exintro&explaintext&format=json&titles= $+ %wikiterm HTTP/1.1
  sockwrite -n $sockname Host: tr.wikipedia.org
  sockwrite -n $sockname Connection: close
  sockwrite -n $sockname $crlf
}
on *:sockread:wiki:{
  var %tmp
  sockread %tmp
  if (%tmp != $null) {
    if ($regex(%tmp, /"extract":"([^"]+)"/)) {
      var %summary = $regml(1)
      echo -a Wikipedia özeti: $conv($replace(%summary, \n, $crlf))
    }
  }
}

Sonuç:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Öncelikle şunu belirteyim: mirc 6.x sürümlerde çalışmaz kodunuz


mirc 7 de elbette çalışabilir. ama mirc 6.x ve alt sürümlerde hani imkansız demiyim uğraşılsa illaki olur. ama byte sınırlaması sıkıntılı oldugu için json parse edilmesi biraz sıkıntılı. özellikle uzun verilerde. 7 yide tr de şuan kaç kişi kullanıyordur Allah bilir. malesef millet olarak hep geriden geliyoruz teknolojide daha dogrusu seviyoruz sanırım geri yi. bunun en güzel örnegi unreal3.2.x i bizden baska bu kadar kullanan varmıdır Dünya'da orası meçhul :) En iyi çalışan sistem sıkıntısız çalışsan sistemdir mantıgıyla devam. yapacak bişi yok.

"Ben kodun site ile bağlantı kurması açısından söylemiştim" olarak belirtmişsiniz de bi üst mesajda arkadaş çalışmadıgını sormuş sizde cevap olarak sockopen -e kullanılması gerektigini söylemişsiniz. yani şöyle bi izlenim oluştu bende görünce cevabınızı hani sockopen -e kullanırsanız sorununuz çözülür tarzı. olayların akışına göre degerlendirmiştim. yanlış anladıysam k.bakmayın tekrardan.

--IRCForumlari.NET ; Flood Engellendi -->-> Yeni yazılan mesaj 00:17 -->-> Daha önceki mesaj 00:15 --

Alıntı:

Coderlab Nickli Üyeden Alıntı (Mesaj 1043022782)
Öncelikle şunu belirteyim: mirc 6.x sürümlerde çalışmaz kodunuz


mirc 7 de elbette çalışabilir. ama mirc 6.x ve alt sürümlerde hani imkansız demiyim uğraşılsa illaki olur. ama byte sınırlaması sıkıntılı oldugu için json parse edilmesi biraz sıkıntılı. özellikle uzun verilerde. 7 yide tr de şuan kaç kişi kullanıyordur Allah bilir. malesef millet olarak hep geriden geliyoruz teknolojide daha dogrusu seviyoruz sanırım geri yi. bunun en güzel örnegi unreal3.2.x i bizden baska bu kadar kullanan varmıdır Dünya'da orası meçhul :) En iyi çalışan sistem sıkıntısız çalışsan sistemdir mantıgıyla devam. yapacak bişi yok.

"Ben kodun site ile bağlantı kurması açısından söylemiştim" olarak belirtmişsiniz de bi üst mesajda arkadaş çalışmadıgını sormuş sizde cevap olarak sockopen -e kullanılması gerektigini söylemişsiniz. yani şöyle bi izlenim oluştu bende görünce cevabınızı hani sockopen -e kullanırsanız sorununuz çözülür tarzı. olayların akışına göre degerlendirmiştim. yanlış anladıysam k.bakmayın tekrardan.


pardon bi üst mesajda olarak belirtmişim alt mesajda olacak orası. dedigim gibi yanlış anlamışım o kısmı. özür dilerim.

Comanche 09 Temmuz 2025 10:17

Cevap: Wikipedia'dan veri çekme
 
Ülkemizde font sounundan dolayı mrc 7.x serisi fazla kullanılmıyor. Kod keşke 6.x serisine uygun hale getirilebilse cok iyi olurdu.


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 14:27.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk