2006/07/31

[Mac 專用] Yahoo! 奇摩拍賣 Dashboard Widget 0.2a3 for Mac OS X Dashboard 發表

[Dashboard Widget] Yahoo! 奇摩拍賣 0.2a3 (build 392) - 追蹤資訊新增最高出價者資訊
追蹤物品新增最高出價者資訊

[Dashboard Widget] Yahoo! 奇摩拍賣 0.2a3 (build 392) - 背面新增設定
背面新增 Yahoo! 帳號設定

[Dashboard Widget] Yahoo! 奇摩拍賣 0.2a3 (build 392) - Growl 自動提示
Growl 自動提示

Yahoo! 奇摩拍賣 0.2a3 版(build 392)for Mac OS X Dashboard 主要更新如下:

  • 只要您有安裝 Growl 這個免費的中央通知系統(Growl 的介紹可以參看 applewoods 兄的介紹),便可以讓追蹤物品在結標前 10 分鐘、5 分鐘、結標或有人出價高於您的價格時主動利用 Growl 系統通知您,方便您監視您中意的拍賣物件。如果您再 Growl 的提示視窗上按一下,便可直接連到該拍賣物件的網頁進行競標。
  • 在追蹤物品的顯示資訊新增賣家帳號資訊。
  • 背面設定新增您的 Yahoo! 帳號設定。再設定後,只要您下標的物品,有人出價高於您,配合 Growl 系統便會主動通知。

檔案下載

技術後記

最近有比較常用 Yahoo! 奇摩拍賣的朋友跟在下建議,雖然在下製作的 widget 有倒數計時器的功能,但是 Dashboard 不會一直開著,所以希望可以在快結標前幾分鐘通知他,另外也希望有人出價比他高時也要通知,有這樣功能的 widget 才比較實用。

於是在下就研究一下主動通知的功能可不可行,結果發覺國外的 eBay Watcher 是可以辦到的,他是透過一個叫 Growl 的 Open Source Framework 來做的,但就要寫 Widget Plug-in 了,不過還好在下還是做出來了,在下發覺 Grwol 沒什麼對於 bundle 的 sample code,所以一陣子才弄出來。所以如果各位有需要參考這個有 Growl support 的 widget plug-in 的 sample code,歡迎與在下連絡。

26 則留言:

匿名 提到...

nk兄~
要怎樣顯示追蹤的商品呀,我試了幾個方法都出不來耶!

NK / Forever ZARD 提到...

首先您先在搜尋商品搜尋出您要的商品列表,然後從這些選取這些商品(有多個物品時,可以用 Shift 鍵選取連續的物品或用 Command 鍵選取不連續的物品),選起來之後,拖到“追蹤物品”標籤上即可進行物品追蹤。

希望有解決您的疑問。

PS: 近期會推出專為這個 widget 的網頁,包括如何使用。

匿名 提到...

呵~原來是這樣做喔!
我一開始一直以為是會顯示我YAHOO帳號中的「追蹤清單」裡的物品~
感謝nk囉~^^

NK / Forever ZARD 提到...

如果不是 XML 資料的話,則要針對每個網站輸出的 HTML 來進行解析。例如,假設有個網站 query 出來的 HTML 是 <ul>物品名稱:iPod</ul>,您想拿到 "iPod" 這個字,那麼,您可以用下列 JavaScript 把 "iPod" 萃取出來(假設 req 是 XMLHttpRequest 物件):

var matchStart = "<ul>物品名稱:";
var matchEnd = "</ul>";
var pos1 = req.responseText.indexOf(matchStart);
var pos2 = req.responseText.indexOf(matchEnd, pos1 + matchStart.length);
var itemName = req.responseText.substring(pos1 + matchStart.length, pos2);

最後 itemName 就是會拿到 "iPod" 這個字。但這樣的方式有幾個問題要小心:
1. 只要該網站的 HTML 輸出有更動,您的 parser 就有可能重寫。
2. 慎選搜尋開始與結束的字串,因為如果以上述例子來說,如果你只用 "<ul>" 當起始字串,可能會抓到一堆您不想要的。
3. 有些較複雜的 HTML 輸出,可能需要類似上述的好幾道手續才能萃取出來您要的資料,這需要您花時間一個個去試過才知道。

所以要萃取 HTML 輸出的東西不難,但是,卻是個花時間的苦工,且對方網站稍微改一下,您可能就要辛苦大半天來花時間更新 parser。

