Package: jellyfin-alexa-skill
Jellyfin Alexa SkillSelfhosted Alexa media player skill for JellyfinNote: This project is still in a very early alpha phase, this means not all features are fully functional yet and
features or usage can change significantly between releases. Moreover, new releases can result in data loss of the skill
database.Table of ContentsAboutFeaturesInstallationSupported languagesSkill speech examplesProject planFAQDevelopmentThird party noticesLicenseAboutThis is a self-hosting Alexa skill to play media from your Jellyfin server. Besides simple playback, other additional
functions like playback of playlists or managing favorites are included. The skill and the Jellyfin player can be used
behind a NAT or firewall without port opening/forwarding. Since the skill and also the Jellyfin server must be reachable
from the outside, in this case the two services are exposed with a tunnel.Featuresplayback control:play a specific mediaplay media from an artistpause/resume/stop/cancel a playbackplay previous/next song in queuerepeat a single mediarepeat all media in queueshuffle modeplay internet radio streamsnavigate through top search resultsplaylist:play a specific playlistfavorite:play favorite mediamark current media as favoriteremove current media from favoritesmetadata:show the metadata of the media (title and artist)show cover art of the mediaother:multi-language support (seeSupported languages)multi-user support (any user on the Jellyfin server can use the skill)If you have a feature idea, use
thisissue templateto suggest your idea for implementation.InstallationBefore you begin, make sure you meet the following requirements:up-to-date Jellyfin Server with public or local accessfree Amazon developer accountpython 3.6+ or docker + docker-compose installedoptional:free ngrok account if you're running a local access serverThe initial setup requires several steps:create a Alexa skill:go to theAmazon Developer Console webpagefor Alexa and create
a new skillnow fill out the skill setup settings:the skill name can be custom, there are no requirementschoose one of thesupported languages of this skillfor thePrimary localechooseCustomfor the model typechooseProvision your ownfor the skill's backend resourceson the next page chooseStart from Scratchgenerate SMAPI tokens:create a new security profile for the SMAPI access
describedhereto get aCLIENT-IDandCLIENT-SECRETinstall npm if you have not already installed it and install the ask-cli package:npm install ask-cli -gnow setup the ask cli:ask configureuse the client id and client secret from step i. to generate the refresh
token:ask util generate-lwa-tokens --client-id <CLIENT-ID> --client-confirmation <CLIENT-SECRET>Note: The Skill id is needed for the interaction with the Alexa Skill. The SMAPI access is needed for the automatic
setup of the skill.Use thisconfig fileand adjust the values which are commented asrequiredin the config file. Save the
file in a safe place, because the file contains sensitive credentials. Also remember the save path, because the config
file will be used again later.Now you are ready to perform the actual installation and startup, you have two options to use the project:use docker:you can build the image locally or use the prebuild images
onGithub container registryif you want to build the Docker image locally, use this commands (this clones the last release, you can also
adjust the version to use older releases):git clone -b 0.3.1 https://github.com/infinityofspace/jellyfin_alexa_skill
cd jellyfin_alexa_skill
docker build -t jellyfin_alexa_skill:latest .start the skill:docker run \
-v /path/to/the/skill.conf:/var/lib/jellyfin_alexa_skill/config/skill.conf \
-v /path/to/persistence/skill/data:/var/lib/jellyfin_alexa_skill/data \
ghcr.io/infinityofspace/jellyfin_alexa_skill:latestORwith pip:install:from pypi:pip3 install jellyfin_alexa_skillyou can also install from source:git clone -b 0.3.1 https://github.com/infinityofspace/jellyfin_alexa_skill
cd jellyfin_alexa_skill
python3 setup.py installstart the skill:jellyfin_alexa_skill --config /path/to/skill.conf --data /path/to/skill/data/Note: The default path for the skill.conf file is/home/user/.jellyfin_alexa_skill/config/skill.confand for the
skill data path it is/home/user/.jellyfin_alexa_skill/data.You can adjust the paths with theconfiganddataor
as environment variablesJELLYFIN_ALEXA_SKILL_CONFIGandJELLYFIN_ALEXA_SKILL_DATA. Make sure theskill.confis
writeable.Now activate the skill in your Alexa app and link your Jellyfin account. Now you can use the skill with your Alexa
enabled devices.Supported languagesThe skill has support for the following languages:EnglishGermanSkill speech examplesThewikicontains examples how to
interact with the skill.Project planTake a look at theproject planto see what features
and bug fixes are planned and in progress.FAQYou can find the FAQhere.DevelopmentYou can find more guidelines for the
developmenthere.Third party noticesModuleLicenseProjectflask-ask-sdkLicenseProjectpyngrokLicenseProjectask-smapi-sdkLicenseProjectask-smapi-modelLicenseProjectrapidfuzzLicenseProjectpeeweeLicenseProjectgunicornLicenseProjectBabelLicenseProjectFlask-WTFLicenseProjectrequestsLicenseProjectFurthermore, this readme file contains embeddings ofShields.io.LicenseGPL-3.0