{"version":3,"sources":["jsdelivr-header.js","/npm/pavie@1.0.7/pavie.js"],"names":[],"mappings":"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","file":"/npm/pavie@1.0.7/pavie.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/pavie@1.0.7/pavie.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const uuid = require(\"uuid\")\nconst axios = require(\"axios\")\nconst querystring = require(\"querystring\")\nconst errorHandler = require(\"./errorHandler\")\n\nmodule.exports = class {\n  constructor(settings) {\n    this.username = settings.username\n    this.password = settings.password\n    this.clientId = uuid.v4()\n  }\n\n  getToken() {\n    if (this.user) {\n      return this.user.authToken\n    }\n    console.warn(`You are not yet signin !`)\n    return new Error(response)\n  }\n\n  /**\n   * Online API\n   * This medoth must be called first !\n   */\n  async signin() {\n    const response = await axios\n      .post(`https://plex.tv/api/v2/users/signin`,\n        { login: this.username, password: this.password },\n        {\n          headers: {\n            \"X-Plex-Client-Identifier\": this.clientId\n          }\n        })\n      .catch(err => new Error(err))\n\n    if (response.status < 400) {\n      this.user = response.data\n\n      const resources = await this.getResources()\n      const resource = resources.filter(res => res.name === `Plex Server`)[0]\n      const connection = resource.connections.filter(con => con.local)[0]\n\n      this.instance = axios.create({\n        baseURL: `${connection.protocol}://${connection.address}:${connection.port}`,\n        headers: {\n          \"X-Plex-Client-Identifier\": this.clientId,\n          \"X-Plex-Token\": this.getToken()\n        }\n      })\n\n      return this.user\n    } else {\n      throw new Error(\"Signin failed !\")\n    }\n  }\n\n  /**\n   * Online API\n   * Get the list of resources with connection settings\n   * Conection : [name, protocol, address, port, uri, local, relay, IPv6]\n   */\n  async getResources() {\n    const response = await axios.get(`https://plex.tv/api/v2/resources`, {\n        headers: {\n          \"X-Plex-Client-Identifier\": this.clientId,\n          \"X-Plex-Token\": this.getToken()\n        }\n      })\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  /**\n   *  Online API\n   *  Get user info.\n   *  Return: [id, uuid, username, title, email, thumb, authToken, certificateVersion, rememberExpiresAt]\n   */\n  async getUser() {\n    const response = await axios\n      .get(`https://plex.tv/api/v2/user?includeSubscriptions=1&includeSettings=1&includeSharedSettings=1`,\n        {\n          headers: {\n            \"X-Plex-Client-Identifier\": this.clientId,\n            \"X-Plex-Token\": this.getToken()\n          }\n        })\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  /**\n   *  Get basic info about the Plex server.\n   * Return: [machineIdentifier, version]\n   */\n  async getIdentity() {\n    const response = await this.instance\n      .get(`/identity`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  /**\n   *  Get the list actions availables.\n   *  ie : platform, platformVersion, updatedAt, version, machineIdentifier, myPlexUsername\n   *  Return : [activities, butler, channels, clients, devices, diagnostics, hubs, library, livetv, media, player, playlists, resources, search, server, ...]\n   */\n  async getActions() {\n    const response = await this.instance\n      .get(`/`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  /**\n   * Refresh a section\n   */\n  async refresh(library = \"sections\", sectionId = 2) {\n    const response = await this.instance\n      .get(`/library/${library}/${sectionId}/refresh`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  /**\n   * Get a list of servers\n   * Return: [name, host, address, port, machineIdentifier, version]\n   */\n  async getServers() {\n    const response = await this.instance\n      .get(\"/servers\")\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  /**\n   * Get synchronize info\n   */\n  async getSynchronize() {\n    const response = await this.instance\n      .get(\"/video/trakt/sync\")\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  /**\n   * Synchronize Plex and Trakt.tv\n   */\n  async synchronize(accoundId = \"1&amp;t=1565171925.59\") {\n    const response = await this.instance\n      .get(`/video/trakt/sync/synchronize?account_id=${accoundId}`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  /**\n   * Get all playlists\n   */\n  async getPlaylists() {\n    const response = await this.instance\n      .get(`/playlists`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  /**\n   * Get playlist basic info\n   */\n  async getPlaylist(ratingKey) {\n    const response = await this.instance\n      .get(`/playlists/${ratingKey}`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  /**\n   * Get playlist video files\n   */\n  async getPlaylistFiles(ratingKey) {\n    const response = await this.instance\n      .get(`/playlists/${ratingKey}/items`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  /**\n   * Add playlist\n   */\n  async addPlaylist(data) {\n    data = Object.assign({ smart: 0, type: \"video\" }, data)\n\n    const response = await this.instance\n      .post(`/playlists?${querystring.stringify(data)}`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  /**\n   * Update playlist\n   */\n  async updatePlaylist(ratingKey, data) {\n    const response = await this.instance\n      .put(`/playlists/${ratingKey}?${querystring.stringify(data)}`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  /**\n   * Update playlist files\n   */\n  async updatePlaylistFiles(ratingKey, uri) {\n    const response = await this.instance\n      .put(`/playlists/${ratingKey}/items?uri=${uri}`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  /**\n   * Remove playlist\n   */\n  async removePlaylist(ratingKey) {\n    const response = await this.instance\n      .delete(`/playlists/${ratingKey}`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  /**\n   * Get history\n   */\n  async getHistory(filters = {}) {\n    filters = Object.assign({ sort: \"viewedAt:desc\" }, filters)\n\n    const response = await this.instance\n      .get(`/status/sessions/history/all?${querystring.stringify(filters)}`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  /**\n   * Get metadata of a media\n   */\n  async getMedatadata(id) {\n    const response = await this.instance\n      .get(`/library/metadata/${id}?includePreferences=1`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  /**\n   * Get children metadata of a media\n   * ie: Seasons metadata for a specified Tv Show\n   */\n  async getMedatadataChildren(id, options = {}) {\n    options = Object.assign({ excludeAllLeaves: 1 }, options)\n\n    const response = await this.instance\n      .get(`/library/metadata/${id}/children?${querystring.stringify(options)}`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  async getRelated(id, options = {}) {\n    options = Object.assign(\n      {\n        excludeFields: \"summary\",\n        includeExternalMetadata: 1,\n        asyncAugmentMetadata: 1\n      },\n      options\n    )\n\n    const response = await this.instance\n      .get(`/hubs/metadata/${id}/related?${querystring.stringify(options)}`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  async getSimilar(id) {\n    const response = await this.instance\n      .get(`/hubs/metadata/${id}/similar`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  /**\n   * Return an image\n   * url: /library/metadata/25963/thumb/1557058611?X-Plex-Token=fPHNF2Wkg84qDPprCbqy\n   */\n  async getImage(url, options = {}) {\n    options = Object.assign(\n      {\n        width: 170,\n        height: 96,\n        minSize: 1,\n        upscale: 1,\n        url: url\n      },\n      options\n    )\n\n    const response = await this.instance\n      .get(`/photo/:/transcode?${querystring.stringify(options)}`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  /**\n   * Global search\n   */\n  async search(query, options = {}) {\n    options = Object.assign({ includeCollections: 1, sectionId: null, limit: null, query: query }, options)\n\n    const response = await this.instance\n      .get(`/hubs/search?${querystring.stringify(options)}`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  async getTvShows(options = {}) {\n    options = Object.assign({ type: 2, unwatchedLeaves: 0, sort: null }, options)\n\n    const response = await this.instance\n      .get(`/library/sections/2/all?${querystring.stringify(options)}`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  async getSeasons(options = {}) {\n    options = Object.assign({ type: 3, includeCollections: 1, sort: null }, options)\n\n    const response = await this.instance\n      .get(`/library/sections/2/all?${querystring.stringify(options)}`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n\n  async getEpisodes(options = {}) {\n    options = Object.assign({ type: 4, includeCollections: 1, sort: null }, options)\n\n    const response = await this.instance\n      .get(`/library/sections/2/all?${querystring.stringify(options)}`)\n      .catch(err => new Error(err))\n\n    return errorHandler(response)\n  }\n}\n"]}