diff --git a/projekty/star_wars/petr.py b/projekty/star_wars/petr.py new file mode 100644 index 0000000..10ace5b --- /dev/null +++ b/projekty/star_wars/petr.py @@ -0,0 +1,110 @@ +import requests +import json +import time + + +# helper functions +def get_json(url): + return requests.get(url).json() + + +def get_film_titles(films): + list_films = [] + for film in films: + list_films.append(get_json(film)["title"]) + return list_films + + +def get_character_names(characters): + list_characters = [] + for character in characters: + list_characters.append(get_json(character)["name"]) + + return sorted(list_characters) + + +def get_spaceship_names(spaceships): + list_spaceships = [] + for spaceship in spaceships: + list_spaceships.append(get_json(spaceship)["name"]) + + return sorted(list_spaceships) + + +def get_film_info(film): + list_characters = get_character_names(film["characters"]) + list_spaceships = get_spaceship_names(film["starships"]) + return [film["title"], film["director"], film["episode_id"], + list_characters, list_spaceships] + + +def ship_detail(shipname): + web = get_json("https://swapi.co/api/starships/?search={}".format(shipname))["results"] + list_results = [] + for result in web: + list_films = get_film_titles(result["films"]) + list_results.append( + [result["name"], result["model"], result["starship_class"], result["hyperdrive_rating"], list_films]) + + return list_results + + +def species_detail(speciesname): + web = get_json("https://swapi.co/api/species/?search={}".format(speciesname))["results"] + list_results = [] + for result in web: + list_films = get_film_titles(result["films"]) + homeworld = get_json(result["homeworld"])["name"] + list_results.append( + [result["name"], result["classification"], result["designation"], homeworld, list_films]) + + return list_results + + +def person_detail(name): + web = get_json("https://swapi.co/api/people/?search={}".format(name))["results"] + list_results = [] + for result in web: + list_films = get_film_titles(result["films"]) + homeworld = get_json(result["homeworld"])["name"] + list_results.append( + [result["name"], result["gender"], homeworld, list_films]) + + return list_results + + +def film_detail(filmidentifier, id_type="ep_id"): + list_results = [] + if id_type == "ep_id": + web = get_json("https://swapi.co/api/films/{}".format(filmidentifier)) + list_results.append(get_film_info(web)) + elif id_type == "title": + web = get_json("https://swapi.co/api/films/?search={}".format(filmidentifier))["results"] + for result in web: + list_results.append(get_film_info(result)) + + else: + raise Exception('Bad film id type') + + return list_results + + +def crawl(title): + web = get_json("https://swapi.co/api/films/?search={}".format(title))["results"] + for result in web: + film_crawl = result["opening_crawl"].split("\r\n") + for line in film_crawl: + print(line) + time.sleep(1) + + +if __name__ == "__main__": + # testing program. runs only if run as main + print(ship_detail("Imperial shuttle")) + print(species_detail("Hutt")) + print(person_detail("Owen Lars")) + + print(film_detail("The Phantom Menace", "title")) + print(film_detail(2)) + + crawl("A New Hope") \ No newline at end of file