2012年2月7日 星期二

[youtube].取得上傳的影片處理狀態(Upload status)

研究 youtube 提供的 api, 在上傳影片後的變化.
1.首先, 上傳影片:



2. 透過下面的程式碼, 來取得影片的狀態:
$yt = new Zend_Gdata_YouTube();
$videoEntry = $yt->getVideoEntry($id);
$state = $videoEntry->getVideoState();
if ($state) {
echo 'Upload status for video ID ' . $videoEntry->getVideoId() . ' is ' .
$state->getName() . ' - ' . $state->getText() . "\n";
} else {
echo "Not able to retrieve the video status information yet. " .
"Please try again later.\n";
}


3. 在上傳影片之後, youtube 處理完成之前取得的狀態:

說明: $state = true,
During 取得的值是0, 而且縮圖的時間也都停在0.


4. 在上傳影片之後,

說明: $state = false,
During 取得的值是85, 而且縮圖的時間也不是都停在0.


youtube php API 文件:
http://code.google.com/intl/zh-TW/apis/youtube/2.0/developers_guide_php.html#Checking_Upload_Status


安裝好Zend Framework, 也會有更詳細的 API 文件在資料夾:
/www/ZendGdata/documentation/api/core/db_Gdata_YouTube.html


附註: 經測試之後, app 授權方式必須使用 "ClientLogin for installed applications" 不然會抓不到影片被拒絕的原因, 上傳的檔案被拒絕(rejected), 可能是有危反版權宣告,或是影片重覆上傳.

2012年1月31日 星期二

用 清華紫光 TH-OCR 辨視韓文

1. 先下載 TH-OCR
URL: http://blog.sina.com.cn/s/blog_49ee6d690100ixe4.html
or
URL: http://u.115.com/file/f690399e2b


2. 設定字型:
韓文字型的話, 可以使用 GulimChe 或 GungsuhChe



3. 執行 TH-OCR, 並開啟抓到的圖檔, 點選 Recognize(辨視).



4. OCR 的結果.




5. 再透過 google translate 來看答案.



更簡單的方式, 是透過 JOCR:
http://philtzki.pixnet.net/blog/post/5189840
(這個需要安裝 office 2003 以上的版本, 透過office 內建的OCR元件來辨視)



附註: OCR 都會有這一個問題, 就是您抓取的圖片太小, 會造成圓形與正方形在判斷上會誤判,
例如:
한고객이 매매 할수 있는최뎨매수는 4입니다. 翻出來是: 營銷可以有遊客,將染料中的最大數是4
한고객이 예매 할수 있는최뎨매수는 4입니다. 翻出來是: 保留可以有遊客,將染料中的最大數是4

說明: 第1行的正方形是誤判, 把 source image 放大後, 再減少亮度, 增加對比後, 即可判斷為圓形.

2012年1月20日 星期五

[facebook].自動發佈粉絲專頁App Demo.(post fan page wall)

app 提供2個功能:
1.加入粉絲專頁.
2.管理粉絲專頁.(+發佈測試)

先使用瀏覽器1號(chrome), 已登入 facebook, 管理介面如下:



目前管理的粉絲專頁= 0 筆. (使用前)



點選 "Facebook 應用程式授權" 超連結.



會列出目前已登入的 facebook 帳號可以管理的 Fan pages.



按下 "確定送出"



按下 "確定" 後, 會導到 "粉絲專區維護" 的管理界面.



為了確保, 其他台的電腦也可以正常使用該發佈功能,
改用 瀏覽器2號(firefox) 來操作, 點選 "測試發佈", 並輸入:
"測試發佈訊息-2012-01-20"



貼到粉絲專頁塗鴉牆的畫面:

2012年1月18日 星期三

[facebook].取得 page_access_token 的2個方法

資料來源1: How To: Post On Facebook Page As Page Not As Admin User Using PHP-SDK
http://www.masteringapi.com/tutorials/how-to-post-on-facebook-page-as-page-not-as-admin-user-using-php-sdk/31/

資料來源2: 111219 facebook connect 改使用 php sdk 3.01與Graph API
http://living.donghong.info/blog/?page_id=9986

要讓 facebook app 存取粉絲專頁, 需要授與 manage_pages 權限.



