pastebin

Paste #yl0 -- näytä pelkkänä tekstinä -- uusi tämän pohjalta

Värjäys: Tyyli: ensimmäinen rivinumero: Tabin korvaus:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# Configs:

set urltitle(ignore) "bdkqr|dkqr"   ;# User flags script will ignore input from
set urltitle(pubmflags) "-|-"       ;# user flags required for channel eggdrop use
set urltitle(length) 5          ;# minimum url length to trigger channel eggdrop use
set urltitle(delay) 1           ;# minimum seconds to wait before another eggdrop use
set urltitle(timeout) 60000         ;# geturl timeout (1/1000ths of a second)

################################################################################################################
# Script begins:

package require http            ;# You need the http package..
set urltitle(last) 111          ;# Internal variable, stores time of last eggdrop use, don't change..
setudef flag urltitle           ;# Channel flag to enable script.
setudef flag logurltitle        ;# Channel flag to enable logging of script.

set urltitlever "0.01a"
bind pubm $urltitle(pubmflags) {*://*} pubm:urltitle
proc pubm:urltitle {nick host user chan text} {
    global urltitle
    if {([channel get $chan urltitle]) && ([expr [unixtime] - $urltitle(delay)] > $urltitle(last)) && \
    (![matchattr $user $urltitle(ignore)])} {
        foreach word [split $text] {
            if {[string length $word] >= $urltitle(length) && \
            [regexp {^(f|ht)tp(s|)://} $word] && \
            ![regexp {://([^/:]*:([^/]*@|\d+(/|$))|.*/\.)} $word]} {
                set urltitle(last) [unixtime]
                set urtitle [urltitle $word]
                if {[string length $urtitle]} {
                    #puthelp "PRIVMSG $chan :$nick: URL Title for $word - \002$urtitle\002"
                    puthelp "PRIVMSG $chan :$urtitle"
                }
                break
            }
        }
        }
    if {[channel get $chan logurltitle]} {
        foreach word [split $text] {
            if {[string match "*://*" $word]} {
                putlog "<$nick:$chan> $word -> $urtitle"
            }
        }
    }
    # change to return 0 if you want the pubm trigger logged additionally..
    return 1
}

proc urltitle {url} {
    if {[info exists url] && [string length $url]} {
        catch {set http [::http::geturl $url -timeout $::urltitle(timeout)]} error
        if {[string match -nocase "*couldn't open socket*" $error]} {
            #return "Error: couldn't connect..Try again later"
            return ""
        }
        if { [::http::status $http] == "timeout" } {
            #return "Error: connection timed out while trying to contact $url"
            return ""
        }
        set data [::http::data $http]
        ::http::cleanup $http
        set title ""
        if {[regexp -nocase {<title>(.*?)</title>} $data match title]} {
            set title [string trim [string map { {href=} "" \" "" \n "" \r ""} $title]]
            set words [regexp -all -inline {[a-zA-Z0-9öäåÖÄÅ]+} $title]
            set words_count 0
            set words_found 0
            foreach {word} $words {
                incr words_count
                if {[regexp -nocase $word $url match]} {
                    incr words_found
                }
            }
            if {$words_found > [expr $words_count / 2]} {
                return ""
            }
            return $title
        } else {
            #return "No title found."
            return ""
        }
    }
}

putlog "Url Title Grabber $urltitlever (rosc) script loaded.."