UNPKG

@jjdenhertog/plex-music-search

Version:

Library to find tracks in your Plex Library

93 lines (92 loc) 4.54 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = hubSearch; /* eslint-disable unicorn/prefer-code-point */ /* eslint-disable prefer-template */ /* eslint-disable unicorn/prefer-string-replace-all */ var music_search_1 = require("@jjdenhertog/music-search"); var AxiosRequest_1 = require("../utils/AxiosRequest"); var getAPIUrl_1 = __importDefault(require("../utils/getAPIUrl")); function hubSearch(uri, token, query, limit) { if (limit === void 0) { limit = 5; } return new Promise(function (resolve, reject) { // Fix forbidden characters var forbiddenCharacters = ['(', ')']; for (var i = 0; i < forbiddenCharacters.length; i++) { var element = forbiddenCharacters[i]; query = query.split(element).join(''); } var url = (0, getAPIUrl_1.default)(uri, "/hubs/search?query=".concat(fixedEncodeURIComponent(query.trim()), "&limit=").concat(limit)); AxiosRequest_1.AxiosRequest.get(url, token) .then(function (result) { var response = []; if (result.data.MediaContainer.Hub.length > 0) { for (var i = 0; i < result.data.MediaContainer.Hub.length; i++) { var hub = result.data.MediaContainer.Hub[i]; if (hub.type == "album" && hub.Metadata) { for (var j = 0; j < hub.Metadata.length; j++) { var metadata = hub.Metadata[j]; response.push({ type: "album", id: metadata.key, ratingKey: metadata.ratingKey, guid: metadata.guid, score: metadata.score, image: metadata.thumb, year: metadata.year, title: metadata.title, artist: { guid: metadata.parentGuid, id: metadata.parentKey, title: (0, music_search_1.removeFeaturing)(metadata.parentTitle), alternative_title: "", image: metadata.parentThumb, }, }); } } if (hub.type == "track" && hub.Metadata) { for (var j = 0; j < hub.Metadata.length; j++) { var metadata = hub.Metadata[j]; response.push({ type: "track", id: metadata.key, ratingKey: metadata.ratingKey, guid: metadata.guid, score: metadata.score, image: metadata.thumb, title: metadata.title, album: { id: metadata.parentKey, guid: metadata.parentGuid, title: metadata.parentTitle, year: metadata.parentYear, image: metadata.parentThumb, }, artist: { id: metadata.grandparentKey, guid: metadata.grandparentGuid, title: (0, music_search_1.removeFeaturing)(metadata.originalTitle || metadata.grandparentTitle), image: metadata.grandparentThumb, } }); } } } } resolve(response); }) .catch(function (_error) { console.error("Plex API Request failed:\n".concat(url)); reject("Could not connect to server"); }); }); } function fixedEncodeURIComponent(str) { return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { return '%' + c.charCodeAt(0).toString(16); }); }