petr
parent
9f3cb2373e
commit
126cb883dd
@ -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")
|
Loading…
Reference in New Issue