This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

Ramdom quote from fmylife.com

Requests for complete scripts or modifications/fixes for scripts you didn't write. Response not guaranteed, and no thread bumping!
Post Reply
l
liljim
Voice
Posts: 12
Joined: Tue Dec 11, 2007 6:51 pm

Ramdom quote from fmylife.com

Post by liljim »

Could someone make a script that pulls a random quote from http://www.fmylife.com/random with a trigger? Perhaps even show the ratings (I agree, your life is f***ed and you deserved that one) along with the post number, though a simple random quote would be cool. Or if you want to get complex maybe a search based on keywords.

I guess it's similar to grouphug.us but even more embarrassing. If anyone feels like giving it a go I'd be grateful.
S
Sydneybabe
Op
Posts: 106
Joined: Fri Apr 27, 2007 3:31 am
Location: Philippines

Post by Sydneybabe »

I hope someone can help looks like great quotes :)
User avatar
tomekk
Master
Posts: 255
Joined: Fri Nov 28, 2008 11:35 am
Location: Oswiecim / Poland
Contact:

Post by tomekk »

try:

Code: Select all

# Author: tomekk
# e-mail:  tomekk/@/oswiecim/./eu/./org
# home page: http://tomekk.oswiecim.eu.org/
#
# Version 0.1
#
# This file is Copyrighted under the GNU Public License.
# http://www.gnu.org/copyleft/gpl.html

