演唱會資訊統整網站 HiTicket

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

[2017/06/19更新]


Expectation

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

  • 演唱會訊息彙整
    以「政府資料開放平台」提供的演唱會資料為基礎,整合相關資訊
  • 分析批踢踢票券版
    透過程式分析批踢踢票券版上的貼文,自動歸類相關賣票訊息
  • 追蹤最新票劵消息
    提供使用者訂閱特定演唱會貼文,以電子郵件通知最新訊息
  • 整合相關影片
    透過 Youtube 尋找歌手的相關影片

Approach

實作上,分為兩個部份

  1. 建置一個 ETL (Extract, Transform, Load) 系統
  2. 架設網站與製作 APP 供使用者使用


實作 ETL 系統

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

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

2. Python 資料處理與分類 將 PTT 文章標題與歌手及演唱會名稱比對,做簡單歸類。

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


架設網站與 APP

網站使用 Django 開發,採用 Restful 架構,使用 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 寫一隻簡單的瀏覽器程式


首頁截圖


Demo 影片

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

平時會觀察網路行銷、雲端運算與資訊安全,同時也在思索人生的課題。當世界越快,心則慢,期許自己能靜靜閱讀,細細品味,然後好好思考。

  • 李振皓

    您好

    您是希望抓取ptt上的飲料店資料嗎?或是有其他來源?
    基本上爬蟲程式需要做修改

  • 葉書豪

    你好!請問怎麼用這個程式抓飲料店的資料

  • 李振皓

    已經email回覆您囉~ 3Q

  • Mike

    你好,我對這支程式很有興趣,希望能與你有進一步的討論,歡迎聯繫我 mike.ko@prototype-hacker.com