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>