# homebridge-jellyfin

> A Hombridge plugin for Jellyfin server

Latest version **1.0.1** (published 2021-03-30) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install homebridge-jellyfin
pnpm add homebridge-jellyfin
yarn add homebridge-jellyfin
bun add homebridge-jellyfin
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.1 |
| Published | 2021-03-30 |
| First published | 2021-03-30 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=10.17.0 |
| Dependencies | 2 |
| Unpacked size | 55.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 3 |
| Maintainers | louislombardo |
| Keywords | homebridge-plugin |

## Links

- npm: https://www.npmjs.com/package/homebridge-jellyfin
- Repository: https://github.com/LouisIV/homebridge-jellyfin
- Homepage: https://github.com/LouisIV/homebridge-jellyfin#readme
- Issues: https://github.com/LouisIV/homebridge-jellyfin/issues
- npm.io page: https://npm.io/package/homebridge-jellyfin

## Dependencies (2)

- [lodash.get](https://npm.io/package/lodash.get.md) ^4.4.2
- [node-fetch](https://npm.io/package/node-fetch.md) ^2.6.1

## Alternatives

- [@sindresorhus/slugify](https://npm.io/package/@sindresorhus/slugify.md) — 3.7M weekly downloads
- [solid-js](https://npm.io/package/solid-js.md) — 2.7M weekly downloads
- [expo-glass-effect](https://npm.io/package/expo-glass-effect.md) — 2.5M weekly downloads
- [nanoassert](https://npm.io/package/nanoassert.md) — 780.8K weekly downloads
- [@ffmpeg/ffmpeg](https://npm.io/package/@ffmpeg/ffmpeg.md) — 529.5K weekly downloads

## Recent versions

- 1.0.1 (latest) — 2021-03-30
- 1.0.0 — 2021-03-30

## README

<p align="center" verticalAlign="middle">
<img src="https://github.com/homebridge/branding/raw/master/logos/homebridge-color-round.png" width="100">
<img src="https://raw.githubusercontent.com/jellyfin/jellyfin-ux/master/branding/SVG/icon-transparent.svg" width="100">
</p>

# Homebridge Jellyfin

This [Homebridge](https://github.com/homebridge/homebridge) plugin can expose occupancy sensor(s) in Home app what will trigger occupancy
whenever a session on a Jellyfin server meets your filtering requirements. Thanks to the unlimited filtering criterias, occupancy events
can be controlled based on several different attributes (e.g.: username, device names, media types, genres, clients).

## Installation

If you don't have a [Homebridge](https://github.com/homebridge/homebridge) installation yet, head over to the [project documentation](https://github.com/homebridge/homebridge) for
more information.

The best and easiest way to install and configure this plugin is through
[Homebridge UI](https://github.com/oznu/homebridge-config-ui-x).

However, if you would like to you can do it through terminal:

```
npm install homebridge-jellyfin
```

Or, you can install it for root but please be aware of the security risks:

```sh
sudo npm install -g --unsafe-perm homebridge-jellyfin
```

## Configuration

The easiest way to configure this plugin is through [Homebridge UI](https://github.com/oznu/homebridge-config-ui-x).

Available options:

| Property name          | Optional/Required | Type      | Description                                                                                                                                                                                                                                                       |
| ---------------------- | ----------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`                 | **required**      | `String`  | This is the name of the platform, doesn't really show up anywhere but it's required.                                                                                                                                                                              |
| `platform`             | **required**      | `String`  | Must be Jellyfin.                                                                                                                                                                                                                                                 |
| `sensors`              | **required**      | `Array`   | At least one sensor should be exposed.                                                                                                                                                                                                                            |
| `sensors.name`         | **required**      | `String`  | This is how the occupancy sensor will show up in Home app.                                                                                                                                                                                                        |
| `sensors.filters`      | optional          | `Array`   | Filter rulesets. For the specified sensor to be activated, all the given path-value pairs in the ruleset must found in Jellyfin's Session payload. In case multiple rulesets have been given, at least one ruleset of path-value pairs must found in the payload. |
| `server`               | **required**      | `Object`  | The configuration for you Jellyfin server                                                                                                                                                                                                                         |
| `server.api_key`       | **required**      | `String`  | The API key from your Jellyfin server                                                                                                                                                                                                                             |
| `server.address`       | **required**      | `String`  | The address of your Jellyfin server                                                                                                                                                                                                                               |
| `server.port`          | **required**      | `Number`  | The port of your Jellyfin server                                                                                                                                                                                                                                  |
| `server.checkInterval` | optional          | `Number`  | How often to check Jellyfin                                                                                                                                                                                                                                       |
| `verbose`              | optional          | `Boolean` | For debugging purposes. With verbose logging the plugin will log Jellyfin's payload and path-value pair matching information into the Homebridge logs.                                                                                                            |

Simple config with one filter:

```json
{
  "platforms": [
    {
      "name": "Jellyfin Platform",
      "platform": "Jellyfin",
      "server": {
        "api_key": "---------------------",
        "port": 8096,
        "address": "XXX.XXX.XXX.XXX",
        "checkInterval": 50
      },
      "sensors": [
        {
          "name": "Apple TV Watching",
          "filters": [
            [
              {
                "path": "DeviceName",
                "value": "Apple TV"
              }
            ]
          ]
        }
      ]
    }
  ]
}
```

Advanced config with multiple sensors and filters with verbose logging:

```json
{
  "platforms": [
    {
      "name": "Jellyfin Platform",
      "platform": "Jellyfin",
      "verbose": true,
      "server": {
        "api_key": "---------------------",
        "port": 8096,
        "address": "XXX.XXX.XXX.XXX",
        "checkInterval": 50
      },
      "sensors": [
        {
          "name": "LJ Watching",
          "filters": [
            [
              {
                "path": "UserName",
                "value": "LJ"
              }
            ]
          ]
        },
        {
          "name": "LJ Watching on Apple TV",
          "filters": [
            [
              {
                "path": "DeviceName",
                "value": "Apple TV"
              },
              [
                {
                  "path": "UserName",
                  "value": "LJ"
                }
              ]
            ]
          ]
        }
      ]
    }
  ]
}
```

## Credits

- I stole the filtering and the readme from [iharosi's plugin for Plex](https://github.com/iharosi/homebridge-plex-webhooks)
- I copied the structure of the code from [Marc Veen's plugin](https://github.com/marcveens/homebridge-website-change-check)

---
_Source: https://npm.io/package/homebridge-jellyfin · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
