Jump to content

Search the Community

Showing results for tags 'plugin development'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • General
    • Announcements
    • Emby Premiere Purchase/Subscription Support
    • Feature Requests
    • Tutorials and Guides
  • Emby Server
    • General/Windows
    • Android Server
    • Asustor
    • FreeBSD
    • Linux
    • NetGear ReadyNAS
    • MacOS
    • QNAP
    • Synology
    • TerraMaster NAS
    • Thecus
    • Western Digital
    • DLNA
    • Live TV
  • Emby Apps
    • Amazon Alexa
    • Android Mobile
    • Android TV / Fire TV
    • Emby Theater
    • iOS
    • Apple TV
    • Kodi
    • Raspberry Pi
    • Roku
    • Samsung Smart TV
    • Sony PlayStation
    • LG Smart TV
    • Web App
    • Windows Media Center
    • Plugins
  • Language-specific support
    • Arabic
    • Dutch
    • French
    • German
    • Italian
    • Portuguese
    • Russian
    • Spanish
    • Swedish
  • Community Contributions
    • Ember for Emby
    • Fan Art & Videos
    • Tools and Utilities
    • Web App CSS
  • Other
    • Non-Emby General Discussion
    • Developer API
    • Hardware
    • Media Clubs
    • Legacy Support


  • Emby Blog

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...

Found 2 results

  1. In my plugin I have successfully implemented Movie and Series Providers without any issues based on the examples from the Anime plugin. Now I am trying to do the same for people with no success. I have tried it first by implementing IRemoteMetadataProvider and when that didn't work I tested ILocalMetadataProvider also with no success. While debugging with breakpoints on the GetMetadata and GetSearchResults methods it seems like they are simply never called. Not while adding a person, not while manually refreshing the metadata and not while using the identify search. For reference these are my classes, stripped down to the minimum for testing: IRemoteMetadataProvider class MediaServerDBPersonProvider : IRemoteMetadataProvider<Person, PersonLookupInfo> { private readonly ILogger _log; private readonly IHttpClient _httpClient; private readonly IApplicationPaths _paths; private readonly IDirectoryService _directoryService; public static string provider_name = ProviderNames.MediaServerDB; public string Name => "MediaServerDB"; public MediaServerDBPersonProvider(IHttpClient httpClient, ILogger log, IDirectoryService directoryService, IApplicationPaths paths) { _httpClient = httpClient; _log = log; _directoryService = directoryService; _paths = paths; } public Task<MetadataResult<Person>> GetMetadata(PersonLookupInfo info, CancellationToken cancellationToken) { return Task.FromResult<MetadataResult<Person>>(new MetadataResult<Person>()); } public Task<IEnumerable<RemoteSearchResult>> GetSearchResults(PersonLookupInfo searchInfo, CancellationToken cancellationToken) { return Task.FromResult(Enumerable.Empty<RemoteSearchResult>()); } public Task<HttpResponseInfo> GetImageResponse(string url, CancellationToken cancellationToken) { return _httpClient.GetResponse(new HttpRequestOptions { CancellationToken = cancellationToken, Url = url }); } } ILocalMetadataProvider public class MediaServerDBLocalPersonProvider : ILocalMetadataProvider<Person> { private readonly ILogger _log; private readonly IApplicationPaths _paths; public static string provider_name = ProviderNames.MediaServerDB; public string Name => "MediaServerDB"; public MediaServerDBLocalPersonProvider(IApplicationPaths appPaths, ILogManager logManager) { _log = logManager.GetLogger(Name); _paths = appPaths; } public Task<MetadataResult<Person>> GetMetadata(ItemInfo info, IDirectoryService directoryService, CancellationToken cancellationToken) { return Task.FromResult<MetadataResult<Person>>(new MetadataResult<Person>()); } } One thing I noticed is that while for Movies and Series the used providers depend on the configuration of the library, the providers used for people seem to have a different configuration as even with all remote providers disabled in the library emby is still fetching remote metadata for people. So maybe I need to configure my provider to be used for people somehow? Any help would be appreciated. Thanks!
  2. I have a button on my my plugin html page. It creates dynamic List Items. However, after the server loads the Html in my plugin settings, when ever I press the button to create a new list item, the list item appears without any of the CSS styles from the server. I figure this is because the CSS has already bee read and used during load. How do I keep the styles for my new list items? <div style="vertical-align:middle;" id="newClientList"> <script type="text/javascript"> function AddProfileToList() { var e = document.getElementById("clientName"); strClientName = e.options[e.selectedIndex].text; //HERE is where the trouble begins var mainDiv = document.getElementById("newClientList"); var newUList = document.createElement("ul"); newUList.setAttribute("class", "ulForm ui-listview"); newUList.setAttribute("data-role", "listview"); newUList.setAttribute("data-inset", "true"); newUList.setAttribute("data-split-icon", "delete"); newUList.setAttribute("id", "clientProfiles"); //if (strClientName === "Dashboard") { var newLItem = document.createElement("li"); var configurationLink = document.createElement("a"); configurationLink.setAttribute("href", Dashboard.getConfigurationPageUrl("DashboardConfigPage")); configurationLink.innerText = "Represents a saved Profile 1"; var deleteButtonLink = document.createElement("a"); deleteButtonLink.setAttribute("href", "#"); deleteButtonLink.setAttribute("data-icon", "delete"); deleteButtonLink.setAttribute("class", "btnDeletePropfile"); deleteButtonLink.setAttribute("onclick", "deleteProfile(id)"); newLItem.appendChild(configurationLink); newLItem.appendChild(deleteButtonLink); newUList.appendChild(newLItem); mainDiv.appendChild(newUList); } </script>
  • Create New...