in How To

Screenshot หน้าเธอแล้วส่งเข้า Line Notify กัน

ปฏิเสธไม่ได้ว่าแอปลิเคชั่นไลน์มีผลอย่างมากกับแวดวงคนทำงาน จะเอกชนหรือวงราชการก็ต้องใช้ แต่ด้วยความที่แอปลิเคชั่นสื่อสารแบบนี้การส่งข้อความยาว ๆ บางครั้งก็เล่นเอาหัวเสียเหมือนกัน เพราะใจความสำคัญมันถูกเผยแพร่แต่เพราะข้อความมันยาว จึงขาดความน่าสนใจ คนรับก็เลื่อนผ่านไปโดยปริยาย (เหมือนเธอที่มองผ่านฉันไป เอ้าเพลงมาาา ซูดดดดด)

รวมทั้งข้อมูลรายงานผลโรค COVID-19 ที่ตอนนี้หลาย ๆ สื่อหลาย ๆ ที่ ได้ทำย่อยข้อมูลเหล่านี้ออกมาเป็น Infographic บ้าง เว็บไซค์แสดง Dashboard บ้าง งั้นจะช้าอยู่ไย เราเซฟรูปเหล่านั้นแล้วส่งเข้าไลน์เลยดีกว่า

Shell Script ไม่ได้มีอะไรซับซ้อนใช้ Headless Chrome ให้ Screenshot หน้าจอตอนนั้นแล้วส่งเข้าไลน์ก็เป็นอันเสร็จสิ้น

#!/bin/bash
  
PICTURE_PATH="./screenshot.png"
NOW=$(date +"%d-%m-%Y %H:%M")
IP=$(hostname -I | awk '{ print $1 }')
DASHBOARD="IP Address"

# Declare an array of Token PHP-CC PSH
declare -a ACCESS_TOKENS=("token1" "token2")

command_exists()
{
  command -v "$1" >/dev/null 2>&1
}

# Take pictures using Chrome Headless
if command_exists google-chrome ; then
    google-chrome --headless --no-sandbox --screenshot --hide-scrollbars --virtual-time-budget=10000 --disable-gpu --window-size=680,380 http://$IP:88/covid
    convert -resize 1280x screenshot.png screenshot-01.png

    google-chrome --headless --no-sandbox --screenshot --hide-scrollbars --virtual-time-budget=10000 --disable-gpu --window-size=1280,1410 http://$DASHBOARD
    mv screenshot.png screenshot-02.png
else
    if command_exists docker ; then 
        sudo docker container run -it --rm -v $(pwd):/usr/src/app zenika/alpine-chrome --no-sandbox --screenshot --hide-scrollbars --virtual-time-budget=10000 --disable-gpu --window-size=680,380 http://$IP:88/covid
        convert -resize 1280x screenshot.png screenshot-01.png

        sudo docker container run -it --rm -v $(pwd):/usr/src/app zenika/alpine-chrome --no-sandbox --screenshot --hide-scrollbars --virtual-time-budget=10000 --disable-gpu --window-size=1280,1410 http://$DASHBOARD
        mv screenshot.png screenshot-02.png
    else
        echo 'Not found docker'
    fi  
fi

convert -append screenshot-01.png screenshot-02.png screenshot.png

# Iterate the token array
for token in "${ACCESS_TOKENS[@]}"; do
    echo $token
    # curl -X POST https://notify-api.line.me/api/notify -H "Authorization: Bearer $token" -F "message=รายงานสถานการณ์ COVID-19 ณ $NOW" -F "imageFile=@$PICTURE_PATH" > /dev/null 2>&1   
done

ผลลัพธ์ที่ได้ก็ตามนี้

จบปิ๊ง บล๊อกเดือนนี้ ^__^
ป.ล.

  • เราใช้ Dashboard ของ อ.เอ แห่ง Developer Mate
  • มี Dashboard 2 ตัว ก็เลย Merge ไฟล์รวมกันซะจะทิ้งไปก็เสียดาย
  • Token ของ Line Notify น่าจะมีกันแล้วนะ อันนี้ข้ามเรื่องการสร้าง Line Notify Token หล่ะกัน
  • ตัวเลขผู้ติดเชื้อวันนี้เห็นแล้วมีแรงทำงานสู้กันต่อ