Переглянути джерело

Add collective work

master
Dimitri Merejkowsky 5 роки тому
джерело
коміт
2174ffdced
2 змінених файлів з 84 додано та 0 видалено
  1. +84
    -0
      sources/marvel/marvel_end.py
  2. +0
    -0
      sources/marvel/marvel_start.py

+ 84
- 0
sources/marvel/marvel_end.py Переглянути файл

@@ -0,0 +1,84 @@
import hashlib
import requests
import shutil
import time
import textwrap
import sys


class Authorization:
def __init__(self):
self.public_key = None
self.private_key = None
def get_keys(self):
with open("api-keys.txt", "r") as file:
lines = file.readlines()

if len(lines) != 2:
sys.exit("Incorrect api-keys file")
self.public_key = lines[0].strip()
self.private_key = lines[1].strip()
def generate_params(self):
params = dict()
params["apikey"] = self.public_key
ts = str(time.time())
to_hash = ts + self.private_key + self.public_key
hasher = hashlib.md5()
hasher.update(to_hash.encode())
digest = hasher.hexdigest()
params["ts"] = ts
params["hash"] = digest
return params


class Client:
def __init__(self, base_url, auth):
self.base_url = base_url
self.auth = auth
def get_character_description(self,name):
params = self.auth.generate_params()
params["name"] = name
response = requests.get(self.base_url+"/characters", params=params)
status_code = response.status_code
if status_code != 200:
sys.exit("got status: " + str(status_code))
body = response.json()
description = body["data"]["results"][0]["description"]
attribution = body["attributionText"]
return (description, attribution)


class Display:
def __init__(self, width=80):
self.width = width

def display(self, text):
print("\n".join(textwrap.wrap(text, width=self.width)))

def main():
name = sys.argv[1]
base_url = "http://gateway.marvel.com/v1/public"

auth = Authorization()
auth.get_keys()

client = Client(base_url, auth)
description, attribution = client.get_character_description(name)
terminal_size = shutil.get_terminal_size()
columns = terminal_size.columns
terminal = Display(width=columns)
terminal.display(description)
terminal.display("---")
terminal.display(attribution)


if __name__ == "__main__":
main()

sources/marvel/get-character-description.py → sources/marvel/marvel_start.py Переглянути файл