GithubHelp home page GithubHelp logo

infinityofspace / jellyfin-alexa-plugin Goto Github PK

View Code? Open in Web Editor NEW
17.0 3.0 4.0 169 KB

Alexa skill plugin for Jellyfin

License: GNU General Public License v3.0

C# 87.36% HTML 12.64%
alexa alexa-skill jellyfin jellyfin-plugin

jellyfin-alexa-plugin's Introduction

Jellyfin Alexa Plugin

Alexa skill plugin for Jellyfin


dev build GitHub all releases


Note: This project is still in a very early alpha phase, this means not all features are fully functional at this time and features or usage can change significantly between releases. Moreover, new releases can result in data loss of the plugin configuration. Changes on the main branch are not final and may brake your setup, please use the tagged versions for more stable beta versions eg. 0.x. Please always create a backup of your setup beforehand.

Note: If you are looking for a more stable and feature-packed Alexa Skill for Jellyfin, then check out this project.

Table of Contents

  1. About
  2. Features
  3. Requirements
  4. Installation
  5. Configuration file
  6. Supported languages
  7. Skill speech examples
  8. Project plan
  9. Third party notices
  10. License

About

This is a Jellyfin plugin for an Alexa skill to play media from your Jellyfin server. Besides, simple playback, other additional functions like playback of playlists or managing favorites are included.

Features

  • playback control:
    • play a specific media
    • play media from an artist
    • pause/resume/stop/cancel a playback
    • play previous/next song in queue
  • playlist:
    • play a specific playlist
  • favorite:
    • play favorite media
    • add media to favorites
    • remove media from favorites
  • other:
    • multi-language support (see Supported languages)
    • multi-user support (any user on the Jellyfin server can use the skill)
    • multi-alexa-user support, allow different Amazon Alexa accounts use the skill

Note: currently only audio is a supported media type

If you have a feature idea, use this issue template to suggest your idea for implementation.

Requirements

Before you continue, make sure you meet the following requirements:

  • Jellyfin server: 10.8+
  • Amazon developer account
  • publicly accessible Jellyfin server with a domain and a valid SSL certificate

Installation

  1. You can either use the prebuilds or build the plugin by yourself:
    1. Use prebuilds, here you have also two options:
      1. Use the plugin repository (recommend):
        1. Open the admin dashboard of your Jellyfin server.
        2. Go to Plugins and select the Repositories tab.
        3. Add a new repository with the following URL (name can be anything): https://raw.githubusercontent.com/infinityofspace/jellyfin-alexa-plugin/master/manifest.json
        4. Now you can find the plugin under the General category in the Catalog tab.
      2. Manually download the latest release:
        1. Download the lastes release from the releases page.
        2. Extract the zip file.
        3. Copy the folder Jellyfin.Plugin.AlexaSkill of the extracted zip to the plugins folder of your Jellyfin server.
    2. Build the plugin by yourself:
      1. Ensure you have .NET Core 6.0 SDK setup and installed.
      2. Clone the repository and checkout the latest release tag:
        git clone https://github.com/infinityofspace/jellyfin-alexa-plugin.git
        cd jellyfin-alexa-plugin
        git checkout <version>
      3. Build plugin with the following command:
        dotnet publish --configuration Release
      4. Create a folder named Jellyfin.Plugin.AlexaSkill inside the plugins folder of your Jellyfin server data folder.
      5. Copy everything from the folder Jellyfin.Plugin.AlexaSkill/bin/Release/net6.0/publish/ to the previously created folder Jellyfin.Plugin.AlexaSkill in your Jellyfin server plugin directory.
  2. Restart your Jellyfin server.
  3. Go to the plugin settings page and configure the plugin. You can find here more details on how to fill out the required values and configure the plugin.
  4. Now go into your Alexa app and link your desired Jellyfin account.
  5. You are now ready to use the skill. Let's start the skill with "Alexa, start Jellyfin Player" (assuming the invocation name has not been customized).

Configuration file

The skill saves data in the plugin config xml file, which is located at plugins/configurations path in your root Jellyfin folder and named Jellyfin.Plugin.AlexaSkill.xml.

