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。
沒有留言:
張貼留言