imcrazytwkr

YD downloader

Dec 13th, 2023
939
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.05 KB | None | 0 0
  1. #!/usr/bin/env python3
  2.  
  3. from pathlib import Path
  4. from urllib import parse, request
  5. import gzip
  6. import json
  7. import sys
  8.  
  9. BASE_URL = "https://cloud-api.yandex.net/v1/disk/public/resources/download?public_key="
  10.  
  11.  
  12. def fetch_json(url: str) -> dict[str, str]:
  13.     with request.urlopen(url) as res:
  14.         response_info = response.info()
  15.  
  16.         content_encoding = response_info["Content-Encoding"]
  17.         if content_encoding == "gzip" or content_encoding == "deflate":
  18.             buffer = gzip.GzipFile(fileobj=BytesIO(response.read()), mode="rb")
  19.         else:
  20.             buffer = response
  21.  
  22.         content_charset = response_info.get_content_charset("utf-8")
  23.         return json.load(buffer, encoding=content_charset)
  24.  
  25.  
  26. def dl_stuff(u: str):
  27.     data = fetch_json(BASE_URL + parse.quote_plus(u))
  28.     dl_url = data["href"]
  29.     file_name = parse.parse_qs(parse.urlparse(dl_url).query).get("filename")[0]
  30.     request.urlretrieve(dl_url, Path.cwd().joinpath(file_name))
  31.  
  32.  
  33. if __name__ == "__main__":
  34.     for u in sys.argv[1:]:
  35.         dl_stuff(u)
  36.  
Advertisement
Add Comment
Please, Sign In to add comment