Repositorios de Plugins
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Ha habido varios cambios en los plugins para la nueva versión. Aquí tienes una publicación rápida que repasa las actualizaciones más importantes tanto para desarrolladores como para usuarios.
¡El cambio más notable para todos es que ahora están disponibles los repositorios de plugins de terceros! Puedes acceder a la lista actual en Panel de control -> Plugins -> Repositorios, donde puedes añadir o eliminar elementos según necesites. Incluso el repositorio oficial se puede eliminar si prefieres evitar llamadas externas a nuestro servidor.
Para desarrolladores, el único cambio requerido es un manifiesto JSON en cualquier ubicación con versiones que apunten a lanzamientos binarios en cualquier ubicación. No requerimos ningún método específico para alojar estos archivos, ya que eso iría en contra de los ideales del proyecto. El repositorio oficial usa nginx para el manifiesto y GitHub Releases para los binarios, pero potencialmente también podrías alojar el manifiesto en GitHub. Aquí tienes un ejemplo de manifiesto con todas las propiedades. Ten en cuenta que el GUID debe ser único (tanto en el manifiesto como en el propio plugin) si quieres evitar conflictos con otros plugins.
[
{
"category": "Metadata",
"guid": "a4df60c5-6ab4-412a-8f79-2cab93fb2bc5",
"name": "Anime",
"description": "This plugin supports several different metadata providers and options for organizing your collection.",
"owner": "jellyfin",
"overview": "Manage Your Anime in Jellyfin",
"versions": [
{
"checksum": "ad6db5175f4732308b5dd166f79a1c2d",
"changelog": "bug fixes and improvements",
"targetAbi": "10.6.0.0",
"sourceUrl": "https://repo.jellyfin.org/releases/other/whats-this-plugin.zip.gif",
"timestamp": "2020-03-27 06:02:58",
"version": "1.0.3.0"
}
]
}
]
The official repository manifest for stable plugins can be used for more examples. You can also find the deprecated manifest on the same domain for the old format. However, all new plugin updates (on the official repository) will go to the new manifest, so older verions of Jellyfin won't receive plugin updates. Plugins do have official documentation on our DocFX instance. Please be aware that our documentation is still a work in progress, since a lot of the C# code still has very little information for tools like this. Things are improving thanks to the diligent server team though, who have been slowly adding information throughout the codebase.
Herramientas
One excellent tool that might help with repository management is jellyfin-plugin-repository-manager by Oddstr13, a frequent contributor. He did mention that his tool works much better with nginx than GitHub releases, but feel free to check it out! Another useful tool might be the jellyfin-build repository, which used to be the method used for updates on the official repository. We'll probably be migrating to the repository manager linked above though, since most of the other build systems have moved to Azure.
Código
Siempre hay algunos cambios en la ABI que quizás quieras conocer si mantienes un plugin. Incluiré aquí los más importantes para la versión 10.6.0 con la esperanza de reducir cualquier problema con la actualización.
The first batch comes from the HTML for settings on the web client, which has been going through an overhaul lately. One of the long term goals we have is deprecating jQuery entirely, since it's not 2008 anymore and better tools have come along. That does mean plugin pages will have to migrate off it at some point, but we haven't made the full transition yet, don't worry. Although jQuery will stick around a bit longer, we did remove two custom scripts in the web source that...extended the functionality a bit. There was one for select menus and yet another for checkbox elements. I can only assume the goal was compatibility with older browsers or clients at the time, but we've been pushing extremely hard to modernize the web client. That means avoiding abandoned libraries, ancient JavaScript practices, and definitely custom extensions for dependencies we don't even want in the code. The easiest fix for this change is to migrate from jQuery to vanilla JavaScript for checkboxes and select menus in the HTML source.
También hubo varios cambios en la ABI de C# que podrían afectar tu plugin. El más problemático probablemente sean los ajustes en ILogger, que se hicieron para mejorar los registros del servidor agregando el nombre de la clase en cada línea. También encontrarás bastantes cambios causados por la nueva migración de base de datos (Jellyfin.Data es el nuevo espacio de nombres para estos objetos) y algunos elementos no relacionados.
IExternalID.Name -> IExternalID.ProviderName
MediaBrowser.Controller.Entities.User -> Jellyfin.Data.Entities.User
MetadataProviders -> MetadataProvider
CompressionMethod -> CompressionMethods
RequestContentBytes = request -> RequestContent = Encoding.UTF8.GetString(request)
User.Name -> User.Username
item.GetDisplayExtras() -> item.GetExtras(BaseItem.DisplayExtraTypes)
user.RootFolder -> libraryManager.GetUserRootFolder()
Futuro
Los repositorios de terceros son el primer paso de un plan más grande para aumentar enormemente el uso de plugins en la base de código. Permitirán a cualquiera mantener su propio plugin y publicar actualizaciones tan rápido como desee, sin tener que lidiar con un sistema centralizado. También da a los usuarios el poder de reducir su dependencia de una conexión a internet al permitir que todos los repositorios se eliminen a voluntad.
Entendemos que algunos de estos cambios pueden ser molestos de actualizar en tu plugin, pero esperamos que eso también mejore muy pronto. El próximo objetivo (ahora que se puede usar más de un repositorio al mismo tiempo) será un repositorio inestable para plugins. Esto solucionará la solicitud de larga data de un mejor soporte para plugins en la versión inestable, que ha sido un obstáculo para muchos usuarios. También tendrá el efecto secundario de requerir un repositorio NuGet inestable para la ABI de C#, lo que ayudará a los desarrolladores de plugins de terceros a probar sus plugins contra cualquier cambio en la ABI antes de que se publique una actualización del servidor.
Si desarrollas un plugin (o cliente) y te gustaría estar incluido en nuestra lista de correo para desarrolladores de terceros, contáctanos a través de Matrix o envía un correo electrónico para obtener los detalles. El objetivo principal aquí es un excelente soporte para plugins y clientes no oficiales, así que si tienes alguna sugerencia, definitivamente contáctanos en uno de nuestros foros públicos. ¡Esperamos que la ABI de C# se estabilice con el tiempo y que los cambios enormes sean menos frecuentes para que podamos centrarnos en hacer que los plugins sean lo mejor posible!