Удалить из фонотеки прослушанные альбомы и плейлисты #127
-
Возможна ли проверка всех избранных альбомов фонотеки на предмет того, что треки в них уже в истории прослушивания и/или в любимых треках, и удаления их из фонотеки в этом случае? Получить треки всех избранных альбомов и отнять от них историю и лайки, это понятно. Но как определить какие альбомы остались без треков, чтобы удалить их из фонотеки? |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 13 replies
-
Обновил библиотеку. Сделал функцию получения сохраненных альбомов публичной getSavedAlbums. Переменная let banTracks = Combiner.push(Source.getSavedTracks(), RecentTracks.get());
let filteredAlbums = Source.getSavedAlbums().filter(album => {
Filter.removeTracks(album.tracks.items, banTracks);
if (album.tracks.items.length == 0) {
console.log('Альбом', album.name, 'от', album.artists[0].name, 'полностью прослушан');
return true;
}
});
// Library.deleteAlbums(filteredAlbums); |
Beta Was this translation helpful? Give feedback.
-
А аналогично можно с избранными плейлистами делать? Уточню. Это все совершенно не обязательно, если требует каких-то серьезных телодвижений. А то мне уже неудобно, что ни попрошу - тут же под мои хотелки вся библиотека перекраивается )) |
Beta Was this translation helpful? Give feedback.
-
Вновь обновил библиотеку для работы с избранными плейлистами. Описанный алгоритм возможен, но есть нюансы реализации:
Вижу как минимум два решения:
Запустив следующий код без изменений, после обновления, в консоле будут имена плейлистов, которые попали под раздачу. Поможет определиться с белым списком. Обновил код под алгоритм из комментариев. let banTracks = Combiner.push(Source.getSavedTracks(), RecentTracks.get());
let playlists = Source.getFollowedTracks({
isFlat: false,
exclude: [
// { name: '', id: '' },
]
});
let logs = [];
let filteredPlaylists = playlists.filter(p => {
let copyTracks = Selector.sliceCopy(p.tracks.items);
Filter.rangeDateRel(copyTracks, 182);
if (copyTracks.length > 0) {
return false;
}
logs.push(`\nПлейлист не обновлялся минимум полгода ${p.name} (${p.id})`);
Filter.removeTracks(p.tracks.items, banTracks);
if (p.tracks.items.length == 0) {
logs.push('Все треки прослушаны')
return true;
}
logs.push(`${p.tracks.items.length} - треков нет в истории`);
});
console.log(logs.join('\n'))
// Library.unfollowPlaylists(filteredPlaylists);
|
Beta Was this translation helpful? Give feedback.
Обновил библиотеку. Сделал функцию получения сохраненных альбомов публичной getSavedAlbums.
Переменная
filteredAlbums
будет содержать альбомы, в которых не осталось треков после фильтра поbanTracks
. Отдав результат вLibrary.deleteAlbums
, эти альбомы удалятся. Закомментировал строчку поскольку деструктивное действие.