Mercurial > public > bravenewsurf
view bns_website/videos/models.py @ 60:a0d3bc630ebd
For issue #8, create a videos application to randomize videos in the playlist.
This commit now adds a dependency to the Google Python GData library.
The admin enters a playlist URL in the admin. Then the admin uses an admin action to synchronize the playlist with YouTube. This reads the playlist title and retrieves the video list from YouTube. The view function reads all the playlist objects to get the complete list of videos, then shuffles them up. The template generates Javascript to create a YouTube player with the shuffled list.
A fixture is included for convenience and for the tests.
I also committed a test tool I wrote to prove out this idea in case it is useful for future enhancements or experimentation.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sat, 19 Nov 2011 14:19:00 -0600 |
parents | |
children |
line wrap: on
line source
""" Models for the videos app. """ from django.db import models # The whole purpose of this application is to shuffle the videos in # a YouTube playlist. # # We'd like to embed a video player to show videos from all the bands that # participated in the compilation. So we create a YouTube playlist with a long # list of videos. YouTube no longer offers a way to shuffle the playlist via # the embed code. Instead we will use the YouTube Javascript API to accomplish # this. However, the Javascript API works off of video IDs. So we now need # a way to obtain all the video IDs from a YouTube playlist. This model # stores the playlist URL and an admin function can be run to retrieve the # video ID list via the Python GData YouTube API. The video list is also # stored in this model. The view function can then read the video ID list, # randomize it, and give it to the template to build the appropriate # Javascript. class Playlist(models.Model): """ This model stores a YouTube playlist URL and a list of video IDs that make up the playlist. """ playlist_title = models.CharField(max_length=128, blank=True) playlist_url = models.URLField() video_list = models.TextField(blank=True) sync_date = models.DateTimeField(null=True, blank=True) def __unicode__(self): if self.playlist_title: return self.playlist_title return u"(Please sync with YouTube to retrieve the videos)"