Фильтр по регулярному выражению для исполнителя #79
-
Фильтрую треки и альбомы содержащие кириллицу |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 12 replies
-
Чуть ниже обсуждалась похожая проблема. Filter.matchArtist = function (items, strRegex, invert = false) {
let regex = new RegExp(strRegex, 'i');
let filteredTracks = items.filter((item) => {
if (typeof item == 'undefined') {
return false;
} else if (item.hasOwnProperty('album')) {
return (
invert ^
(regex.test(item.artists[0].name.formatName()))
);
}
return invert ^ regex.test(item.name.formatName());
});
Combiner.replace(items, filteredTracks);
}; С помощью |
Beta Was this translation helpful? Give feedback.
-
В последних версиях исполнитель учитывается без дополнительных правок. Старый ответ // Строго: все части должны иметь кириллицу
Filter.matchAll = function (tracks, strRegex) {
let regex = new RegExp(strRegex, 'i');
let filteredTracks = tracks.filter((track) => {
return regex.test(track.name.formatName()) &&
regex.test(track.album.name.formatName()) &&
regex.test(track.artists[0].name.formatName());
});
Combiner.replace(tracks, filteredTracks);
}
// Не строго: хотя бы где-то есть кириллица
Filter.matchAll = function (tracks, strRegex) {
let regex = new RegExp(strRegex, 'i');
let filteredTracks = tracks.filter((track) => {
return regex.test(track.name.formatName()) ||
regex.test(track.album.name.formatName()) ||
regex.test(track.artists[0].name.formatName());
});
Combiner.replace(tracks, filteredTracks);
} И вызвать подобным образом. Filter.matchAll(tracks, '^[а-я0-9 ]+$'); Регулярное выражение будет отбирать только кириллицу (возможно с числами) и пробелы (для нескольких слов). Остальные спец символы удаляются при вызове |
Beta Was this translation helpful? Give feedback.
В последних версиях исполнитель учитывается без дополнительных правок.
Старый ответ
Можно объединить вместе (трек, альбом, исполнитель). Также по инструкции добавив следующую функцию