More on TurboGears Leif Oppermann, 24.04.2008. Course of this lecture Example project: Movie...

17
More on TurboGears Leif Oppermann, 24.04.2008
  • date post

    22-Dec-2015
  • Category

    Documents

  • view

    219
  • download

    1

Transcript of More on TurboGears Leif Oppermann, 24.04.2008. Course of this lecture Example project: Movie...

Page 1: More on TurboGears Leif Oppermann, 24.04.2008. Course of this lecture Example project: Movie Collection Utilizing movie data –IMDb –IMDbPy Explaining.

More on TurboGears

Leif Oppermann, 24.04.2008

Page 2: More on TurboGears Leif Oppermann, 24.04.2008. Course of this lecture Example project: Movie Collection Utilizing movie data –IMDb –IMDbPy Explaining.

Course of this lecture

• Example project: Movie Collection

• Utilizing movie data– IMDb– IMDbPy

• Explaining– Model– Views– Controllers

Page 3: More on TurboGears Leif Oppermann, 24.04.2008. Course of this lecture Example project: Movie Collection Utilizing movie data –IMDb –IMDbPy Explaining.

Source of data: IMDB

• The Internet Movie Database (www.imdb.com) is an online database of information about movies, actors, television shows, production crew personnel, and video games.

• IMDb began October 17, 1990. In 1998, it was acquired by Amazon.com. As of April 26, 2007, the site featured 981,916 titles (372,912 theatrically released) and 2,336,303 people.

Page 4: More on TurboGears Leif Oppermann, 24.04.2008. Course of this lecture Example project: Movie Collection Utilizing movie data –IMDb –IMDbPy Explaining.
Page 5: More on TurboGears Leif Oppermann, 24.04.2008. Course of this lecture Example project: Movie Collection Utilizing movie data –IMDb –IMDbPy Explaining.

Getting IMDb data

• IMDb *always* had a data interface(Zipped text files over FTP server)

• a Python implementation of the interface is available: IMDBPy

• Remember: TurboGears uses Python!

Page 6: More on TurboGears Leif Oppermann, 24.04.2008. Course of this lecture Example project: Movie Collection Utilizing movie data –IMDb –IMDbPy Explaining.

IMDbPY

• IMDbPY is a Python package useful to retrieve and manage the data of the IMDb movie database about both movies and people.

• Platform-independent and written in pure Python (and few C lines), it can retrieve data from both the IMDb's web server and a local copy of the whole database.

Page 7: More on TurboGears Leif Oppermann, 24.04.2008. Course of this lecture Example project: Movie Collection Utilizing movie data –IMDb –IMDbPy Explaining.

Example project: Movie Collection

• Idea: browse movies (with IMDB info) and store favourites with annotations

• Functionality:– Search (fuzzy, showing matching titles)– Browse movie details– Store movie to favourites– Add a note

Page 8: More on TurboGears Leif Oppermann, 24.04.2008. Course of this lecture Example project: Movie Collection Utilizing movie data –IMDb –IMDbPy Explaining.
Page 9: More on TurboGears Leif Oppermann, 24.04.2008. Course of this lecture Example project: Movie Collection Utilizing movie data –IMDb –IMDbPy Explaining.

Uses 2 databases

• Database #1: imdb.sqlite– Self generated from IMDB data– >11 hours parsing– ~ 2 GB in one file

• Database #2: devdata.sqlite– Generated by Turbogears (SQLObject)

Page 10: More on TurboGears Leif Oppermann, 24.04.2008. Course of this lecture Example project: Movie Collection Utilizing movie data –IMDb –IMDbPy Explaining.

Model for database #2

from turbogears.database import PackageHubfrom sqlobject import *

hub = PackageHub("imdb01")__connection__ = hub

class Movie(SQLObject): title = UnicodeCol(alternateID=True, length=40) imdbid = UnicodeCol(alternateID=True, length=16) director = UnicodeCol() notes = UnicodeCol()

