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
- Host: GitHub
- URL: https://github.com/jemus42/tauturri
- Owner: jemus42
- License: other
- Created: 2018-02-10T23:46:14.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-02-01T08:24:43.000Z (over 2 years ago)
- Last Synced: 2025-04-01T15:57:02.500Z (about 1 year ago)
- Topics: api-client, cran, plexpy, r, r-package, rstats, tautulli
- Language: R
- Homepage: https://jemus42.github.io/tauturri/
- Size: 4.42 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.Rmd
- Changelog: NEWS.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
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
[](https://github.com/jemus42/tauturri/actions/workflows/R-CMD-check.yaml)
[](https://codecov.io/github/jemus42/tauturri?branch=master)
[](https://cran.r-project.org/package=tauturri)
[](https://cran.r-project.org/package=tauturri)
[](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.