這是IDCC的期末專題,與彥成同學共同完成,實作一個ETL系統,架構建立網站與app,提供使用者服務。由於之前做過蘇打綠演唱會撈票,所以就借題發揮,做一個演唱會資訊統整網站。整合政府演唱會開放資料與PTT上的賣票訊息,希望可以讓使用者更方便的了解演唱會訊息,更快速的買到票劵。


2016.03.13更新

網站已經重新建置部屬

可以到 hiticket.tw 尋找演唱會二手票劵唷~

hi


Expectation

我們想要架設一個演唱會資訊統整網站,提供以下服務:

  • 演唱會訊息彙整

以 “政府資料開放平台" 提供的演唱會資料為基礎,整合相關資訊

  • 分析批踢踢票券版

透過程式分析批踢踢票券版上的貼文,自動歸類相關賣票訊息

  • 追蹤最新票劵消息

提供使用者訂閱特定演唱會貼文,以電子郵件通知最新訊息

  • 整合相關影片

透過Youtube尋找歌手的相關影片


Approach

實作上,分為兩個部份
1. 建置一個ETL (Extract, Transform, Load)系統
2. 架設網站與製作App供使用者使用

flow


實作ETL系統

1.資料庫

資料庫的部分建立了個table,分別存放演唱會資訊、歌手資訊、PTT貼文資料與用戶訂閱資料。

  • 演唱會資料:主要來自於文化部提供的JSON格式Open data。
  • 歌手資料:由於現今台灣並沒有一個完整的歌手資料庫,因此歌手資訊來自於Wiki的歌手列表,經過整理存到資料庫中。
  • PTT演唱會資料:透過程式爬PTT Drama-Ticket版上的新文章,並經過處理以及歸類。
  • 用戶訂閱資料:從Hiticket.tk上,由用戶訂閱的資料自動產生,包含訂閱歌手名稱、用戶信箱。

2.Python資料處理與分類

將PTT文章標題與歌手及演唱會名稱比對,做簡單歸類。

p

3.寄信服務

確定好每一筆PTT貼文是哪位歌手舉辦之後,即可再次搜尋用戶訂閱資料庫,找到所有訂閱特定歌手的用戶ID,寄出通知Email。

email


架設網站與APP

網站使用Django開發,採用REST架構,使用MySQL資料庫,部分頁面使用AJAX技術。以下列出開發的重要事項:

  • 使用Bootstrap:我們用他來美化版面,搭配bootstrap flatly版型,再加入Font-Awesome與Social Buttons for Bootstrap,讓網頁有漂亮的ICON圖示與社群軟體按鈕。
  • 使用JavaScript函式庫:使用Masonry製作瀑布流,再加上Alertify.js美化訊息視窗。
  • Django插件的使用:Django Allauth、Django Mail Queue、Django Endless Pagination
  • 利用android的webview寫一隻簡單的瀏覽器程式

hi2


首頁截圖

hiticket


Demo影片

網站已經拿下來了,不過這裡有當時的demo影片