An open API service indexing awesome lists of open source software.

https://github.com/jemus42/tauturri

A Tautilli/PlexPy API wrapper for R
https://github.com/jemus42/tauturri

api-client cran plexpy r r-package rstats tautulli

Last synced: 10 months ago
JSON representation

A Tautilli/PlexPy API wrapper for R

Awesome Lists containing this project

README

          

---
output: github_document
editor_options:
chunk_output_type: console
---

```{r setup, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)

library(tauturri)
library(ggplot2)
library(tidyr)
```
# tauturri

[![R-CMD-check](https://github.com/jemus42/tauturri/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/jemus42/tauturri/actions/workflows/R-CMD-check.yaml)
[![Coverage status](https://codecov.io/gh/jemus42/tauturri/branch/master/graph/badge.svg)](https://codecov.io/github/jemus42/tauturri?branch=master)
[![CRAN status](https://www.r-pkg.org/badges/version/tauturri)](https://cran.r-project.org/package=tauturri)
[![CRAN downloads](https://cranlogs.r-pkg.org/badges/grand-total/tauturri)](https://cran.r-project.org/package=tauturri)
[![lifecycle](https://img.shields.io/badge/lifecycle-maturing-blue.svg)](https://www.tidyverse.org/lifecycle/#maturing)

The goal of `tauturri` is to get data out of [**Tautulli**](https://github.com/Tautulli/Tautulli) (formerly **PlexPy**) as simply as possible.

The project is still pretty young, and while it's reasonably functional, there might still be some issues. At least it passes all the tests, I guess?

## Installation

Current stable version on CRAN:

```r
install.packages("tauturri")
```

Current development version on GitHub:

```r
if (!("remotes" %in% installed.packages())){
install.packages("remotes")
}

remotes::install_github("jemus42/tauturri")
```

## Setup

To use this package, you'll need a working instance of [Tautulli](http://tautulli.com/), enable the API and store the URL and your API key.

In your `~/.Renviron`, set the following:

```
# Tautulli
tautulli_url=
tautulli_apikey=
```

That's it.
Alternatively use `Sys.setenv()` to set the appropriate values in a script.

## Server Info

```{r server_info}
info <- get_servers_info()

# Probably shouldn't show URL etc.
names(info)
info[c("name", "version")]
```

## `get_plays_by` [date|dayofweek|...]

All plays in the current year, per day:

```{r get_plays_by_date}
plays <- get_plays_by_date(time_range = lubridate::yday(lubridate::now()))

plays |>
gather(category, playcount, TV, Movies, Music) |>
ggplot(aes(x = date, y = playcount, fill = category)) +
geom_col() +
scale_fill_brewer(
palette = "Set1",
breaks = c("Movies", "TV", "Music")
) +
labs(
title = "Plex Plays by Date",
subtitle = "Showing Movie, TV and Music Categories",
x = "Date", y = "Plays", fill = "Category"
) +
theme_minimal() +
theme(legend.position = "top")
```

... per day of week:

```{r get_plays_by_dayofweek}
plays <- get_plays_by_dayofweek(time_range = lubridate::yday(lubridate::now()))

plays |>
gather(category, playcount, TV, Movies, Music) |>
ggplot(aes(x = day, y = playcount, fill = category)) +
geom_col() +
scale_fill_brewer(
palette = "Set1",
breaks = c("Movies", "TV", "Music")
) +
labs(
title = "Plex Plays by Day of Week",
subtitle = "Showing Movie, TV and Music Categories",
x = "Day", y = "Plays", fill = "Category"
) +
theme_minimal() +
theme(legend.position = "top")
```

... and per hour of day:

```{r get_plays_by_hourofday}
plays <- get_plays_by_hourofday(time_range = lubridate::yday(lubridate::now()))

plays |>
gather(category, playcount, TV, Movies, Music) |>
ggplot(aes(x = hms::hms(hours = hour), y = playcount, fill = category)) +
geom_col() +
scale_fill_brewer(
palette = "Set1",
breaks = c("Movies", "TV", "Music")
) +
labs(
title = "Plex Plays by Hour of Day",
subtitle = "Showing Movie, TV and Music Categories",
x = "Hour", y = "Plays", fill = "Category"
) +
theme_minimal() +
theme(legend.position = "top")
```

## API Functions Not Yet Implemented

```{r}
api_functions <- names(api_request(cmd = "docs")$data)
api_functions <- api_functions[grepl("^get_", api_functions)]
sort(api_functions[!(api_functions %in% getNamespaceExports("tauturri"))])
```

## CoC

Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md).
By participating in this project you agree to abide by its terms.