pretty code

2021年1月12日 星期二

GUI app on Kobo Clara HD (03)

KoboCloud 雖然看起來很簡單!但其實裡面的 script 是有技術含量的,以 Google Drive 來說,它至少要先知道使用 HTTP Get 資料夾連結後的回傳內容是什麼?還有如何取得所有的檔案名稱以及個別的下載連結。

舉例來說,假設我們設的公開連結為:

https://drive.google.com/drive/folders/XXXXXXX-YYYYYYYYYYYY

response 回來的內容需利用正規表示法來找到相關資訊,可能是我只會簡單的 Re,我取到的會因為貪婪法而無法拆解成一本一本的資料,故只好再用字串分割做 2 次加工。

底下是我目前用的 sample code,其中 base_url 就是 XXXXXXX-YYYYYYYYYYYY

而每本書的下載路徑就是 https://drive.google.com/uc?id=file_code&export=download,下載時會經過幾次重導向。


import re

import requests

url = 'https://drive.google.com/drive/folders/XXXXXXX-YYYYYYYYYYYY'
response = requests.get(url)
s = response.text

pattern = '\\\\x5b\\\\x22(?P<file_code>.*)\\\\x22,\\\\x5b\\\\x22(?P<base_url>.*)\\\\x22\\\\x5d\\\\n,\\\\x22(?P<file_name>.*)\\\\x22,\\\\x22'

res = re.search(pattern, s)
all = res.group(0)

items = all.split('application')
for item in items:
    res = re.search(pattern, item)
    print(res.group('file_code'), res.group('base_url'), res.group('file_name'))

有空還是把人家寫好的 script 裡的 RE pattern 看懂,也許可以再精簡 code。

沒有留言: