2012-04-05, 21:45
Summary: Storing videos and music in a way that they are accessible from a media center software like XBMC is getting very common. This leads to rather large collections which need to be handled and presented by said media center software and it gets more and more difficult to quickly find certain media files or a number of media files sharing a common property/attribute/tag. To solve this problem a filter system can be employed which allows users to specify certain rules to narrow down the list of media files of a certain type (e.g. movies or tv episodes). For that purpose XBMC comes with a feature called Smart Playlists. They are a set of rules which can be applied to a certain type of media to get a subset of all the media files of that type. Although Smart Playlists are extremely powerful and versatile they are not very well integrated into XBMC in a sense of fast and easy filtering. A user has to leave the current list of media files, open the Smart Playlist category and then open a Smart Playlist to make use of its filtering functionality. The idea and goal of this project is to directly integrate the filtering functionality of Smart Playlists into the different media listings and views available in XBMC. To take it a step further the concept of Smart Playlists is simplified to allow users to easily put together a set of properties that he/she would like to filter by. This eliminates the need to first create and setup a Smart Playlist (which again happens outside of the media listings) before being able to use its filter functionality. Presenting this easier-to-access filtering functionality in a way that makes it easier to grasp and use further increases the usability of the filters.
Another growing branch of accessing media is using internet streams to watch videos or listen to music without storing them locally. Accessing internet streams in XBMC is mainly handled and provided through content-provider-specific addons (e.g. Youtube) which retrieve the available streams from an online service and present them in XBMC in a way that is better suited for media centers. The disadvantage is that users need to know where to find the content they are looking for because they need to start a specific addon to retrieve the content they are looking for. This highly limits the success rate of finding and discovering content yet unknown to the user. Therefore the second goal of this project is to provide a search and filter system which does not only apply to content being organised in XBMC's libraries but also to content being provided through addons. This will in a lot of cases eliminate the need to manually start an addon and start looking for certain content in a specific addon. Furthermore it will increase the success rate (i.e. the probability that the resulting list contains the media file(s) the user is looking for) of the search and/or filter.
How will I achieve this: The project will primarily focus on providing users with an easily accessible filtering functionality which allows to filter a list of items by specifying subsets of different properties/tags (as an example a subset of the "genre" property would be: "Action" or "Thriller"). From there certain filters can be stored so that the more often used filters can be easily re-used/re-applied without having to specify the subsets every time.
In a second step the filtering functionality will be extended to include content provided by addons. This will require a new interface (API) to be able to dynamically filter results from content-providing addons. A possible approach would be to define and use a standardized URI format (e.g. addon://youtube.com/shows?genre=Comedy) containing the filters specified by the user (which would fit into how XBMC currently interacts with addons to tell them what content to play). An additional approach would be to allow addons to specify what atrributes/tags and filters they support which would eliminate the need to query every possible addon for every filter process and would therefore increase the overall speed of the filtering process.
Benefits: (Better) Filtering of listed content allows users to easier find specific items they are looking for by providing a certain set of criteria. This does not only increase the chance of finding what you are looking for but also the time it takes to locate what you are looking for. In addition the possibility to narrow down the number of listed items provides a much better overview.
Extending this functionality to include searching in and filtering of content provided by addons increases the usability and the value added by installed addons a lot because it eliminates the need to manually browse to the addon, start it and then look for something specific. Showing addon-provided content side-by-side with content from XBMC's libraries is a huge step towards tight integration of addons into XBMC.
Goals: Providing users with quick and easily accessible yet powerful filtering functionality. Furthermore extending that filtering functionality to addons will increase the usability of and interaction with addons.
What does it touch in XBMC: library views & categories, smartplaylists, databases, addon system, addon/python API, JSON-RPC API
Requirements: C/C++ for most of the code, some Python for addon integration, JSON for extending the JSON-RPC API
How long have you been writing software for work/fun? I started coding websites (HTML, CSS, JavaScript and PHP) in 2002 and started coding with C/C++ in 2005. Apart from my preferred programming languages C/C++ I can write JavaScript, PHP and C# and have also written software in Java, Python and Assembler.
What is your primary development language/environment? C/C++ on Windows (using Visual Studio or MinGW) and Linux
Is this your first GSOC? Yes
Have you contributed to XBMC or other FLOSS projects? I have started contributing to XBMC in 2010 and since January 2011 I'm part of Team XBMC and contribute to XBMC on a regular basis. I have also written some small open source projects in the past.
Another growing branch of accessing media is using internet streams to watch videos or listen to music without storing them locally. Accessing internet streams in XBMC is mainly handled and provided through content-provider-specific addons (e.g. Youtube) which retrieve the available streams from an online service and present them in XBMC in a way that is better suited for media centers. The disadvantage is that users need to know where to find the content they are looking for because they need to start a specific addon to retrieve the content they are looking for. This highly limits the success rate of finding and discovering content yet unknown to the user. Therefore the second goal of this project is to provide a search and filter system which does not only apply to content being organised in XBMC's libraries but also to content being provided through addons. This will in a lot of cases eliminate the need to manually start an addon and start looking for certain content in a specific addon. Furthermore it will increase the success rate (i.e. the probability that the resulting list contains the media file(s) the user is looking for) of the search and/or filter.
How will I achieve this: The project will primarily focus on providing users with an easily accessible filtering functionality which allows to filter a list of items by specifying subsets of different properties/tags (as an example a subset of the "genre" property would be: "Action" or "Thriller"). From there certain filters can be stored so that the more often used filters can be easily re-used/re-applied without having to specify the subsets every time.
In a second step the filtering functionality will be extended to include content provided by addons. This will require a new interface (API) to be able to dynamically filter results from content-providing addons. A possible approach would be to define and use a standardized URI format (e.g. addon://youtube.com/shows?genre=Comedy) containing the filters specified by the user (which would fit into how XBMC currently interacts with addons to tell them what content to play). An additional approach would be to allow addons to specify what atrributes/tags and filters they support which would eliminate the need to query every possible addon for every filter process and would therefore increase the overall speed of the filtering process.
Benefits: (Better) Filtering of listed content allows users to easier find specific items they are looking for by providing a certain set of criteria. This does not only increase the chance of finding what you are looking for but also the time it takes to locate what you are looking for. In addition the possibility to narrow down the number of listed items provides a much better overview.
Extending this functionality to include searching in and filtering of content provided by addons increases the usability and the value added by installed addons a lot because it eliminates the need to manually browse to the addon, start it and then look for something specific. Showing addon-provided content side-by-side with content from XBMC's libraries is a huge step towards tight integration of addons into XBMC.
Goals: Providing users with quick and easily accessible yet powerful filtering functionality. Furthermore extending that filtering functionality to addons will increase the usability of and interaction with addons.
What does it touch in XBMC: library views & categories, smartplaylists, databases, addon system, addon/python API, JSON-RPC API
Requirements: C/C++ for most of the code, some Python for addon integration, JSON for extending the JSON-RPC API
How long have you been writing software for work/fun? I started coding websites (HTML, CSS, JavaScript and PHP) in 2002 and started coding with C/C++ in 2005. Apart from my preferred programming languages C/C++ I can write JavaScript, PHP and C# and have also written software in Java, Python and Assembler.
What is your primary development language/environment? C/C++ on Windows (using Visual Studio or MinGW) and Linux
Is this your first GSOC? Yes
Have you contributed to XBMC or other FLOSS projects? I have started contributing to XBMC in 2010 and since January 2011 I'm part of Team XBMC and contribute to XBMC on a regular basis. I have also written some small open source projects in the past.