Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
Este repositório está arquivado. Pode ver ficheiros e cloná-lo, mas não pode fazer envios ou lançar questões ou pedidos de integração.
 
 
 
 
 
 

59 linhas
1.4 KiB

  1. import hashlib
  2. import requests
  3. import shutil
  4. import time
  5. import textwrap
  6. import sys
  7. def main():
  8. # Get name from command line
  9. name = sys.argv[1]
  10. # Read api keys from the text file
  11. with open("api-keys.txt", "r") as file:
  12. lines = file.readlines()
  13. assert len(lines) == 2, "Incorrect api-keys file"
  14. public_key = lines[0].strip()
  15. private_key = lines[1].strip()
  16. # base url
  17. base_url = "http://gateway.marvel.com/v1/public"
  18. # Authorizsation stuff
  19. params = dict()
  20. params["apikey"] = public_key
  21. ts = str(time.time())
  22. to_hash = ts + private_key + public_key
  23. hasher = hashlib.md5()
  24. hasher.update(to_hash.encode())
  25. digest = hasher.hexdigest()
  26. params["ts"] = ts
  27. params["hash"] = digest
  28. # Perform the request
  29. params["name"] = name
  30. url = base_url + "/characters"
  31. response = requests.get(url, params=params)
  32. status_code = response.status_code
  33. assert status_code == 200, "got status: " + str(status_code)
  34. body = response.json()
  35. description = body["data"]["results"][0]["description"]
  36. # Print the description
  37. terminal_size = shutil.get_terminal_size()
  38. columns = terminal_size.columns
  39. print("\n".join(textwrap.wrap(description, width=columns)))
  40. # Print attribution (comply with API agreement)
  41. print("---")
  42. print(body["attributionText"])
  43. if __name__ == "__main__":
  44. main()