Summer of Code 2008/N-Tube FLV Browser
From The Neuros Technology Wiki
This project is to design and implement a universal FLV video site browser for the Neuros OSD. Currently there is a YouTube player on the OSD, but this works by hard coding the interface for YouTube into the player itself. N-Tube will instead aim to create a browser and framework for generally interfacing with flash video sites, as well as being extendable to other forms of content providers (last.fm or flickr for example).
The general idea is to provide a browser program with a well defined and suitably non-specific API such that pluggable modules can be easily produced to provide the actual content to be browsed. These modules will be source specific, depending on a content source's specific API, aggregation service, or screen scraping to provide content for browsing. The browser program will then provide a standardized interface designed for use with the OSD hardware, while the pluggable modules will allow endless customization and streamlined content retrieval.
The primary effort for this project will be designing the API, and the browser around it. While the framework design is the most important element, building the browser around it will be more useful both for the OSD and for the quality of design for the API. To ensure the usability of the API, both with run in parallel after the initial design phase.
The design of the framework will be based loosely on this post by Steven Robertson about an abstract content browser: http://groups.google.com/group/Neuros/msg/05493b52da5dd21e?&q=n-Tube
Specifically I will try to implement the following features:
- Provides a single API for browsing many content sources.
- Supports tree and parameter browsing, as well as searching
- Allows new sources to be supported in days
- Provides a streamlined interface designed for ease of use with OSD hardware.
To begin with I will explore the features and interfaces of several flash video sites and determine the most generally applicable interface for a plugin to easily move information from any of the sources to the browser API, whether they have their own API for a source or need to resort to screen scraping. Then I will flesh out the API design focusing on flash video but attempt to leave it open to extending to other forms of media sources as well.
After this initial design phase, I will begin work on the actual browser application and iteratively tweak the design as it is implemented. When I am satisfied that the API is nearing a finalized version I will begin working on implementing a more extensive example module based on YouTube. If necessary I may also implement a basic screen scraping module for another source. With a well designed API these should only take a few days each to get working examples to showcase the features of the browser and provide demo code for the API.
In addition to having modules that can plug into the main application, I'd like to explore the idea of including a probably less sophisticated, but lighter weight and easier to install web-service component to the API. This could streamline the process for people to offload more processor intensive work (such as customized recommendation, certain rule based filtering etc) to other servers that then get queried in a standard way by the browser, needing only the address and a few parameters. While this would be perfectly possible without any specific built in interface for it, streamlining the process can encourage much more interesting applications.
Rough Schedule for N-Tube:
- April 21: Begin examination of OSD and related code (continue throughout, can never be too familiar with code)
- April 30: Begin exploring flash video sites and laying out general interface.
- May 5: Start formalizing first version of interface.
- May 12: Begin design of browser application and UI prototyping/eval
- May 19: Start coding browser
- June 9: Core browser functionality complete, API nearing finalization
- June 30: Spit and polish initial browser. Begin replacing placeholder testing modules with first real example module.
- July 14: First example module working with browser and stomping bugs out.
- July 28: Second example module / web service working. More testing and debugging
- Testing, debugging, refactoring, documenting
- repeat as needed.
