視覺衝擊:立法院法案審查 + gource

Posted by tjwei on 星期三, 12月 12, 2012 with 4 comments

昨天在 facebook 上看到立法院議程查詢資訊的分享,又在 G+ 上看到某個 project 利用 gource 將 git 歷史視覺化的影片。
由於有點孤陋寡聞,這兩個東西之前都沒注意過。想到如果把兩個東西結合在一起,不知道效果會如何?
因為一些業務軟體及文件的關係,在學校的桌機跑的是 windows,其實經過 windows 升級之後,那些用 ActiveX 行政系統也是得在虛擬機跑,不過有些(舊版的) office 文件還是只能在 windows 下面讀,相當詭異。這些是題外話,總之先抓了 gource 的可執行檔在 windows 跑。
簡單用 python 寫了個隨機生成的檔案餵給 gource,第一個碰到的問題是中文顯示。由於不想改程式碼,上網 google 了一下沒找到解答,不過觀察顯示不出來的中文字的方框數量,猜測其實只是 ttf 裡面的字不夠多, DroidSansFallback 把內附的 FreeSans ttf 檔蓋過去,果然就成功顯示中文了。
接下來想試試看顯示 User 的 Avatar 人頭圖,由於檔名要和 User 的名字一樣,但是 NTFS 檔名應該是用某種 UTF16 的編碼,而 gource 只吃 utf8 檔,所以不改 source 不行。所以切換到 linux 下來跑。
linux 下的檔名就沒有問題了。接下來要抓立法院的議程資料。我用的網址是立法院智庫下的「法律提案審議進度」。
不用砍站,稍微用瀏覽器的網頁開發工具修改一下,就能一次抓到最多 3000 筆資料。我抓了 100年1月到 101 年 11 月中的資料。
再來就是用 python 解析 html。由於 html 裡面有些 tag 其實沒有對稱,所以用很醜的方式,只處理 td tr 和 table,總之是解出資料了。提案人常常會很多,只列其中第一個。
接著需要大頭照。原來是想用 google 找大頭,不過已經有很多熱血的同志先弄好了,可以在零時政府中找到立委人頭 API。雖然網頁上提供的例子,裡面的 MD5 跟我用 python 跑的對不上,但是總之是可以抓得到(如附檔程式)。
最後,再用 Garage Band 隨手弄個背景音樂配上就完工了。


附檔:處理的資料以及抓人頭的範例。
用的參數如下:
gource --user-image-dir image -e 0.1 --camera-mode overview -i 30 -s 20 r2
Categories: ,