Advertisement
Ford

Autotrans / detectlanguage.com version

May 19th, 2012
472
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
mIRC 11.95 KB | None | 0 0
  1. ;Auto Translator by Ford_Lawnmower irc.GeekShed.net #Script-Help
  2. menu Channel {
  3.   .$iif($gettok($hget(autotrans,$+($network,$chan)),3,32) == On && $group(#AutoTrans) == On,$style(1)) AutoTrans
  4.   ..$iif($group(#AutoTrans) == On,$style(1)) Auto Trans Master On/Off: $iif($group(#AutoTrans) == On,.disable,.enable) #AutoTrans  
  5.   ..Auto Trans Setup:dialog $iif($dialog(auto_translator),-v,-m) auto_translator auto_translator
  6.   ..Manage Exclusions:dialog $iif($dialog(auto_translator_exclude),-v,-m) auto_translator_exclude auto_translator_exclude
  7. }
  8. #AutoTrans On
  9. On *:Text:*:#: {
  10.   if (!$timer($+(AutoTrans,$network,$nick))) {
  11.     .timer $+ $+(AutoTrans,$network,$nick) 1 1 noop
  12.     if ($gettok($hget(autotrans,$+($network,$chan)),3,32) == On) && (!$regex($1,/^[!.@.#.+./.:.-.+]/S)) {
  13.       var %text $urlencode($utfdecode($utfencode($exclude($1-))))
  14.       tokenize 32 $hget(autotrans,$+($network,$chan))
  15.       AutoTrans $2 $iif($2 == .Msg,$chan,$iif($2 == Echo,$chan,$me)) $iif($4,$+(09[04,$nick,09]),0) $langpair($1),1,32)) %text 0
  16.     }
  17.   }
  18. }
  19. On *:Action:*:#: {
  20.   if (!$timer($+(AutoTrans,$network,$nick))) {
  21.     .timer $+ $+(AutoTrans,$network,$nick) 1 1 noop
  22.     if ($gettok($hget(autotrans,$+($network,$chan)),3,32) == On) {
  23.       var %text $urlencode($exclude($1-))
  24.       tokenize 32 $hget(autotrans,$+($network,$chan))
  25.       AutoTrans $2 $iif($2 == .Msg,$chan,$iif($2 == Echo,$chan,$me)) $iif($4,$+(09[04,$nick,09]),0) $langpair($1),1,32)) %text 0
  26.     }
  27.   }
  28. }
  29. #AutoTrans End
  30. On *:input:*: {
  31.   if ($left($strip($1),2) == \\) && (!$ctrlenter) {
  32.     haltdef
  33.     var %text $inputencode($2-)
  34.     AutoTrans msg $iif($chan,$chan,$active) $me $remove($1,\\) %text 1
  35.   }  
  36. }
  37. on ^$*:Hotlink:/\[([a-zA-Z]{2})\]-\[([a-zA-Z]{2})\]/:#,?:{
  38.   if ($mouse.key == 16) && ($input(Respond through translator $+($regml(2),-,$regml(1)),yn)) {
  39.     if ($?="Please Input your text to be translated") {
  40.       AutoTrans msg $iif($chan,$chan,$nick) $me $regml(1) $urlencode($!) 1
  41.     }  
  42.   }
  43.   halt
  44. }
  45. alias EchoAutoTrans { AutoTrans echo -a $1- }
  46. alias -l AutoTranslate {
  47.   var %sockname $+(AutoTrans,$network,$3,$ticks,$r(1,$ticks))
  48.   sockopen %sockname translate.google.com 80
  49.   sockmark %sockname $1-2 $+(/translate_t?langpair=,$4,&text=,$5) $3 $6 $4
  50. }
  51. On *:sockopen:AutoTrans*: {
  52.   if (!$sockerr) {
  53.     sockwrite -nt $sockname GET $gettok($sock($sockname).mark,3,32) HTTP/1.1
  54.     sockwrite -n $sockname Host: translate.google.com
  55.     sockwrite -n $sockname Referer: $+(http://,$ip)
  56.     sockwrite -n $sockname $crlf
  57.   }
  58.   else { echo -st Socket Error $nopath($script) | sockclose $sockname | return }
  59. }
  60. On *:sockread:AutoTrans*: {
  61.   if ($sockerr) { echo -st Socket Error $nopath($script) | sockclose $sockname | return }
  62.   else {
  63.     var %AutoTrans | sockread %AutoTrans
  64.     if ($regex(text,%AutoTrans,/backgroundColor='#fff'">(.*?)<\/span>/gi)) {
  65.       var %counter 1, %text
  66.       while (%counter <= $regml(text,0)) {
  67.         %text = $+(%text,$chr(32),$replace($fixhtml($regml(text,%counter)),quot;,"))
  68.         inc %counter
  69.       }
  70.       var %country $+([,$replace($gettok($sock($sockname).mark,6,32),|,]-[),],)
  71.       if ($gettok($sock($sockname).mark,5,32)) { $gettok($sock($sockname).mark,1-2,32) %text | sockclose $sockname | return }
  72.       elseif ($matches(%text,$recode($mid($gettok($gettok($sock($sockname).mark,3,32),-2,38),3-)))) {
  73.         $gettok($sock($sockname).mark,1-2,32) 06Translation07 %country $&
  74.           $iif($gettok($sock($sockname).mark,4,32),$gettok($sock($sockname).mark,4,32)) %text
  75.         sockclose $sockname
  76.         return  
  77.       }
  78.     }    
  79.   }
  80. }
  81. alias -l inputencode { return $regsubex($strip($1-),/([^a-z0-9])/ig,% $+ $base($asc(\t),10,16,2)) }
  82. alias -l exclude { return $regsubex($strip($1-),/(http:\/\/[\S]{1,}|www\.[\S]{1,})/g,$null) }
  83. alias -l urlencode { return $regsubex($1-,/([^a-z0-9])/ig,$urlpairs($asc(\t))) }
  84. alias -l recode { return $regsubex($1-,/%([A-Fa-f0-9]{2})/g,$chr($base(\t,16,10))) }
  85. alias -l fixhtml { return $replace($remove($regsubex($remove($regsubex($1-,/#([\d][\d][\d]?);/g,$chr(\t)),&amp;,gt;,lt;),/\\u([A-Fa-f0-9]{4})/g,$chr($base(\t,16,10))),&amp;,&),&quot;,") }
  86. alias -l notrans { return $iif($hfind(notrans,$1),1,0) }
  87. alias -l matches {
  88.   var %w $numtok($1,32),%x 1,%y 0,%z $numtok($2,32)
  89.   while (%x <= %z) {
  90.     if ($istok($1,$gettok($2,%x,32),32)) || ($notrans($gettok($2,%x,32))) { inc %y }
  91.     inc %x
  92.   }
  93.   return $iif($calc(%y / %w * 100) >= 80,0,1)
  94. }
  95. alias -l UrlPairs {
  96.   if ($1 < 255) { return $+(%,$base($1,10,16)) }
  97.   if ($1 >= 256) && ($1 < 2048) { return $+(%,$base($calc(192 + $div($1,64)),10,16),%,$base($calc(128 + $mod($1,64)),10,16)) }
  98.   if ($1 >= 2048) && ($1 < 65536) { return $+(%,$base($calc(224 + $div($1,4096)),10,16),%,$base($calc(128 + $mod($div($1,64),64)),10,16),%,$base($calc(128 + $mod($1,64)),10,16)) }
  99. }
  100. alias -l div { return $int($calc($1 / $2)) }
  101. alias -l mod {
  102.   var %int $int($calc($1 / $2))
  103.   return $calc($1 - (%int * $2))
  104. }
  105. dialog Auto_Translator {
  106.   title "Auto Translator Setup"
  107.   size -1 -1 118 126
  108.   option dbu
  109.   text "Target Language:", 1, 4 9 45 8, right
  110.   text "Network:", 2, 4 25 45 8, right
  111.   text "Channel:", 3, 4 42 45 8, right
  112.   text "Output Type:", 4, 4 59 45 8, right
  113.   combo 5, 51 8 62 11, drop
  114.   combo 6, 51 24 62 11, drop
  115.   combo 7, 51 41 62 11, drop
  116.   combo 8, 51 58 62 11, drop
  117.   combo 9, 51 77 62 11, drop
  118.   text "Status:", 10, 4 78 45 8, right
  119.   button "Accept", 11, 78 110 34 12
  120.   button "Cancel", 12, 39 110 34 12, cancel
  121.   check "Show Nickname", 13, 63 97 50 10
  122. }
  123. dialog Auto_Translator_Exclude {
  124.   title "Auto Translator Exclusion Manager"
  125.   size -1 -1 144 144
  126.   option dbu
  127.   text "Exclusion:", 1, 4 7 27 8, right
  128.   text "Exclusions", 2, 1 21 142 8, center
  129.   edit "", 3, 33 6 72 10, autohs
  130.   list 4, 6 33 131 94, vsbar
  131.   button "Add", 5, 107 5 29 12
  132.   button "Delete", 6, 50 130 37 12
  133.   button "Close", 7, 97 130 37 12, cancel
  134. }
  135. On *:dialog:Auto_Translator_Exclude:Sclick:5,6: {
  136.   if ($did == 5) && ($did($dname,3).text) { hadd -m notrans $v1 | did -r $dname 3 }
  137.   if ($did == 6) && ($did($dname,4).seltext) { hdel notrans $v1 }
  138.   did -r $dname 4
  139.   didtok $dname 4 32 $regsubex($str(.,$hget(notrans,0).item),/./g,$hget(notrans,\n).item $+ $chr(32))
  140. }
  141. On *:dialog:Auto_Translator_Exclude:init:*: {
  142.   didtok $dname 4 32 $regsubex($str(.,$hget(notrans,0).item),/./g,$hget(notrans,\n).item $+ $chr(32))
  143. }
  144. on *:dialog:Auto_Translator:Sclick:6,7,11: {
  145.   if ($did == 11) {
  146.     tokenize 32 $did($dname,6).seltext $did($dname,7).seltext $did($dname,5).seltext $did($dname,8).seltext $did($dname,9).seltext
  147.     hadd -m autotrans $+($1,$chr(35),$2) $3- $did($dname,13).state
  148.     dialog -x $dname
  149.   }
  150.   if ($did == 6) {
  151.     did -r $dname 7
  152.     didtok $dname 7 35 $chans($did($dname,6).seltext)
  153.     did -fc $dname 7 1
  154.   }
  155.   if ($hget(autotrans,$+($did($dname,6).seltext,$chr(35),$did($dname,7).seltext))) {
  156.     var %match $v1
  157.     did -c $dname 5 $didwm($dname,5,$gettok(%match,1,32))
  158.     did -c $dname 8 $didwm($dname,8,$gettok(%match,2,32))
  159.     did -c $dname 9 $didwm($dname,9,$gettok(%match,3,32))
  160.     did $iif($gettok(%match,4,32),-c,-u) $dname 13
  161.   }
  162. }
  163. on *:dialog:Auto_Translator:init:*: {
  164.   didtok $dname 5 44 AFRIKAANS,ALBANIAN,AMHARIC,ARABIC,ARMENIAN,AZERBAIJANI,BASQUE,BELARUSIAN,BENGALI,BIHARI,BULGARIAN,BURMESE,CATALAN,CHEROKEE
  165.   didtok $dname 5 44 CHINESE,CHINESE_SIMPLIFIED,CHINESE_TRADITIONAL,CROATIAN,CZECH,DANISH,DHIVEHI,DUTCH,ENGLISH,ESPERANTO,ESTONIAN,FILIPINO
  166.   didtok $dname 5 44 FINNISH,FRENCH,GALICIAN,GEORGIAN,GERMAN,GREEK,GUARANI,GUJARATI,HEBREW,HINDI,HUNGARIAN,ICELANDIC,INDONESIAN,INUKTITUT
  167.   didtok $dname 5 44 IRISH,ITALIAN,JAPANESE,KANNADA,KAZAKH,KHMER,KOREAN,KURDISH,KYRGYZ,LAOTHIAN,LATVIAN,LITHUANIAN,MACEDONIAN,MALAY,MALAYALAM
  168.   didtok $dname 5 44 MALTESE,MARATHI,MONGOLIAN,NEPALI,NORWEGIAN,ORIYA,PASHTO,PERSIAN,POLISH,PORTUGUESE,PUNJABI,ROMANIAN,RUSSIAN,SANSKRIT,SERBIAN
  169.   didtok $dname 5 44 SINDHI,SINHALESE,SLOVAK,SLOVENIAN,SPANISH,SWAHILI,SWEDISH,TAJIK,TAMIL,TAGALOG,TELUGU,THAI,TIBETAN,TURKISH,UKRAINIAN
  170.   didtok $dname 5 44 URDU,UZBEK,UIGHUR,VIETNAMESE,WELSH,YIDDISH
  171.   did -c $dname 5 $didwm($dname,5,ENGLISH)
  172.   var %nets $scon(0)
  173.   while (%nets) { scon %nets did -a $dname 6 $!network | dec %nets }
  174.   did -c $dname 6 $didwm($dname,6,$network)
  175.   didtok $dname 7 35 $chans($network)
  176.   did -c $dname 7 $didwm($dname,7,$mid($active,2-))
  177.   didtok $dname 8 44 Echo,.Msg,.Notice
  178.   did -c $dname 8 1
  179.   didtok $dname 9 44 On,Off
  180.   did -c $dname 9 2
  181.   if ($hget(autotrans,$+($network,$active))) {
  182.     var %match $v1
  183.     did -c $dname 5 $didwm($dname,5,$gettok(%match,1,32))
  184.     did -c $dname 8 $didwm($dname,8,$gettok(%match,2,32))
  185.     did -c $dname 9 $didwm($dname,9,$gettok(%match,3,32))
  186.     did $iif($gettok(%match,4,32),-c,-u) $dname 13
  187.   }
  188. }
  189. alias -l LangPair {
  190.   var %return $replace($1-,AFRIKAANS,af,ALBANIAN,sq,AMHARIC,am,ARABIC,ar,ARMENIAN,hy,AZERBAIJANI,az,BASQUE,eu,BELARUSIAN,be,BENGALI,bn,$&
  191.     BIHARI,bh,BULGARIAN,bg,BURMESE,my,CATALAN,ca,CHEROKEE,chr,CHINESE,zh,CHINESE_SIMPLIFIED,CN,CHINESE_TRADITIONAL,TW,$&
  192.     CROATIAN,hr,CZECH,cs,DANISH,da,DHIVEHI,dv,DUTCH,nl,ENGLISH,en,ESPERANTO,eo,ESTONIAN,et,FILIPINO,tl,FINNISH,fi,FRENCH,fr,$&
  193.     GALICIAN,gl,GEORGIAN,ka,GERMAN,de,GREEK,el,GUARANI,gn,GUJARATI,gu,HEBREW,iw,HINDI,hi,HUNGARIAN,hu,ICELANDIC,is,$&
  194.     INDONESIAN,id,INUKTITUT,iu,IRISH,ga,ITALIAN,it,JAPANESE,ja,KANNADA,kn,KAZAKH,kk,KHMER,km,KOREAN,ko,KURDISH,ku,KYRGYZ,ky)
  195.   return $replace(%return,LAOTHIAN,lo,LATVIAN,lv,LITHUANIAN,lt,MACEDONIAN,mk,MALAY,ms,MALAYALAM,ml,MALTESE,mt,MARATHI,mr,MONGOLIAN,mn,NEPALI,ne,$&
  196.     NORWEGIAN,no,ORIYA,or,PASHTO,ps,PERSIAN,fa,POLISH,pl,PORTUGUESE,pt,PUNJABI,pa,ROMANIAN,ro,RUSSIAN,ru,SANSKRIT,sa,$&
  197.     SERBIAN,sr,SINDHI,sd,SINHALESE,si,SLOVAK,sk,SLOVENIAN,sl,SPANISH,es,SWAHILI,sw,SWEDISH,sv,TAJIK,tg,TAMIL,ta,TAGALOG,tl,$&
  198.     TELUGU,te,THAI,th,TIBETAN,bo,TURKISH,tr,UKRAINIAN,uk,URDU,ur,UZBEK,uz,UIGHUR,ug,VIETNAMESE,vi,WELSH,cy,YIDDISH,yi)
  199. }
  200. alias -l chans { scon $netid($1) return $!regsubex($str(.,$chan(0)),/./g,$chan(\n)) }
  201. alias -l netid {
  202.   var %netcount $scon(0)
  203.   while %netcount {
  204.     if ($scon(%netcount).network == $1) { return %netcount }
  205.     dec %netcount
  206.   }
  207. }
  208. On *:Start:{
  209.   hmake AutoTrans 5
  210.   hmake NoTrans 5
  211.   if ($exists(AutoTrans.hsh)) { hload AutoTrans AutoTrans.hsh  }
  212.   if ($exists(NoTrans.hsh)) { hload NoTrans NoTrans.hsh  }
  213. }
  214. On *:Disconnect:{
  215.   if ($hget(AutoTrans)) { hsave AutoTrans AutoTrans.hsh }
  216.   if ($hget(NoTrans)) { hsave NoTrans NoTrans.hsh }  
  217. }
  218. On *:Exit:{
  219.   if ($hget(AutoTrans)) {
  220.     hsave AutoTrans AutoTrans.hsh
  221.     hfree AutoTrans
  222.   }
  223.   if ($hget(NoTrans)) {
  224.     hsave NoTrans NoTrans.hsh
  225.     hfree NoTrans
  226.   }  
  227. }
  228. On *:Unload:{ hfree AutoTrans | hfree NoTrans }
  229. ;;;;;;;Start edit;;;;;;;;;
  230. alias -l parsejson {
  231.   noop $regex($1,/ $+ $qt($2) $+ :"?(.*?)["\}\x2c]/gi)
  232.   return $regml($3)
  233. }
  234. ;alias EchoLanguageDetection LanguageDetection echo -a $1-
  235. alias -l AutoTrans {
  236.   var %sockname $+(LanguageDetection,$network,$3,$ticks,$r(1,$ticks))
  237.   sockopen %sockname ws.detectlanguage.com 80
  238.   sockmark %sockname $1-2 $+(/0.2/detect?q=,$5,&key=438fe53492f05326fa5b2fe0a0f696df) $3 $6 $4 $5
  239. }
  240. On *:sockopen:LanguageDetection*: {
  241.   if (!$sockerr) {
  242.     sockwrite -nt $sockname GET $gettok($sock($sockname).mark,3,32) HTTP/1.0
  243.     sockwrite -n $sockname Host: $sock($sockname).addr
  244.     sockwrite -n $sockname $crlf
  245.   }
  246.   else { echo -st Socket Error $nopath($script) | sockclose $sockname | return }
  247. }
  248. On *:sockread:LanguageDetection*: {
  249.   if ($sockerr) { echo -st Socket Error $nopath($script) | sockclose $sockname | return }
  250.   else {
  251.     sockread -f &LanguageDetection
  252.     var %LanguageDetection $bvar(&LanguageDetection,1-).text, %confidence .097
  253.     if (($parsejson(%LanguageDetection,isReliable,1) == true && $parsejson(%LanguageDetection,language,1)) ||$&
  254.      ($parsejson(%LanguageDetection,confidence,1) > %confidence && $parsejson(%LanguageDetection,language,1))) {
  255.       var %l1 $v1
  256.       tokenize 32 $sock($sockname).mark
  257.       if (%l1 != $6) {
  258.         Autotranslate $1-2 $4 $+(%l1,|,$6) $7 $5
  259.       }
  260.     }
  261.   }
  262. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement