jjinux / 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.
Apache License 2.0
0 stars 1 forks source link

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.