Feeds:
文章
留言

Archive for 20 八月, 2007

TWSkype 是利用 Twitter 上的最新訊息來更新 Skype 的心情文字或暱稱,有興趣者請先啟動 Skype 3.2.x 或更新版本,然後下載 7138F53BC828450B98B75AC9EB66C977.sparc 安裝。畫面依序如下:

1. 版權宣告

2007082001

2. 賦予 Skype 連接權限,否則 TWSkype 沒有辦法執行

2007082002

3. 執行畫面

你可以依需要將你的 Twitter ID 填寫按下設定,並按下立即更新即可。原則上,訊息每 1 秒更新 1 次,如果訊息內容一樣,更新時間會延長,最大延長到 1 分鐘更新一次。

2007082003

補充:
該程式使用 .NET 2.0 開發,系統必須具有 .NET Framework 2.0 才能運作。

Read Full Post »

(C#) 取得最新的 Twitter 訊息

MSN SpaceGoogle DocGoogle Blog
Chui-Wen Chiu
2007.08.20

測試環境
1. Windows XP Pro
2. Visual Studio 2005

TWessenger[1] 是一套抓取 twitter 最新訊息來更新 MSN 狀態的 Messenger Add-In,主要技術只有兩個,第一個是透過 Windows Live Messenger Add-In API 更新 MSN 狀態文字,第二個是抓取 ATOM 取得最新訊息。本文主要描述抓取最新 Twitter 訊息的方式,首先要取得一個 twitter id,然後可代換成 ATOM URL 如:http://twitter.com/statuses/user_timeline/1713501.atom,其中 1713501 是我個人的 twitter ID,你可以代換成任何 ID。*.atom 的內容類似如下:

<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom"&gt;
  <title>Twitter / Chui-Wen Chiu</title>
  <id>tag:twitter.com:Statuses</id>
  <link type="text/html" href="http://twitter.com/chui_wen_chiu&quot; rel="alternate"/>
  <subtitle>Twitter updates from Chui-Wen Chiu.</subtitle>
  <entry>
    <title>Chui-Wen Chiu: ebXML是一個開放性的電子商務建構標準 (http://www.ebxml.org.tw/big5/index.jsp)</title>
    <content type="html">Chui-Wen Chiu: ebXML是一個開放性的電子商務建構標準 (http://www.ebxml.org.tw/big5/index.jsp)</content>
    <id>tag:twitter.com,2007-08-19T17:51:32+00:00:http://twitter.com/chui_wen_chiu/statuses/214515122</id&gt;
    <published>2007-08-19T17:51:32+00:00</published>
    <updated>2007-08-19T17:51:32+00:00</updated>
    <link type="text/html" href="http://twitter.com/chui_wen_chiu/statuses/214515122&quot; rel="alternate"/>
  </entry>
  <entry>
    <title>Chui-Wen Chiu: 加快OpenOffice執行速度的方法 (http://blog.xuite.net/emisjerry/tech/13078174)</title>
    <content type="html">Chui-Wen Chiu: 加快OpenOffice執行速度的方法 (http://blog.xuite.net/emisjerry/tech/13078174)</content>
    <id>tag:twitter.com,2007-08-19T17:35:47+00:00:http://twitter.com/chui_wen_chiu/statuses/214495672</id&gt;
    <published>2007-08-19T17:35:47+00:00</published>
    <updated>2007-08-19T17:35:47+00:00</updated>
    <link type="text/html" href="http://twitter.com/chui_wen_chiu/statuses/214495672&quot; rel="alternate"/>
  </entry>
…略

接著透過 .NET 的 XmlTextReader 以 SAX 方式循序讀取 ATOM,直到搜尋 <content> 標籤,其標籤內容即為 twitter 內容,因為 ATOM 是從新到就排序,所以第一筆極為最新消息,因此,整個完成的程序如下:

using System;
using System.Xml;

namespace ConsoleApplication1 {
    class Program {
        static void Main(string[] args) {
            // Twitter ATOM URL
            string url = "http://twitter.com/statuses/user_timeline/1713501.atom";
            String statusMsg = String.Empty;
            String username = String.Empty;
            using (XmlTextReader xmlReader = new XmlTextReader(url)) {
                while (xmlReader.Read()) {                   
                    if (xmlReader.Name == "content") {
                        // 取得 twitter 內容
                        String tmp = xmlReader.ReadString();

                        // 內容切割
                        String[] contents = tmp.Split(new char[] { ‘:’ }, 2);
                        username = contents[0];
                        statusMsg = contents[1].Trim();                      

                        break;
                    }
                }
            }
            Console.WriteLine("Username: {0}", username);
            Console.WriteLine("Message: {0}", statusMsg); 
        }
    }
}

執行結果

參考資料
[1] TWessenger

Read Full Post »