egghelp.org community Forum Index
[ egghelp.org home | forum home ]
egghelp.org community
Discussion of eggdrop bots, shell accounts and tcl scripts.
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

YouTube Version 1.3 not working
Goto page 1, 2  Next
 
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Support & Releases
View previous topic :: View next topic  
Author Message
4everlearning
Voice


Joined: 26 Jan 2011
Posts: 8

PostPosted: Tue May 22, 2012 1:40 am    Post subject: YouTube Version 1.3 not working Reply with quote

can someone please help me get this working. I have loaded this script as youtube.tcl but for some reason the bot won't respond to anything in channel for this script. I tried doing .chanset #chan +youtube without any luck. here is the script

Code:

    # YouTube (Eggdrop/Tcl), Version 1.3
    #
    # (c) creative (QuakeNet - #computerbase), 15. Feb. 2012
    #
    # This program is free software: you can redistribute it and / or modify it under the
    # terms of the GNU General Public License, see http://www.gnu.org/licenses/gpl.html.
    #
    # Example:
    # <bo2000> like her new video https://www.youtu.be/kfVsfOSbJY0
    # <eggbert> [Y] Rebecca Black - Friday - Official Music Video, 17.09.2011 (O 1.8)
    #
    # Notice:
    # !youtube (on|off) enables or disables script for active channel (flags "mno" only)
     
    setudef flag youtube
     
    bind pubm - *youtu.be/* YouTube
    bind pubm - *youtube.com/watch*v=* YouTube
    bind pub mno|mno !youtube YouTube-Settings
     
    proc YouTube {nick host hand chan text} {
     
            if {[channel get $chan youtube]} {
                    set y_api "http://gdata.youtube.com/feeds/api/videos/"
                    set y_odf "%d.%m.%Y"
     
                    if {[catch {package require http 2.5}]} {
                            putlog "YouTube: package http 2.5 or above required"
                    } else {
     
                            if {[regexp -nocase {(^|[ ]{1})(https{0,1}:\/\/(www\.){0,1}|www\.)(youtu\.be\/|youtube\.com\/watch[^ ]{1,}v=)([A-Za-z0-9_-]{11})} $text - - - - - y_vid]} {
     
                                    if {[catch {set y_con [::http::geturl $y_api$y_vid -headers [list {GData-Version} {2}] -timeout 5000]}]} {
                                            putlog "YouTube: connection error (e. g. host not found / reachable)"
                                    } elseif {[::http::status $y_con] == "ok"} {
                                            set y_data [::http::data $y_con]
                                            catch {::http::cleanup $y_con}
                                    } else {
                                            putlog "YouTube: connection error (e. g. time out / no data received)"
                                            catch {::http::cleanup $y_con}
                                    }
     
                            }
     
                    }
     
            }
     
            if {[info exists y_data]} {
     
                    if {[regexp -nocase {<title>(.{1,})<\/title>} $y_data - y_data_t]} {
                            set y_data_t [string map -nocase [list {&quot;} {"} {&amp;} {&} {&lt;} {<} {&gt;} {>}] $y_data_t]
                            regsub -all -nocase {[ ]{1,}} $y_data_t { } y_data_t
                    } else {
                            putlog "YouTube: parsing error (<title>, $y_api$y_vid)"
                    }
     
                    if {[regexp -nocase {<published>([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.000Z)<\/published>} $y_data - y_data_p]} {
                            set y_data_p [clock scan $y_data_p -format %Y-%m-%dT%H:%M:%S.000Z]
                            set y_data_p [clock format $y_data_p -format $y_odf]
                    } else {
                            putlog "YouTube: parsing error (<published>, $y_api$y_vid)"
                    }
     
                    if {[regexp -nocase {<gd:rating average='([0-9]{1}\.[0-9]{1,})'} $y_data - y_data_r]} {
                            set y_data_r [format %.1f $y_data_r]
                            set y_data_r "([encoding convertto utf-8 \u00D8] $y_data_r)"
                    } else {
                            set y_data_r "([encoding convertto utf-8 \u00D8] NR)"
                    }
     
                    if {[info exists y_data_t] && [info exists y_data_p] && [info exists y_data_r]} {
                            putserv "privmsg $chan :\002\0031,0You\0030,4Tube\003\002 $y_data_t, $y_data_p $y_data_r"
                    }
     
            }
     
    }
     
    proc YouTube-Settings {nick host hand chan text} {
     
            if {![channel get $chan youtube] && $text == "on"} {
                    catch {channel set $chan +youtube}
                    putserv "notice $nick :YouTube: enabled for $chan"
                    putlog "YouTube: script enabled (by $nick for $chan)"
            } elseif {[channel get $chan youtube] && $text == "off"} {
                    catch {channel set $chan -youtube}
                    putserv "notice $nick :YouTube: disabled for $chan"
                    putlog "YouTube: script disabled (by $nick for $chan)"
            } else {
                    putserv "notice $nick :YouTube: !youtube (on|off) enables or disables script for active channel"
            }
     
    }
     
    putlog "YouTube 1.3 loaded"


Thank you for any and all help
Back to top
View user's profile Send private message
caesar
Mint Rubber


Joined: 14 Oct 2001
Posts: 3741
Location: Mint Factory

PostPosted: Tue May 22, 2012 11:28 am    Post subject: Reply with quote

Code:

proc YouTube-Settings {nick host hand chan text} {
   set status [channel get $chan youtube]
   set mode [string tolower [lindex [split $text] 0]]
   switch -- $mode {
      "on" {
         if {!$status} {
            channel set $chan +youtube
            puthelp "NOTICE $nick :YouTube: enabled for $chan"
            putlog "YouTube script enabled (by $nick for $chan)"
         } else {
            puthelp "NOTICE $nick :YouTube is already enabled for $chan"
         }
      }
      "off" {
         if {$status} {
            channel set $chan -youtube
            puthelp "NOTICE $nick :YouTube disabled for $chan"
            putlog "YouTube script disabled (by $nick for $chan)"
         } else {
            puthelp "NOTICE $nick :YouTube is already disabled for $chan"
         }      
      }
      default {
         puthelp "notice $nick :YouTube: !youtube (on|off) enables or disables script for active channel"
      }
   }
}

_________________
Once the game is over, the king and the pawn go back in the same box.
Back to top
View user's profile Send private message
4everlearning
Voice


Joined: 26 Jan 2011
Posts: 8

PostPosted: Tue May 22, 2012 9:08 pm    Post subject: Reply with quote

Thank you caesar,
I will reload with this tonight.
Back to top
View user's profile Send private message
4everlearning
Voice


Joined: 26 Jan 2011
Posts: 8

PostPosted: Fri May 25, 2012 1:39 am    Post subject: Reply with quote

I tested what caesar posted without luck

Here is the code I have now:
Code:

# YouTube (Eggdrop/Tcl), Version 1.3
#
# (c) creative (QuakeNet - #computerbase), 15. Feb. 2012
#
# This program is free software: you can redistribute it and / or modify it under the
# terms of the GNU General Public License, see http://www.gnu.org/licenses/gpl.html.
#
# Example:
# <bo2000> like her new video https://www.youtu.be/kfVsfOSbJY0
# <eggbert> [Y] Rebecca Black - Friday - Official Music Video, 17.09.2011 (O 1.8)
#
# Notice:
# !youtube (on|off) enables or disables script for active channel (flags "mno" only)

setudef flag youtube

bind pubm - *youtu.be/* YouTube
bind pubm - *youtube.com/watch*v=* YouTube
bind pub mno|mno !youtube YouTube-Settings

proc YouTube {nick host hand chan text} {
    if {[channel get $chan youtube]} {
        set y_api "http://gdata.youtube.com/feeds/api/videos/"
        set y_odf "%d.%m.%Y"
        if {[catch {package require http 2.5}]} {
            putlog "YouTube: package http 2.5 or above required"
        } else {
            if {[regexp -nocase {(^|[ ]{1})(https{0,1}:\/\/(www\.){0,1}|www\.)(youtu\.be\/|youtube\.com\/watch[^ ]{1,}v=)([A-Za-z0-9_-]{11})} $text - - - - - y_vid]} {
                if {[catch {set y_con [::http::geturl $y_api$y_vid -headers [list {GData-Version} {2}] -timeout 5000]}]} {
                    putlog "YouTube: connection error (e. g. host not found / reachable)"
                } elseif {[::http::status $y_con] == "ok"} {
                    set y_data [::http::data $y_con]
                    catch {::http::cleanup $y_con}
                } else {
                    putlog "YouTube: connection error (e. g. time out / no data received)"
                    catch {::http::cleanup $y_con}
              }
         }
    }
}
    if {[info exists y_data]} {
        if {[regexp -nocase {<title>(.{1,})<\/title>} $y_data - y_data_t]} {
            set y_data_t [string map -nocase [list {&quot;} {"} {&amp;} {&} {&lt;} {<} {&gt;} {>}] $y_data_t]
            regsub -all -nocase {[ ]{1,}} $y_data_t { } y_data_t
        } else {
            putlog "YouTube: parsing error (<title>, $y_api$y_vid)"
        }
        if {[regexp -nocase {<published>([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.000Z)<\/published>} $y_data - y_data_p]} {
            set y_data_p [clock scan $y_data_p -format %Y-%m-%dT%H:%M:%S.000Z]
            set y_data_p [clock format $y_data_p -format $y_odf]
        } else {
            putlog "YouTube: parsing error (<published>, $y_api$y_vid)"
        }
        if {[regexp -nocase {<gd:rating average='([0-9]{1}\.[0-9]{1,})'} $y_data - y_data_r]} {
            set y_data_r [format %.1f $y_data_r]
            set y_data_r "([encoding convertto utf-8 \u00D8] $y_data_r)"
        } else {
            set y_data_r "([encoding convertto utf-8 \u00D8] NR)"
        }
        if {[info exists y_data_t] && [info exists y_data_p] && [info exists y_data_r]} {
             putserv "privmsg $chan :\002\0031,0You\0030,4Tube\003\002 $y_data_t, $y_data_p $y_data_r"
        }
    }
}

proc YouTube-Settings {nick host hand chan text} {
   set status [channel get $chan youtube]
   set mode [string tolower [lindex [split $text] 0]]
   switch -- $mode {
      "on" {
         if {!$status} {
            channel set $chan +youtube
            puthelp "NOTICE $nick :YouTube: enabled for $chan"
            putlog "YouTube script enabled (by $nick for $chan)"
         } else {
            puthelp "NOTICE $nick :YouTube is already enabled for $chan"
         }
      }
      "off" {
         if {$status} {
            channel set $chan -youtube
            puthelp "NOTICE $nick :YouTube disabled for $chan"
            putlog "YouTube script disabled (by $nick for $chan)"
         } else {
            puthelp "NOTICE $nick :YouTube is already disabled for $chan"
         }
      }
      default {
         puthelp "notice $nick :YouTube: !youtube (on|off) enables or disables script for active channel"
      }
   }
}
Back to top
View user's profile Send private message
caesar
Mint Rubber


Joined: 14 Oct 2001
Posts: 3741
Location: Mint Factory

PostPosted: Fri May 25, 2012 1:59 am    Post subject: Reply with quote

Quote:

<caesar> !youtube
-bot- YouTube: !youtube (on|off) enables or disables script for active channel
<caesar> !youtube off
-bot- YouTube is already disabled for #chan
<caesar> !youtube on
-bot- YouTube: enabled for #chan
<caesar> !youtube on
-bot- YouTube is already enabled for #chan
<caesar> !youtube off
-bot- YouTube disabled for #chan

so, what's not working properly in the code I gave you?
_________________
Once the game is over, the king and the pawn go back in the same box.
Back to top
View user's profile Send private message
4everlearning
Voice


Joined: 26 Jan 2011
Posts: 8

PostPosted: Thu Jun 07, 2012 4:47 am    Post subject: Reply with quote

I got no response from the bot at all. It's Ok tho, I gave up on this script and found another one that I liked enough to edit it to my total likings.

Thanks for your help.
Back to top
View user's profile Send private message
sputnik
Voice


Joined: 23 Feb 2011
Posts: 20

PostPosted: Thu May 09, 2013 8:13 am    Post subject: Reply with quote

The script works fine, but it doesn't show utf-8 chars in the title. Any ideas?
Back to top
View user's profile Send private message
SinSoLe
Voice


Joined: 25 Jun 2011
Posts: 3

PostPosted: Thu May 30, 2013 10:11 am    Post subject: Reply with quote

sputnik wrote:
The script works fine, but it doesn't show utf-8 chars in the title. Any ideas?

You can use encode function to convertfrom/convertto. Try changing this line
Code:
putserv "privmsg $chan :\002\0031,0You\0030,4Tube\003\002 $y_data_t, $y_data_p $y_data_r"

to this
Code:
putserv "privmsg $chan :\002\0031,0You\0030,4Tube\003\002 [encoding convertfrom utf-8 $y_data_t], $y_data_p $y_data_r"
Back to top
View user's profile Send private message
sputnik
Voice


Joined: 23 Feb 2011
Posts: 20

PostPosted: Thu May 30, 2013 10:32 am    Post subject: Reply with quote

That worked. Thanks!
Back to top
View user's profile Send private message
sputnik
Voice


Joined: 23 Feb 2011
Posts: 20

PostPosted: Thu May 30, 2013 10:37 am    Post subject: Reply with quote

One more question (also stupid one): how do i bind it to ctcp action?
Code:
bind ctcp -|- "ACTION" YouTube
doesn't do a thing...
Back to top
View user's profile Send private message
willyw
Revered One


Joined: 15 Jan 2009
Posts: 1175

PostPosted: Thu May 30, 2013 12:00 pm    Post subject: Reply with quote

See:
http://www.eggheads.org/support/egghtml/1.6.21/tcl-commands.html#bind
and scroll down to number 32 "ACT (stackable)", and read about it.

Is that the bind that you need?
Back to top
View user's profile Send private message
sputnik
Voice


Joined: 23 Feb 2011
Posts: 20

PostPosted: Thu May 30, 2013 12:08 pm    Post subject: Reply with quote

Nope, i believe i need bind #15.
Back to top
View user's profile Send private message
willyw
Revered One


Joined: 15 Jan 2009
Posts: 1175

PostPosted: Thu May 30, 2013 12:11 pm    Post subject: Reply with quote

Give us an example of what you want the bot to react to.
Back to top
View user's profile Send private message
sputnik
Voice


Joined: 23 Feb 2011
Posts: 20

PostPosted: Thu May 30, 2013 12:20 pm    Post subject: Reply with quote

Quote:
Give us an example of what you want the bot to react to.

Someone did '/me http://youtubevideourl'.
Back to top
View user's profile Send private message
willyw
Revered One


Joined: 15 Jan 2009
Posts: 1175

PostPosted: Thu May 30, 2013 12:51 pm    Post subject: Reply with quote

Not sure why it didn't work for you. It seems to work for me.


Play with this:
Code:


bind ctcp - "ACTION" pub_test_me

proc pub_test_me {nick uhost handle dest keyword text} {
       
        if {$text == "http://youtubevideourl"} {
                putserv "privmsg $dest :Whatever you want to happen goes here"
                # and here

         }
}




It reacts to:
/me http://youtubevideourl


p.s.
If we need to continue much more, can you start another thread on just this?
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Support & Releases All times are GMT - 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Forum hosting provided by Reverse.net

Powered by phpBB © 2001, 2005 phpBB Group
subGreen style by ktauber