Advertisement
mruno

twitter stream (edited)

May 23rd, 2017
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
mIRC 13.46 KB | None | 0 0
  1. ;Twitter Channel by Ford_Lawnmower irc.GeekShed.net #Script-Help
  2. ;;;;;;;;;;;;;;;;;
  3. ;::Start Setup::;
  4. ;;;;;;;;;;;;;;;;;
  5. ;Edit the lines below to reflect your Twitter Application info.
  6. alias -l name.brackets.color return 02
  7. alias -l name.color return  $+ $rand(0,15)
  8. alias -l retweets.enabled return 0
  9.  
  10. alias -l consumer_key return
  11. alias -l consumer_secret return
  12. alias -l oauth_token return
  13. alias -l oauth_token_secret return
  14. alias -l MyTwitterScreenName return
  15. ;;;;;;;;;;;;;;;
  16. ;::End Setup::;
  17. ;;;;;;;;;;;;;;;
  18. menu * {
  19.   .Twitter Stream
  20.   ..$iif($timer(mIRCTwitter),Off,On): {
  21.     if ($timer(mIRCTwitter)) {
  22.       .timermIRCTwitter off
  23.       hadd -m mIRCTwitter Status 0
  24.     }
  25.     else {
  26.       mIRCTwitter
  27.       .timermIRCTwitter -o 0 $iif($hget(mIRCTwitter,Delay),$hget(mIRCTwitter,Delay),60) mIRCTwitter
  28.       hadd -m mIRCTwitter Status 1
  29.     }
  30.   }
  31.   ..SetUp
  32.   ...Set Delay:hadd -m mIRCTwitter Delay $iif($$?="Enter Delay in Seconds" > 59,$!,60) | mtsave
  33.   ...Set Method of Output
  34.   ....Bot Message(.msg #Channel):hadd mIRCTwitter Method $network .msg $$?="Enter the Channel Name including the #prefix" | mtsave
  35.   ....Message(msg #Channel):hadd mIRCTwitter Method $network msg $$?="Enter the Channel Name including the #prefix" | mtsave
  36.   ....Echo(Echo -at):hadd mIRCTwitter Method echo -at | mtsave
  37.   ....Window(Echo -t @Twitter):hadd mIRCTwitter Method echo -t @Twitter | mtsave
  38. }
  39. alias -l mIRCTwitter mTwitterGetStatus echo -a $consumer_key $consumer_secret $oauth_token $oauth_token_secret
  40. alias mIRCTweet mTwitterUpdate echo -a $consumer_key $consumer_secret $oauth_token $oauth_token_secret $1-
  41. ;Syntax mTwitterUpdate echo -a consumer_key consumer_secret oauth_token oauth_token_secret status update here
  42. ;Note that echo -a can be changed to msg $chan or notice $nick ( must be two words )
  43. alias -l mTwitterUpdate {
  44.   var %ots $ctime, %sockname mTwitterUpdate, %once $md5(%sockname)
  45.   var %os $signature(post,https://api.twitter.com/1.1/statuses/update.json,$3,$4,$5,$6,%once,%ots,$+(status=,$tuenc($7-)))
  46.   .sockclose %sockname
  47.   sockopen -e %sockname api.twitter.com 443
  48.   sockmark %sockname $1-2 $space2comma($+(oauth_nonce=,$qt(%once)) $osmqt $+(oauth_timestamp=,$qt(%ots)) $+(oauth_consumer_key=,$qt($tuenc($3))) $&
  49.     $+(oauth_token=,$qt($tuenc($5))) $+(oauth_signature=,$qt($suenc(%os))) $overqt) $+(status=,$tuenc($7-))
  50. }
  51. on *:sockopen:mTwitterUpdate: {
  52.   if ($sockerr) echo -st Socket Error $nopath($script)
  53.   else {
  54.     tokenize 32 $sock($sockname).mark
  55.     sockwrite -n $sockname POST /1.1/statuses/update.json HTTP/1.1
  56.     sockwrite -n $sockname Host: api.twitter.com
  57.     sockwrite -n $sockname User-Agent: Lawnmower 9.64
  58.     sockwrite -n $sockname Authorization: OAuth realm="/1.1/statuses/update.json", $3
  59.     sockwrite -n $sockname Content-Type: application/x-www-form-urlencoded
  60.     sockwrite -n $sockname Content-Length: $len($4)
  61.     sockwrite -n $sockname
  62.     sockwrite -n $sockname $4
  63.     sockwrite -n $sockname
  64.   }
  65. }
  66. on *:sockread:mTwitterUpdate: {
  67.   if ($sockerr) { $gettok($sock($sockname).mark,1-2,32) Unknown Socket error $nopath($script) }
  68.   else {
  69.     var %mTwitterUpdatevar | sockread %mTwitterUpdatevar
  70.     if (HTTP/1.1 401 isin %mTwitterUpdatevar) {
  71.       $gettok($sock($sockname).mark,1-2,32) Password/Username Error --> %mTwitterUpdatevar
  72.       sockclose $sockname | return
  73.     }
  74.     elseif (HTTP/1.1 502 isin %mTwitterUpdatevar) || (HTTP/1.1 503 isin %mTwitterUpdatevar) {
  75.       $gettok($sock($sockname).mark,1-2,32) Server Busy Error --> %mTwitterUpdatevar
  76.       sockclose $sockname | return
  77.     }
  78.     elseif (HTTP/1.1 500 isin %mTwitterUpdatevar) {
  79.       $gettok($sock($sockname).mark,1-2,32) Server Side Error --> %mTwitterUpdatevar
  80.       sockclose $sockname | return      
  81.     }
  82.     elseif (HTTP/1.1 403 isin %mTwitterUpdatevar) {
  83.       $gettok($sock($sockname).mark,1-2,32) Connection Actively Refused --> %mTwitterUpdatevar
  84.       sockclose $sockname | return      
  85.     }
  86.     elseif (HTTP/1.1 400 isin %mTwitterUpdatevar) {
  87.       $gettok($sock($sockname).mark,1-2,32) Unknown Error --> %mTwitterUpdatevar
  88.       sockclose $sockname | return
  89.     }
  90.     elseif (HTTP/1.1 200 isin %mTwitterUpdatevar) {
  91.       $gettok($sock($sockname).mark,1-2,32) Updating Status Please Wait.........
  92.     }
  93.     elseif (status: 200 OK isin %mTwitterUpdatevar) {
  94.       .timer 1 3 $gettok($sock($sockname).mark,1-2,32) Your Status has been updated :)
  95.       sockclose $sockname | return
  96.     }
  97.   }
  98. }
  99. alias -l mTwitterGetStatus {
  100.   var %ots $ctime, %sockname mTwitterGetStatus, %once $md5(%sockname), %sinceid $iif($hget(mirctwitter,last_id),$v1,1)
  101.   var %os $signature(GET,https://api.twitter.com/1.1/statuses/home_timeline.json,$3,$4,$5,$6,%once,%ots,$+(since_id=,%sinceid))
  102.   .sockclose %sockname
  103.   sockopen -e %sockname api.twitter.com 443
  104.   sockmark %sockname $1-2 $space2comma($+(oauth_nonce=,$qt(%once)) $osmqt $+(oauth_timestamp=,$qt(%ots)) $+(oauth_consumer_key=,$qt($tuenc($3))) $&
  105.     $+(oauth_token=,$qt($tuenc($5))) $+(oauth_signature=,$qt($suenc(%os))) $overqt $+(since_id=,%sinceid)) 1 1
  106. }
  107. on *:sockopen:mTwitterGetStatus: {
  108.   if ($sockerr) echo -st Socket Error $nopath($script)
  109.   else {
  110.     .remove $sockname
  111.     tokenize 32 $sock($sockname).mark
  112.     sockwrite -n $sockname GET /1.1/statuses/home_timeline.json? $+ $+(since_id=,$iif($hget(mirctwitter,last_id),$v1,1)) HTTP/1.1
  113.     sockwrite -n $sockname Host: api.twitter.com
  114.     sockwrite -n $sockname User-Agent: Lawnmower 9.64
  115.     sockwrite -n $sockname Authorization: OAuth realm="/1.1/statuses/home_timeline.json", $3
  116.     sockwrite -n $sockname Content-Type: application/x-www-form-urlencoded
  117.     sockwrite -n $sockname Connection: close
  118.     sockwrite -n $sockname $crlf
  119.   }
  120. }
  121. On *:sockread:mTwitterGetStatus: {
  122.   if ($sockerr) { echo -st Socket Error $nopath($script) | sockclose $sockname | return }
  123.   else {
  124.     sockread -f &getstatus
  125.     var %mTwitterGetStatus $bvar(&getstatus,1-).text
  126.     if (%mTwitterGetStatus) write -n $sockname %mTwitterGetStatus
  127.   }
  128. }
  129. On *:sockclose:mTwitterGetStatus: {
  130.   bread $sockname 0 $file($sockname).size &mTwitterGetStatus
  131.   var %mcount 1
  132.   while ($bintween(&mTwitterGetStatus,{"created_at":,"source":,%mcount)) {
  133.     var %tweetinfo $v1, %userinfo $bintween(&mTwitterGetStatus,"user":{,"location":,%mcount)
  134.     noop $regex(%tweetinfo,/"id_str":"(.*?)"\x2c"text":"(.*)"/i)
  135.     if (!$hget(mirctwitter,Last_ID)) hadd mirctwitter Last_ID 1
  136.     if ($regml(1) > $hget(mirctwitter,Last_ID)) { hadd -m mirctwitter Last_ID $regml(1) }
  137.     var %id $regml(1), %tweet $regml(2)
  138.     noop $regex(%userinfo,/"screen_name":"(.*)"/i)
  139.     var %screenname $regml(1)
  140.     inc %mcount
  141.  
  142.     var %BEFORE %tweet
  143.     ;iecho BEFORE: %before
  144.  
  145.     if (truncated:true isin %tweet) .timermIRCTwitter.truncated 1 90 mIRCTwitter
  146.  
  147.  
  148.     set %tweet $replace($remove($gettok(%tweet,1,123)," $+ $chr(44) $+ "entities":),\u2019,',\",",\,/,\n,$chr(32),/"@,@,/",/,/u201c,",/u201d,",&,&,//,/,////,//,/u2026,ߪ,/n,$chr(32))
  149.     set %tweet $remove(%tweet,"truncated":false,https:////t.co//kZdHqaNTVR","entities":,"entities":,truncated:true,entities:,truncated:false,$chr(44) $+ $chr(44),"truncated":true)
  150.     set %tweet $remove.emoji(%tweet)
  151.     if ($right(%tweet,1) == ") set %tweet $left(%tweet,-1)
  152.  
  153.     if (!$retweets.enabled) && (*RT @* iswm %tweet) {
  154.       iecho Blocked retweet: %tweet
  155.       return
  156.     }
  157.  
  158.     if (%screenname != ThePriceOfBTC) iecho Tweet: %screenname - $gettok(%tweet,1,2026)
  159.  
  160.     var %Method $hget(mIRCTwitter,Method)
  161.     if (%Method == echo -at) { %Method $fix&#($+($name.brackets.color,<,$name.color,%screenname,$name.brackets.color,>) %tweet) }
  162.     elseif ($me ison $gettok(%Method,3,32)) {
  163.       if (%tweet) .timer 1 $gettok($sock($sockname).mark,5,32) $gettok(%Method,2-,32) $fix&#($+($name.brackets.color,<,$name.color,%screenname,$name.brackets.color,>) %tweet)
  164.       else echo -st ERROR: No Tweet! Before: %before
  165.     }
  166.     else {
  167.       if (!$window(@Twitter)) { window -E @Twitter }
  168.       var %NextTweet $fix&#($+($name.brackets.color,<,$name.color,%screenname,$name.brackets.color,>) %tweet) 02,08[04RT02]
  169.       aline -p @Twitter $timestamp %NextTweet
  170.       if ($istok(%NextTweet,$MyTwitterScreenName,32)) {
  171.         if (!$window($MyTwitterScreenName)) { window -E $MyTwitterScreenName }
  172.         aline -p $MyTwitterScreenName $timestamp %NextTweet
  173.         noop $tip(%screenname,Twitter $MyTwitterScreenName,%NextTweet,60,,,,)
  174.       }
  175.     }
  176.   }
  177.   .remove $sockname
  178. }
  179. alias remove.emoji {
  180.   var %text $1-
  181.   while ($wildtok(%text,ud???,0,47)) set %text $remove(%text,/ $+ $wildtok(%text,ud???,1,47))
  182.   while ($wildtok(%text,ud???,0,32)) set %text $remove(%text,/ $+ $wildtok(%text,ud???,1,32))
  183.   return %text
  184. }
  185. alias -l bintween {
  186.   var %mcount = 1, %mark = 0, %mark2 = 0
  187.   while (%mcount <= $4) {
  188.     if ($bfind($1, %mark2, $2).text) {
  189.       %mark = $calc($bfind($1, %mark2, $2).text + $len($2))
  190.       if ($bfind($1, %mark, $3).text) {
  191.         %mark2 = $bfind($1, %mark, $3).text
  192.       }
  193.       else { return 0 }
  194.     }
  195.     else { return 0 }
  196.     inc %mcount
  197.   }
  198.   return $bvar($1, $iif(%mark > 0,%mark,1), $calc(%mark2 - %mark)).text
  199. }
  200. ;Syntax $signature(POST/GET,URL,consumer_key,consumer_secret,oauth_token,oauth_token_secret,oauth_nonce,oauth_timestamp,PostData)
  201. alias -l signature {
  202.   var %method $+($upper($1),&), %url $+($tuenc($2),&), %ck $tuenc&($+(oauth_consumer_key=,$3)), %ot $tuenc&($+(oauth_token=,$5))
  203.   var %once $tuenc&($+(oauth_nonce=,$7)), %ots $tuenc&($+(oauth_timestamp=,$8)), %post $iif($9-,$tuenc($+(&,$9-)))
  204.   return $hmacsha1($+($4,&,$iif($6,$6)),$+(%method,%url,%ck,%once,$tuenc&($osm),%ots,%ot,$tuenc($over),%post))
  205. }
  206. alias -l osm return oauth_signature_method=HMAC-SHA1
  207. alias -l osmqt return oauth_signature_method="HMAC-SHA1"
  208. alias -l over return oauth_version=1.0
  209. alias -l overqt return oauth_version="1.0"
  210. alias -l tuenc return $regsubex($replace($1-,+,$chr(32)),/([^a-z0-9._-])/ig,% $+ $base($asc(\t),10,16,2))
  211. alias -l suenc return $regsubex($1-,/([^a-z0-9._-])/ig,% $+ $base($asc(\t),10,16,2))
  212. alias -l space2comma return $replace($1-,$chr(32),$chr(44))
  213. alias -l tuenc& return $tuenc($+($1,&))
  214. ;hmacsha1 by Ford_Lawnmower irc.GeekShed.net #Script-Help
  215. ;Syntax hmacsha1 key message or $hmacsha1(key,message)
  216. alias -l hmacsha1 {
  217.   var %key $1, %data $2
  218.   bset -c &key 1 $regsubex(%key,/(.)/g, $asc(\1) $chr(32))
  219.   bset -c &data 1 $regsubex(%data,/(.)/g, $asc(\1) $chr(32))
  220.   if ($bvar(&key,0) > 64) bset -c &key 1 $hex2chr($sha1(&key,1))
  221.   bset -c &ipad 1 $xorall($str($+(54,$chr(32)),64),$bvar(&key,1-))
  222.   bset -c &opad 1 $xorall($str($+(92,$chr(32)),64),$bvar(&key,1-))
  223.   bcopy &ipad $calc($bvar(&ipad,0) + 1) &data 1 -1
  224.   bset -c &ipad 1 $hex2chr($sha1(&ipad,1))
  225.   bcopy &opad $calc($bvar(&opad,0) + 1) &ipad 1 -1
  226.   bset -c &return 1 $hex2chr($sha1(&opad,1))
  227.   noop $encode(&return, mb)
  228.   $iif($isid,return,$iif(#,say,echo -a)) $bvar(&return, 1-).text
  229. }
  230. alias -l hex2chr return $regsubex($1-,/(.{2})/g, $base(\t,16,10) $chr(32))
  231. alias -l xorall {
  232.   var %p $1, %k $2, %end $iif($regex($1,/([\d]{1,})/g) > $regex($2,/([\d]{1,})/g),$v1,$v2)
  233.   return $regsubex($str(.,%end),/(.)/g,$+($xor($iif($gettok(%p,\n,32),$v1,0),$iif($gettok(%k,\n,32),$v1,0)),$chr(32)))
  234. }
  235. On *:input:$($+($MyTwitterScreenName,$chr(44),@Twitter)): {
  236.   if ($left($1,1) != /) {
  237.     haltdef
  238.     ;$+($name.brackets.color,<,$name.color,%screenname,$name.brackets.color,>)
  239.     echo -t $active $+($name.brackets.color,<,$name.color,$mid($MyTwitterScreenName,2-),$name.brackets.color,>09) $1-
  240.     mIRCTweet $1-
  241.   }
  242. }
  243. alias -l fix&# {
  244.   return $regsubex($regsubex($replace($regsubex($regsubex($1-,/\\u[a-f0-9]{4}/g,$H2U(\t)),/(\\)(?!\\)/g,$null),&quot;,",&amp;,&,&gt;,>,&lt;,<),/\&#(\d+);/g,$UTF8(\t)),$&
  245.     /([$\|%\[\]\}\{][^\s]*)/g,$+($chr(2),$chr(2),\t))
  246. }
  247. alias -l UTF8 {
  248.   if ($version >= 7) return $chr($1)
  249.   elseif ($1 < 255) { return $chr($1) }
  250.   elseif ($1 >= 256) && ($1 < 2048) { return $+($chr($calc(192 + $div($1,64))),$chr($calc(128 + $mod($1,64)))) }
  251.   elseif ($1 >= 2048) && ($1 < 65536) { return $+($chr($calc(224 + $div($1,4096))),$chr($calc(128 + $mod($div($1,64),64))),$chr($calc(128 + $mod($1,64)))) }
  252.   elseif ($1 >= 65536) && ($1 < 2097152) {
  253.     return $+($chr($calc(240 + $div($1,262144))),$chr($calc(128 + $mod($div($1,4096),64))),$chr($calc(128 + $mod($div($1,64),64))),$&
  254.       $chr($calc(128 + $mod($1,64))))
  255.   }
  256. }
  257. alias -l div { return $int($calc($1 / $2)) }
  258. alias -l mod {
  259.   var %int $int($calc($1 / $2))
  260.   return $calc($1 - (%int * $2))
  261. }
  262. alias -l H2U { return $utf8($base($1,16,10)) }
  263. alias -l mtsave {
  264.   if ($hget(mIRCTwitter,Status)) {
  265.     .timermIRCTwitter -o 0 $iif($hget(mIRCTwitter,Delay),$hget(mIRCTwitter,Delay),60) mIRCTwitter
  266.   }
  267.   if ($hget(mIRCTwitter)) { hsave mIRCTwitter mIRCTwitter.hsh }
  268. }
  269. on ^$*:HOTLINK:/^<([^<>]*)>/S:$($+($MyTwitterScreenName,$chr(44),@Twitter)):{
  270.   if ($1) { return }
  271.   halt
  272. }
  273. on ^$*:HOTLINK:/^\[RT\]/S:$($+($MyTwitterScreenName,$chr(44),@Twitter)):{
  274.   if ($1) { return }
  275.   halt
  276. }
  277. on $*:HOTLINK:/^<([^<>]*)>/S:$($+($MyTwitterScreenName,$chr(44),@Twitter)):{
  278.   if ($mouse.key) { editbox $active $+(@,$strip($regml(1))) }
  279.   halt
  280. }
  281. on $*:HOTLINK:/^\[RT\]/S:$($+($MyTwitterScreenName,$chr(44),@Twitter)):{
  282.   if ($mouse.key) {
  283.     noop $regex($hotline,/<([^<>]*)>(.*)\[RT\]/S)
  284.     editbox $active RT $strip($+(@,$regml(1)) $regml(2))
  285.   }
  286.   halt
  287. }
  288. On *:Start: {
  289.   hmake mIRCTwitter 1
  290.   if ($isfile(mIRCTwitter.hsh)) { hload mIRCTwitter mIRCTwitter.hsh | mtsave }
  291. }
  292. On *:Unload: {
  293.   if ($hget(mIRCTwitter)) { hfree mIRCTwitter }
  294.   if ($isfile(mIRCTwitter.hsh)) { .remove mIRCTwitter.hsh }
  295. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement