This is a demo project that makes use of YouTube and Google+ APIs to allow users to collaboratively edit a YouTube playlist.
Python JavaScript HTML CSS
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
playlistpicker
static
third-party
.gitignore
COPYING
README
app.yaml
index.yaml

README

Party Playlist Picker
=================

This is a demo project that makes use of YouTube and Google+ APIs to allow
users to collaboratively edit a YouTube playlist.

Running
-------

This is a Google App Engine application written in Python. To fire up the
server locally:

	dev_appserver.py .

Global TODOs
------------

Put the uuid in the URL so that the admin can copy-and-paste it.

Show all playlists on the playlist list page.

Validate host_url wherever it's used.

Upgrade to a newer Google APIs client library.

Dragging when the playlist is empty doesn't work.

Grep for TODO in the source and fix the bugs.

Limitations
-----------

We specifically decided not to write any tests because this is a prototype.
However, all the code was either pair programmed or code reviewed.

Party Playlist Picker does not work with all YouTube playlists.  It only works
with playlists that have been created within Party Playlist Picker.

Only 25 search results are shown.  There is no paging.

The ajax is pretty "blunt" right now.  Entire playlists are transported
from the server every time the user makes a change.

If you delete a playlist, it still appears to be active and can be modified
using Party Playlist Picker. This is due to odd behavior on the part of the YouTube API.

Memcache updates are done without locking. There is a potential race condition
as a result, in which the server could lose track of a channel id.

If Channel API communication fails (due to timeout or any other reason), we do
not automatically attempt to reconnect. A notification is displayed asking the
user to reload the page.

The "g+ Share" button doesn't work on localhost.

If you close and reopen a tab containing the edit page, it'll show you the
edit page as it was when it was first loaded. It won't show the changes you
made to the playlist, and it definitely won't show you any changes that were
made to the playlist while the tab was temporarily closed.

You can take advantage of the above limitation to try to delete a video from a
playlist that it's no longer a member of. This will result in an exception in
the logs.