Closed kmyk closed 3 years ago
files/list_folder
の結果に"has_more": true
が含まれているならfiles/list_folder_continue
で続きを読む、という動作をこの段階で入れた方がいい気がします。20か30くらいで「見切れ」てしまったような記憶があるのでこのままだと「一部のファイルだけがエラー無くダウンロードされる」という事態が発生しそうです。files/download_zip
にSharedLink
を渡す場所が無いので。Pythonの公式SDKにもありません。SharedFile
はurl
の他passward
も持つオブジェクトなのでshared_link: str
の名前はshared_link_url
とかの方がいいかもしれません。今回の場合モジュールレベルの定数にしても良いと思います。ZIPでダウンロードするのは現在でも多分無理
いやよく見たら入力パラメータのpath
、id
やrev
で指定できますね。まさかとは思いますがこれ入れたらなんとかなる...?
あ、やっぱ無理ですね。id
やrev
はストレージごとのそれっぽいです。
❯ envchain competitive ./venv/bin/python ./dropbox-zip.py
[INFO] Request to sharing/get_shared_link_metadata
[INFO] `id` for `/ABC100/A`: 'id:hjsYZQdnqVAAAAAAAADAuw'
[INFO] Request to files/download_zip
Traceback (most recent call last):
File "/home/ryo/src/local/dropbox-zip/./dropbox-zip.py", line 51, in <module>
main()
File "/home/ryo/src/local/dropbox-zip/./dropbox-zip.py", line 30, in main
dbx.files_download_zip_to_file('./abc100-a.zip', metadata_id)
File "/home/ryo/src/local/dropbox-zip/venv/lib/python3.9/site-packages/dropbox/base.py", line 1365, in files_download_zip_to_file
r = self.request(
File "/home/ryo/src/local/dropbox-zip/venv/lib/python3.9/site-packages/dropbox/dropbox_client.py", line 346, in request
raise ApiError(res.request_id,
dropbox.exceptions.ApiError: ApiError('96c5cdd52d3243c1b55f8478c9cefeda', DownloadZipError('path', LookupError('not_found', None)))
しばらく放置してた (:bow:) のですが、ついに続きをやりました。システムテストが 60 ケースくらいある問題をテスト用に走らせたらかなり遅い (Dropbox の API の返事待ちが律速) のでびっくりしています。かなり不安になる。
close #60 cc @qryxip
とりあえず最低限の実装をしました。zip で丸ごとダウンロードする API を使った方が速い気がするし、問題によってはダウンロードできなくて問題が発生しそうだけど、それは後からなんとかしましょう。