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.

Do anyone has the working !fml tcl for the eggdrop?

Requests for complete scripts or modifications/fixes for scripts you didn't write. Response not guaranteed, and no thread bumping!
Post Reply
_
_niCk
Voice
Posts: 4
Joined: Mon Oct 08, 2018 10:20 am
Location: [IN]

Do anyone has the working !fml tcl for the eggdrop?

Post by _niCk »

Greetings,

It's been more than a month now, the !fml script has stopped giving a result while triggered.

Please help!


Best,
_niCk
User avatar
heartbroken
Op
Posts: 110
Joined: Thu Jun 23, 2011 11:15 pm
Location: somewhere out there

Post by heartbroken »

.chanset #channel +FML

TclTLS : https://core.tcl.tk/tcltls/wiki/Download (tls package)
tcllib : https://github.com/tcltk/tcllib (htmlparse package)

Code: Select all

package require http
package require tls
package require htmlparse

proc do_fml {} {
	if {[package vcompare [package present tls] 1.7] > 0} {
		::http::register https 443 [list ::tls::socket -autoservername true]
	} else {
		::http::register https 443 [list ::tls::socket -request 0 -require 1 -ssl2 0 -ssl3 0 -tls1 1]
	}
	::http::config -useragent "Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.7e" -urlencoding "utf-8"
	if {[catch {set token [http::geturl https://www.fmylife.com/random -binary 0 -timeout 15000]} err]} {
		putlog "FML Error: $err"
		return 0
	}
	if {[http::status $token] eq "ok" && [http::ncode $token] == "200"} {
		set html [http::data $token]
		::http::cleanup $token
		set out [list ]
		foreach {null data} [regexp -all -inline {block hidden\-xs\">.+?<a href=\"/article/today.+?.html\">(.*?)</a>} $html] {
			regsub -all -- {(<[^<>]+/>)} $data "" data
			regsub -all {FML} $data \00304\002\\0\003 data
			lappend out [split [string trim $data]]
		}
		set fmlout [lindex $out [expr {int(rand()*[llength $out])}]]
	} else {
		set fmlout "FML Error: [http::status $token] - [http::code $token]"
		::http::cleanup $token
	}
	::http::unregister https
	return $fmlout
}

bind pub -|- !fml fml_pubin

proc fml_pubin {nick uhost hand chan text} {
	if {![channel get $chan FML]} { return 0 }
	puthelp "PRIVMSG $chan :[join [htmlparse::mapEscapes [do_fml]]]"
}

setudef flag FML
Edited: ::http::register https … lines moved inside of the proc.
Last edited by heartbroken on Wed Nov 21, 2018 8:08 am, edited 2 times in total.
Life iS Just a dReaM oN tHE wAy to DeaTh
_
_niCk
Voice
Posts: 4
Joined: Mon Oct 08, 2018 10:20 am
Location: [IN]

Post by _niCk »

Thank you for the script, heartbroken. :)

The script worked just great at the very first trigger but after that, it didn't give the results instead returned 0.

PS

@_niCK ¦ !fml
+Twitler ¦ Today, after moving in with a couple of vegan zoologists a few weeks ago, I discover that they don't believe that we have the right to kill cockroaches, and will not allow me to do so. The house is infested, and it's spread to my bedroom. FML
@_niCk ¦ !fml
+Twitler ¦ 0
@_niCk ¦ !fml
+Twitler ¦ 0


In the bot party line, I am getting this error!

FML Error: Unsupported URL type "https"
FML Error: Unsupported URL type "https"


Please advise.

Thnx,
_niCk
User avatar
heartbroken
Op
Posts: 110
Joined: Thu Jun 23, 2011 11:15 pm
Location: somewhere out there

Post by heartbroken »

I've edited the script above. You're welcome!
Life iS Just a dReaM oN tHE wAy to DeaTh
User avatar
Dominatez
Halfop
Posts: 50
Joined: Mon Jan 14, 2019 5:08 pm
Location: United Kingdom

Post by Dominatez »

This for some odd reason was working and now has stopped.

Keeps with the error :

FML Error: timeout -

Any ideas ?
User avatar
heartbroken
Op
Posts: 110
Joined: Thu Jun 23, 2011 11:15 pm
Location: somewhere out there

Post by heartbroken »

just replace :

Code: Select all

foreach {null data} [regexp -all -inline {block hidden\-xs\">.+?<a href=\"/article/today.+?.html\">(.*?)</a>} $html] {
to:

Code: Select all

foreach {null data} [regexp -all -inline {article\-topbar\">.+?<a href=\"/article/today.+?.html\">(.*?)</a>} $html] {
Life iS Just a dReaM oN tHE wAy to DeaTh
User avatar
Dominatez
Halfop
Posts: 50
Joined: Mon Jan 14, 2019 5:08 pm
Location: United Kingdom

Post by Dominatez »

Thank you Heartbroken.

Works like a charm.
User avatar
Dominatez
Halfop
Posts: 50
Joined: Mon Jan 14, 2019 5:08 pm
Location: United Kingdom

Post by Dominatez »

Just tested this script and when i use !fml it answers with 0

Yep. That's a ZERO.

Not sure what the issue is.

Just noticed inside the eggdrop when i logged in, that it is spitting this out.

FML Error: error flushing "sock2bf05e0": connection reset by peer

UPDATE : Ok Now. Updating To 19.10 Linux has cured whatever issue it had.
User avatar
TimeRider
Voice
Posts: 30
Joined: Tue Jul 07, 2020 3:46 pm
Contact:

Post by TimeRider »

This script isn't working anymore again. Does anybody have a solution or a working TCL script for it?
User avatar
heartbroken
Op
Posts: 110
Joined: Thu Jun 23, 2011 11:15 pm
Location: somewhere out there

Post by heartbroken »

need to update that line:

Code: Select all

foreach {null data} [regexp -all -inline {block hidden\-xs\">.+?<a href=\"/article/today.+?.html\">(.*?)</a>} $html] { 
to this one:

Code: Select all

foreach {null data} [regexp -all -inline {hidden="true">.+?<a href="/article/.+?.html".+?>(.*?)</a>} $html] { 
Life iS Just a dReaM oN tHE wAy to DeaTh
User avatar
TimeRider
Voice
Posts: 30
Joined: Tue Jul 07, 2020 3:46 pm
Contact:

Post by TimeRider »

Thank you heartbroken, the Tcl script works now! :)
User avatar
vam2u
Voice
Posts: 31
Joined: Sat Mar 27, 2021 11:19 pm
Location: Malaysia

Post by vam2u »

I need help, it shows below error:-

[09:39:17] Tcl error [fml_pubin]: invalid command name " "
User avatar
heartbroken
Op
Posts: 110
Joined: Thu Jun 23, 2011 11:15 pm
Location: somewhere out there

Post by heartbroken »

I've just tested and :

Image
it is still working fine... possibly a copy-paste failor from your side. or may be you are using a txt editor which doesn't have Tcl support . like Windows notepad.
Life iS Just a dReaM oN tHE wAy to DeaTh
User avatar
vam2u
Voice
Posts: 31
Joined: Sat Mar 27, 2021 11:19 pm
Location: Malaysia

Post by vam2u »

Looks like the text editor is the culprit, but I observed some other issue.
It does not happen consistantly. Only sometimes as below.

[17:05:36] <Bot> </h2> <div class="flex justify-between"> <p class="text-blue-300 dark:text-white text-sm mt-2"> By kay-z <i class="fa fa-female" aria-hidden="true"></i> - 21/06/2014 20:32 - United States </p> </div> </div> </div> <a href="/article/miscommunication_136227.html" class="block text-blue-500 dark:text-white my-4 "> Today, my dad heard that the guy who bullied me at school died recently of a drug overdose. For some reason, he thinks we wer
[17:05:47] <@me> !fml
[17:05:48] <bot> Today, while I was in the break room at work, one of my coworkers walked in on me playing with my animal crackers, complete with animal noises. Now, the entire department won't stop teasing me and calling me Tarzan. FML
[17:05:55] <@me> !fml
[17:05:58] <bot> Today, my college basketball team Florida Atlantic University was winning 71-70 against San Diego State University. San Diego State scored a 2 pointer at the very last second of the second half of the game making us lose 71-72. FML
[17:06:00] <@me> !fml
[17:06:02] <bot> </h2> <div class="flex justify-between"> <p class="text-blue-300 dark:text-white text-sm mt-2"> By Olivia23 <i class="fa fa-female" aria-hidden="true"></i> - 08/07/2021 11:00 </p> </div> </div> </div> <a href="/article/dick_357500.html" class="block text-blue-500 dark:text-white my-4 spicy-hidden"> Today, my husband threw an epic temper tantrum because I wouldn’t have sex with him. I recently suffered from a miscarriage and the th
User avatar
heartbroken
Op
Posts: 110
Joined: Thu Jun 23, 2011 11:15 pm
Location: somewhere out there

Post by heartbroken »

Code: Select all

package require http 
package require tls 
package require htmlparse 

 proc do_fml {} { 
    if {[package vcompare [package present tls] 1.7] > 0} { 
       ::http::register https 443 [list ::tls::socket -autoservername true] 
    } else { 
       ::http::register https 443 [list ::tls::socket -request 0 -require 1 -ssl2 0 -ssl3 0 -tls1 1] 
    } 
    ::http::config -useragent "Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.7e" -urlencoding "utf-8" 
    if {[catch {set token [http::geturl https://www.fmylife.com/random -binary 0 -timeout 15000]} err]} { 
       putlog "FML Error: $err" 
    } 
    if {[http::status $token] eq "ok" && [http::ncode $token] == "200"} { 
       set html [http::data $token] 
       ::http::cleanup $token 
       set out [list ] 
       foreach {null data} [regexp -all -inline {<a href="/article/.+?.html".+?>(.*?)</a>} $html] { 
          regsub -all -- {(<[^<>]+/>)} $data "" data 
          regsub -all {FML} $data \00304\002\\0\003 data 
          lappend out [split [string trim $data]] 
       } 
       set fmlout [lindex $out [expr {int(rand()*[llength $out])}]] 
    } else { 
       set fmlout "FML Error: [http::status $token] - [http::code $token]" 
       ::http::cleanup $token 
    } 
    ::http::unregister https 
    return [string trimleft [regsub -all -- {(</h2>.+?my\-4.+?>)} $fmlout {}] \}]
 } 

 bind pub -|- !fml fml_pubin 

 proc fml_pubin {nick uhost hand chan text} { 
    if {![channel get $chan FML]} { return 0 } 
    puthelp "PRIVMSG $chan :[join [htmlparse::mapEscapes [do_fml]]]" 
 } 

 setudef flag FML 
Life iS Just a dReaM oN tHE wAy to DeaTh
Post Reply