mirror of
https://github.com/LukeHagar/plexgo.git
synced 2025-12-06 04:20:46 +00:00
## Go SDK Changes Detected:
* `PlexApi.Butler.StartTask()`: * `request` **Changed** **Breaking** ⚠️ * `error` **Changed** **Breaking** ⚠️ * `PlexApi.Butler.StopTask()`: * `request` **Changed** **Breaking** ⚠️ * `error` **Changed** **Breaking** ⚠️ * `PlexApi.Updater.ApplyUpdates()`: * `request` **Changed** **Breaking** ⚠️ * `error` **Changed** **Breaking** ⚠️ * `PlexApi.General.GetServerInfo()`: **Added** * `PlexApi.General.GetIdentity()`: **Added** * `PlexApi.General.GetSourceConnectionInformation()`: **Added** * `PlexApi.General.GetTransientToken()`: **Added** * `PlexApi.Events.GetNotifications()`: **Added** * `PlexApi.Events.ConnectWebSocket()`: **Added** * `PlexApi.Preferences.GetAllPreferences()`: **Added** * `PlexApi.Preferences.SetPreferences()`: **Added** * `PlexApi.Preferences.GetPreference()`: **Added** * `PlexApi.Rate.SetRating()`: **Added** * `PlexApi.Timeline.MarkPlayed()`: **Added** * `PlexApi.Timeline.Report()`: **Added** * `PlexApi.Timeline.Unscrobble()`: **Added** * `PlexApi.Activities.ListActivities()`: **Added** * `PlexApi.Activities.CancelActivity()`: **Added** * `PlexApi.Butler.StopTasks()`: **Added** * `PlexApi.Butler.GetTasks()`: **Added** * `PlexApi.Butler.StartTasks()`: **Added** * `PlexApi.DownloadQueue.CreateDownloadQueue()`: **Added** * `PlexApi.DownloadQueue.GetDownloadQueue()`: **Added** * `PlexApi.DownloadQueue.AddDownloadQueueItems()`: **Added** * `PlexApi.DownloadQueue.ListDownloadQueueItems()`: **Added** * `PlexApi.DownloadQueue.GetItemDecision()`: **Added** * `PlexApi.DownloadQueue.GetDownloadQueueMedia()`: **Added** * `PlexApi.DownloadQueue.RemoveDownloadQueueItems()`: **Added** * `PlexApi.DownloadQueue.GetDownloadQueueItems()`: **Added** * `PlexApi.DownloadQueue.RestartProcessingDownloadQueueItems()`: **Added** * `PlexApi.Hubs.GetAllHubs()`: **Added** * `PlexApi.Hubs.GetContinueWatching()`: **Added** * `PlexApi.Hubs.GetHubItems()`: **Added** * `PlexApi.Hubs.GetPromotedHubs()`: **Added** * `PlexApi.Hubs.GetMetadataHubs()`: **Added** * `PlexApi.Hubs.GetPostplayHubs()`: **Added** * `PlexApi.Hubs.GetRelatedHubs()`: **Added** * `PlexApi.Hubs.GetSectionHubs()`: **Added** * `PlexApi.Hubs.ResetSectionDefaults()`: **Added** * `PlexApi.Hubs.ListHubs()`: **Added** * `PlexApi.Hubs.CreateCustomHub()`: **Added** * `PlexApi.Hubs.MoveHub()`: **Added** * `PlexApi.Hubs.DeleteCustomHub()`: **Added** * `PlexApi.Hubs.UpdateHubVisibility()`: **Added** * `PlexApi.Search.SearchHubs()`: **Added** * `PlexApi.Search.VoiceSearchHubs()`: **Added** * `PlexApi.Library.GetLibraryItems()`: **Added** * `PlexApi.Library.DeleteCaches()`: **Added** * `PlexApi.Library.CleanBundles()`: **Added** * `PlexApi.Library.IngestTransientItem()`: **Added** * `PlexApi.Library.GetLibraryMatches()`: **Added** * `PlexApi.Library.OptimizeDatabase()`: **Added** * `PlexApi.Library.GetRandomArtwork()`: **Added** * `PlexApi.Library.GetSections()`: **Added** * `PlexApi.Library.AddSection()`: **Added** * `PlexApi.Library.StopAllRefreshes()`: **Added** * `PlexApi.Library.GetSectionsPrefs()`: **Added** * `PlexApi.Library.RefreshSectionsMetadata()`: **Added** * `PlexApi.Library.GetTags()`: **Added** * `PlexApi.Library.DeleteMetadataItem()`: **Added** * `PlexApi.Library.EditMetadataItem()`: **Added** * `PlexApi.Library.DetectAds()`: **Added** * `PlexApi.Library.GetAllItemLeaves()`: **Added** * `PlexApi.Library.AnalyzeMetadata()`: **Added** * `PlexApi.Library.GenerateThumbs()`: **Added** * `PlexApi.Library.DetectCredits()`: **Added** * `PlexApi.Library.GetExtras()`: **Added** * `PlexApi.Library.AddExtras()`: **Added** * `PlexApi.Library.GetFile()`: **Added** * `PlexApi.Library.StartBifGeneration()`: **Added** * `PlexApi.Library.DetectIntros()`: **Added** * `PlexApi.Library.CreateMarker()`: **Added** * `PlexApi.Library.MatchItem()`: **Added** * `PlexApi.Library.ListMatches()`: **Added** * `PlexApi.Library.MergeItems()`: **Added** * `PlexApi.Library.ListSonicallySimilar()`: **Added** * `PlexApi.Library.SetItemPreferences()`: **Added** * `PlexApi.Library.RefreshItemsMetadata()`: **Added** * `PlexApi.Library.GetRelatedItems()`: **Added** * `PlexApi.Library.ListSimilar()`: **Added** * `PlexApi.Library.SplitItem()`: **Added** * `PlexApi.Library.AddSubtitles()`: **Added** * `PlexApi.Library.GetItemTree()`: **Added** * `PlexApi.Library.Unmatch()`: **Added** * `PlexApi.Library.ListTopUsers()`: **Added** * `PlexApi.Library.DetectVoiceActivity()`: **Added** * `PlexApi.Library.GetAugmentationStatus()`: **Added** * `PlexApi.Library.SetStreamSelection()`: **Added** * `PlexApi.Library.GetPerson()`: **Added** * `PlexApi.Library.ListPersonMedia()`: **Added** * `PlexApi.Library.DeleteLibrarySection()`: **Added** * `PlexApi.Library.GetLibraryDetails()`: **Added** * `PlexApi.Library.EditSection()`: **Added** * `PlexApi.Library.UpdateItems()`: **Added** * `PlexApi.Library.StartAnalysis()`: **Added** * `PlexApi.Library.Autocomplete()`: **Added** * `PlexApi.Library.GetCollections()`: **Added** * `PlexApi.Library.GetCommon()`: **Added** * `PlexApi.Library.EmptyTrash()`: **Added** * `PlexApi.Library.GetSectionFilters()`: **Added** * `PlexApi.Library.GetFirstCharacters()`: **Added** * `PlexApi.Library.DeleteIndexes()`: **Added** * `PlexApi.Library.DeleteIntros()`: **Added** * `PlexApi.Library.GetSectionPreferences()`: **Added** * `PlexApi.Library.SetSectionPreferences()`: **Added** * `PlexApi.Library.CancelRefresh()`: **Added** * `PlexApi.Library.RefreshSection()`: **Added** * `PlexApi.Library.GetAvailableSorts()`: **Added** * `PlexApi.Library.GetStreamLevels()`: **Added** * `PlexApi.Library.GetStreamLoudness()`: **Added** * `PlexApi.Library.GetChapterImage()`: **Added** * `PlexApi.Library.SetItemArtwork()`: **Added** * `PlexApi.Library.UpdateItemArtwork()`: **Added** * `PlexApi.Library.DeleteMarker()`: **Added** * `PlexApi.Library.EditMarker()`: **Added** * `PlexApi.Library.DeleteMediaItem()`: **Added** * `PlexApi.Library.GetPartIndex()`: **Added** * `PlexApi.Library.DeleteCollection()`: **Added** * `PlexApi.Library.GetSectionImage()`: **Added** * `PlexApi.Library.DeleteStream()`: **Added** * `PlexApi.Library.GetStream()`: **Added** * `PlexApi.Library.SetStreamOffset()`: **Added** * `PlexApi.Library.GetItemArtwork()`: **Added** * `PlexApi.Library.GetMediaPart()`: **Added** * `PlexApi.Library.GetImageFromBif()`: **Added** * `PlexApi.Collections.CreateCollection()`: **Added** * `PlexApi.DvRs.ListDvRs()`: **Added** * `PlexApi.DvRs.CreateDvr()`: **Added** * `PlexApi.DvRs.DeleteDvr()`: **Added** * `PlexApi.DvRs.GetDvr()`: **Added** * `PlexApi.DvRs.DeleteLineup()`: **Added** * `PlexApi.DvRs.AddLineup()`: **Added** * `PlexApi.DvRs.SetDvrPreferences()`: **Added** * `PlexApi.DvRs.StopDvrReload()`: **Added** * `PlexApi.DvRs.ReloadGuide()`: **Added** * `PlexApi.DvRs.TuneChannel()`: **Added** * `PlexApi.DvRs.RemoveDeviceFromDvr()`: **Added** * `PlexApi.DvRs.AddDeviceToDvr()`: **Added** * `PlexApi.Epg.ComputeChannelMap()`: **Added** * `PlexApi.Epg.GetChannels()`: **Added** * `PlexApi.Epg.GetCountries()`: **Added** * `PlexApi.Epg.GetAllLanguages()`: **Added** * `PlexApi.Epg.GetLineup()`: **Added** * `PlexApi.Epg.GetLineupChannels()`: **Added** * `PlexApi.Epg.GetCountriesLineups()`: **Added** * `PlexApi.Epg.GetCountryRegions()`: **Added** * `PlexApi.Epg.ListLineups()`: **Added** * `PlexApi.LiveTv.GetSessions()`: **Added** * `PlexApi.LiveTv.GetLiveTvSession()`: **Added** * `PlexApi.LiveTv.GetSessionPlaylistIndex()`: **Added** * `PlexApi.LiveTv.GetSessionSegment()`: **Added** * `PlexApi.Log.WriteLog()`: **Added** * `PlexApi.Log.WriteMessage()`: **Added** * `PlexApi.Log.EnablePapertrail()`: **Added** * `PlexApi.Devices.GetAvailableGrabbers()`: **Added** * `PlexApi.Devices.ListDevices()`: **Added** * `PlexApi.Devices.AddDevice()`: **Added** * `PlexApi.Devices.DiscoverDevices()`: **Added** * `PlexApi.Devices.RemoveDevice()`: **Added** * `PlexApi.Devices.GetDeviceDetails()`: **Added** * `PlexApi.Devices.ModifyDevice()`: **Added** * `PlexApi.Devices.SetChannelmap()`: **Added** * `PlexApi.Devices.GetDevicesChannels()`: **Added** * `PlexApi.Devices.SetDevicePreferences()`: **Added** * `PlexApi.Devices.StopScan()`: **Added** * `PlexApi.Devices.Scan()`: **Added** * `PlexApi.Devices.GetThumb()`: **Added** * `PlexApi.Provider.ListProviders()`: **Added** * `PlexApi.Provider.AddProvider()`: **Added** * `PlexApi.Provider.RefreshProviders()`: **Added** * `PlexApi.Provider.DeleteMediaProvider()`: **Added** * `PlexApi.Subscriptions.GetAllSubscriptions()`: **Added** * `PlexApi.Subscriptions.CreateSubscription()`: **Added** * `PlexApi.Subscriptions.ProcessSubscriptions()`: **Added** * `PlexApi.Subscriptions.GetScheduledRecordings()`: **Added** * `PlexApi.Subscriptions.GetTemplate()`: **Added** * `PlexApi.Subscriptions.CancelGrab()`: **Added** * `PlexApi.Subscriptions.DeleteSubscription()`: **Added** * `PlexApi.Subscriptions.GetSubscription()`: **Added** * `PlexApi.Subscriptions.EditSubscriptionPreferences()`: **Added** * `PlexApi.Subscriptions.ReorderSubscription()`: **Added** * `PlexApi.Transcoder.TranscodeImage()`: **Added** * `PlexApi.Transcoder.MakeDecision()`: **Added** * `PlexApi.Transcoder.TriggerFallback()`: **Added** * `PlexApi.Transcoder.TranscodeSubtitles()`: **Added** * `PlexApi.Transcoder.StartTranscodeSession()`: **Added** * `PlexApi.Playlist.ListPlaylists()`: **Added** * `PlexApi.Playlist.GetPlaylist()`: **Added** * `PlexApi.Playlist.GetPlaylistItems()`: **Added** * `PlexApi.LibraryPlaylists.CreatePlaylist()`: **Added** * `PlexApi.LibraryPlaylists.UploadPlaylist()`: **Added** * `PlexApi.LibraryPlaylists.DeletePlaylist()`: **Added** * `PlexApi.LibraryPlaylists.UpdatePlaylist()`: **Added** * `PlexApi.LibraryPlaylists.GetPlaylistGenerators()`: **Added** * `PlexApi.LibraryPlaylists.ClearPlaylistItems()`: **Added** * `PlexApi.LibraryPlaylists.AddPlaylistItems()`: **Added** * `PlexApi.LibraryPlaylists.DeletePlaylistItem()`: **Added** * `PlexApi.LibraryPlaylists.GetPlaylistGenerator()`: **Added** * `PlexApi.LibraryPlaylists.ModifyPlaylistGenerator()`: **Added** * `PlexApi.LibraryPlaylists.GetPlaylistGeneratorItems()`: **Added** * `PlexApi.LibraryPlaylists.MovePlaylistItem()`: **Added** * `PlexApi.LibraryPlaylists.RefreshPlaylist()`: **Added** * `PlexApi.PlayQueue.CreatePlayQueue()`: **Added** * `PlexApi.PlayQueue.GetPlayQueue()`: **Added** * `PlexApi.PlayQueue.AddToPlayQueue()`: **Added** * `PlexApi.PlayQueue.ClearPlayQueue()`: **Added** * `PlexApi.PlayQueue.ResetPlayQueue()`: **Added** * `PlexApi.PlayQueue.Shuffle()`: **Added** * `PlexApi.PlayQueue.Unshuffle()`: **Added** * `PlexApi.PlayQueue.DeletePlayQueueItem()`: **Added** * `PlexApi.PlayQueue.MovePlayQueueItem()`: **Added** * `PlexApi.UltraBlur.GetColors()`: **Added** * `PlexApi.UltraBlur.GetImage()`: **Added** * `PlexApi.Status.ListSessions()`: **Added** * `PlexApi.Status.GetBackgroundTasks()`: **Added** * `PlexApi.Status.ListPlaybackHistory()`: **Added** * `PlexApi.Status.TerminateSession()`: **Added** * `PlexApi.Status.DeleteHistory()`: **Added** * `PlexApi.Status.GetHistoryItem()`: **Added** * `PlexApi.Updater.CheckUpdates()`: **Added** * `PlexApi.Updater.GetUpdatesStatus()`: **Added** * `PlexApi.Content.GetCollectionItems()`: **Added** * `PlexApi.Content.GetMetadataItem()`: **Added** * `PlexApi.Content.GetAlbums()`: **Added** * `PlexApi.Content.ListContent()`: **Added** * `PlexApi.Content.GetAllLeaves()`: **Added** * `PlexApi.Content.GetArts()`: **Added** * `PlexApi.Content.GetCategories()`: **Added** * `PlexApi.Content.GetCluster()`: **Added** * `PlexApi.Content.GetSonicPath()`: **Added** * `PlexApi.Content.GetFolders()`: **Added** * `PlexApi.Content.ListMoments()`: **Added** * `PlexApi.Content.GetSonicallySimilar()`: **Added** * `PlexApi.Content.GetCollectionImage()`: **Added** * `PlexApi.LibraryCollections.AddCollectionItems()`: **Added** * `PlexApi.LibraryCollections.DeleteCollectionItem()`: **Added** * `PlexApi.LibraryCollections.MoveCollectionItem()`: **Added** * `PlexApi.Server.GetServerCapabilities()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Server.GetServerPreferences()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Server.GetAvailableClients()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Server.GetDevices()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Server.Get-Server-Identity()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Server.GetMyPlexAccount()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Server.GetResizedPhoto()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Server.Get-Media-Providers()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Server.GetServerList()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Media.MarkPlayed()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Media.MarkUnplayed()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Media.UpdatePlayProgress()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Media.Get-Banner-Image()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Media.Get-Thumb-Image()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Video.GetTimeline()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Video.StartUniversalTranscode()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Activities.GetServerActivities()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Activities.CancelServerActivities()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Butler.GetButlerTasks()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Butler.StartAllTasks()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Butler.StopAllTasks()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Plex.GetCompanionsData()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Plex.GetUserFriends()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Plex.GetGeoData()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Plex.GetHomeData()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Plex.Get-Server-Resources()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Plex.GetPin()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Plex.GetTokenByPinId()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Hubs.GetGlobalHubs()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Hubs.Get-Recently-Added()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Hubs.GetLibraryHubs()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Search.PerformSearch()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Search.PerformVoiceSearch()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Search.GetSearchResults()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.GetFileHash()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.Get-Recently-Added-Library()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.Get-All-Libraries()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.Get-Library-Details()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.DeleteLibrary()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.Get-Library-Items()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.Get-Library-Sections-All()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.Get-Refresh-Library-Metadata()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.Get-Search-Library()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.Get-Genres-Library()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.Get-Countries-Library()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.Get-Actors-Library()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.Get-Search-All-Libraries()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.Get-Media-Meta-Data()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.Get-Media-Arts()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.Post-Media-Arts()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.Get-Media-Posters()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.Post-Media-Poster()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.GetMetadataChildren()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Library.GetTopWatchedContent()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Watchlist.Get-Watch-List()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Log.LogLine()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Log.LogMultiLine()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Log.EnablePaperTrail()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Playlists.CreatePlaylist()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Playlists.GetPlaylists()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Playlists.GetPlaylist()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Playlists.DeletePlaylist()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Playlists.UpdatePlaylist()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Playlists.GetPlaylistContents()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Playlists.ClearPlaylistContents()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Playlists.AddPlaylistContents()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Playlists.UploadPlaylist()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Authentication.GetTransientToken()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Authentication.GetSourceConnectionInformation()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Authentication.GetTokenDetails()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Authentication.Post-Users-Sign-In-Data()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Statistics.GetStatistics()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Statistics.GetResourcesStatistics()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Statistics.GetBandwidthStatistics()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Sessions.GetSessions()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Sessions.GetSessionHistory()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Sessions.GetTranscodeSessions()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Sessions.StopTranscodeSession()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Updater.GetUpdateStatus()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Updater.CheckForUpdates()`: **Deleted** **Breaking** ⚠️ * `PlexApi.Users.Get-Users()`: **Deleted** **Breaking** ⚠️
This commit is contained in:
371
plexapi.go
371
plexapi.go
@@ -2,13 +2,13 @@
|
||||
|
||||
package plexgo
|
||||
|
||||
// Generated from OpenAPI doc version 0.0.3 and generator version 2.722.2
|
||||
// Generated from OpenAPI doc version 1.1.1 and generator version 2.723.11
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/LukeHagar/plexgo/internal/config"
|
||||
"github.com/LukeHagar/plexgo/internal/globals"
|
||||
"github.com/LukeHagar/plexgo/internal/hooks"
|
||||
"github.com/LukeHagar/plexgo/internal/utils"
|
||||
"github.com/LukeHagar/plexgo/models/components"
|
||||
@@ -19,8 +19,9 @@ import (
|
||||
|
||||
// ServerList contains the list of servers available to the SDK
|
||||
var ServerList = []string{
|
||||
// The full address of your Plex Server
|
||||
"{protocol}://{ip}:{port}",
|
||||
"https://{IP-description}.{identifier}.plex.direct:{port}",
|
||||
"{protocol}://{host}:{port}",
|
||||
"https://{server_url}",
|
||||
}
|
||||
|
||||
// HTTPClient provides an interface for supplying the SDK with a custom HTTP client
|
||||
@@ -49,92 +50,117 @@ func Float64(f float64) *float64 { return &f }
|
||||
// Pointer provides a helper function to return a pointer to a type
|
||||
func Pointer[T any](v T) *T { return &v }
|
||||
|
||||
// PlexAPI - Plex-API: An Open API Spec for interacting with Plex.tv and Plex Media Server
|
||||
// # Plex Media Server OpenAPI Specification
|
||||
//
|
||||
// # An Open Source OpenAPI Specification for Plex Media Server
|
||||
//
|
||||
// Automation and SDKs provided by [Speakeasy](https://speakeasyapi.dev/)
|
||||
//
|
||||
// ## Documentation
|
||||
//
|
||||
// [API Documentation](https://plexapi.dev)
|
||||
//
|
||||
// ## SDKs
|
||||
//
|
||||
// The following SDKs are generated from the OpenAPI Specification. They are automatically generated and may not be fully tested. If you find any issues, please open an issue on the [main specification Repository](https://github.com/LukeHagar/plex-api-spec).
|
||||
//
|
||||
// | Language | Repository | Releases | Other |
|
||||
// | --------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------- |
|
||||
// | Python | [GitHub](https://github.com/LukeHagar/plexpy) | [PyPI](https://pypi.org/project/plex-api-client/) | - |
|
||||
// | JavaScript/TypeScript | [GitHub](https://github.com/LukeHagar/plexjs) | [NPM](https://www.npmjs.com/package/@lukehagar/plexjs) \ [JSR](https://jsr.io/@lukehagar/plexjs) | - |
|
||||
// | Go | [GitHub](https://github.com/LukeHagar/plexgo) | [Releases](https://github.com/LukeHagar/plexgo/releases) | [GoDoc](https://pkg.go.dev/github.com/LukeHagar/plexgo) |
|
||||
// | Ruby | [GitHub](https://github.com/LukeHagar/plexruby) | [Releases](https://github.com/LukeHagar/plexruby/releases) | - |
|
||||
// | Swift | [GitHub](https://github.com/LukeHagar/plexswift) | [Releases](https://github.com/LukeHagar/plexswift/releases) | - |
|
||||
// | PHP | [GitHub](https://github.com/LukeHagar/plexphp) | [Releases](https://github.com/LukeHagar/plexphp/releases) | - |
|
||||
// | Java | [GitHub](https://github.com/LukeHagar/plexjava) | [Releases](https://github.com/LukeHagar/plexjava/releases) | - |
|
||||
// | C# | [GitHub](https://github.com/LukeHagar/plexcsharp) | [Releases](https://github.com/LukeHagar/plexcsharp/releases) | -
|
||||
type PlexAPI struct {
|
||||
SDKVersion string
|
||||
// Operations against the Plex Media Server System.
|
||||
// General endpoints for basic PMS operation not specific to any media provider
|
||||
General *General
|
||||
// The server can notify clients in real-time of a wide range of events, from library scanning, to preferences being modified, to changes to media, and many other things. This is also the mechanism by which activity progress is reported.
|
||||
//
|
||||
Server *Server
|
||||
// API Calls interacting with Plex Media Server Media
|
||||
// Two protocols for receiving the events are available: EventSource (also known as SSE), and WebSocket.
|
||||
//
|
||||
Media *Media
|
||||
// API Calls that perform operations with Plex Media Server Videos
|
||||
Events *Events
|
||||
// API Operations against the Preferences
|
||||
Preferences *Preferences
|
||||
// Operations for rating media items (thumbs up/down, star ratings, etc.)
|
||||
Rate *Rate
|
||||
// The actions feature within a media provider
|
||||
Timeline *Timeline
|
||||
// Activities provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints.
|
||||
//
|
||||
Video *Video
|
||||
// Activities are awesome. They provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints.
|
||||
// Activities are associated with HTTP replies via a special `X-Plex-Activity` header which contains the UUID of the activity.
|
||||
// Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint. Other details:
|
||||
// - They can contain a `progress` (from 0 to 100) marking the percent completion of the activity.
|
||||
// - They must contain an `type` which is used by clients to distinguish the specific activity.
|
||||
// - They may contain a `Context` object with attributes which associate the activity with various specific entities (items, libraries, etc.)
|
||||
// - The may contain a `Response` object which attributes which represent the result of the asynchronous operation.
|
||||
//
|
||||
// Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint.
|
||||
//
|
||||
Activities *Activities
|
||||
// Butler is the task manager of the Plex Media Server Ecosystem.
|
||||
//
|
||||
// The butler is responsible for running periodic tasks. Some tasks run daily, others every few days, and some weekly. These includes database maintenance, metadata updating, thumbnail generation, media analysis, and other tasks.
|
||||
Butler *Butler
|
||||
// API Calls that perform operations directly against https://Plex.tv
|
||||
//
|
||||
Plex *Plex
|
||||
// Hubs are a structured two-dimensional container for media, generally represented by multiple horizontal rows.
|
||||
//
|
||||
// API Operations against the Download Queue
|
||||
DownloadQueue *DownloadQueue
|
||||
// The hubs within a media provider
|
||||
Hubs *Hubs
|
||||
// API Calls that perform search operations with Plex Media Server
|
||||
//
|
||||
// The search feature within a media provider
|
||||
Search *Search
|
||||
// API Calls interacting with Plex Media Server Libraries
|
||||
//
|
||||
// Library endpoints which are outside of the Media Provider API. Typically this is manipulation of the library (adding/removing sections, modifying preferences, etc).
|
||||
Library *Library
|
||||
// API Calls that perform operations with Plex Media Server Watchlists
|
||||
// API Operations against the Collections
|
||||
Collections *Collections
|
||||
// The DVR provides means to watch and record live TV. This section of endpoints describes how to setup the DVR itself
|
||||
//
|
||||
Watchlist *Watchlist
|
||||
// Submit logs to the Log Handler for Plex Media Server
|
||||
DVRs *DVRs
|
||||
// The EPG (Electronic Program Guide) is responsible for obtaining metadata for what is airing on each channel and when
|
||||
//
|
||||
Epg *Epg
|
||||
// LiveTV contains the playback sessions of a channel from a DVR device
|
||||
//
|
||||
LiveTV *LiveTV
|
||||
// Logging mechanism to allow clients to log to the server
|
||||
Log *Log
|
||||
// Playlists are ordered collections of media. They can be dumb (just a list of media) or smart (based on a media query, such as "all albums from 2017").
|
||||
// They can be organized in (optionally nesting) folders.
|
||||
// Retrieving a playlist, or its items, will trigger a refresh of its metadata.
|
||||
// This may cause the duration and number of items to change.
|
||||
// Media grabbers provide ways for media to be obtained for a given protocol. The simplest ones are `stream` and `download`. More complex grabbers can have associated devices
|
||||
//
|
||||
Playlists *Playlists
|
||||
// API Calls regarding authentication for Plex Media Server
|
||||
// Network tuners can present themselves on the network using the Simple Service Discovery Protocol and Plex Media Server will discover them. The following XML is an example of the data returned from SSDP. The `deviceType`, `serviceType`, and `serviceId` values must remain as they are in the example in order for PMS to properly discover the device. Other less-obvious fields are described in the parameters section below.
|
||||
//
|
||||
Authentication *Authentication
|
||||
// API Calls that perform operations with Plex Media Server Statistics
|
||||
// Example SSDP output
|
||||
// ```
|
||||
// <root xmlns="urn:schemas-upnp-org:device-1-0">
|
||||
// <specVersion>
|
||||
// <major>1</major>
|
||||
// <minor>0</minor>
|
||||
// </specVersion>
|
||||
// <device>
|
||||
// <deviceType>urn:plex-tv:device:Media:1</deviceType>
|
||||
// <friendlyName>Turing Hopper 3000</friendlyName>
|
||||
// <manufacturer>Plex, Inc.</manufacturer>
|
||||
// <manufacturerURL>https://plex.tv/</manufacturerURL>
|
||||
// <modelDescription>Turing Hopper 3000 Media Grabber</modelDescription>
|
||||
// <modelName>Plex Media Grabber</modelName>
|
||||
// <modelNumber>1</modelNumber>
|
||||
// <modelURL>https://plex.tv</modelURL>
|
||||
// <UDN>uuid:42fde8e4-93b6-41e5-8a63-12d848655811</UDN>
|
||||
// <serviceList>
|
||||
// <service>
|
||||
// <URLBase>http://10.0.0.5:8088</URLBase>
|
||||
// <serviceType>urn:plex-tv:service:MediaGrabber:1</serviceType>
|
||||
// <serviceId>urn:plex-tv:serviceId:MediaGrabber</serviceId>
|
||||
// </service>
|
||||
// </serviceList>
|
||||
// </device>
|
||||
// </root>
|
||||
// ```
|
||||
//
|
||||
Statistics *Statistics
|
||||
// API Calls that perform search operations with Plex Media Server Sessions
|
||||
// - UDN: (string) A UUID for the device. This should be unique across models of a device at minimum.
|
||||
// - URLBase: (string) The base HTTP URL for the device from which all of the other endpoints are hosted.
|
||||
//
|
||||
Sessions *Sessions
|
||||
Devices *Devices
|
||||
// Media providers are the starting points for the entire Plex Media Server media library API. It defines the paths for the groups of endpoints. The `/media/providers` should be the only hard-coded path in clients when accessing the media library. Non-media library endpoints are outside the scope of the media provider. See the description in See [the section in API Info](#section/API-Info/Media-Providers) for more information on how to use media providers.
|
||||
Provider *Provider
|
||||
// Subscriptions determine which media will be recorded and the criteria for selecting an airing when multiple are available
|
||||
//
|
||||
Subscriptions *Subscriptions
|
||||
// API Operations against the Transcoder
|
||||
Transcoder *Transcoder
|
||||
// Media playlists that can be created and played back
|
||||
Playlist *Playlist
|
||||
// Endpoints for manipulating playlists.
|
||||
LibraryPlaylists *LibraryPlaylists
|
||||
// The playqueue feature within a media provider
|
||||
// A play queue represents the current list of media for playback. Although queues are persisted by the server, they should be regarded by the user as a fairly lightweight, an ephemeral list of items queued up for playback in a session. There is generally one active queue for each type of media (music, video, photos) that can be added to or destroyed and replaced with a fresh queue.
|
||||
// Play Queues has a region, which we refer to in this doc (partially for historical reasons) as "Up Next". This region is defined by `playQueueLastAddedItemID` existing on the media container. This follows iTunes' terminology. It is a special region after the currently playing item but before the originally-played items. This enables "Party Mode" listening/viewing, where items can be added on-the-fly, and normal queue playback resumed when completed.
|
||||
// You can visualize the play queue as a sliding window in the complete list of media queued for playback. This model is important when scaling to larger play queues (e.g. shuffling 40,000 audio tracks). The client only needs visibility into small areas of the queue at any given time, and the server can optimize access in this fashion.
|
||||
// All created play queues will have an empty "Up Next" area - unless the item is an album and no `key` is provided. In this case the "Up Next" area will be populated by the contents of the album. This is to allow queueing of multiple albums - since the 'Add to Up Next' will insert after all the tracks. This means that If you're creating a PQ from an album, you can only shuffle it if you set `key`. This is due to the above implicit queueing of albums when no `key` is provided as well as the current limitation that you cannot shuffle a PQ with an "Up Next" area.
|
||||
// The play queue window advances as the server receives timeline requests. The client needs to retrieve the play queue as the “now playing” item changes. There is no play queue API to update the playing item.
|
||||
PlayQueue *PlayQueue
|
||||
// Service provided to compute UltraBlur colors and images.
|
||||
UltraBlur *UltraBlur
|
||||
// The status endpoints give you information about current playbacks, play history, and even terminating sessions.
|
||||
Status *Status
|
||||
// This describes the API for searching and applying updates to the Plex Media Server.
|
||||
// Updates to the status can be observed via the Event API.
|
||||
//
|
||||
Updater *Updater
|
||||
Users *Users
|
||||
// The actual content of the media provider
|
||||
Content *Content
|
||||
// Endpoints for manipulating collections. In addition to these endpoints, `/library/collections/:collectionId/X` will be rerouted to `/library/metadata/:collectionId/X` and respond to those endpoints as well.
|
||||
LibraryCollections *LibraryCollections
|
||||
|
||||
sdkConfiguration config.SDKConfiguration
|
||||
hooks *hooks.Hooks
|
||||
@@ -171,55 +197,28 @@ func WithServerIndex(serverIndex int) SDKOption {
|
||||
}
|
||||
}
|
||||
|
||||
// ServerProtocol - The protocol to use for the server connection
|
||||
type ServerProtocol string
|
||||
|
||||
const (
|
||||
ServerProtocolHTTP ServerProtocol = "http"
|
||||
ServerProtocolHTTPS ServerProtocol = "https"
|
||||
)
|
||||
|
||||
func (e ServerProtocol) ToPointer() *ServerProtocol {
|
||||
return &e
|
||||
}
|
||||
func (e *ServerProtocol) UnmarshalJSON(data []byte) error {
|
||||
var v string
|
||||
if err := json.Unmarshal(data, &v); err != nil {
|
||||
return err
|
||||
}
|
||||
switch v {
|
||||
case "http":
|
||||
fallthrough
|
||||
case "https":
|
||||
*e = ServerProtocol(v)
|
||||
return nil
|
||||
default:
|
||||
return fmt.Errorf("invalid value for ServerProtocol: %v", v)
|
||||
}
|
||||
}
|
||||
|
||||
// WithProtocol allows setting the protocol variable for url substitution
|
||||
func WithProtocol(protocol ServerProtocol) SDKOption {
|
||||
// WithIdentifier allows setting the identifier variable for url substitution
|
||||
func WithIdentifier(identifier string) SDKOption {
|
||||
return func(sdk *PlexAPI) {
|
||||
for idx := range sdk.sdkConfiguration.ServerVariables {
|
||||
if _, ok := sdk.sdkConfiguration.ServerVariables[idx]["protocol"]; !ok {
|
||||
if _, ok := sdk.sdkConfiguration.ServerVariables[idx]["identifier"]; !ok {
|
||||
continue
|
||||
}
|
||||
|
||||
sdk.sdkConfiguration.ServerVariables[idx]["protocol"] = fmt.Sprintf("%v", protocol)
|
||||
sdk.sdkConfiguration.ServerVariables[idx]["identifier"] = fmt.Sprintf("%v", identifier)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// WithIP allows setting the ip variable for url substitution
|
||||
func WithIP(ip string) SDKOption {
|
||||
// WithIPDescription allows setting the IP-description variable for url substitution
|
||||
func WithIPDescription(ipDescription string) SDKOption {
|
||||
return func(sdk *PlexAPI) {
|
||||
for idx := range sdk.sdkConfiguration.ServerVariables {
|
||||
if _, ok := sdk.sdkConfiguration.ServerVariables[idx]["ip"]; !ok {
|
||||
if _, ok := sdk.sdkConfiguration.ServerVariables[idx]["IP-description"]; !ok {
|
||||
continue
|
||||
}
|
||||
|
||||
sdk.sdkConfiguration.ServerVariables[idx]["ip"] = fmt.Sprintf("%v", ip)
|
||||
sdk.sdkConfiguration.ServerVariables[idx]["IP-description"] = fmt.Sprintf("%v", ipDescription)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -237,6 +236,45 @@ func WithPort(port string) SDKOption {
|
||||
}
|
||||
}
|
||||
|
||||
// WithProtocol allows setting the protocol variable for url substitution
|
||||
func WithProtocol(protocol string) SDKOption {
|
||||
return func(sdk *PlexAPI) {
|
||||
for idx := range sdk.sdkConfiguration.ServerVariables {
|
||||
if _, ok := sdk.sdkConfiguration.ServerVariables[idx]["protocol"]; !ok {
|
||||
continue
|
||||
}
|
||||
|
||||
sdk.sdkConfiguration.ServerVariables[idx]["protocol"] = fmt.Sprintf("%v", protocol)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// WithHost allows setting the host variable for url substitution
|
||||
func WithHost(host string) SDKOption {
|
||||
return func(sdk *PlexAPI) {
|
||||
for idx := range sdk.sdkConfiguration.ServerVariables {
|
||||
if _, ok := sdk.sdkConfiguration.ServerVariables[idx]["host"]; !ok {
|
||||
continue
|
||||
}
|
||||
|
||||
sdk.sdkConfiguration.ServerVariables[idx]["host"] = fmt.Sprintf("%v", host)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// WithGlobalServerURL allows setting the server_url variable for url substitution
|
||||
func WithGlobalServerURL(serverURL string) SDKOption {
|
||||
return func(sdk *PlexAPI) {
|
||||
for idx := range sdk.sdkConfiguration.ServerVariables {
|
||||
if _, ok := sdk.sdkConfiguration.ServerVariables[idx]["server_url"]; !ok {
|
||||
continue
|
||||
}
|
||||
|
||||
sdk.sdkConfiguration.ServerVariables[idx]["server_url"] = fmt.Sprintf("%v", serverURL)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// WithClient allows the overriding of the default HTTP client used by the SDK
|
||||
func WithClient(client HTTPClient) SDKOption {
|
||||
return func(sdk *PlexAPI) {
|
||||
@@ -245,9 +283,9 @@ func WithClient(client HTTPClient) SDKOption {
|
||||
}
|
||||
|
||||
// WithSecurity configures the SDK to use the provided security details
|
||||
func WithSecurity(accessToken string) SDKOption {
|
||||
func WithSecurity(token string) SDKOption {
|
||||
return func(sdk *PlexAPI) {
|
||||
security := components.Security{AccessToken: &accessToken}
|
||||
security := components.Security{Token: &token}
|
||||
sdk.sdkConfiguration.Security = utils.AsSecuritySource(&security)
|
||||
}
|
||||
}
|
||||
@@ -261,6 +299,83 @@ func WithSecuritySource(security func(context.Context) (components.Security, err
|
||||
}
|
||||
}
|
||||
|
||||
// WithAccepts allows setting the Accepts parameter for all supported operations
|
||||
func WithAccepts(accepts components.Accepts) SDKOption {
|
||||
return func(sdk *PlexAPI) {
|
||||
sdk.sdkConfiguration.Globals.Accepts = &accepts
|
||||
}
|
||||
}
|
||||
|
||||
// WithClientIdentifier allows setting the ClientIdentifier parameter for all supported operations
|
||||
func WithClientIdentifier(clientIdentifier string) SDKOption {
|
||||
return func(sdk *PlexAPI) {
|
||||
sdk.sdkConfiguration.Globals.ClientIdentifier = &clientIdentifier
|
||||
}
|
||||
}
|
||||
|
||||
// WithProduct allows setting the Product parameter for all supported operations
|
||||
func WithProduct(product string) SDKOption {
|
||||
return func(sdk *PlexAPI) {
|
||||
sdk.sdkConfiguration.Globals.Product = &product
|
||||
}
|
||||
}
|
||||
|
||||
// WithVersion allows setting the Version parameter for all supported operations
|
||||
func WithVersion(version string) SDKOption {
|
||||
return func(sdk *PlexAPI) {
|
||||
sdk.sdkConfiguration.Globals.Version = &version
|
||||
}
|
||||
}
|
||||
|
||||
// WithPlatform allows setting the Platform parameter for all supported operations
|
||||
func WithPlatform(platform string) SDKOption {
|
||||
return func(sdk *PlexAPI) {
|
||||
sdk.sdkConfiguration.Globals.Platform = &platform
|
||||
}
|
||||
}
|
||||
|
||||
// WithPlatformVersion allows setting the PlatformVersion parameter for all supported operations
|
||||
func WithPlatformVersion(platformVersion string) SDKOption {
|
||||
return func(sdk *PlexAPI) {
|
||||
sdk.sdkConfiguration.Globals.PlatformVersion = &platformVersion
|
||||
}
|
||||
}
|
||||
|
||||
// WithDevice allows setting the Device parameter for all supported operations
|
||||
func WithDevice(device string) SDKOption {
|
||||
return func(sdk *PlexAPI) {
|
||||
sdk.sdkConfiguration.Globals.Device = &device
|
||||
}
|
||||
}
|
||||
|
||||
// WithModel allows setting the Model parameter for all supported operations
|
||||
func WithModel(model string) SDKOption {
|
||||
return func(sdk *PlexAPI) {
|
||||
sdk.sdkConfiguration.Globals.Model = &model
|
||||
}
|
||||
}
|
||||
|
||||
// WithDeviceVendor allows setting the DeviceVendor parameter for all supported operations
|
||||
func WithDeviceVendor(deviceVendor string) SDKOption {
|
||||
return func(sdk *PlexAPI) {
|
||||
sdk.sdkConfiguration.Globals.DeviceVendor = &deviceVendor
|
||||
}
|
||||
}
|
||||
|
||||
// WithDeviceName allows setting the DeviceName parameter for all supported operations
|
||||
func WithDeviceName(deviceName string) SDKOption {
|
||||
return func(sdk *PlexAPI) {
|
||||
sdk.sdkConfiguration.Globals.DeviceName = &deviceName
|
||||
}
|
||||
}
|
||||
|
||||
// WithMarketplace allows setting the Marketplace parameter for all supported operations
|
||||
func WithMarketplace(marketplace string) SDKOption {
|
||||
return func(sdk *PlexAPI) {
|
||||
sdk.sdkConfiguration.Globals.Marketplace = &marketplace
|
||||
}
|
||||
}
|
||||
|
||||
func WithRetryConfig(retryConfig retry.Config) SDKOption {
|
||||
return func(sdk *PlexAPI) {
|
||||
sdk.sdkConfiguration.RetryConfig = &retryConfig
|
||||
@@ -277,16 +392,25 @@ func WithTimeout(timeout time.Duration) SDKOption {
|
||||
// New creates a new instance of the SDK with the provided options
|
||||
func New(opts ...SDKOption) *PlexAPI {
|
||||
sdk := &PlexAPI{
|
||||
SDKVersion: "0.25.0",
|
||||
SDKVersion: "0.26.0",
|
||||
sdkConfiguration: config.SDKConfiguration{
|
||||
UserAgent: "speakeasy-sdk/go 0.25.0 2.722.2 0.0.3 github.com/LukeHagar/plexgo",
|
||||
UserAgent: "speakeasy-sdk/go 0.26.0 2.723.11 1.1.1 github.com/LukeHagar/plexgo",
|
||||
Globals: globals.Globals{},
|
||||
ServerList: ServerList,
|
||||
ServerVariables: []map[string]string{
|
||||
{
|
||||
"protocol": "https",
|
||||
"ip": "10.10.10.47",
|
||||
"identifier": "0123456789abcdef0123456789abcdef",
|
||||
"IP-description": "1-2-3-4",
|
||||
"port": "32400",
|
||||
},
|
||||
{
|
||||
"protocol": "http",
|
||||
"host": "localhost",
|
||||
"port": "32400",
|
||||
},
|
||||
{
|
||||
"server_url": "http://localhost:32400",
|
||||
},
|
||||
},
|
||||
},
|
||||
hooks: hooks.New(),
|
||||
@@ -307,23 +431,34 @@ func New(opts ...SDKOption) *PlexAPI {
|
||||
sdk.sdkConfiguration.ServerURL = serverURL
|
||||
}
|
||||
|
||||
sdk.Server = newServer(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Media = newMedia(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Video = newVideo(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.General = newGeneral(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Events = newEvents(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Preferences = newPreferences(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Rate = newRate(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Timeline = newTimeline(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Activities = newActivities(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Butler = newButler(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Plex = newPlex(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.DownloadQueue = newDownloadQueue(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Hubs = newHubs(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Search = newSearch(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Library = newLibrary(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Watchlist = newWatchlist(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Collections = newCollections(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.DVRs = newDVRs(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Epg = newEpg(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.LiveTV = newLiveTV(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Log = newLog(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Playlists = newPlaylists(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Authentication = newAuthentication(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Statistics = newStatistics(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Sessions = newSessions(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Devices = newDevices(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Provider = newProvider(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Subscriptions = newSubscriptions(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Transcoder = newTranscoder(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Playlist = newPlaylist(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.LibraryPlaylists = newLibraryPlaylists(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.PlayQueue = newPlayQueue(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.UltraBlur = newUltraBlur(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Status = newStatus(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Updater = newUpdater(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Users = newUsers(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.Content = newContent(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
sdk.LibraryCollections = newLibraryCollections(sdk, sdk.sdkConfiguration, sdk.hooks)
|
||||
|
||||
return sdk
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user