在mac上,自始以來都沒有一個好用的廣播收聽程式,即使現在有開發出get_mms這軟體,但也只限於擷取mms後來啟動media player播放
對於到達真正的好用實在還有一段距離。
因此,網路上開始有人提出使用widget的方式來聽廣播,我看了之後,也決定是看看,在我經過多番嘗試後,的確真的可以使用widget來收聽台灣的廣播電台。
但是,問題出在hinet那邊:
現行的網路廣播都集中在hinet上面(http://radio.hinet.net/radio/index.html),但是hinet廣播用的播放程式卻不支援mac,所已變成打開了網頁連結要聽卻無法聽。
因此,後來有其他人想到另一個方法:擷取播放頁面中的mms原始碼後,丟給media player去播放,所以應此產生了get_mms這個應用程式。
而現在問題出在於,hinet中的播放頁面中的mms原始碼會隨著時間更新,也就是說,也許今天我早上抓到了mms://xxxxxx,下午卻可能變成mms://yyyyyyy
因此,我想請教大家,不知道是否有方法用javascript來擷取hinet播放頁面的mms原始碼呢?
這樣一來,widget在啟動後,可以先去hinet的廣播頁面抓取mms再來播放,就不會有變動mms的困擾。
我舉個例子:
例如,我要聽亞洲廣播電台,因此我先連到hinet(http://radio.hinet.net/radio/index.html)
然後,點下亞洲廣播電台的收聽按鈕
點下後會開出這個播放頁面:http://radio.hinet.net/radio/player/pla ... dio_id=295
然後,我檢視這頁面的原始碼,會看到一行:
Player.URL = "http://grm.cdn.hinet.net/media/radio/pl ... 01393FEDFB";
此行中的mms://live.media.hinet.net/Radio_asiafm923?RADIOWEBF17EB2C3-888C-4603-85F8-2A01393FEDFB就是可以給media player播放的正確mms連結。
但也是這個該死的連結會變動,所以必須在每次收聽時要去檢查,不然連結改了就會聽不到。
因此我想請教各位高手是否有辦法利用javascript去擷取頁面中的mms串流,然後交給一個變數,我再使用此變數來丟給media player來收聽呢?
(以上都是在widget中要完成)
所以,不知道大家是否可以給我些指示呢?
感謝^^
by the way,我已經做好了可以收聽中廣流行、新聞、音樂網的widget了
請享用:http://homepage.mac.com/dreamcatcher020 ... o.wdgt.zip
不過載使用同時也請大家給我幫助,我會盡快做出好用的廣播收聽widget!
可以收聽hinet廣播的widget
-
aqueous0201
- 基本會員
- 文章: 35
- 註冊時間: 09/10/2005 11:27 am
我後來參考了yahoo字典的widget寫法,不過還是弄不太出來,我po一下原始碼,能否請您過目一下,看看我是哪兒出了問題呢?
<HEAD>
<TITLE>
Retrieving data from an XML document
</TITLE>
<SCRIPT LANGUAGE="JavaScript">
function hinetmms{
var rhead = /Player.URL = "http://grm.cdn.hinet.net/media/radio/play.asp?mmsurl=.*/;
var endMatch = '";';
var output ='';
var req = new XMLHttpRequest();
MyURL = 'http://radio.hinet.net/radio/player/player.jsp?radio_id=206';
req.open("GET", MyURL , false);
req.send();
restHtml=req.responseText;
startPos = restHtml.search(rhead);
if(startPos != -1) {
itemBlock = restHtml.substring(startPos);
endPos = itemBlock.indexOf(endMatch);
output = itemBlock.substring(0, endPos);
if(output != '')
output = output;
}
else output = "<p>??§£(R)?°I</p>";
document.getElementById('content').innerHTML = output;
}
</SCRIPT>
我不知道上面寫法是哪裡錯了(我想一定錯很多@@)
而且,接下來取得的output結果會是一組mms串流,而那組串流我要怎麼才能交給下面的變數呢?
我發現接下來的html原始碼中,沒辦法讀到output的結果耶?是要用到繼承嗎?是不是因為不同層級所以下面的html原始碼讀不到上面的javascript抓來的mms串流?
好難喔@@,就只差這部份了><.....
(對了,這是一個html檔案)
<HEAD>
<TITLE>
Retrieving data from an XML document
</TITLE>
<SCRIPT LANGUAGE="JavaScript">
function hinetmms{
var rhead = /Player.URL = "http://grm.cdn.hinet.net/media/radio/play.asp?mmsurl=.*/;
var endMatch = '";';
var output ='';
var req = new XMLHttpRequest();
MyURL = 'http://radio.hinet.net/radio/player/player.jsp?radio_id=206';
req.open("GET", MyURL , false);
req.send();
restHtml=req.responseText;
startPos = restHtml.search(rhead);
if(startPos != -1) {
itemBlock = restHtml.substring(startPos);
endPos = itemBlock.indexOf(endMatch);
output = itemBlock.substring(0, endPos);
if(output != '')
output = output;
}
else output = "<p>??§£(R)?°I</p>";
document.getElementById('content').innerHTML = output;
}
</SCRIPT>
我不知道上面寫法是哪裡錯了(我想一定錯很多@@)
而且,接下來取得的output結果會是一組mms串流,而那組串流我要怎麼才能交給下面的變數呢?
我發現接下來的html原始碼中,沒辦法讀到output的結果耶?是要用到繼承嗎?是不是因為不同層級所以下面的html原始碼讀不到上面的javascript抓來的mms串流?
好難喔@@,就只差這部份了><.....
(對了,這是一個html檔案)