idownload: Unquote filenames - transferwee - Download/upload file via wetransfer.com Err tccr.it 70 hgit clone https://github.com/iamleot/transferwee URL:https://github.com/iamleot/transferwee tccr.it 70 1Log /r/transferwee/log.gph tccr.it 70 1Files /r/transferwee/files.gph tccr.it 70 1Refs /r/transferwee/refs.gph tccr.it 70 1README /r/transferwee/file/README.md.gph tccr.it 70 i--- Err tccr.it 70 1commit ddeb05d476531f202aea1a6b2e9b47188d2c79b1 /r/transferwee/commit/ddeb05d476531f202aea1a6b2e9b47188d2c79b1.gph tccr.it 70 1parent 6ae8fc2adf06cff947d35e08dd211628536ec1be /r/transferwee/commit/6ae8fc2adf06cff947d35e08dd211628536ec1be.gph tccr.it 70 hAuthor: Leonardo Taccari URL:mailto:iamleot@gmail.com tccr.it 70 iDate: Sun, 15 Dec 2019 12:33:04 +0100 Err tccr.it 70 i Err tccr.it 70 idownload: Unquote filenames Err tccr.it 70 i Err tccr.it 70 iIntroduce a _file_unquote() function to unquote filename so file will Err tccr.it 70 ibe downloaded without %-encoded names properly extended. Err tccr.it 70 i Err tccr.it 70 iShould address issue #9. Err tccr.it 70 i Err tccr.it 70 iDiffstat: Err tccr.it 70 i M transferwee.py | 11 ++++++++++- Err tccr.it 70 i Err tccr.it 70 i1 file changed, 10 insertions(+), 1 deletion(-) Err tccr.it 70 i--- Err tccr.it 70 1diff --git a/transferwee.py b/transferwee.py /r/transferwee/file/transferwee.py.gph tccr.it 70 i@@ -112,6 +112,15 @@ def download_url(url: str) -> str: Err tccr.it 70 i return j.get('direct_link') Err tccr.it 70 i Err tccr.it 70 i Err tccr.it 70 i+def _file_unquote(file: str) -> str: Err tccr.it 70 i+ """Given a URL encoded file unquote it. Err tccr.it 70 i+ Err tccr.it 70 i+ All occurences of `\', `/' and `../' will be ignored to avoid possible Err tccr.it 70 i+ directory traversals. Err tccr.it 70 i+ """ Err tccr.it 70 i+ return urllib.parse.unquote(file).replace('../', '').replace('/', '').replace('\\', '') Err tccr.it 70 i+ Err tccr.it 70 i+ Err tccr.it 70 i def download(url: str) -> None: Err tccr.it 70 i """Given a `we.tl/' or `wetransfer.com/downloads/' download it. Err tccr.it 70 i Err tccr.it 70 i@@ -120,7 +129,7 @@ def download(url: str) -> None: Err tccr.it 70 i working directory. Err tccr.it 70 i """ Err tccr.it 70 i dl_url = download_url(url) Err tccr.it 70 i- file = urllib.parse.urlparse(dl_url).path.split('/')[-1] Err tccr.it 70 i+ file = _file_unquote(urllib.parse.urlparse(dl_url).path.split('/')[-1]) Err tccr.it 70 i Err tccr.it 70 i r = requests.get(dl_url, stream=True) Err tccr.it 70 i with open(file, 'wb') as f: Err tccr.it 70 .