至於國外 YWE Widget 常用的 fetch(),那是 YWE 特有的 function,現在新的 YWE 大都用 AJAX 的 XMLHttpRequest 物件來作 query 網站及接收傳送資料。不過其實就在下經驗,他們的結果有點不同,有時還是需要用 fetch() 來作。fetch() 的輸出就是字串,跟 XMLHttpRequest 的 responseText 基本上是一樣的。

希望對您有點幫助。

匿名 提到...

對不起,想請您幫個忙,我做了一個衛星雲圖的東西,他一小時會更新一次,但我做了4個小時,都無法把圖放上去並且更且定時自動更換,所以我想請您幫我看看哪裡做錯了

http://homelf.kimo.com.tw/dsa_1314/%AA%C5%A1D%A7Y%AC%FC.widget

NK / Forever ZARD 提到...

剛剛看了翰璋兄您的 widget,有很多基本的東西都有問題,例如,在 .kon 並沒有定義要載入 aery.js 這個 javascript 檔案,而 .kon 裡面定義的 function,如 hiliteRefresh(),也沒有在 .js 檔案等基本的架構概念問題,所以不會動是應該的。 :-)

在下覺得您是想用 RSS Reader 的範例程式來改,但是以您的 widget 目的來說,不能用 RSS Reader 這個東西來改,您可能要重新寫過才行。建議您先看看在下撰寫的“製作 Yahoo! Engine 的 Widget”這個文章再撰寫您的 widget 會比較好。

希望您不會覺得太麻煩。

PS: 衛星雲圖的 YWE widget 已經有兩位寫過囉喔,請參考下面 Stronger 網友的作品:
http://tw.widget.yahoo.com/gallery/more_info.php?widget=C04000111

匿名 提到...

我是做出來了,但有個問題我還是無法解決,有沒有辦法控制圖片的大小阿,那璋圖大道我做的版面都顯現不出來,頭大

NK / Forever ZARD 提到...

如果圖很大,應該可以用 YWE 的 Image 物件 widget / height 屬性去調長寬吧?還是有其他原因讓您不能調整?

匿名 提到...

