iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 16
1

先瀏覽一下前天的程式碼


import os
import requests
import json
from django.conf import settings
from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseForbidden
from django.views.decorators.csrf import csrf_exempt
from linebot import LineBotApi, WebhookHandler
from linebot.exceptions import InvalidSignatureError, LineBotApiError
from linebot.models import MessageEvent, TextMessage, TextSendMessage
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from datetime import datetime

line_bot_api = LineBotApi('阿彌陀佛')
handler = WebhookHandler("阿彌陀佛")

@csrf_exempt
def callback(request):
    if request.method == 'POST':
        signature = request.META['HTTP_X_LINE_SIGNATURE']
        body = request.body.decode('utf-8')
        try:
            handler.handle(body, signature)
        except InvalidSignatureError:
            messages = (
                "Invalid signature. Please check your channel access token/channel secret."
            )
            logger.error(messages)
            return HttpResponseBadRequest(messages)
        return HttpResponse("OK")

@handler.add(event=MessageEvent, message=TextMessage)
def handl_message(event):
    outInfo = crawler("content")
    message = TextSendMessage(text=outInfo)
    line_bot_api.reply_message(
        event.reply_token,
        message)

def crawler(content):
    chrome_options = webdriver.ChromeOptions()
    chrome_options.binary_location = os.environ.get("GOOGLE_CHROME_BIN")
    chrome_options.add_argument("--headless") #無頭模式
    chrome_options.add_argument("--disable-dev-shm-usage")
    chrome_options.add_argument("--no-sandbox")
    driver = webdriver.Chrome(executable_path=os.environ.get("CHROMEDRIVER_PATH"), chrome_options=chrome_options)
    driver.get("https://www.cwb.gov.tw/V8/C/W/Town/Town.html?TID=1000806")
    Temp = driver.find_element_by_id('GT_C_T').text #現在溫度
    bodyTemp = driver.find_element_by_id('GT_C_AT').text #體感溫度
    RelativeHumidity = driver.find_element_by_id('GT_RH').text #相對溼度
    Rain = driver.find_element_by_id('GT_Rain').text #降雨量
    Sunrise = driver.find_element_by_id('GT_Sunrise').text #日出時間
    Sunset = driver.find_element_by_id('GT_Sunset').text
    driver.quit()
    time = datetime.now()
    timeprint = datetime.strftime(time,"%Y/%m/%d %H:%M")
    
    content="【名間鄉當前天氣概況】"+"\n"+"\n"+"現在溫度 : "+Temp+"°C"+"\n"+"體感溫度 : "+bodyTemp+"°C"+"\n"+"相對溼度 : "+RelativeHumidity+"%"+"\n"+"降雨量 : "+Rain+"mm"+"\n"+"日出時間 : "+Sunrise+"\n"+"日落時間 : "+Sunset + "\n"+"現在時間為:"+timeprint
    
    # content = "現在溫度:%s 體感溫度:%s 相對溼度:%s 降雨量:%s 日出時間:%s 日落時間:%s"%(Temp, bodyTemp, RelativeHumidity, Rain, Sunrise, Sunset)
    # content= {
    #     "現在溫度":Temp,
    #     "體感溫度":bodyTemp,
    #     "相對溼度":RelativeHumidity,
    #     "降雨量":Rain,
    #     "日出時間":Sunrise,
    #     "日落時間":Sunset
    # }
    # print(content)
    return content
    

經過前幾天的操作,應該能得到一個回傳天氣預報的好狗了,
但這樣其實只是入門的操作而已,而且整體的格式都好醜,
我們該如何用簡單的方式去美化他,而且強化好狗的功能呢?
這時候我們就要用到line提供的功能了,
在先前 LINE Developers的頁面當中,
可以看見


左下角有一個tools
點選進去之後呢,選擇下方那個Flex Message Simulator

再點選右上的show case 可以看見許多可以修改的樣板,
當然也是可以選擇自己手動去刻一個,


今天先介紹到這個地方,
明天開始將會介紹這個的用法,
以及訊息回傳的方式。


今天是 珂拉琪 Collage 的 這該死的拘執與愛 網址如下~~~

https://www.youtube.com/watch?v=utxHZq9Nxm4&list=PLZ_d6NX2sE80xcb4RjHSCBt3E1nTclmC4&index=3&ab_channel=%E7%8F%82%E6%8B%89%E7%90%AACollage



上一篇
## Day15 來做個會自動回覆天氣的好狗狗吧!(4)
下一篇
Day17 你有更多選擇之好狗好狗篇(1)
系列文
狗狗 Line Bot 以python及Django建構30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言