(番外篇-架構介紹)[不做怎麼知道系列之Android開發者的30天後端養成故事 Day23] - 來問問你認識的Youtuber的訂閱數吧~ #Django #GAE #LineChatBot

哈囉,我們又見面了,因為這三個禮拜一直在做同樣的系列,覺得有點無聊,前陣子我的精神導師做了一款「台南帶路雞」,它可以透過簡單的對話來查詢點對點的搭公車路線,確認完目的地後,直接導向 GoogleMap,引導你去最近的公車站點。因為精神導師的故事,引起了我對聊天機器人的興趣!所以就有了這篇 XD,順便給自己個精神休假。

今天我們要來完成的是「輸入你喜愛的 Youtuber,就告訴你這個 Youtuber 的訂閱數」,恩,很沒路用的東西,但就是練練功麻 XD

先上結果圖:

這個專案所使用到的工具、平台有以下三個

  • LineBot SDK: 將應用(app)整合到 LineBot 所需的工具
  • Django(Python): 存放我們 app 的網站框架(web framework),可以參考我前面所做的 Django 文章,除了基本的使用 Django 的方法之外,今天還會講到以前文章沒提到的: 爬蟲(crawler/scraper),當收到 Youtuber 的名字後,我們要根據名字,抓取這個 Youtuber 的訂閱數字
  • Google App Engine(GAE): 存放 Django 的雲端運算平台

整體流程與概念

以兩個角度來看這個應用,使用者開發者 的角度。

對使用者來說

使用者透過 Line 對機器人輸入一個 Youtuber 的頻道名字,然後機器人吐出查詢訂閱數的結果。

對開發者來說

從下圖就可以看出我沒什麼設計的天份 QQ,整體概念是以 Django 為核心出發,將整個 Django 應用架設在 Google App Engine,Django 透過複雜的轉傳機制,收到 Youtuber名字 的輸入訊息,再利用爬蟲(crawler),查詢 Social Blade 網站的相關 Youtuber 資訊,並擷取其中的 訂閱數,將這筆訂閱數透過 LineBot SDK 打包成為一則 Line 的文字訊息,回傳給使用者。

資料是怎麼跑的 ?

使用者輸入的訊息,會透過網路,將訊息封包(packets)傳到 GAEGAE 再轉傳至 DjangoDjango 內部有 WSGI(Web Server Gateway Interface) 的機制,會參考 urls.py,把封包轉傳至相關的 views.py,再透過 LineBot SDK 分析訊息,讀取出 Youtuber名字 的輸入資訊,收到這個名字的參數後,再呼叫爬蟲去擷取 Youtuber訂閱數,最後將訂閱數以 LineBot SDK,重新打包成 Line 的文字訊息,以反向原途徑(Django→GAE→LineUser),將搜尋訊息傳回去給使用者。

寫到這邊,概念應該是懂了,但是實際該怎麼做呢 ?

建立新的 Django Project

詳情參考 Day4,這邊以 Windows 的指令來示範。

(venv)$ django-admin startproject linebot (建立名為 linebot 的專案)

(venv)$ cd linebot (進到專案資料夾)

(venv)$ python manage.py startapp webhook (建立名為 webhook 的 app)

(venv)$ python manage.py startapp crawler (建立名為 crawler 的 app)

(venv)$ python manage.py runserver (跑起來,到 http://127.0.0.1:8000/ 測試)

其中 webhook 就是用來跟 Line 對接,再由 webhook 去呼叫 crawler 進行爬蟲。

今天就先到這邊,下一篇來看看爬蟲怎麼寫。

單日心得總結

其實原本這專案只是做好玩的,沒有想要把它寫成文章,可是實作的過程中,又出現了許多我第一次遇到的事情,索性就寫成文章,除了讓自己印象深刻,下次要再一次實作類似的功能,就能參考了。

關於我這幾天沒發文的故事說來話長,簡單來講是因為,我的親哥哥最近發生車禍住院了,我在醫院過夜照顧他,耽誤到一點進度,所以就變成這樣了。最近的心情真的是有點複雜,很難靜下來專心做事。

我是 RS,這是我的 不做怎麼知道系列 文章,我們 明天見。


  • 喜歡我的文章嗎? 趕快來看看我都發了什麼文章吧:我的文章目錄
  • 歡迎閱讀我的上一篇: [不做怎麼知道系列之Android開發者的30天後端養成故事 Day22] - 什麼是真正的 RESTful API? #RESTful API應該長什麼樣子? #六規則 #湊個第三項
  • 歡迎閱讀我的下一篇: (番外篇-爬蟲)[不做怎麼知道系列之Android開發者的30天後端養成故事 Day24] - 來問問你認識的Youtuber的訂閱數吧~ #crawler #python #socialblade
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2021-2022 Sam Ho
  • Visitors: | Views:

請我喝杯咖啡吧~

支付宝
微信