แสดงบทความที่มีป้ายกำกับ python แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ python แสดงบทความทั้งหมด

วันอาทิตย์, ตุลาคม 30, 2565

 💬 ลองเชื่อมต่อ API กับ Dropbox

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

ทีนี้ก็ไปเจอว่าเราสามารถทำ Shortcut ใน iPhone (พอดีใช้ iPhone 7 อยู่) อัพโหลดรูปสลิปธนาคารไปเก็บใน Dropbox ส่วนตัวได้ จากนั้นถ้าเราทำแอพฯ สักตัวคอยดึงสลิปธนาคารที่เราอัพฯ ไป แล้วดึงข้อมูลออกมาจากสลิปธนาคาร แล้วเอาไปเก็บใน Google Sheet ที่เราทำไว้ แค่นี้ก็จะได้ตามที่คิด คือทำออโต้บันทึกรายจ่ายกรณีที่โอนเงินหรือจ่ายพร้อมเพย์เพื่อซื้อของได้

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

วิธีการเชื่อมต่อ API กับ Dropbox

*ในที่นี้จะใช้ Python เป็นหลัก เพราะว่าจะทำ OCR และ Image processing ใช้ Python เหมาะมือที่สุดแล้ว

1. ขั้นแรกไปสร้าง App console ของ Dropbox เพื่อกำหนดสิทธิ์การเข้าถึงต่าง ๆ และเอา access token มาใช้ ให้ไปที่ https://www.dropbox.com/developers หาเมนูที่ชื่อประมาณ Create apps แล้วกรอกรายละเอียดให้ครบถ้วน

แนะนำให้เลือกการเข้าถึงเฉพาะ App folder ก็พอ ไม่จำเป็นต้องใช้ Full Dropbox เพราะเกินว่าที่ต้องใช้ เป็นหนึ่งในการรักษาความปลอดภัยอย่างหนึ่ง

2. ขั้นที่สอง หลังจากสร้างเสร็จเราจะได้ App console มาแบบนี้

ให้คลิกเข้าไปแล้วไปกำหนด permission ที่ต้องใช้ ในที่นี้เราจะแค่ดึงไฟล์มาคำนวณ เพราะฉะนั้นจะกำหนดแค่ files.metadata.read กับ files.content.read

3. ถัดจากกำหนดสิทธิ์การเข้าถึงเสร็จ ให้ไปสร้าง access token เพื่อเอาไว้ใช้เรียกไฟล์ต่าง ๆ ผ่าน API ไปที่แท๊ป Settings กดปุ่ม generate แล้วจะได้ hash มา 1 ชุด ให้เก็บเอาไว้ส่วนตัว ห้ามแชร์กับใคร

สิ่งที่ต้องรู้อีกอย่าง เวลาสร้าง App console แล้วเราจะได้ folder ใหม่สำหรับอัพโหลดไฟล์และให้ API สามารถเรียกไฟล์เหล่านั้นได้ จะอยู่ที่โฟลเดอร์ที่ชื่อ Apps เวลาเราเข้าเว็บ Dropbox ปกติ


4. ต่อไปเขียนโปรแกรมดึงไฟล์ใน Dropbox เอา access token ไปเก็บในไฟล์ .env แล้วก็เขียนโปรแกรมตามนี้


จุดสังเกตุ
  • บรรทัดที่ 16 ตรง dbx.files_list_folder แต่ใส่ค่าเปล่า ตรงนี้แปลว่าเราเรียกดูไฟล์จากโฟลเดอร์บนสุดใน Apps/SanboxUOB หรือขึ้นอยู่กับแต่ละ app ที่เราสร้างขึ้น
  • จังหวะดาวน์โหลดจะอยู่ที่บรรทัดที่ 19 ให้ใช้ dbx.files_download_to_file ตัว download_path คือ path บนเครื่องที่เราจะเอาไปเก็บ ส่วน path คือ path ของไฟล์ที่อยู่บน Dropbox ซึ่งในที่นี้เราจะใช้ที่เดียวกัน
5. จบขั้นตอน