diff --git a/README.md b/README.md index 08dd754..0b371b1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # plex-api-oauth + An NPM Module designed to make Plex Media Server and plex.tv API calls easier to implement in JavaScript and React projects @@ -7,6 +8,8 @@ https://www.npmjs.com/package/plex-api-oauth This is a JavaScript Module written to take the OAuth Module written by @Dmbob https://github.com/Dmbob/plex-oauth and incorporate it into a front end friend frame work to make development of Plex API Based applications better +# Interactive API Explorer: https://lukehagar.com/plex-api-oauth + ## How to Use Examples Assume React Syntax @@ -15,7 +18,8 @@ Examples Assume React Syntax LoadPlexSession: Function returns an object that contains the plexClientInformation and plexTVAuthToken keys/values according to how they were created -``` JavaScript + +```JavaScript const loadedSession = LoadPlexSession(); if (loadedSession.plexClientInformation == null){ loadedSession.plexClientInformation = CreatePlexClientInformation(); @@ -30,7 +34,8 @@ const [plexTVAuthToken, setPlexTVAuthToken] = useState( ``` ### Login Button + Save Session -``` JavaScript + +```JavaScript async function PlexLoginButton() { const tempPlexTVAuthToken = await PlexLogin(plexClientInformation); const tempPlexTVUserData = await GetPlexUserData( @@ -51,7 +56,8 @@ const [plexTVAuthToken, setPlexTVAuthToken] = useState( ``` ### Refresh Data with Saved Session -``` JavaScript + +```JavaScript async function Refresh() { const tempPlexTVUserData = await GetPlexUserData( plexClientInformation, @@ -76,7 +82,8 @@ const [plexTVAuthToken, setPlexTVAuthToken] = useState( ``` ### Update Library list when the topic is changed (artists. albums, songs) -``` JavaScript + +```JavaScript async function UpdateLibrary() { setIsLoading(true); const returnObject = await GetLibraryPages( @@ -98,7 +105,8 @@ const [plexTVAuthToken, setPlexTVAuthToken] = useState( ``` ### Intersection observer to load more library items when the callbackref object comes into view -``` JavaScript + +```JavaScript const observer = useRef(); const lastLibraryItem = useCallback( (node) => { @@ -117,26 +125,28 @@ const [plexTVAuthToken, setPlexTVAuthToken] = useState( ``` ### Intersection observer Callback usage -``` JavaScript - if (libraryItems?.length === index + 100) { - return ( - - - - - - - {Obj.title} - {Obj.grandparentTitle} -{' '} - {Obj.parentTitle} - - - - ); - } + +```JavaScript + if (libraryItems?.length === index + 100) { + return ( + + + + + + + {Obj.title} - {Obj.grandparentTitle} -{' '} + {Obj.parentTitle} + + + + ); + } ``` ### Intersection observer to load more library items when the callbackref object comes into view -``` JavaScript + +```JavaScript const observer = useRef(); const lastLibraryItem = useCallback( (node) => { @@ -155,15 +165,209 @@ const [plexTVAuthToken, setPlexTVAuthToken] = useState( ``` ### Get Plex Music Hub data -``` JavaScript + +```JavaScript async function UpdateHubs(plexClientInformation, plexServers, plexLibraries) { const tempMusicHubs = await GetMusicHub( plexClientInformation, - plexServers, // No Auth Token is needed since the server entries have their own access tokens + plexServers, // No Auth Token is needed since the server objects have their own access tokens plexLibraries ); setMusicHubs(tempMusicHubs); } ``` +## Commands: +### CreatePlexClientInformation + +Accepts: input values + +Generates the Client Information to uniquely identify the Authenticated client +Save between sessions for consistency + +```JavaScript +input = {product:"LukeHagar.com"} +plexClientInformation = CreatePlexClientInformation(input); +``` + +### PlexLogin + +Accepts: plexClientInformation + +If command is run in a browser window it will open the new login window automatically + +```JavaScript +plexTVAuthToken = PlexLogin(plexClientInformation); +``` + +### GetPlexUserData + +Accepts: plexClientInformation, plexTVAuthToken + +Queries the plex.tv api to get information on the authenticated user + +```JavaScript +plexUserData = GetPlexUserData(plexClientInformation, plexTVAuthToken); +``` + +### GetPlexServers + +Accepts an Object with partial client values, will populate the remaining ones left blank if needed + +```JavaScript +plexServers = GetPlexServers(plexClientInformation, plexTVAuthToken); +``` + +### GetPlexMovies + +Accepts an Object with partial client values, will populate the remaining ones left blank if needed + +```JavaScript +input = {product:"LukeHagar.com"} +plexClientInformation = CreatePlexClientInformation(input); +``` + +### GetPlexShows + +Accepts an Object with partial client values, will populate the remaining ones left blank if needed + +```JavaScript +input = {product:"LukeHagar.com"} +plexClientInformation = CreatePlexClientInformation(input); +``` + +### GetPlexSeasons + +Accepts an Object with partial client values, will populate the remaining ones left blank if needed + +```JavaScript +input = {product:"LukeHagar.com"} +plexClientInformation = CreatePlexClientInformation(input); +``` + +### GetPlexEpisodes + +Accepts an Object with partial client values, will populate the remaining ones left blank if needed + +```JavaScript +input = {product:"LukeHagar.com"} +plexClientInformation = CreatePlexClientInformation(input); +``` + +### GetPlexMovieLibraries + +Accepts an Object with partial client values, will populate the remaining ones left blank if needed + +```JavaScript +input = {product:"LukeHagar.com"} +plexClientInformation = CreatePlexClientInformation(input); +``` + +### GetPlexMusicLibraries + +Accepts an Object with partial client values, will populate the remaining ones left blank if needed + +```JavaScript +input = {product:"LukeHagar.com"} +plexClientInformation = CreatePlexClientInformation(input); +``` + +### GetPlexTVShowLibraries + +Accepts an Object with partial client values, will populate the remaining ones left blank if needed + +```JavaScript +input = {product:"LukeHagar.com"} +plexClientInformation = CreatePlexClientInformation(input); +``` + +### GetPlexArtists + +Accepts an Object with partial client values, will populate the remaining ones left blank if needed + +```JavaScript +input = {product:"LukeHagar.com"} +plexClientInformation = CreatePlexClientInformation(input); +``` + +### GetPlexAlbums + +Accepts an Object with partial client values, will populate the remaining ones left blank if needed + +```JavaScript +input = {product:"LukeHagar.com"} +plexClientInformation = CreatePlexClientInformation(input); +``` + +### GetPlexSongs + +Accepts an Object with partial client values, will populate the remaining ones left blank if needed + +```JavaScript +input = {product:"LukeHagar.com"} +plexClientInformation = CreatePlexClientInformation(input); +``` + +### GetPlexLibraries + +Accepts an Object with partial client values, will populate the remaining ones left blank if needed + +```JavaScript +input = {product:"LukeHagar.com"} +plexClientInformation = CreatePlexClientInformation(input); +``` + +### GetPlexDevices + +Accepts an Object with partial client values, will populate the remaining ones left blank if needed + +```JavaScript +input = {product:"LukeHagar.com"} +plexClientInformation = CreatePlexClientInformation(input); +``` + +### ### GetLibraryPages + +Accepts an Object with partial client values, will populate the remaining ones left blank if needed + +```JavaScript +input = {product:"LukeHagar.com"} +plexClientInformation = CreatePlexClientInformation(input); +``` + +### LoadPlexSession + +Accepts an Object with partial client values, will populate the remaining ones left blank if needed + +```JavaScript +input = {product:"LukeHagar.com"} +plexClientInformation = CreatePlexClientInformation(input); +``` + +### SavePlexSession + +Accepts an Object with partial client values, will populate the remaining ones left blank if needed + +```JavaScript +input = {product:"LukeHagar.com"} +plexClientInformation = CreatePlexClientInformation(input); +``` + +### GetMusicHub + +Accepts an Object with partial client values, will populate the remaining ones left blank if needed + +```JavaScript +input = {product:"LukeHagar.com"} +plexClientInformation = CreatePlexClientInformation(input); +``` + +### GetArtistPage + +Accepts an Object with partial client values, will populate the remaining ones left blank if needed + +```JavaScript +input = {product:"LukeHagar.com"} +plexClientInformation = CreatePlexClientInformation(input); +```