Personal tools
You are here: Home Products Plone4Artists RevverVideo
Document Actions

Plone4Artists RevverVideo

RSS Feed Category: Media — Other products by this author
A product providing video content stored using the Revver XMLRPC API.

Current release

No stable release available yet.

If you are interested in getting the source code of this project, you can get it from the code repository.

Experimental releases

There are no experimental releases available at the moment.

Project Description

Project resources

This package allows you to mark existing content objects so that they become containers for video objects encoded and stored on the Revver servers. It provides a basic ui for viewing, adding, editing, and deleting these remotely stored videos. Additionally, it provides easy access to customizable AJAX widgets which display collections of videos in a convenient manner.

Components

The key feature of this package is a global utility (IRevverAPI) which provides some of the basic features of the Revver XMLRPC API. There are also two components which make use of this API, one which creates non-persistent content objects for displaying and editing information about a video on Revver, and another which adapts any annotatable object to act as a container (zope's IContainer) for these videos.

To make a particular object into a video container you can simply mark it using the ICanContainVideo interface as well as your preferred annotation interface:

<class class="mypackage.content.myarticle">
  <implements
      interface="zope.app.annotation.interfaces.IAttributeAnnotatable
                       p4a.revvervideo.interfaces.ICanContainVideo"
      />
</class>

You also need to enable all the functionality of p4a.revvervideo, either by including it in your package:

<include package="p4a.revvervideo" />

Or making a zcml slug for it in your zope instance.

Once this is done, an adapter to the video containment interface (IRevverVideoContainer) is available on the object, as well as a number of views. The primary view for managing videos is video-summary.htm which provides a listing of contained videos, along with the ability to add new videos and delete existing videos.

Adding a video is simple, you will be asked to enter some metadata about the video on an initial form, which will create the video object on the Revver servers, store a reference to that video in the content object/video container, and also create/update a collection on the Revver servers which mirrors the contents Zope video container. After submitting the metadata for the video, you are taken to a second form for uploading the video itself. The video will be uploaded directly to Revver, and may be uploaded in any of the many formats accepted there. The video will be processed and re-encoded into flash and quicktime, and a thumbnail will be generated automatically. Additionally advertising will be placed (usually at the end of the video), and revenue from that advertising will be split between the owner of the Revver account to which the video was uploaded, and the affiliate account for the site on which the video was shown (these will usually be the same account when the video is viewed from the Zope site with which it is associated). When the upload finishes you will be taken back to the video summary view, where you can see the status of your uploaded video as it gets processed and made public.

From the summary view you may remove videos, which will remove them from the Revver servers as well as from the container, or view the video directly. The view on the video uses a traversal namespace ++revervideo++ along with the Revver video id to create an IRevverVideo object on the fly which can be viewed or edited directly (only the metadata is available for editing).

There is also a view called collection-widget.htm which makes use of the AJAX collection widget provided by Revver to display a nice listing of the videos in an ICanContainVideo object, along with a nice lightbox style display of the videos themselves. The widget is highly customizable, and the view takes some optional arguments to allow the customization of its display.

Configuration

In order for all this to work, you need to supply credentials for a valid Revver account (accounts on Revver are free and simple to setup) in the config.py of this package. The package runs in DEBUG mode by default. This means that any videos you create will be created on the Revver staging servers which is not where you will want your videos to be once you have tested the package and are ready to use it in production. You can switch to using the production servers by simply setting DEBUG = False in config.py. There is also a configurable AFFILIATEID to which revenue will be assigned for videos viewed on your site (this is generally the same as your account username). You may also set the minimum and maximum rating (MPAA style) for videos to be viewed on your site using the MAX_AGE and MIN_AGE constants in config.py. Note: the collection widget will only work properly if you are not in DEBUG mode.

TODO

Some possible future improvements include the following:

  • Use AFFILIATEID for videos viewed directly on the site (i.e. not via the collection widget)
  • Use persistent objects for IRevverVideo in order to store additional metadata about the videos, and possibly allow commenting or tagging of individual videos.
  • Use the revver ratings api to add user rating information to the videos on Revver via the views. (Possibly by utilizing the contentratings views if available)
  • A persistent local version of the API utility which provides the Revver credentials in a more flexible manner
  • Some functional tests for the views
  • Perhaps a PAS plugin that integrates the user management API (note: this is probably not something I will do), or some other way of mapping zope users onto revver users under a master account.
  • ...

Requirements

  • This product has only been tested on Zope 2.9 with Five 1.4, it will almost certainly work with zope 2.10+ and may also work on Zope 3.2+ (note the inclusion of fivestuff.zcml in configure.zcml will need to be removed for this to work)
  • If you are using this product with Plone it is highly recommended that you install plone.app.form for much nicer form integration.

Notes

  • The creation/editing of videos is not transactional, so if a ConflictError results in a retry, multiple videos will be created (though only the referenced one will get a video uploaded to it, and so only it will appear in public listings via the widget). This also means that exceptions that cause aborted transactions may also result in irrevocable changes to the relevant object on Revver, and the Zope undo functionality will of course not affect the objects on Revver.
  • Creation and modification of videos is restricted by the revvervideo.AddVideo permission, which is assigned by default only to the Manager and Owner of the content object used as the container.

Happy video uploading!

Author: Alec Mitchell <apm13@columbia.edu> Sponsor: The Daily Reel

by Alec Mitchell last modified January 12, 2007 - 04:23

For any issues with the web site functionality, please file a ticket.

Please consult the policy on plone.org content if you want your content published on this site.

Servers and hosting by