# channels for !fmylife
set fmylife_channels {#channel1 #channel2}

# time between use !fmylife (seconds)
set fmylife_reuse_time 20

###########################################################
bind pub - !fmylife fm_main_proc

package require http

proc get_fmylife { } {
	set f_http_uagent "Opera/9.61 (Windows i686; U; en) Presto/2.1.1"
	set f_http_token [http::config -useragent $f_http_uagent]
	if {[catch {set f_http_token [::http::geturl "http://www.fmylife.com/random" -timeout 10000]}]} {
		return "error"
	} {
		return [http::data $f_http_token]
	}
}

set fmylife_reuse 1

proc fm_main_proc { nick uhost hand chan arg } {
	global fmylife_channels fmylife_reuse fmylife_reuse_time

        if {[expr [clock seconds] - $fmylife_reuse] <= $fmylife_reuse_time} {
		putquick "PRIVMSG $chan :$nick: to fast, sorry"
		return
	}

	if {[lsearch $fmylife_channels $chan] == -1} {
        	return
	}

	set fm_quote ""
	set fm_link ""

	set fm_quote [get_fmylife]

	if {($fm_quote == "error") || ($fm_quote == "")} {
		putquick "PRIVMSG $chan :problem with connection, try again later, sorry"
		return
	}

	regsub -all -nocase "\n" $fm_quote "" fm_quote
	regsub -all -nocase "\r" $fm_quote "" fm_quote
	regsub -all -nocase "\t" $fm_quote "" fm_quote

	# 1st quote 
	regsub -nocase {.*<div\s+class=\"post\"><p>(.+)</p><div\s+class=\"date\"\s+style=\"float:left;\">.*} $fm_quote {\1} fm_quote

	# 1st link
	regsub -nocase {.*<a\s+href=\"([a-z0-9\/ ]+)\"\s+class=\"fmllink\">.*} $fm_quote {\1} fm_link

	# del rest of links from quote
	regsub -all -nocase {<a\s+href=\"[a-z0-9\/ ]+\"\s+class=\"fmllink\">} $fm_quote "" fm_quote

	# the rest of useless tags
	regsub -all -nocase "<\/a>" $fm_quote "" fm_quote

	set fm_link "http://www.fmylife.com$fm_link"

	if {[regexp -nocase {http:\/\/www\.fmylife\.com[a-z0-9\/ ]+} $fm_link]} { 
		putquick "PRIVMSG $chan :$fm_quote"
		putquick "PRIVMSG $chan :--| $fm_link"
		set fmylife_reuse [clock seconds]
	} {
		putquick "PRIVMSG $chan :some problem with data, try again later, sorry"
	}
}

putlog "fmylife-quote.tcl ver 0.1 by tomekk loaded"

use: !fmylife on chan

cheers
l
liljim
Voice
Posts: 12
Joined: Tue Dec 11, 2007 6:51 pm

Post by liljim »

This works well. Thank you very much!
S
Sydneybabe
Op
Posts: 106
Joined: Fri Apr 27, 2007 3:31 am
Location: Philippines

Post by Sydneybabe »

Hi tomekk, can i request this script will advertise the quotes on main channel every 30 minutes without typing !fmylife .. thanks a lot in advance :D
User avatar
tomekk
Master
Posts: 255
Joined: Fri Nov 28, 2008 11:35 am
Location: Oswiecim / Poland
Contact:

Post by tomekk »

Code: Select all

# Author: tomekk
# e-mail:  tomekk/@/oswiecim/./eu/./org
# home page: http://tomekk.oswiecim.eu.org/
#
# Version 0.2
#
# This file is Copyrighted under the GNU Public License.
# http://www.gnu.org/copyleft/gpl.html

# channels for !fmylife
set fmylife_channels {#channel #channel2}

# time between use !fmylife (seconds)
set fmylife_reuse_time 20

# auto query
# 0 - off, 1 - on
set fmylife_auto_query 0

# set auto query interval (minutes)
set fmylife_auto_interval 30

###########################################################
bind pub - !fmylife fm_main_proc

package require http

proc get_fmylife { } {
	set f_http_uagent "Opera/9.61 (Windows i686; U; en) Presto/2.1.1"
	set f_http_token [http::config -useragent $f_http_uagent]
	if {[catch {set f_http_token [::http::geturl "http://www.fmylife.com/random" -timeout 10000]}]} {
		return "error"
	} {
		return [http::data $f_http_token]
	}
}

set fmylife_reuse 1

proc fmylife_timer { } {
	global fmylife_auto_interval
	fm_auto_proc

	if {[string match *fmylife_timer* [timers]] != 1} {
		timer $fmylife_auto_interval fmylife_timer
	}
}

proc fm_auto_proc { } {
	global fmylife_channels

	set fm_quote ""
        set fm_quote [get_fmylife]

	if {($fm_quote == "error") || ($fm_quote == "")} {
		putlog "auto-quote-fmylife: problem with connection"
		return
	}

	foreach fm_each_chan [split $fmylife_channels] {
		if {$fm_each_chan != ""} { 
			set fm_each_chan [string trim $fm_each_chan]

			if {[botonchan $fm_each_chan]} {
				 fmylife_print $fm_quote $fm_each_chan
			}
		}
	}
}

proc fm_main_proc { nick uhost hand chan arg } {
	global fmylife_channels fmylife_reuse fmylife_reuse_time

	if {[expr [clock seconds] - $fmylife_reuse] <= $fmylife_reuse_time} {
		putquick "PRIVMSG $chan :$nick: to fast, sorry"
		return
	}

	if {[lsearch $fmylife_channels $chan] == -1} {
		return
	}

	set fm_quote ""
	set fm_quote [get_fmylife]

	if {($fm_quote == "error") || ($fm_quote == "")} {
		putquick "PRIVMSG $chan :problem with connection, try again later, sorry"
		return
        }

	fmylife_print $fm_quote $chan
}

proc fmylife_print { fm_data fm_chan } {
	set fm_link ""

	regsub -all -nocase "\n" $fm_data "" fm_data
	regsub -all -nocase "\r" $fm_data "" fm_data
	regsub -all -nocase "\t" $fm_data "" fm_data

	# 1st quote 
	regsub -nocase {.*<div\s+class=\"post\"><p>(.+)</p><div\s+class=\"date\"\s+style=\"float:left;\">.*} $fm_data {\1} fm_data

	# 1st link
	regsub -nocase {.*<a\s+href=\"([a-z0-9\/ ]+)\"\s+class=\"fmllink\">.*} $fm_data {\1} fm_link

	# del rest of links from quote
	regsub -all -nocase {<a\s+href=\"[a-z0-9\/ ]+\"\s+class=\"fmllink\">} $fm_data "" fm_data

	# the rest of useless tags
	regsub -all -nocase "<\/a>" $fm_data "" fm_data

	set fm_link "http://www.fmylife.com$fm_link"

	if {[regexp -nocase {http:\/\/www\.fmylife\.com[a-z0-9\/ ]+} $fm_link]} { 
		putquick "PRIVMSG $fm_chan :$fm_data"
		putquick "PRIVMSG $fm_chan :--| $fm_link"
		set fmylife_reuse [clock seconds]
	} {
		putquick "PRIVMSG $fm_chan :some problem with data, try again later, sorry"
	}
}

if {$fmylife_auto_query != 0} {
	if {[string match *fmylife_timer* [timers]] != 1} {
		timer $fmylife_auto_interval fmylife_timer
	}
}

putlog "fmylife-quote.tcl ver 0.2 by tomekk loaded"
test it
m
manipulativeJack
Voice
Posts: 13
Joined: Tue Feb 17, 2009 9:52 pm

Post by manipulativeJack »

Nice!

Would you mind if I try to use some of this code to /try/ to create the
script I was requesting in http://forum.egghelp.org/viewtopic.php?t=16672 - I am not sure how to do the requesting part but this should work for the displaying part!

Jack
User avatar
tomekk
Master
Posts: 255
Joined: Fri Nov 28, 2008 11:35 am
Location: Oswiecim / Poland
Contact:

Post by tomekk »

sure, go on ;)

good luck !
m
manipulativeJack
Voice
Posts: 13
Joined: Tue Feb 17, 2009 9:52 pm

Post by manipulativeJack »

I give up! If you get bored take a look at my request :D

Either way thanks for this cool little snippet.
User avatar
wac
Halfop
Posts: 80
Joined: Sun Dec 10, 2006 1:22 am
Location: in my cardboard box

Post by wac »

script works like a charm, thanks!
I see j00!
G
Globulus
Voice
Posts: 8
Joined: Fri Mar 20, 2009 12:54 pm

Post by Globulus »

Fixed cooldown that doesn't works, uploaded on tcl archive but not yet visible.

Code: Select all

# Author: tomekk modiffied by Globulus
# e-mail:  tomekk/@/oswiecim/./eu/./org 
# home page: http://tomekk.oswiecim.eu.org/ 
# 
# Version 0.3 
# 
# This Script extract quotes from http://www.fmylife.com/random
#
# This file is Copyrighted under the GNU Public License. 
# http://www.gnu.org/copyleft/gpl.html 

# channels for !fml 
set fmylife_channels {#channel #channel2} 

# time between use !fml (seconds) 
set fmylife_reuse_time 5

# auto query 
# 0 - off, 1 - on 
set fmylife_auto_query 0 

# set auto query interval (minutes) 
set fmylife_auto_interval 30 

########################################################### 
bind pub - !fml fm_main_proc 

package require http 

proc get_fmylife { } { 
   set f_http_uagent "Opera/9.61 (Windows i686; U; en) Presto/2.1.1" 
   set f_http_token [http::config -useragent $f_http_uagent] 
   if {[catch {set f_http_token [::http::geturl "http://www.fmylife.com/random" -timeout 10000]}]} { 
      return "error" 
   } { 
      return [http::data $f_http_token] 
   } 
} 

proc fmylife_timer { } { 
   global fmylife_auto_interval 
   fm_auto_proc 

   if {[string match *fmylife_timer* [timers]] != 1} { 
      timer $fmylife_auto_interval fmylife_timer 
   } 
} 

proc fm_auto_proc { } { 
   global fmylife_channels 

   set fm_quote "" 
        set fm_quote [get_fmylife] 

   if {($fm_quote == "error") || ($fm_quote == "")} { 
      putlog "auto-quote-fmylife: problem with connection" 
      return 
   } 

   foreach fm_each_chan [split $fmylife_channels] { 
      if {$fm_each_chan != ""} { 
         set fm_each_chan [string trim $fm_each_chan] 

         if {[botonchan $fm_each_chan]} { 
             fmylife_print $fm_quote $fm_each_chan 
         } 
      } 
   } 
} 

proc fm_main_proc { nick uhost hand chan arg } { 
   global fmylife_channels fmylife_reuse fmylife_reuse_time 

      #Open file and read the variable 
      if { [file exists FMLClockFile] == 1 } {

          set FileHandle [open FMLClockFile "r"]
          set TempString [read $FileHandle]
          close $FileHandle
          set lines [split $TempString "\n"]

          set fmylife_reuse [lindex $lines 0]

      } else {

          # Set the last clock to 1 initially 
          set fmylife_reuse 1
      }


   if {[expr [clock seconds] - $fmylife_reuse] <= $fmylife_reuse_time} { 
      putquick "NOTICE $nick : need to wait [expr [clock seconds] - $fmylife_reuse] sec before reusing..." 
      return 
   } 

   if {[lsearch $fmylife_channels $chan] == -1} { 
      return 
   } 

   set fm_quote "" 
   set fm_quote [get_fmylife] 

   if {($fm_quote == "error") || ($fm_quote == "")} { 
      putquick "PRIVMSG $chan :problem with connection, try again later, sorry" 
      return 
        } 

   fmylife_print $fm_quote $chan 
} 

proc fmylife_print { fm_data fm_chan } { 
   set fm_link "" 

   regsub -all -nocase "\n" $fm_data "" fm_data 
   regsub -all -nocase "\r" $fm_data "" fm_data 
   regsub -all -nocase "\t" $fm_data "" fm_data 

   # 1st quote 
   regsub -nocase {.*<div\s+class=\"post\"><p>(.+)</p><div\s+class=\"date\"\s+style=\"float:left;\">.*} $fm_data {\1} fm_data 

   # 1st link 
   regsub -nocase {.*<a\s+href=\"([a-z0-9\/ ]+)\"\s+class=\"fmllink\">.*} $fm_data {\1} fm_link 

   # del rest of links from quote 
   regsub -all -nocase {<a\s+href=\"[a-z0-9\/ ]+\"\s+class=\"fmllink\">} $fm_data "" fm_data 

   # the rest of useless tags 
   regsub -all -nocase "<\/a>" $fm_data "" fm_data 

   set fm_link "http://www.fmylife.com$fm_link" 

   if {[regexp -nocase {http:\/\/www\.fmylife\.com[a-z0-9\/ ]+} $fm_link]} { 
      putquick "PRIVMSG $fm_chan :$fm_data" 
      putquick "PRIVMSG $fm_chan :--| $fm_link" 
      set fmylife_reuse [clock seconds] 

      # Write the variable to file (remember opening with 'w' mode truncates the file contents) 
      set FileHandle [open FMLClockFile "w"]
      puts $FileHandle $fmylife_reuse
      close $FileHandle

   } { 
      putquick "PRIVMSG $fm_chan :some problem with data, try again later, sorry" 
   } 
} 

if {$fmylife_auto_query != 0} { 
   if {[string match *fmylife_timer* [timers]] != 1} { 
      timer $fmylife_auto_interval fmylife_timer 
   } 
} 

putlog "fmylife-quote.tcl ver 0.3 by tomekk modified by Globulus loaded" 

User avatar
tomekk
Master
Posts: 255
Joined: Fri Nov 28, 2008 11:35 am
Location: Oswiecim / Poland
Contact:

Post by tomekk »

he he, thanks for "bug" raport ;)

after when i fixed it to ver 0.2 with auto-quote i forget to add back one global to proc:

Code: Select all

global fmylife_reuse
here is fixed script, ver 0.2:

Code: Select all

# Author: tomekk
# e-mail:  tomekk/@/oswiecim/./eu/./org
# home page: http://tomekk.oswiecim.eu.org/
#
# Version 0.2
#
# This file is Copyrighted under the GNU Public License.
# http://www.gnu.org/copyleft/gpl.html

# channels for !fmylife
set fmylife_channels {#chan #chan2}

# time between use !fmylife (seconds)
set fmylife_reuse_time 20

# auto query
# 0 - off, 1 - on
set fmylife_auto_query 0

# set auto query interval (minutes)
set fmylife_auto_interval 30

###########################################################
bind pub - !fmylife fm_main_proc

package require http

proc get_fmylife { } {
	set f_http_uagent "Opera/9.61 (Windows i686; U; en) Presto/2.1.1"
	set f_http_token [http::config -useragent $f_http_uagent]
	if {[catch {set f_http_token [::http::geturl "http://www.fmylife.com/random" -timeout 10000]}]} {
		return "error"
	} {
		return [http::data $f_http_token]
	}
}

set fmylife_reuse 1

proc fmylife_timer { } {
	global fmylife_auto_interval
	fm_auto_proc

	if {[string match *fmylife_timer* [timers]] != 1} {
		timer $fmylife_auto_interval fmylife_timer
	}
}

proc fm_auto_proc { } {
	global fmylife_channels

	set fm_quote ""
        set fm_quote [get_fmylife]

	if {($fm_quote == "error") || ($fm_quote == "")} {
		putlog "auto-quote-fmylife: problem with connection"
		return
	}

	foreach fm_each_chan [split $fmylife_channels] {
		if {$fm_each_chan != ""} { 
			set fm_each_chan [string trim $fm_each_chan]

			if {[botonchan $fm_each_chan]} {
				 fmylife_print $fm_quote $fm_each_chan
			}
		}
	}
}

proc fm_main_proc { nick uhost hand chan arg } {
	global fmylife_channels fmylife_reuse fmylife_reuse_time

	if {[expr [clock seconds] - $fmylife_reuse] <= $fmylife_reuse_time} {
		putquick "PRIVMSG $chan :$nick: to fast, sorry"
		return
	}

	if {[lsearch $fmylife_channels $chan] == -1} {
		return
	}

	set fm_quote ""
	set fm_quote [get_fmylife]

	if {($fm_quote == "error") || ($fm_quote == "")} {
		putquick "PRIVMSG $chan :problem with connection, try again later, sorry"
		return
        }

	fmylife_print $fm_quote $chan
}

proc fmylife_print { fm_data fm_chan } {
	global fmylife_reuse

	set fm_link ""

	regsub -all -nocase "\n" $fm_data "" fm_data
	regsub -all -nocase "\r" $fm_data "" fm_data
	regsub -all -nocase "\t" $fm_data "" fm_data

	# 1st quote 
	regsub -nocase {.*<div\s+class=\"post\"><p>(.+)</p><div\s+class=\"date\"\s+style=\"float:left;\">.*} $fm_data {\1} fm_data

	# 1st link
	regsub -nocase {.*<a\s+href=\"([a-z0-9\/ ]+)\"\s+class=\"fmllink\">.*} $fm_data {\1} fm_link

	# del rest of links from quote
	regsub -all -nocase {<a\s+href=\"[a-z0-9\/ ]+\"\s+class=\"fmllink\">} $fm_data "" fm_data

	# the rest of useless tags
	regsub -all -nocase "<\/a>" $fm_data "" fm_data

	set fm_link "http://www.fmylife.com$fm_link"

	if {[regexp -nocase {http:\/\/www\.fmylife\.com[a-z0-9\/ ]+} $fm_link]} { 
		putquick "PRIVMSG $fm_chan :$fm_data"
		putquick "PRIVMSG $fm_chan :--| $fm_link"
		set fmylife_reuse [clock seconds]
	} {
		putquick "PRIVMSG $fm_chan :some problem with data, try again later, sorry"
	}
}

if {$fmylife_auto_query != 0} {
	if {[string match *fmylife_timer* [timers]] != 1} {
		timer $fmylife_auto_interval fmylife_timer
	}
}

putlog "fmylife-quote.tcl ver 0.2 by tomekk loaded"
22:13:48 <@tomekk> !fmylife
22:13:48 < botty> tomekk: to fast, sorry
cheers !
G
Globulus
Voice
Posts: 8
Joined: Fri Mar 20, 2009 12:54 pm

Post by Globulus »

Haha, my script works as well but not "proper" as yours.
Thanks for clean fixing and helping TCL newbie :D
a
arbiter
Voice
Posts: 8
Joined: Mon Oct 24, 2005 8:21 pm

Post by arbiter »

i prefer it when script's use udef triggers instead of a set line, makes it earlier to enable on channels rather then opening ftp and editing or "vi"
S
Sydneybabe
Op
Posts: 106
Joined: Fri Apr 27, 2007 3:31 am
Location: Philippines

Post by Sydneybabe »

Good day tomekk, can i request if these word FML on last part of the sentence at http://www.fmylife.com/ quotes can trim or hide so that it will not appear on channel trigger.. example like this:

Today, I got a letter from the Navy saying that they accepted my application to join the Navy. I never applied. FML

.. the bold one at the end.. thanks in advance :D
Post Reply