Продолжительность трека #213
-
Добрый день! Я далек от программирования, поэтому надеюсь вы мне поможете.
но я не разобрался как она работает) вот мой скромный код:
Заранее спасибо! |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
Приведенный вами пример суммирует продолжительность всех треков, чтобы получить результат с разной размерностью (секунды, минуты, часы). У goofy нет встроенной функции, которая выполнит вашу задачу. Но это довольно просто реализовать. Для удобства добавил константу в начало кода. Измените function daylymix2() {
const MAX_DURATION_MS = 5 * 60 * 1000 // 5 минут в миллисекундах
let banTracks = [];
let savedTracks = Source.getSavedTracks();
let recentTracks = RecentTracks.get();
Combiner.push(banTracks, savedTracks, recentTracks);
let onlyForYouTracks = Source.getTracks([
{ name: 'Recommended songs based on Tirzah', id: '5PbNBGsgmwusXcfoJ63VUT' },
{ name: 'the sound of russian electronic', id: '3Eqk8Q21vdcEw6PwYSXwnD' },
{ name: 'the sound of russian indie', id: '5xa7wwrQ6oXuBaHJEpMUje' },
{ name: 'the sound of electronica', id: '6I0NsYzfoj7yHXyvkZYoRx' },
{ name: 'the sound of abstract hip-hop', id: '6R9oHYFwTr01u6KsUW1vXb' },
{ name: 'the sound of indie soul', id: '2I4WRSnG0wVgkbSasDUqKp' },
{ name: 'the sound of nu jazz', id: '26PD3pjcSfPuKUDV1jgfX8' },
{ name: 'the sound of trip-hop', id: '2wrc23l7JdQVcpPIcDGaed' },
//{ name: 'the sound of trip-hop', id: '3Eqk8Q21vdcEw6PwYSXwnD' },
]);
Filter.dedupTracks(onlyForYouTracks);
Filter.removeTracks(onlyForYouTracks, banTracks, savedTracks, recentTracks);
Order.shuffle(onlyForYouTracks);
Playlist.saveWithReplace({
id: '1GvK1LDktdiVr3SSvXOCLG',
tracks: onlyForYouTracks.filter(t => t.duration_ms <= MAX_DURATION_MS),
});
} Чтобы не копаться в тысячах рандома, могу предложить отфильтровать, например, по популярности и срезать верхний топ к себе. // ...
let output = onlyForYouTracks.filter(t => t.duration_ms <= MAX_DURATION_MS && t.popularity > 55)
Order.sort(output, 'meta.popularity', 'desc')
Playlist.saveWithReplace({
id: '1GvK1LDktdiVr3SSvXOCLG',
tracks: Selector.sliceFirst(output, 60),
}); |
Beta Was this translation helpful? Give feedback.
Приведенный вами пример суммирует продолжительность всех треков, чтобы получить результат с разной размерностью (секунды, минуты, часы).
У goofy нет встроенной функции, которая выполнит вашу задачу. Но это довольно просто реализовать. Для удобства добавил константу в начало кода. Измените
5
, если нужна другая продолжительность. Фильтрация произойдет в конце, до добавления в плейлист.