Ben sizinle böyle bir tcl paylaşayım fakat çalışıyor mu bilmiyorum.. inceleyin bakın yardımcı olmaya çalışırız.
Kod: Kodu kopyalamak için üzerine çift tıklayın!
##############################################################################
# youtube.tcl by SaW #
##############################################################################
# Normal Kullanım : #
# !youtube <aranacak-kelimeler> #
# Örnek : !youtube komik videolar #
# #
# Parametreli Kullanım : #
# !youtube <parametre> <aranacak-kelimeler> #
# #
# Mevcut Parametreler: #
# -nN : Kaç tane sonucun görüntüleneceğini belirler. #
# Örnek : !youtube -n8 komik videolar #
# #
# -tN : Arama sonuçlarının neye göre sıralacağını belirler : #
# N=1 : Normal Sıralama, N=2 : izlenme sayısına göre #
# N=3 : Rating sıralaması, N=4 : Video ekleme tarihine göre sıralar. #
# Örnek : !youtube -t2 komik videolar #
##############################################################################
# 16 Aralık 2008 Salı #
# iletişim:
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. #
##############################################################################
#
## Komutun çalışmasını istediğiniz kanalları aralarına boşluk koyarak belirtiniz.
#
set you(kanal) "#kanal1 #kanal2 #kanal3"
#
## Arama sonrasında kaç sonucunun ekrana yansıtılacağını seçiniz.
#
set you(maxc) 5
#
## Sonuçların neye göre sıralanacağını seçiniz.
## 1= Normal sıralama
## 2= İzlenme sayısına göre
## 3= Rating oranına göre
## 4= Eklenme tarihine göre
#
set you(sertype) 1
###############################################################################
# BURADAN SONRASINA DOKUNMAYINIZ!!!! #
###############################################################################
bind pub - !youtube ytb
if {$you(sertype) == 1} { set you(stype) "" }
if {$you(sertype) == 1} { set you(stype) "&search_sort=video_view_count" }
if {$you(sertype) == 1} { set you(stype) "&search_sort=video_avg_rating" }
if {$you(sertype) == 1} { set you(stype) "&search_sort=video_date_uploaded" }
bind pub - !you ytb
proc ytb {nick uhost hand chan text} {
global you
if {[lsearch -exact $you(kanal) $chan] == -1} {return 0}
set searchtype $you(stype)
set text [split [string trim $text]]
if {$text == ""} {putquick "PRIVMSG $chan :\002Aranacak kelimeyi girmediniz.";return}
if {[llength $text] == 1 && [string match -nocase "$text" help]} {
putquick "privmsg $chan :\002You\0030,4Tube\002\003 Arama şekilleri"
putquick "privmsg $chan :\0032Normal arama :\003 !youtube <aranacak-kelimeler>"
putquick "privmsg $chan :\0032Parametreli arama :\003 !youtube <parametre> <aranacak-kelimeler>"
putquick "privmsg $chan :\002Mevcut Parametreler:"
putquick "privmsg $chan :\0032-nN :\003 Kaç tane sonucun görüntüleneceğini belirler. Örnek : !youtube -n8 komik videolar"
putquick "privmsg $chan :\0032-tN :\003 Arama sonuçlarının neye göre sıralanacağını belirler :"
putquick "privmsg $chan :N=1 : Normal Sıralama, N=2 : izlenme sayısına göre, N=3 : Rating sıralaması, N=4 : Video ekleme tarihine göre sıralar."
putquick "privmsg $chan :Örnek : !youtube -t2 komik videolar"
return 0
}
if {[llength $text] >= 2 && [string match -nocase "-n" [string range [lindex $text 0] 0 1]] && [string length [lindex $text 0]] > 2 && [string length [lindex $text 0]] <= 4 && [string is integer [string range [lindex $text 0] 2 end]] == 1} {
set cmax [string range [lindex $text 0] 2 end] ; set text [lrange $text 1 end]
} else {
set cmax $you(maxc)
}
if {[llength $text] >= 2 && [string match -nocase "-t" [string range [lindex $text 0] 0 1]] && [string length [lindex $text 0]] == 3 && [string length [lindex $text 0]] <= 4 && [string is integer [string range [lindex $text 0] 2 end]] == 1} {
if {[string index [lindex $text 0] 2] == 1} {
set searchtype "" ; set text [lrange $text 1 end]
} elseif {[string index [lindex $text 0] 2] == 2} {
set searchtype "&search_sort=video_view_count" ; set text [lrange $text 1 end]
} elseif {[string index [lindex $text 0] 2] == 3} {
set searchtype "&search_sort=video_avg_rating" ; set text [lrange $text 1 end]
} elseif {[string index [lindex $text 0] 2] == 4} {
set searchtype "&search_sort=video_date_uploaded" ; set text [lrange $text 1 end]
} else {
set searchtype $you(stype) ; set text [lrange $text 1 end]
}
}
if {[llength $text] > 1} {set text [join [split $text " "] +]}
set text [string tolower $text 0 end]
putlog "$text"
if {$searchtype == ""} {
set yousite "
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]"
} elseif {$searchtype != ""} {
set yousite "
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]"
}
set sayfa ""
catch {set sayfa [::http::geturl $yousite -timeout 3000]} error
if {[string match -nocase "*couldn't open socket*" $error]} {
putquick "PRIVMSG $chan :Hata: Şuan siteye bağlanılamıyor.. Daha Sonra Tekrar Deneyiniz.."
::http::cleanup $sayfa
return
}
if { [::http::status $sayfa] == "*timeout*" } {
putquick "PRIVMSG $chan :Hata: YouTube'a bağlantı zaman aşımına uğradı.."
::http::cleanup $sayfa
return
}
set html [::http::data $sayfa]
::http::cleanup $sayfa
you:temiz $html
set count 1
putquick "privmsg $chan :\002You\0030,4Tube\002\003 Sonuçları"
foreach y [split $html \n] {
if {[string match -nocase "*id=\"video-url-*" $y] && $count <= $cmax} {
regexp -- {id=\"video-url-(.*?)\".href=\"/watch.+<img.title=\"(.*?)\"} $y - shr title
}
if {[info exists shr]} {
if {[string match -nocase "*video-run-time-$shr*" $y] && $count <= $cmax} {
regexp -- {video-run-time-...........\">(.*?)<} $y - uzn
}
}
if {[info exists shr] && [info exists uzn]} {
if {[string match -nocase "*video-date-added*" $y] && $count <= $cmax} {
regexp -- {video-date-added\">(.*?)<} $y - added
}
}
if {[info exists shr] && [info exists uzn] && [info exists added]} {
if {[string match -nocase "*video-view-count*" $y] && $count <= $cmax} {
regexp -- {video-view-count\">(.*?)views<} $y - view
putquick "privmsg $chan :$count -\002\0035 $title"
putquick "privmsg $chan :Eklenme zamanı:\0036 $added \003izlenme:\0036 $view \003Uzunluk:\0036 $uzn"
putquick "privmsg $chan :\00314
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.putquick "privmsg $chan : "
incr count
}
}
}
if {$count == 1} { putquick "privmsg $chan :Aradığınız kelimelerle ilgili hiç video bulunamadı" }
}
proc you:temiz {html} {
regsub -all {\t} $html {} html
regsub -all { } $html {} html
regsub -all {&} $html {&} html
regsub -all {\u015E} $html {Ş} html
regsub -all {\u015F} $html {ş} html
regsub -all {\u011F} $html {ğ} html
regsub -all {\u011E} $html {Ğ} html
regsub -all {\u0131} $html {ı} html
regsub -all {\u0130} $html {İ} html
regsub -all {Ç} $html {C} html
return $html
}
putlog "youtube.tcl By SaW Başarıyla Yüklendi"
--IRCForumlari.NET ; Flood Engellendi -->-> Yeni yazılan mesaj 20:23 -->-> Daha önceki mesaj 19:51 --
Birde bu tcl var deneyin..
Kod: Kodu kopyalamak için üzerine çift tıklayın!
bind pubm - "**************" tubetitle
proc tubetitle {nick host hand chan arg} {
if {$nick ne $::botnick} {
set ::like ""
set saat ""
catch { exec curl -v [stripcodes bcruag $arg] } tubedata
set tube [string map -nocase {"," "\n"} $tubedata]
foreach dataa [split $tube \n] {
if {[string match -nocase "*\"length_seconds\":*" $dataa]} {
set sayi [lindex [string map {"\"" " "} $dataa] end]
if { [string length $sayi] < 4 } {
set dakika [expr int($sayi / 60)]
set dksn [expr $sayi - [expr $dakika * 60]]
} else {
set saat [string index [expr [expr $sayi / 60] / 60] 0]
set dksn [string range [expr [expr $sayi / 60] - 60] 0 1]
}
if { [set ra [string length $dksn]] >= 2 } {
if { $saat == "" } {
set ::sure "$dakika:$dksn"
} else {
if { [string range $dksn 0 1] < 60 } {
set ::sure "$saat:[string range $dksn 0 1]:00"
} else {
if {[expr [string range $dksn 0 1] - 60] <= 9} {
set ::sure "$saat:0[expr [string range $dksn 0 1] - 60]:00"
} else {
set ::sure "$saat:[expr [string range $dksn 0 1] - 60]:00"
}
}
}
} else {
set ::sure "$dakika:0$dksn"
}
}
if {[string match "*-like-button-unclicked*" $dataa]} {
set ::like [lindex [string map {"</span" "" "</button" "" "\">" " " ">" ""} $dataa] end]
}
if {[string match "*-dislike-button-unclicked*" $dataa]} {
set ::dislike [lindex [string map {"</span" "" "</button" "" "\">" " " ">" ""} $dataa] end]
}
}
if {[string match "" $::like]} { return 0 }
regexp -- {<meta itemprop=\"name\" content=\"(.*?)\">} $tubedata - title
# regexp -- {<meta itemprop=\"interactionCount\" content=\"(.*?)\">} $tubedata - view
regexp -- {<meta itemprop=\"datePublished\" content=\"(.*?)\">} $tubedata - date
regexp -- {<meta itemprop=\"genre\" content=\"(.*?)\">} $tubedata - genre
regexp -- {</ul></div></div></div><div id="watch8-sentiment-actions"><div id="watch7-views-info"><div class="watch-view-count">(.*?)</div>} $tubedata - count
putquick "privmsg $chan :You\0030,4Tube\003 \00311,1 Title:\0030 [encoding convertto utf-8 "$title \003 \0034,4|\003 \00311,1 Time:\0030 $::sure \003"]"
putquick "privmsg $chan :You\0030,4Tube\003 [entityToChar "\0037,1 Date:\0030 $date \003 \0034,4|\003 \0038,1 Genre: \0030$genre \003 \0034,4|\003 \00313,1 Views:\0030 $count \003 \0034,4|\003 \0039,1 Like:\0030 $::like \003 \0034,4|\003 \0034,1 Dislike:\0030 $::dislike \003"]"
}
}
proc entityToChar {text {char utf-8}} {
if {![string match *&* $text]} {return $text}
set escapes {
\xa0 ¡ \xa1 ¢ \xa2 £ \xa3 ¤ \xa4
¥ \xa5 ¦ \xa6 § \xa7 ¨ \xa8 © \xa9
ª \xaa « \xab ¬ \xac * \xad ® \xae
¯ \xaf ° \xb0 ± \xb1 ² \xb2 ³ \xb3
´ \xb4 µ \xb5 ¶ \xb6 · \xb7 ¸ \xb8
¹ \xb9 º \xba » \xbb ¼ \xbc ½ \xbd
¾ \xbe ¿ \xbf À \xc0 Á \xc1 Â \xc2
à \xc3 Ä \xc4 Å \xc5 Æ \xc6 Ç \xc7
È \xc8 É \xc9 Ê \xca Ë \xcb Ì \xcc
Í \xcd Î \xce Ï \xcf Ð \xd0 Ñ \xd1
Ò \xd2 Ó \xd3 Ô \xd4 Õ \xd5 Ö \xd6
× \xd7 Ø \xd8 Ù \xd9 Ú \xda Û \xdb
Ü \xdc Ý \xdd Þ \xde ß \xdf à \xe0
á \xe1 â \xe2 ã \xe3 ä \xe4 å \xe5
æ \xe6 ç \xe7 è \xe8 é \xe9 ê \xea
ë \xeb ì \xec í \xed î \xee ï \xef
ð \xf0 ñ \xf1 ò \xf2 ó \xf3 ô \xf4
õ \xf5 ö \xf6 ÷ \xf7 ø \xf8 ù \xf9
ú \xfa û \xfb ü \xfc ý \xfd þ \xfe
ÿ \xff ƒ \u192 Α \u391 Β \u392 Γ \u393 Δ \u394
Ε \u395 Ζ \u396 Η \u397 Θ \u398 Ι \u399
Κ \u39A Λ \u39B Μ \u39C Ν \u39D Ξ \u39E
Ο \u39F Π \u3A0 Ρ \u3A1 Σ \u3A3 Τ \u3A4
Υ \u3A5 Φ \u3A6 Χ \u3A7 Ψ \u3A8 Ω \u3A9
α \u3B1 β \u3B2 γ \u3B3 δ \u3B4 ε \u3B5
ζ \u3B6 η \u3B7 θ \u3B8 ι \u3B9 κ \u3BA
λ \u3BB μ \u3BC ν \u3BD ξ \u3BE ο \u3BF
π \u3C0 ρ \u3C1 ς \u3C2 σ \u3C3 τ \u3C4
υ \u3C5 φ \u3C6 χ \u3C7 ψ \u3C8 ω \u3C9
ϑ \u3D1 ϒ \u3D2 ϖ \u3D6 • \u2022
… \u2026 ′ \u2032 ″ \u2033 ‾ \u203E
⁄ \u2044 ℘ \u2118 ℑ \u2111 ℜ \u211C
™ \u2122 ℵ \u2135 ← \u2190 ↑ \u2191
→ \u2192 ↓ \u2193 ↔ \u2194 ↵ \u21B5
⇐ \u21D0 ⇑ \u21D1 ⇒ \u21D2 ⇓ \u21D3 ⇔ \u21D4
∀ \u2200 ∂ \u2202 ∃ \u2203 ∅ \u2205
∇ \u2207 ∈ \u2208 ∉ \u2209 ∋ \u220B ∏ \u220F
∑ \u2211 − \u2212 ∗ \u2217 √ \u221A
∝ \u221D ∞ \u221E ∠ \u2220 ∧ \u2227 ∨ \u2228
∩ \u2229 ∪ \u222A ∫ \u222B ∴ \u2234 ∼ \u223C
≅ \u2245 ≈ \u2248 ≠ \u2260 ≡ \u2261 ≤ \u2264
≥ \u2265 ⊂ \u2282 ⊃ \u2283 ⊄ \u2284 ⊆ \u2286
⊇ \u2287 ⊕ \u2295 ⊗ \u2297 ⊥ \u22A5
⋅ \u22C5 ⌈ \u2308 ⌉ \u2309 ⌊ \u230A
⌋ \u230B ⟨ \u2329 ⟩ \u232A ◊ \u25CA
♠ \u2660 ♣ \u2663 ♥ \u2665 ♦ \u2666
" \x22 & \x26 < \x3C > \x3E O&Elig; \u152 œ \u153
Š \u160 š \u161 Ÿ \u178 ˆ \u2C6
˜ \u2DC   \u2002   \u2003   \u2009
‌ \u200C ‍ \u200D ‎ \u200E ‏ \u200F – \u2013
— \u2014 ‘ \u2018 ’ \u2019 ‚ \u201A
“ \u201C ” \u201D „ \u201E † \u2020
‡ \u2021 ‰ \u2030 ‹ \u2039 › \u203A
€ \u20AC ' \u0027 ‎ "" ‏ "" ? "" * ""
* ""
};
set text [string map[list "\]" "\\\]" "\[" "\\\[" "\$" "\\\$" "\\" "\\\\"] [string map $escapes $text]]
regsub -all -- {&#([[:digit:]]{1,5});} $text {[format %c [string trimleft "\1" "0"]]} text
regsub -all -- {&#x([[:xdigit:]]{1,4});} $text {[format %c [scan "\1" %x]]} text
return [subst "$text"]
}
putlog "rascoLn - youtube title.tcl"