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

>
+
Etiketlenen Kullanıcılar

2Beğeni(ler)
  • 2 Post By Heartbroken

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 09 Kasım 2021, 22:51   #1
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
GoogleNews .Tcl




Orjinali nrt (SayWhat) Tarafından
Yazılmış: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


Daha Sonraları "karakedi" Tarafından
Güncellenmiş GoogleNews
Haber Başlıklarını RSS Linki Üzerinden
Alıp #Kanalınıza Postalayan Bir Scripttir.
36 Ayrı Dil/Ülke Haber Başlıkları Okuyabilir.
(Türkçe / Türkiye İçin:
set newslang Ayarı 2 Seçilmelidir!)


Geçenlerde Şurada: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Konusu Açılması Üzerine,
Google'ın O Zamandan Bu Yana Yaptığı
Değişikliklere Göre Güncellediğim Koddur!



Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.



Tcl8.6 ,tDom ,TclTLS ,tcllib Gerektirir!


Not: Bu Arada Tcl 8.6.12 Birkaç Gün Evvel Çıktı:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
tDom: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
TclTLS: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
tcllib: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]



Kod:   Kodu kopyalamak için üzerine çift tıklayın!
# Google news v0.3 by nrt (01Dec2015) # Updated GoogleNews Country links and added some more lines for redirected link support (04Jan2018) karakedi package require tdom package require http package require htmlparse package require textutil::split package require tls 1.6.4 package present Tcl 8.6 set ::oldnews [list ] set googlelink {https://news.google.com/news/rss/headlines/section/topic/NATION} # Bir Satırdaki Maksimum Karakter Sayısı set newsmax 412 # Linkler TinyUrl Olarak Kısaltılsın Mı? set tinyurl 1 # 1 = US_en (U.S.A), 2 = TR (Turkey) , 3 = FR (France), 4 = DE (Germany), 5 = UK_en (U.K) , 6 = RU (Russia) # 7 = IT (Italy) , 8 = NL (Netherlands) , 9 = AU_en (Australia) , 10 = PT (Portugal) , 11 = AR (Arabian World) , 12 = AT_de (Austria) # 13 = BE_fr (Belgium) , 14 = BR_pt (Brazil) , 15 = BG (Bulgaria) , 16 = CA_en (Canada) , 17 = NZ_en (New Zealand) , 18 = PL (Poland) # 19 = RO (Romania) , 20 = CS (Czech Republic) , 21 = NO (Norway) , 22 = CH_fr (Switzerland) , 23 = SV (Sweden) , 24 = SR (Serbia) # 25 = CN_zh (China) , 26 = JA (Japan) , 27 = GR (Greece) , 28 = LT (Lithuania) , 29 = IN_en (India) , 30 = HU (Hungary) # 31 = AR (Argentina) , 32 = ID (Indonesia) , 33 = MY (Malaysia) , 34 = BN (Bangladesh) , 35 = MX (Mexico) , 36 = PK_en (Pakistan) # Haber Alınacak Dil/Ülke Seçimi set newslang 2 # Şu Kadar Dakikadan Eski Olan Haber Başlıkları Tekrar Postalanmayacak. set headlinedelay 40 # .topnews Komutuyla Gösterilecek Haber Sayısı? set TopNewsPosts 4 # .news on <- #Kanalıızda Aktif Eder / .news off <- Kapatır. setudef flag googlenews bind pub mnf|oa ".news" news_control bind evnt - init-server news_refresh bind pub mnf|oa ".topnews" Google_TopNews if {[package vcompare [package present tls] 1.7] > 0} { ::http::register https 443 [list ::tls::socket -autoservername 1] } else { ::http::register https 443 [list ::tls::socket -request 0 -require 1 -ssl2 0 -ssl3 0 -tls1 1] } proc Google_TopNews {nick uhost hand chan arg} { if {![channel get $chan googlenews]} { return 0 } set doc [dom parse [getit [langSel]]] set root [$doc documentElement] set i 0 foreach id [$root selectNodes "/rss/channel/item"] { set desc [[$id selectNodes "description"] text] set Date [[$id selectNodes "pubDate"] text] set newsurl [[$id selectNodes "link"] text] set newstime [lsort -integer -decreasing -index end [clock scan $Date]] set news "[dom_trim $desc] [news_tiny [getRealLink [dom_trim $newsurl]]]\ ([duration [expr {[clock seconds] - $newstime}]] ago.)" if {$i == $::TopNewsPosts} break news_print $chan "[htmlparse::mapEscapes $news]" incr i } $doc delete } proc langSel {} { switch -exact -- $::newslang { 1 { set url {us&hl=en&gl=US} } 2 { set url {tr_tr&hl=tr&gl=TR} } 3 { set url {fr&hl=fr&gl=FR} } 4 { set url {de&hl=de&gl=DE} } 5 { set url {uk&hl=en-GB&gl=GB} } 6 { set url {ru_ru&hl=ru&gl=RU} } 7 { set url {it&hl=it&gl=IT} } 8 { set url {nl_nl&hl=nl&gl=NL} } 9 { set url {au&hl=en-AU&gl=AU} } 10 { set url {pt-PT_pt&hl=pt-PT&gl=PT} } 11 { set url {ar_me&hl=ar&gl=ME} } 12 { set url {de_at&hl=de-AT&gl=AT} } 13 { set url {fr_be&hl=fr&gl=BE} } 14 { set url {pt-BR_br&hl=pt-BR&gl=BR} } 15 { set url {bg_bg&hl=bg&gl=BG} } 16 { set url {ca&hl=en-CA&gl=CA} } 17 { set url {nz&hl=en-NZ&gl=NZ} } 18 { set url {pl_pl&hl=pl&gl=PL} } 19 { set url {ro_ro&hl=ro&gl=RO} } 20 { set url {cs_cz&hl=cs&gl=CZ} } 21 { set url {no_no&hl=no&gl=NO} } 22 { set url {fr_ch&hl=fr-CH&gl=CH} } 23 { set url {sv_se&hl=sv&gl=SE} } 24 { set url {sr_rs&hl=sr&gl=RS} } 25 { set url {cn&hl=zh-CN&gl=CN} } 26 { set url {jp&hl=ja&gl=JP} } 27 { set url {el_gr&hl=el&gl=GR} } 28 { set url {lt_lt&hl=lt&gl=LT} } 29 { set url {in&hl=en-IN&gl=IN} } 30 { set url {hu_hu&hl=hu&gl=HU} } 31 { set url {es_ar&hl=es-419&gl=AR} } 32 { set url {id_id&hl=id&gl=ID} } 33 { set url {en_my&hl=en-MY&gl=MY} } 34 { set url {bn_bd&hl=bn&gl=BD} } 35 { set url {es_mx&hl=es-419&gl=MX} } 36 { set url {en_pk&hl=en&gl=PK} } default { set url {us&hl=en&gl=US} } } return ${::googlelink}?ned=$url } proc news_refresh type { foreach chan [channels] newsbind [binds time] { if {([lsearch -exact [channel info $chan] "+googlenews"] != "-1")\ && ![string match "*Google:News*" $newsbind]} { bind time - "*" Google:News return 1 } } } proc news_control {nick uhost hand chan text} { switch -nocase -- [lindex [split $text] 0] { "on" { if {[channel get $chan googlenews]} { puthelp "privmsg $chan :News already running @ $chan" } { bind time - "*" Google:News channel set $chan +googlenews puthelp "privmsg $chan :News now enabled @ $chan" } } "off" { if {![channel get $chan googlenews]} { puthelp "privmsg $chan :News already disabled @ $chan" } { unbind time - "*" Google:News channel set $chan -googlenews puthelp "privmsg $chan :News now stopped @ $chan" } } default { puthelp "privmsg $chan :Usage: $::lastbind <on/off>" } } return 0 } proc getit url { if {[catch {set token [http::geturl $url -binary 1 -timeout 15000]} error]} { putcmdlog "[string map [list \n " "] $error]" return 0 } elseif {[string match *[http::ncode $token]* "307|303|302|301"]} { upvar #0 $token state if {[dict exists $state(meta) Location]} { set newurl [dict get $state(meta) Location] ::http::cleanup $token if {[catch {set newtok [http::geturl $newurl -binary 1 -timeout 15000]} err]} { putcmdlog "[string map [list \n " "] $err]" return 0 } elseif {[http::status $newtok] eq "ok" && [http::ncode $newtok] == "200"} { set data [http::data $newtok] ::http::cleanup $newtok } else { putcmdlog "[http::status $newtok] - [http::code $newtok]" ::http::cleanup $newtok } } ::http::cleanup $token } elseif {[http::status $token] eq "ok" && [http::ncode $token] == "200"} { set data [http::data $token] ::http::cleanup $token } else { putcmdlog "[http::status $token] - [http::code $token]" ::http::cleanup $token } if {[info exists data]} { return [encoding convertfrom utf-8 $data] } } proc newsdom {} { set document [dom parse [getit [langSel]]] set root [$document documentElement] foreach id [$root selectNodes "/rss/channel/item"] { set description [[$id selectNodes "description"] text] set pubDate [[$id selectNodes "pubDate"] text] set newsurl [[$id selectNodes "link"] text] lappend news "[dom_trim $description] | [dom_trim $newsurl] | [clock scan [dom_trim $pubDate]]" } $document delete set listnews [lindex [lsort -integer -decreasing -index end $news] 0] return [join [htmlparse::mapEscapes $listnews]] } proc news_print {where what} { regexp {^(.*?)(http(?:s|)://[^\s]+)(.*?)$} $what - res links _ set output [textutil::split::splitn $what $::newsmax] if {[string match *${links}* $output]} { lmap newsout $output { puthelp "privmsg $where :$newsout" } } else { lmap newsout [textutil::split::splitn $what [string length $res]] { puthelp "privmsg $where :$newsout" } } } proc dom_trim str { regsub -all -nocase {(?:<strong>|</strong>|<b>|</b>)} $str \002 str regsub -all -- {<font color="#6f6f6f">(.*?)</font>} $str "(\00304\\1\003)" str set str [string map [list &lt\; \u003c &gt\; \u003e &nbsp\; \u0020 \" \u0027] $str] regsub -all -- "<.+?>" $str { } str regsub -all -- {\s+} $str \u0020 str set str [string map {"View Full coverage on Google News" ""} $str] return [string trim $str] } proc news_tiny link { set tinyurl [getit http://tinyurl.com/api-create.php?[http::formatQuery url $link]] if {[info exists tinyurl] && [string length $tinyurl]} { return $tinyurl } else { return $link } } proc getRealLink RealURL { set TokLink [http::geturl [string trim $RealURL]] upvar #0 $TokLink state set RealLink [dict get $state(meta) Location] ::http::cleanup $TokLink if {[info exists RealLink] && [string length $RealLink]} { return $RealLink } { return $RealURL } } proc Google:News args { foreach chan [channels] { if {[channel get $chan googlenews]} { set news [newsdom] set newsdesc [lindex [split $news |] 0] set newslink [getRealLink [lindex [split $news |] end-1]] set newstime [string trim [lindex [split $news |] end]] #scan $newsdesc {%[^(]} headline if {(![string match *$newslink* $::oldnews] && [expr {([clock seconds] - $newstime) < ($::headlinedelay * 60)}]) || ![llength $::oldnews]} { if {$::tinyurl < "1" || ![string length $::tinyurl]} { news_print $chan "$newsdesc : $newslink ([duration [expr {[clock seconds] - $newstime}]] ago.)" } else { news_print $chan "$newsdesc : [news_tiny [string trim $newslink]] ([duration [expr {[clock seconds] - $newstime}]] ago.)" } set ::oldnews "$newsdesc $newslink" } } } return 0 } putlog "ok..."


__________________
Beş Tas Has Hoş Hoşaf.

Konu Heartbroken tarafından (09 Kasım 2021 Saat 22:59 ) değiştirilmiştir.
 
Alıntı ile Cevapla

Alt 13 Kasım 2021, 22:02   #2
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: GoogleNews .Tcl




Eline emeğine sağlık.

__________________
char *adres = [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] for(int i = 0; *(adres + i); i++) { putchar(toupper(adres[i])); }
 
Alıntı ile Cevapla

Cevapla

Etiketler
eggdrop, googlenews, haber, nrt, rss, saywhat, tcl


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık