[other] [Concept] Related Items (1 Viewer)

Inker

Retired Team Member
  • Premium Supporter
  • December 6, 2004
    2,055
    318
    I've been thinking all the plugins in MP feel much too seperated......ah well, I don't feel like writing a long introduction, so lets get straight to the point.

    I propose a system that lets plugins list related items in other plugins based on the currenty displayed/selected item.

    Example:
    MPTVseries - Series Firefly
    Moving Pictures - Move Firefly/Serenity
    My Music - Serenity OST
    My OnlineVids: maybe finds trailers online
    My TV/EPG - maybe Firefly/Serenity airs/was recorded
    Wiki Plugin - Entrance for Firefly/Serenity
    etc.

    How would it work?
    I propose a Processplugin that sits in the background, enumerates all plugins that implent a certain Interface, say IRelatedItemsProvider, with only One Method, something like: IEnumarable<IRelatedItem> RequestRelatedItems(IBaseitem item);

    The currently active Plugin would fire a request in the form of (IBaseItem) to said processplugin, say
    ItemType: Video
    ItemSubType: TVSeries
    ItemName: Firefly
    ItemKeyWords: Firefly/Scifi/whatever the plugin deems appropriate, maybe IMDB id,

    the Processplugin would then one after the other ask all plugins with said interface for related items, it is up to the plugin to decide what is related, the plugin would then respond to the processplugin with a list of related items (IRelatedItem), say
    Plugin: Moving Pictures
    RelatedItemType: Video
    RelatedItemSubType: Movie
    RelatedItemImg: Thumbnail or Picture or something, or null
    RelatedItemName: Serenity (year)
    RelatedItemUIdentifier: <string> (this will be used later if the user interacts with the related item)
    RelatedItemConfidence: 0-100 (this would be used to sort all the relatedItems for display)

    The original plugin, in this case TVseries, would then receive an event from the processplugin with all the RelatedItems from all the plugins, or maybe better a seperate event per responding plugin in case some plugins are slow, and display them somehow, maybe in a small facade off to the side, or whatever.

    If the user clicks on any related Item, again a request to the processplugin would be fired, which launches the plugin that provided the related item, and gives it the UniqueID, it is then the plugins job to display this item directly, for instance Moving Pictures might directly jump to the movie details page. Note the plugin itself can also provide related items, for instance, consider Star Trek

    In TVseries we are in Star Trek TOS, but for related items we also get Star Trek TNG/DS9 (probably not voyager though.....:)).

    Problems:
    1) performance...this needs to be multithreaded and event based, we absolutely don't want the gui frozen waiting for results
    2) it only works if 3rd party plugin devs and and core plugin devs agree on something like this
    3) plugins typically don't run until they are invoked in the menu (AFAIK), so how can the processplugin get an instance, specifically plugins will typcially need to be fully running to have database acces etc.

    Note, this is a fairly technical introduction to the concept, I am not at home (and won't be for another month or so) so all i have is a lousy netbook and dial up, so no fancy concept pics etc. from me.

    I am also not sure if it is technically feasable at all or not (see problems, esp. point 3 has me thinking). But i still think it can be done.

    BS? Best idea since sliced bread? Am I just dreaming?
    Please discuss...
     

    vuego

    Documentation Group
  • Team MediaPortal
  • August 5, 2006
    1,639
    764
    Göteborg
    Home Country
    Sweden Sweden
    It would be great to be able to watch trailers through OnlineVideos before starting the movie :)
     

    Users who are viewing this thread

    Top Bottom