Skip to main content

Interface: ISourcePlugin

Contract implemented by plugins whose manifest type is source.

Example​

class CatalogSource implements ISourcePlugin {
async onInit(api: IPluginAPI) {
api.logger.info('Catalog source initialized');
}

getSourceInfo(): SourceInfo {
return {
id: 'catalog',
name: 'Catalog',
isAvailable: true,
capabilities: {
supportsSearch: true,
supportsBrowse: true,
supportsTypeFilter: true,
supportsGenreFilter: false,
supportsYearFilter: false,
supportsTmdbLookup: false,
supportedTypes: ['movie', 'folder'],
},
};
}

async search(): Promise<SourcePagedResult> {
return {items: [], hasMore: false};
}

async browse(): Promise<SourcePagedResult> {
return {items: [], hasMore: false};
}

async getRecent(): Promise<SourceMediaItem[]> {
return [];
}

async resolvePlayback(sourceItemId: string): Promise<SourcePlaybackInfo> {
return {url: `https://media.example.com/${encodeURIComponent(sourceItemId)}`};
}
}

Methods​

onInit()​

onInit(api): Promise<void>

Receives the scoped host API before any other source method is invoked.

Parameters​

api​

IPluginAPI

Returns​

Promise<void>


getSourceInfo()​

getSourceInfo(): SourceInfo | Promise<SourceInfo>

Returns stable source identity, availability, and capabilities.

Returns​

SourceInfo | Promise<SourceInfo>


search(criteria, pageToken?): Promise<SourcePagedResult>

Searches logical media and applies supported criteria before pagination.

Parameters​

criteria​

SourceSearchCriteria

pageToken?​

string | number

Returns​

Promise<SourcePagedResult>


browse()​

browse(parentId?, pageToken?, criteria?): Promise<SourcePagedResult>

Browses the root or children of a source container.

Parameters​

parentId?​

string

pageToken?​

string | number

criteria?​

Partial<SourceSearchCriteria>

Returns​

Promise<SourcePagedResult>


getRecent()​

getRecent(limit): Promise<SourceMediaItem[]>

Returns a bounded list of recently added or updated logical items.

Parameters​

limit​

number

Returns​

Promise<SourceMediaItem[]>


resolvePlayback()​

resolvePlayback(sourceItemId): Promise<SourcePlaybackInfo>

Resolves one logical source item to a playable resource.

Parameters​

sourceItemId​

string

Returns​

Promise<SourcePlaybackInfo>


onEvent()?​

optional onEvent(event): Promise<void>

Handles an event declared in the addon manifest.

Parameters​

event​

SystemEventContext

Returns​

Promise<void>


onAction()?​

optional onAction(params, actionId): Promise<void>

Handles an action declared in the addon manifest.

Parameters​

params​

PluginActionParameters

actionId​

string

Returns​

Promise<void>