Отбор любимых треков #113
-
Всем привет |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 4 replies
-
Попробуем следующим образом. Вначале задать id трека, процент отклонения и ключи, чьи значения сравнивать. Чем больше ключей, тем меньше будет треков. У меня уже при трех ключах выходит один трек - исходный. function findSimilarSavedTracks() {
const TRACK_ID = '0evOmsnfWAqsGJlSTICgz7';
const PERCENT = 5;
const KEYS = ['danceability','valence'];
let features = {};
Object.entries(getCachedTracks([{ id: TRACK_ID }], { features: {} }).features[TRACK_ID]).forEach(item => {
let key = item[0];
let value = item[1];
if (KEYS.includes(key) && !isNaN(value)){
features[key] = {
value: value,
min: value * (100 - PERCENT) / 100,
max: value * (100 + PERCENT) / 100
};
}
});
let savedTracks = Source.getSavedTracks();
Filter.rangeTracks(savedTracks, { features: features });
Playlist.saveWithReplace({
// id: '',
name: 'Похоже на трек',
tracks: savedTracks,
});
} |
Beta Was this translation helpful? Give feedback.
-
Видоизмененный вариант, где задаются проценты под каждый ключ и источник это все треки из фонотеки function findSimilarSavedTracks() {
const TRACK_ID = '0evOmsnfWAqsGJlSTICgz7';
const RANGE = {
energy: 4,
danceability: 8,
valence: 15,
}
let features = {};
let keys = Object.keys(RANGE);
Object.entries(getCachedTracks([{ id: TRACK_ID }], { features: {} }).features[TRACK_ID]).forEach(item => {
let key = item[0];
let value = item[1];
if (keys.includes(key) && !isNaN(value)){
features[key] = {
value: value,
min: value * (100 - RANGE[key]) / 100,
max: value * (100 + RANGE[key]) / 100
};
}
});
let tracks = Source.getFollowedTracks({type: 'all'});
Filter.rangeTracks(tracks, { features: features });
Filter.dedupTracks(tracks);
Playlist.saveWithReplace({
// id: '',
name: 'Похоже на трек',
tracks: tracks,
});
} |
Beta Was this translation helpful? Give feedback.
-
@Chimildic большое спасибо за оперативность. Попробовал скрипт, поизменял ключи, в итоге получается либо вообще мало, либо много непохожего на заданный трек. |
Beta Was this translation helpful? Give feedback.
Попробуем следующим образом. Вначале задать id трека, процент отклонения и ключи, чьи значения сравнивать. Чем больше ключей, тем меньше будет треков. У меня уже при трех ключах выходит один трек - исходный.