忍者ブログ
個人HP After Cider の管理人、 ほねっとのブログです。 なのはプロジェクトとか大好きです。 八神はやてが大好きな管理人です。 コメント歓迎です!
[208] [207] [206] [205] [204] [203] [202] [201] [200] [199] [198]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Twitterではやてちゃんぼっとをつくったよ

はやてクラスタのみなさんが最近はやてちゃんを愛でまくりで、
「はやてちゃんぼっとまだ?」という発言が多かったので作っ
てしまいました。

ぼっと(bot)とは…プログラムによって自動的に発言するキャラ
クターのこと

ということで、はやてちゃんぼっとのアドレスは
http://twitter.com/YagamiHayatebot

です、よろしくおねがいします☆
まだ発展途上なので暴走するかもしれないので甘く見てください><

 
ぼっとを作るよ

はやてにちなんで、8810秒でプログラミング!

C++で作って、タスク常駐プログラムにしたいな~と思ってVC++起動。
しかし!どうやってやるのかわからない!

8810秒の制限があるので、いちから調べる時間はなかったので、諦め。

じゃぁ・・・Flashしかないですよね!

ってことで、Flashでちゃきちゃきーっとコーディング。

発言のリストをXMLで作ろうと思ったんですが、なぜかXMLで躓いてしま
ったので、いまはコードに直うちです。

main.asはパスワード入力ボックスとスタートボタンがおいてあって、
もうひとつ発言をまとめたクラスがあります。

はやてちゃんぼっとの本体のコードをのっけてみましょう。
package 
{
 import com.hurlant.crypto.symmetric.CTRMode;
 import flash.display.Loader;
 import flash.display.LoaderInfo;
 import flash.events.*;
 import flash.net.*;
 import flash.display.MovieClip;
 import HayateYagamiMessage;
 import flash.utils.*;
 import com.hurlant.crypto.*;
 import com.hurlant.util.*;
  
 /**
  * ...
  * @author honet
  */
 public class HayateYagami{
  private var _password:String;
  private var Message:HayateYagamiMessage;
  public function HayateYagami()
  { 
   Message = new HayateYagamiMessage();
  }
  private var tim:Timer;
  public function Post(e:Event):void {
   twit(Message.getMessage(int(Message.getMessageLength * Math.random())), _password);
   tim = new Timer(60 * 60 * 1000,1);
   tim.addEventListener(TimerEvent.TIMER, this.Post);
   tim.start();
  }
  public function get timeCurrent():int {
   return tim.currentCount;
  }
 
  public function passchanged(_string:String ):void {
   _password = _string;
  }
  
  public function twit(st:String,pass:String, email:String="YagamiHayatebot"):void {
   var loader:URLLoader = new URLLoader();
   trace("message=" + st);
   var date:Date = new Date();
   var urlReq:URLRequest = new URLRequest("http://twitter.com/statuses/update.xml?nocache="+date.getTime());
   var auth:* = Base64.encode(email + ":" + pass);
   var reqHead:URLRequestHeader = new URLRequestHeader("Authorization", "Basic " + auth);
   urlReq.requestHeaders.push(reqHead);
   urlReq.method = URLRequestMethod.POST;
   urlReq.contentType = "application/x-www-form-urlencoded";
   var uv:URLVariables = new URLVariables();
   uv.decode("status=" + st);
   trace("status=" + st + "pass=" + pass + "email=" + email);
   urlReq.data = uv;
   loader.addEventListener(ProgressEvent.PROGRESS, trace);
   loader.addEventListener(IOErrorEvent.IO_ERROR, trace);
   loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, trace);
   loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, trace);
   trace(urlReq.data);
   trace(urlReq.url);
   loader.load(urlReq);
  }
 }
}


・・・なんと見づらい!説明しづらいのです・・・

で、これができたので、Flashで走らせてみたのですがなんせ
常時プログラムが起動していて間違って終了させてしまうこともしばしば…

ということで、C++を再起動!C++でFlashを再生して、そのプログラムを
隠せばいいんですね。

最初、MFCからActiveXを操作して再生しようとしたのですが、うまくいかない。
1時間ぐらい格闘…

諦めかけていた時、@__parkさん(http://kataho.net/about.html)から助け舟!

「IEコンポーネントブラウザにしてしまうってのは?」

それだ!

ということで@__parkさんに手取り足取り教えてもらいながらIEコンポーネントを
表示するプログラムができました。(頂いたというのが正しいかも)

さらにウィンドウを表示させない設定にして完成!

タスク常駐アイコンも表示されなくなって予想以上の出来でした。

よかったよかった。

ということで、はやてちゃんぼっとをよろしくおねがいします!
 
PR

コメント
無題
新しいブログのURLです。
登録よろしくお願いします。
【2009/12/07 20:14】 NAME[TEANA] WEBLINK[URL] EDIT[]
無題
書き込みアップ良い、私は自分のサイトの通常の訪問者よ、素晴らしいで動作を維持し、そしてそれは長い時間のための定期的な訪問になるだろう。
【2011/11/18 06:53】 NAME[canon eos 600d kit] WEBLINK[] EDIT[]


コメントフォーム
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字


トラックバック
この記事にトラックバックする:


忍者ブログ [PR]
カレンダー
09 2017/10 11
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
フリーエリア
最新CM
プロフィール
HN:
ほねっと
性別:
非公開
自己紹介:
ついったーはこちらです!
http://twitter.com/aftercider
バーコード
ブログ内検索
カウンター
アクセス解析