Page 11: More on TurboGears Leif Oppermann, 24.04.2008. Course of this lecture Example project: Movie Collection Utilizing movie data –IMDb –IMDbPy Explaining.

Templates

• Movielist.kid

• Search.kid

• Browsemovie.kid

• Edit.kid

• Movie.kid

Page 12: More on TurboGears Leif Oppermann, 24.04.2008. Course of this lecture Example project: Movie Collection Utilizing movie data –IMDb –IMDbPy Explaining.

<body>

<div id="status_block">Showing your collection of movies</div> <div id="sidebar"> Choose a movie or start a search <form method="post" action="../search"> <textarea name="searchterm" rows="1" cols="25"></textarea> <br/> <input type="submit" value="Search"/> </form> </div> <div class="list"> <ul> <li py:for="title in movies"><a href="movie/${title}">${title}</a></li> </ul> </div>

</body></html>

Page 13: More on TurboGears Leif Oppermann, 24.04.2008. Course of this lecture Example project: Movie Collection Utilizing movie data –IMDb –IMDbPy Explaining.

<body>

<div id="status_block">Editing note for: <span py:content="movie.title">move title goes here</span>

</div> <div id="sidebar"> You can return to the <a href="/">Movie List</a> <p/> or Search again <form method="post" action="../search"> <textarea name="searchterm" rows="1" cols="25"></textarea> <br/> <input type="submit" value="Search"/> </form> </div> <div class="note"> <form method="post" action="save"> <input type="hidden" name="title" value="${movie.title}"/> <textarea name="notes" rows="10" cols="45 ">${movie.notes}</textarea> <br/> <input type="submit" value=„Save"/> </form> </div> </body></html>

Page 14: More on TurboGears Leif Oppermann, 24.04.2008. Course of this lecture Example project: Movie Collection Utilizing movie data –IMDb –IMDbPy Explaining.

Search Controller @expose(template="imdb01.templates.search") def search(self, searchterm): i = imdb.IMDb(**IMDB_PARAMS) # finding matching movies try: # Do the search, and get the results (a list of Movie objects). matchingtitles = i.search_movie(searchterm) except imdb.IMDbError, e: print "***ERROR connecting to IMDB. Complete error report:" print e if not matchingtitles: pass

return dict(searchterm=searchterm, matchingtitles = matchingtitles)

Page 15: More on TurboGears Leif Oppermann, 24.04.2008. Course of this lecture Example project: Movie Collection Utilizing movie data –IMDb –IMDbPy Explaining.

Away with Powerpoint

• Let‘s talk about the source!

Page 16: More on TurboGears Leif Oppermann, 24.04.2008. Course of this lecture Example project: Movie Collection Utilizing movie data –IMDb –IMDbPy Explaining.

Thanks for your attention

• Questions / Comments / Get the source:– Now, or via email:

[email protected]

• Blog entry for this lecture:– http://www.dig-id.de/?p=35

Page 17: More on TurboGears Leif Oppermann, 24.04.2008. Course of this lecture Example project: Movie Collection Utilizing movie data –IMDb –IMDbPy Explaining.

Additional pointers• Of course there are similar frameworks for other programming languages,  the

"original" being Ruby on Rails. Original in the sense that its design was so influential that it quickly got adapted by others. Have a look at the following if you feel that you like what you saw in the lectures, but would rather do it in another language or framework:

• http://en.wikipedia.org/wiki/Ruby_on_rails (Ruby) – http://www.rubyonrails.org/screencasts

• http://en.wikipedia.org/wiki/Cake_php (PHP) – http://cakephp.org/screencasts

• http://en.wikipedia.org/wiki/Turbogears (Python) – http://showmedo.com/videos/series?name=TurboGears20MinWiki

• http://en.wikipedia.org/wiki/Django_%28web_framework%29 (Python) – http://www.throwingbeans.org/django_screencasts.html

• http://en.wikipedia.org/wiki/Google_App_Engine (Python, Django) – http://www.youtube.com/watch?v=3Ztr-HhWX1c