UNPKG

ym-api

Version:

A Node.js wrapper for the Yandex.Music API (Unofficial) http://music.yandex.ru

33 lines (32 loc) 1.42 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\/album\/\d+\/track\/(?<id>\d+)/, "track", ["id"]); return Number(extracted.id); } extractAlbumId(url) { const extracted = this.extract(url, /(https?:\/\/)?music\.yandex\.ru\/album\/(?<id>\d+)/, "album", ["id"]); return Number(extracted.id); } extractArtistId(url) { const extracted = this.extract(url, /(https?:\/\/)?music\.yandex\.ru\/artist\/(?<id>\d+)/, "artist", ["id"]); return Number(extracted.id); } extractPlaylistId(url) { const extracted = this.extract(url, /(https?:\/\/)?music\.yandex\.ru\/users\/(?<user>[\w\d\-_\.]+)\/playlists\/(?<id>\d+)/, "playlist", ["id", "user"]); return { id: Number(extracted.id), user: extracted.user }; } } exports.default = UrlExtractor;