|
|
|
# petr.py
|
|
|
|
```python
|
|
|
|
import requests
|
|
|
|
import json
|
|
|
|
import time
|
|
|
|
|
|
|
|
|
|
|
|
# helper functions - Pedro
|
|
|
|
# nice, delas abstrakce coz je super
|
|
|
|
def get_json(url):
|
|
|
|
return requests.get(url).json()
|
|
|
|
|
|
|
|
# dalsi abstrakce, hmm
|
|
|
|
# asi celkem v pohode, ale nazvy potencialne moc dlouhy
|
|
|
|
def get_film_titles(films):
|
|
|
|
list_films = []
|
|
|
|
for film in films:
|
|
|
|
list_films.append(get_json(film)["title"])
|
|
|
|
# mohl si napsat:
|
|
|
|
#return [get_json(film)["title"] for film in films]
|
|
|
|
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) # asi ne uplne dobry volat na tom sorted
|
|
|
|
# ztracis trochu generalizaci
|
|
|
|
# ale to je fakt detail
|
|
|
|
|
|
|
|
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] # kdyz uz takhle formatujes tak
|
|
|
|
# muzes rovnou na vic radku
|
|
|
|
|
|
|
|
|
|
|
|
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 - Pedro
|
|
|
|
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")
|
|
|
|
```
|