2015/05/03

台灣銀行的匯率JSON

2018/01/05
停止服務

2017/05/16
要用這個服務我很歡迎,但是太頻繁要求已經是變相的攻擊了
  • 要拿到所有的匯率可以直接要currency.json就好,裡面有全部的資料。
  • 資料更新時間是9~17每整點更新,每分鐘要都是相同的
211.23.4.187 這個IP每分鐘持續來要資料,造成伺服器負荷,已BAN



花了點時間把原本的程式全部改寫
前端列表的部分也加上更改外幣金額 與 台幣換算的功能 (實際換算還是要以銀行為主)
http://rate.asper.tw/

Source Code: https://github.com/Aspertw/bot-rates
PS. 這是以GAE環境寫的


( 其實如果要找匯率我覺得 比率網 比較好用 ((自己打臉 )
=====================

最近要去日本玩,有一直在觀察日本匯率
加上有在玩Slack Bot,想結合BOT跟匯率
無奈匯率很少有OPEN DATA,
用了YAHOO的YQL查詢結果跟台灣銀行的差距不小。

所以,自己的匯率API自己刻!!
然後,丟給Google App Engine當線上服務XDD

網址: http://asper-bot-rates.appspot.com/currency.json
直接開也有訊息怎麼連

範例: http://asper-bot-rates.appspot.com/currency.json?JPy
就是後面加 ?幣值
大小寫都沒關係

結果是這樣
{
   "updateTime":1430409617,
   "rates":{
      "buyCash":"0.24940",
      "buySpot":"0.25560",
      "sellCash":"0.26000",
      "sellSpot":"0.25960"
   }
}

updateTime: 台灣銀行的最後更新時間,unix timestamp
rates: 四種匯率價, buy:買入, sell:賣出, Cash:現金, Spot:即期

由於GAE免費有限制額度,
這資料每24小時更新

原始碼只有34行,就不丟GitHub了

$site = "http://rate.bot.com.tw";
$csvIndex = array(
 'currency'=>0, 'buyCash'=>2, 'buySpot'=>3, 'sellCash'=>12, 'sellSpot'=>13
);

//get csv link
$page = "/Pages/Static/UIP003.zh-TW.htm";
$html = file_get_contents($site.$page); 

$aPos = strpos($html, '<a id="DownloadCsv"');
$hrefPos = strpos($html, 'href="', $aPos);
$endPos = strpos($html, '">', $hrefPos);
$link = substr($html, $hrefPos+6, $endPos-$hrefPos-6);
$link = htmlspecialchars_decode($link);
$updateTime = strtotime(substr($link, strpos($link, '&date=')+6 )); 

//open taiwan bank rate csv
$fp = fopen($site.$link, "r");
$row = 0;
$currencyRates = array();
while( ($data = fgetcsv($fp, 1000, ',')) !== FALSE ){
 $row++;  if($row == 1){ continue; } //skip title row
 foreach($csvIndex as $name=>$index){
  $$name = trim($data[$index]);
 }
 $currencyRates[ $currency ] = compact('buyCash', 'buySpot', 'sellCash', 'sellSpot');
}
fclose($fp);

//save to json cache
$data = array(
 'createTime' => time(),
 'updateTime' => $updateTime,
 'rates' => $currencyRates
);

7 則留言:

  1. 還有一個國內的國際貨幣交易API. 可以參考一下.
    http://tw.rter.info/howto_currencyapi.php

    回覆刪除
  2. 網誌管理員已經移除這則留言。

    回覆刪除
  3. 您好:
    台銀好像改了網站,您這支程式似不能用了

    回覆刪除
  4. 前天有發現已經改版了,請參考github的程式碼
    台銀改版改的更好抓那隻CSV位置 http://rate.bot.com.tw/xrt/flcsv/0/day
    會直接用header file download方式丟給瀏覽器,直接抓內容跟分析header檔名就可以完成原本的步驟
    CSV檔案內容是沒有變動的

    回覆刪除
    回覆
    1. 請問一下,修改後的是那一支程式,我找不到.

      刪除
    2. https://github.com/Aspertw/bot-rates/blob/master/Asper/Service/BotRate.php

      刪除
  5. 您好:
    謝謝您的教學,不過韓元被標成'菲律賓披索'了

    回覆刪除