UNPKG

@moscowcity/ym-api

Version:

Forked version of https://github.com/kontsevoye/ym-api with removed console.error

33 lines (32 loc) 1.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class UrlExtractor { extract(url, regex, entityName, groups) { return groups.reduce((carry, item) => { var _a, _b; const match = (_b = (_a = url.match(regex)) === null || _a === void 0 ? void 0 : _a.groups) === null || _b === void 0 ? void 0 : _b[item]; if (!match) { throw new Error(`non ${entityName} url received`); } carry[item] = match; return carry; }, {}); } extractTrackId(url) { const extracted = this.extract(url, /(https?:\/\/)?music\.yandex\.(ru|com|kz|by)\/album\/\d+\/track\/(?<id>\d+)/, "track", ["id"]); return Number(extracted.id); } extractAlbumId(url) { const extracted = this.extract(url, /(https?:\/\/)?music\.yandex\.(ru|com|kz|by)\/album\/(?<id>\d+)/, "album", ["id"]); return Number(extracted.id); } extractArtistId(url) { const extracted = this.extract(url, /(https?:\/\/)?music\.yandex\.(ru|com|kz|by)\/artist\/(?<id>\d+)/, "artist", ["id"]); return Number(extracted.id); } extractPlaylistId(url) { const extracted = this.extract(url, /(https?:\/\/)?music\.yandex\.(ru|com|kz|by)\/users\/(?<user>[\w\d\-_\.\@]+)\/playlists\/(?<id>\d+)/, "playlist", ["id", "user"]); return { id: Number(extracted.id), user: extracted.user }; } } exports.default = UrlExtractor;