Автоматическое переключение на созданный плейлист #125
-
В связи с появившейся возможностью использовать Таскер, модернизирую свой старый скрипт. По встряхиванию телефона при каком-то включенном плейлисте, он доложен создать плейлист, сдвинув не прослушанные треки вверх и заменив остальные на похожие.
Хочу еще дополнить его переходом на этот созданный плейлист. Понимаю, что это делается с помощью
Но как получить ID созданного плейлиста? Или можно осуществить его включение как-то по другому? И еще нюанс. |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 6 replies
-
Обновил библиотеку. Теперь функции let remotePlaylistId = Playlist.saveWithReplace({
// ...
}); При каком условии должен случится переход по
Маркером плейлиста будет не то, что он включен, а само имя. Достаточно сделать условие с проверкой. // Если звездочка всегда последний символ, используем slice с аргументом -1
// Когда она есть, название не изменится, т.е. обновится существующий плейлист
Playlist.saveWithReplace({
name: playlist.name.slice(-1) == '*' ? playlist.name : `${playlist.name} *`,
// ...
});
// Если звездочка первая, просто нулевой индекс
Playlist.saveWithReplace({
name: playlist.name[0] == '*' ? playlist.name : `${playlist.name} *`,
// ...
}); |
Beta Was this translation helpful? Give feedback.
-
Сделал себе еще подобную штуку по треку. Тоже все ок. Но один нюанс. Сгенерированный плейлист какое-то время добирается до клиента и стартует его воспроизведение. Буквально несколько секунд. И это время плейбэк выгружается из всех клиентов и естественно ни чего не воспроизводится. Выглядит не очень. function RadioTask() {
track = Player.getPlayback().item;
let seed = [track];
let radioTracks = Source.craftTracks(seed);
let cacheLiked = Cache.read('LikedTracks.json');
let historyTracks = RecentTracks.get(5000);
Order.sort(radioTracks, 'meta.popularity', 'desc');
Filter.matchExcept(radioTracks, 'mix|club|radio|edit|live|karaoke');
Filter.removeTracks(radioTracks, cacheLiked);
Filter.removeTracks(radioTracks, historyTracks);
Filter.rangeDateRel(historyTracks);
Filter.removeArtists(radioTracks, historyTracks);
Filter.removeUnavailable(radioTracks);
Filter.dedupArtists(radioTracks);
let tracks = Combiner.push(seed, radioTracks);
let remotePlaylistId = Playlist.saveWithReplace({
name: tracks[0].name + ' &',
tracks: tracks,
description: Playlist.getDescription(tracks),
sourceCover: tracks[0].album.images[0].url,
public: false,
});
Utilities.sleep(20000);
Player.resume({
context_uri: `spotify:playlist:${remotePlaylistId}`,
});
} |
Beta Was this translation helpful? Give feedback.
Обновил библиотеку. Теперь функции
Playlist.save*
вернут id плейлиста, в который добавлялись треки. При любом сценарии: существующий плейлист, найденный по имени или только что созданный.При каком условии должен случится переход по
Player.resume
?Маркером плейлиста будет не то, что он включен, а само имя. Достаточно сделать условие с проверкой.