[twitter]break time #03
twitterのアイコンをgifアニメにする方法メモ
・20KB以下のサイズでgifアニメをつくる
・拡張子をpngにする
・設定でアップする
できたのがこれ
twitterのアイコンをgifアニメにする方法メモ
・20KB以下のサイズでgifアニメをつくる
・拡張子をpngにする
・設定でアップする
できたのがこれ
追記
※このコンテンツは2010年6月30日のTwitterのBASIC認証廃止と同時に使用不可になります。
TwitterのBASIC認証廃止、企業ユーザーが知っておくべきこと
ソースの話
flashは違うドメインにアクセスしようとするとセキュリティエラーが出てアクセスできません。
そこで実際のtwitterの処理はPHPで行っています。今回のflashでは下記のような処理をしています。
それぞれflashからPOSTでtwitterのid, pass及びtwitterAPIのurlを送信しています。
ログイン処理
urlはhttp://twitter.com/account/verify_credentials.xml
$url = $_POST['url']; $id = $_POST['id']; $pass = $_POST['pass']; $ch=curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERPWD, $id.":".$pass); $result=curl_exec($ch); curl_close($ch); echo $result;
つぶやき取得
urlはhttp://twitter.com/statuses/friends_timeline.rss
$url = $_POST['url']; $id = $_POST['id']; $pass = $_POST['pass']; if($id=="" || $pass==""){ echo file_get_contents($url); }else{ $url=get_url_with_idpass($url, $id, $pass); echo file_get_contents($url); } function get_url_with_idpass($a, $b, $c){ $a=str_replace("http://", "", $a); $a="http://".$b.":".$c."@".$a; return $a; }
投稿
urlはhttp://twitter.com/statuses/update.xml
$url = $_POST['url']; $id = $_POST['id']; $pass = $_POST['pass']; $message = $_POST['status']; $url = $url."?status=". rawurlencode($message); $opts = array("http" => array( "method" => "POST", "header" => "Authorization: Basic ". base64_encode($id. ":". $pass) ) ); $context = stream_context_create($opts); $result = file_get_contents($url , false, $context); echo $result;
基本メモ。
ウィジェットエンジンをダウンロードしてインストール。
http://widgets.yahoo.co.jp/download/
開発ツール、リファレンスはここ。
http://widgets.yahoo.co.jp/workshop/
ウィンドウを生成
var field=new Window(); field.title="frasio report"; field.width=480; field.height=480; field.visible=true; field.shadow=true;
画像を配置
var im=new Image(); im.src="images/img00.png"; im.hOffset=10; im.vOffset=10; field.appendChild(im);
テキストを配置
var t=new Text(); t.hOffset=10; t.vOffset=10; t.size=12; t.color="#000000"; field.appendChild(t);
入力テキストを配置
var texinput=new TextArea(); texinput.width=200; texinput.height=150; texinput.bgColor="#ffffff"; texinput.bgOpacity=255; field.appendChild(texinput);
Flashを配置
var f=new Flash(); f.src="flash/item.swf"; f.hOffset=100; f.vOffset=50; field.appendChild(f); //flash上はウィジェットをドラッグできない
Webを配置
var w=new Web(); w.hOffset=200; w.vOffset=200; w.width=280; w.height=280; w.url="http://www.yahoo.co.jp/"; field.appendChild(w); //表示に時間がかかる //jsが効かなかったり文字化けしたりして実用的ではない
オンライン上のxmlをロードして解析する。
get_xml(); function get_xml(){ var url=new URL(); var xmlstr=url.fetch("/test/20/test.xml"); var xml=XMLDOM.parse(xmlstr); var myxml=xml.evaluate("metadata"); var node=myxml.item(0); var str=node.evaluate("string(name)"); log(str); //strにnameタグの「frasio report」という文字列が格納されている }
ローカルのxmlをロードして解析する。
get_local_xml(); function get_local_xml(){ var xmlstr=filesystem.readFile("test.xml"); var xml=XMLDOM.parse(xmlstr); var myxml=xml.evaluate("metadata"); var node=myxml.item(0); var str=node.evaluate("string(name)"); log(str); //strにnameタグの「frasio report」という文字列が格納されている }
テキストファイルをユーザ指定場所に保存する。
save_text("保存するテキスト"); function save_text(target_str){ var destination=saveAs(".txt");//ユーザに保存先を指定させる if(destination==null)return; if(!filesystem.itemExists(destination)){ filesystem.writeFile(destination, target_str); return true; } return false; }
ファイルのドロップを受け付ける
field.onDragDrop=when_file_drop; function when_file_drop(e){ var files=e.items; var ft=get_filetype(files[0]); if(ft!="jpg")return; var img=new Image(); img.src=files[0]; field.appendChild(img); } function get_filetype(filepath){ return filepath.toString().split(".").pop(); }