nk兄,您好:
在下的專題實務正是製作Widget,目的是要呈現一些在網頁上的資料,但在擷取的過程中,網頁的資料變成了亂碼(UTF-8變成Big5),實在令人頭痛,在搜尋過許多教學後,卻依然沒有斬獲,只好求助於您,還望見諒.
以下是部份的程式碼:
var url = new URL();
url.location = "http://www....";
url.fetchAsync(zzz);
...
function zzz( url ) {
xxx = url.result;
...
另外,fetch()和fetchAsync()這兩個函數對我的Widget來說哪個實用?差異在哪?

by Ray

NK / Forever ZARD 提到...

就在下所知,您必須指定好您的 JavaScript 與 .kon 的檔案都為 UTF-8 編碼(編輯器必須支援 UTF-8),那麼您用 URL.fetch() 讀取那些傳回 UTF-8 編碼的資料才會正確。

fetch() 與 fetchAsync() 主要是前者會等到收到傳回資料才會執行下一行敘述,但後者會在送出要求後,就執行下一行敘述,而不會等到資料收到。

匿名 提到...

nk大哥:
小弟我也是因為學校的專題而用到widget
我的問題跟AndyLee兄差不多
但是我比他更嫩
我有看過您對他的解答
目前我都能懂~
但是我還是有個很基本的疑問
就是我在輸入以上萃取的程式時
另外還需要什麼必要的程語法嗎?
還有在您給他的這段程式

是不是應該還要有我要擷取的網站的路徑呢?
如果需要~可不可以有一個完整的範例給我看呢?
不知道我這個要求過不過分~
目前我的專題真的卡在這個部份
希望您能幫我解決這個問題 謝謝

匿名 提到...

不好意思NK大哥
我還想請問一下
我下載下來的範例檔案
其中http://tw.news.yahoo.com/rss/realtime
這段網址是什麼呢?
那如果我想要自己設成另外連結的網址
我該怎嚜做呢?
謝謝

NK / Forever ZARD 提到...

在下不知道您的專題是哪種,不過看來您去下載來的範例是這裡的,這個範例都是針對部落隔廣播用的 RSS Feed 來解析的。如果您不知道 RSS Feed 是什麼,那在下想那範例的資料萃取部份並不適合您使用。但如果您的專題 Widget 也是讀取 RSS Feed,那麼您只要把 http://tw.news.yahoo.com/rss/realtime 改成您的 RSS Feed 網址即可。

其實如果是 RSS Feed Reader 這樣的 widget 的話,您不如參考教學文件會比較簡單:
http://homepage.mac.com/neonwang/articles/easy_rss_widget/

但如果您的 widget 其解析的資料來源不是 RSS Feed 的話,您必須花很多時間在資料解析那方面,就像 andylee 兄遭遇的問題一樣,這些解析資料的程式每個網頁都不一樣,在下很難給您範例,其實在下給 andylee 兄的解答就是一個非常簡單了例子,但通常真正的網站並不是這樣就可以解析到所有的資料,但原理就是如此,希望您看得懂。

匿名 提到...

nk大哥~ 看到您對WIDGET這麼的了解~
我在此想問您一個問題
就是我想要 按圖片1就會變成圖片2~ 然後再點一次圖片2~ 又可以回覆到圖片1
這段程式碼可不可以交小弟一下呢~
目前我是可以將圖片1轉換到圖片2~
但是卡在沒辦法從圖片2恢復到圖片1~
所以拜託大哥您了~ 謝謝

NK / Forever ZARD 提到...

不知您說的是 Dashboatd 還是 YWE 的 widget?不過無論是哪種,基本上就是在處理 click 的程式裡做圖案 swap 吧。以 YWE 的 onMouseUp 來說,假設您有一個圖形按鈕叫 btn,而 src 屬性初始值為 "pict1.png",您希望他被按一時變成 "pict2.png",再按一下變成 "pict1.png",那麼他的 onMouseUp 事件處理程式會這麼寫:

if (btn.src == "pict1.png")
btn.src = "pict2.png";
else
btn.src = "pict1.png";

如果您的程式已經以類似邏輯來寫了,但還是沒辦法得到期望的效果,那可能就要麻煩您提供整個 widget 原始檔案,我們可以一起來看是什麼問題。

匿名 提到...

nk大哥~謝謝您喔~
已經可以轉換了^^~
其實小弟我是在做一個具有篩選功能的WIDGET~
在WIDGET介面勾選想要的資訊~ 按下按鈕
則可以跳出另一個WIDGET介面SHOW出資訊大綱~ 就好比是RSS_Reader這種樣式~
現在我目前的進度到做好勾選的介面~ 但是我卡在按下按鈕~ 要呼叫RSS_Reader檔案這個問題
以及篩選的指令~ 不知到NK大哥可不可以大概指點一下方向~ 我還在找尋呼叫RSS_Reader的方法~ 不知到NK大哥是否明白我的意思~ 可以麻煩指點迷津嗎~?

匿名 提到...

您好~
我想請問一下
我在執行一個KON檔時候
有一個功能是需要按下按鈕
再開啟另外ㄧ個.KON檔
請問這段程式碼如何寫呢?
謝謝

NK / Forever ZARD 提到...

要從 widget 裡再開另一個 widget,可以看這個英文討論區的解法:

http://www2.konfabulator.com/forums/index.php?showtopic=12214&hl=

基本上就是用 filesystem.open("/Full/path/to/Widget/TheWidget.widget") 這個函式。

至於另一位網友提到的"在找尋呼叫RSS_Reader的方法“,聽起來就像從 widget A 要開啟 widget B,那也適用上述方法。

匿名 提到...

NK大哥
謝謝你的幫忙
已經可以呼叫了
真的不知道怎嚜形容我內心的感激
^___^"

匿名 提到...

nk大哥您好~:
小弟有個問題
就是我假設一個介面要接收兩個來自不同網址的RSS訊息(格式相同)
我顯示出來的訊息會重疊在一起
這個問題不知道怎麼改善呢?
可以寫出伊小段的程式碼給小弟研究嗎
謝謝

David 提到...

用了幾天之後 widget突然變成這樣了
http://tinyurl.com/yahnra

要如何乾淨的移除在重新安裝呢??

NK / Forever ZARD 提到...

可以按下 Command + R 就可以重新載入這個 widget 了,應該就可以解決您的文提。

匿名 提到...

大大你好

想請問大大,考不考慮做個露天拍賣的widget。或是乾脆將這個widget改成yahoo和露天的同步搜尋版。因為自從yahoo收取黑心3%以後。許多人都和小弟小弟一樣,便不再想用yahoo的了。如果能兩拍賣合併搜尋。相信是能造福廣大的網民。謝謝感謝。

NK / Forever ZARD 提到...

了解,我會把這個需求列入未來開發的版本中。

匿名 提到...

有沒有打算寫yahoo japan auction的widget?

I can't find it anywhere :(

NK / Forever ZARD 提到...

我最近這一年多比較沒有時間開發 widget,所以我也不敢答應會不會開發日本 Yahoo! 拍賣的...