2018年2月25日 星期日

如何在 Facebook 發佈立體貼文?


Facebook 最近推出了 Rich 3D Post 的支援,可以更直接地在貼文中加入互動的立體模型。但要如何做呢?

時下流行的立體模型基本上有 .fbx, .obj, .dae, .blend, .stl, .dwg 格式等。我自己有一些立體模型儲存在 Sketchfab 。Sketchfab 是今次 Facebook 支援的是 glTF 2.0 模型格式的合作單位之一,她也推出了下載 glTF 格式的途徑。只要作者公開模型,便能在下載中選取 glTF 格式。可能我的模型主要是在 Autodesk Inventor 繪畫,用 3D 打印,不帶材質及貼圖的緣故,Sketchfab 無法生成 glTF 檔案。我只好嘗試其他作者的模型。試了一架卡通車不行;試了 Pony 小馬不行;最後找到 iPod 可行。我搞不清失敗的原因。起初以為是模型中用了 Normal 貼圖(用來在平面中表現出凹凸感的貼圖處理)又或是 Metallic Roughness 貼圖(用來處理金屬反光的運算)的問題;但 iPod 模型同樣使用了這些技巧;反而我沒有貼圖的模型同樣不行,沒有再深入研究。

下載後,按照 Facebook 影片的做法,在 Timeline 上一如以往地貼文,把 .gltf 檔案及貼圖一併拖拉到貼文的範圍,Facebook 便會加載模型的處理。起初是失敗的。我發現 Facebook 支援的是 .gtb。說清楚一點,是 glTF 2.0 Binary 格式。可以利用 https://glb-packer.glitch.me/ 去做轉換。

2018年2月13日 星期二

Gmail API 解讀秘技

最近做多了社交數據分析,開始想試試用銷售方面的數據,正好電子郵箱有相關的材料。但是,要怎樣才能把郵件內容轉換成數據庫的東西?既然是 Gmail 郵箱,只要用 Gmail API 就能讀取。

一年多前,我試過,但失敗了。今天再接再厲,遇到同樣的問題。明明拿到了郵件內容,但是卻只能把部份資料成功解碼...。找了很久也解決不了,正想放棄的時候,發現 Google 的 Base64 編碼有點蠱惑,把加號及斜號都換成其他符號,難怪我一直無法完整解讀。以下是最重要的代碼部份:
//  Get full message body
$fullMessage = $_service->users_messages->get($userID, $messageID);
$payload = $fullMessage->getPayload();
$partArray = $payload->getParts();
foreach ($partArray as $part)  {

    //  Only need email body, don't need attachment
    $mimeType = $part->getMimeType();
    if ($mimeType != "text/html")  {continue;}

    $body = $part->getBody();
    if ($body != null)  {

        $data = $body->getData();
        if ($data != null)  {

            //  !!! This is key point, otherwise message won't decode correctly
            $sanitizedData = strtr($data, "-_", "+/");

            $html = base64_decode($sanitizedData);
            $length = strlen($html);
            if ($length > 0)  {

                file_put_contents($filename, $html);
                printf("Saved");
            }
        }
    }
}

2018年2月5日 星期一

百度自然語 API


今日嘗試了百度的自然語 API,估計它支援中文是最好的。得出來 0.898605,是負面評語。看來正確。


再試一試繁體中文版本,得出 0.895912,同樣是負面評語。也是正確,但得出來的數值有點不同。看來繁簡體文字對情感會有不同的比重,應該是訓練模型的問題呢。

2018年2月1日 星期四

社交數據

最近發生的印花婆婆事件觸怒了很多人的神經,大量網民到專頁作出評擊,引發公關災難。最利害的貼文留言數達高 97 萬。究竟當中的內容帶來甚麼啟示呢?我用 PHP 編寫了一個小程式去擷取相關數據,看看有甚麼發現。


上圖是以專頁每天的留言數目繪製而成的圖表,看到過去兩星期留言數字的變化。清楚看到事件在 18 號發酵,之後逐漸回落,到 26 號審判日再次攀升,之後再次回落。事件在兩個星期後落幕。


程式在 1 月 25 號才完成,在 26 號開始擷取專頁的數據。而由於 Facebook 的反應數據不帶日期,只能以擷取時間為標記,所以 26 號之前的可以不理。從數據可以看出「嬲嬲豬」的比重是最多,反應網民一致表達憤怒。走勢跟留言一樣,經過審判日後漸漸回落。


拿最新的幾個貼文的留言數目來繪製圖表,可以得出最多留言的用戶。頭三名的留言數字大幅拋離一眾用戶。而單單一個貼文竟然可以寫下 3736 留言,看來有點奇怪。貼文刊登了七天後,用戶已經留下超過 3000 留言;若以一天工作八小時去計算,每小時要貼 64 個貼文。當中其實有大量重複的內容,她真的很「嬲嬲豬」。


再看看他們留言的時間,除了第三名比較正常有休息時間外,頭兩名機乎在每個小時都有留過言,十分勤力。