Like many of us, I recommend Beazley talks to newcomers to Python. http://worldgame.blogspot.com/2016/10/doing-homework.html
I'll be getting to asyncio in this edition of my saisoft.net course, using IMDB.com through an open API I've been using already. We get JSON for a bunch of movies, kind of like Ramalho does with the nation flags (logos). [1] http://www.dabeaz.com/ http://shop.oreilly.com/product/0636920032519.do Looking forward to 3.6 / 3.7 Kirby [1] # -*- coding: utf-8 -*- """ Created on Mon Jul 14 2016 @author: Kirby Urner Uses API documented at http://www.omdbapi.com/ to query IMDB movie database. Uses pickle to store Movie instance https://docs.python.org/3.5/library/pickle.html LAB 3: __str__ has full access to self.content, a dict. Why not make it even cooler? If you don't have requests, there's a picked movie instance to play with. """ import requests # from collections import namedtuple import json import pickle # Movie = namedtuple("Movie", "status_code content") class Movie: def __init__(self, status_code, json_data): self.status = status_code self.content = json.loads(str(json_data, encoding="UTF-8")) def __str__(self): """ Good place to practice string formatting by adding more data to the output """ obj = self.content # decoded json, a dict the_title = "Title: {:^40}\n".format(obj["Title"]) the_actors = "Actors: \n" for actor in obj["Actors"].split(","): the_actors += ".....{:>30}\n".format(actor) the_story = ("Story: \n") the_story += obj["Plot"] return the_title + the_actors + the_story def __repr__(self): return "Movie(Title={}, Released={})".format(self.content["Title"], self.content["Released"]) def get_movie(url): r = requests.get(url) return Movie(r.status_code, r.content) def test_request_1(imdb_title): the_url = "http://www.omdbapi.com/?i={}&plot=full&r=json".format(imdb_title) # GET result = get_movie(the_url) # Movie object return result def test_request_2(name, year): print("-----------") the_url = "http://www.omdbapi.com/?t={}&y={}&plot=full&r=json".format(name, year) result = get_movie(the_url) # Movie object return result def pickle_it(the_movie): with open('movie.pickle', 'wb') as f: # context manager style # Pickle the 'data' dictionary using the highest protocol available. pickle.dump(the_movie, f, pickle.HIGHEST_PROTOCOL) def unpickle_it(): with open('movie.pickle', 'rb') as f: # The protocol version used is detected automatically, so we do not # have to specify it. the_movie = pickle.load(f) return the_movie if __name__ == "__main__": # means just importing will not trigger this block # movie = test_request_2("Titanic", "1997") movie = test_request_1("tt0317705") print(movie)
_______________________________________________ Edu-sig mailing list Edu-sig@python.org https://mail.python.org/mailman/listinfo/edu-sig