Supported languages

The skill has support for the following languages:

  • English
  • German (no localized Alexa responses)

Skill speech examples

The wiki contains examples how to interact with the skill.

Project plan

Take a look at the project plan to see what features and bug fixes are planned and in progress.

Third party notices

Module License Project
Alexa.NET License Project
Alexa.NET.Management License Project
Amazon.Lambda.Core License Project
Amazon.Lambda.Serialization.Json License Project
Microsoft.Extensions.Logging.Console License Project
Jellyfin.Controller License Project
Jellyfin.Model License Project

Furthermore, this readme file contains embeddings of Shields.io.

License

GPL-3.0

jellyfin-alexa-plugin's People

Contributors

dependabot[bot] avatar github-actions[bot] avatar infinityofspace avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

jellyfin-alexa-plugin's Issues

Add support for playing channels

Please describe which problem should be solved

(Write your answer here.)

Optional: Describe your idea for a solution

(Write your answer here.)

Add support for playing playlists

Please describe which problem should be solved

(Write your answer here.)

Optional: Describe your idea for a solution

(Write your answer here.)

Add support for localization

Please describe which problem should be solved

Currently the plugin only support English responses, even if the interaction model supports different languages.

Optional: Describe your idea for a solution

Find a way to localize the hard coded skill responses.

Update setup description

Please describe which problem should be solved

The current wiki does not describe the latest steps on how to set up and use the skill.

Optional: Describe your idea for a solution

Update the wiki to reflect the latest changes.

Adjust the login and skill setup workflow to use LWA (Login with Amazon)

Please describe which problem should be solved

The current cloud skill setup and alexa-amazon auth flow is very technical and can be replaced with LWA (Login with Amazon). This feature allows the use of different Alexa accounts in addition to multiple different Jellyfin accounts. Because the skill is private, only the creator Amazon account can use the skill, this is especially important for multi-user Jellyfin servers.

Optional: Describe your idea for a solution

The official docs can be found here.

Publish Release

Please describe which problem should be solved

Hello! Thanks for your work! This is more my way to provide feedback than not a feature request.
I've decided to try it. After a little bit of fiddling I've realized tha that the automatic installation from Jellyfin UI was failing because the release had been removed from Github.
Not being familiar with .NET and not being sure if I could build from Linux, I've decided to fork your repo and to re-use your configured Github Actions to build and deploy.
That way I've been able to get a successful build, but even after pointing Jellyfin to my own repo, the automated installation process failed. I've instead been able to make the plugin to install properly after copying it manually on the filesystem folder.

With that done, and with the correct AWS configuration, I've been able to get the skill built!
I had some issue in getting commands to work, so I've decided to add an Italian model, hoping this would have simplified things for Alexa (since it's configured to use Italian).

With that done I've managed to hit 1 intent working: the PlayLastAddedIntent!
That was the only one working but I was excited never the less and I have now a little more motivation to try to build a and deploy a debug mode plugin and trying to figure out properly how come the operations related to other intents failed.

Thanks for you job, and I hope i will be able to contribute to this.

Optional: Describe your idea for a solution

(Write your answer here.)

Add support for remote control

Please describe which problem should be solved

Jellyfin allows to control media playback from other devices. As a user, I would like to use my Alexa devices to control other devices with my voice.

Optional: Describe your idea for a solution

(Write your answer here.)

Add support for asking about media information of the current playback

Please describe which problem should be solved

During playback, it is currently not possible to ask for the title or artists of the media, but this would be very informative and the information is also displayed in the playback control on an Alexa device with UI.

Optional: Describe your idea for a solution

(Write your answer here.)

Add support for playing video media

Please describe which problem should be solved

(Write your answer here.)

Optional: Describe your idea for a solution

(Write your answer here.)

Unable to access

Not sure if this is still active or not. I have jellyfin in docker and i have copied the Jellyfin.Plugin.AlexaSkill folder to the plugins directory, i also added the repository and even with a reboot the plugin does not show up anywhere. Am i missing a step?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.