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
Returns
Promise<void>
getSourceInfo()
getSourceInfo():
SourceInfo|Promise<SourceInfo>
Returns stable source identity, availability, and capabilities.
Returns
SourceInfo | Promise<SourceInfo>
search()
search(
criteria,pageToken?):Promise<SourcePagedResult>
Searches logical media and applies supported criteria before pagination.
Parameters
criteria
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()?
optionalonEvent(event):Promise<void>
Handles an event declared in the addon manifest.
Parameters
event
Returns
Promise<void>
onAction()?
optionalonAction(params,actionId):Promise<void>
Handles an action declared in the addon manifest.
Parameters
params
actionId
string
Returns
Promise<void>