方法1: 透過 $facebook->api("/$page_id?fields=access_token")
---------------------
$page_id = 'page_id';
$page_info = $facebook->api("/$page_id?fields=access_token");
if( !empty($page_info['access_token']) ) {
$args = array(
'access_token' => $page_info['access_token'],
'message' => "I'm a Page!"
);
$post_id = $facebook->api("/$page_id/feed","post",$args);
}



方法2: 透過 $facebook->api("/$user_id/accounts")
---------------------
$page_id = "XXXXXXXXX";
$page_access_token = "";
$result = $facebook->api("/me/accounts");
foreach($result["data"] as $page) {
if($page["id"] == $page_id) {
$page_access_token = $page["access_token"];
break;
}
}

* 附註: 如果您有開發 app 的話, 透過 /$user_id/accounts 來列 object 時, app 也算是在 page 裡的一個object, 可以透過下面的 code 來判斷是 facebook app 還是 fan page.
$page["category"] == "Application"

[facebook].以粉絲的角色貼文到粉絲專頁(Page),而非管理員帳號(Admin User)

資料來源1: How To: Post On Facebook Page As Page Not As Admin User Using PHP-SDK
http://www.masteringapi.com/tutorials/how-to-post-on-facebook-page-as-page-not-as-admin-user-using-php-sdk/31/

資料來源2: 111219 facebook connect 改使用 php sdk 3.01與Graph API
http://living.donghong.info/blog/?page_id=9986

看完上面這2篇, 應該就可以實作出來,
首先要多授與 facebook app 下列3個權限:
publish_stream, manage_pages, offlice_access


第2點, 就是需要在貼文到 fan page 時, 要多指定 page_access_token, 而不是 user 的 access_token. 下圖中的 Max Yao 就是過 user access token, 第2次再貼就是透過 page_access_token 即可用 "Max家裡蹲公司" 的角色進行貼文.



只是, 貼到 fan page, 的限制比貼到一般的 user 塗鴉牆多, 貼文中的 link (hyperlink) 有限制, 如果輸入外部的 URL 就會顯示錯誤訊息:
The post's links must direct to the application's connect or canvas URL

[facebook].貼文到user 的塗鴉牆(wall)

資料來源1: How To: Post A Message On The User Wall Using Facebook Graph API
http://www.masteringapi.com/tutorials/how-to-post-a-message-on-the-user-wall-using-facebook-graph-api/33/

資料來源2: facebook Core Concepts - Graph API - Page
http://developers.facebook.com/docs/reference/api/page/

貼文到user 塗鴉牆很簡單, 需要授與 facebook app publish_stream 權限, 就可以透過下面的指令直接貼文. 比較難的是貼文 "粉絲專區".


$args = array(
'message' => 'Hello from my App!',
'link' => 'http://www.masteringapi.com/',
'caption' => 'Visit MasteringAPI.com For Facebook API Tutorials!'
);
$post_id = $facebook->api("/me/feed", "post", $args);


我常用的 /feed 用的 args(參數) 有下面這幾個.
$message = trim(''.$_GET['message']); // 本文.
$link = trim(''.$_GET['link']); // hyperlnk.
$picture = trim(''.$_GET['picture']); // picture
$caption = trim(''.$_GET['caption']); // 第一行的標題.
$name = trim(''.$_GET['name']); // hyperlink 的 title.
$description = trim(''.$_GET['description']); // 第2行的詳細說明文字.

[facebook].取得 Application Access Token

資料來源1: How To: Get A Facebook Application Access Token
http://www.masteringapi.com/tutorials/how-to-get-a-facebook-application-access-token/41/

資料來源2: facebook SDKs & Tools - PHP SDK - api
http://developers.facebook.com/docs/reference/php/facebook-api/


方法1:
------------------
$APPLICATION_ID = "APP_ID";
$APPLICATION_SECRET = "APP_SECRET";

$token_url = "https://graph.facebook.com/oauth/access_token?" .
"client_id=" . $APPLICATION_ID .
"&client_secret=" . $APPLICATION_SECRET .
"&grant_type=client_credentials";
$app_token = file_get_contents($token_url);




方法2:
------------------
$facebook->getAccessToken();




這2個方法, 都可以取得 app access token, 建議使用方法2.

Facebook 留言板