Saiba como o Spotify Web API (SWA) e o Google Apps Script (GAS) transformaram a biblioteca em um criador de listas de reprodução flexível com execução programada gratuita.
Por construtor de lista de reprodução, queremos dizer um mecanismo para coletar, filtrar, classificar e adicionar faixas.
Links para o código-fonte e documentação no final do artigo.
Problema
Ter uma API oficial gerou muitas ferramentas interessantes para o Spotify. Em nosso contexto, considere listas de reprodução mais inteligentes . A interface gráfica na forma de gráficos, muitos blocos de controle tornam-no bastante amigável para o usuário médio.
O uso intenso do serviço revelou uma série de desvantagens:
falta de história de escuta
adição limitada de faixas
número limitado de partidas programadas
trabalho incorreto com cirílico
Com o tempo, o desejo por novas fontes de faixas é adicionado aqui; algoritmos de filtragem mais complexos. O serviço parou de se desenvolver em termos de novos recursos.
Nesse sentido, desejava-se uma alternativa que eliminasse essas desvantagens.
Decisão
GAS JavaScript - Goofy. () .
GAS , . , 6 ; API 20 . , . Smarter Playlists, . .
, Goofy
, ,
Last.fm , ,
. . Goofy . , .
SWA 50 . 51- 1-.
GAS Google Drive. SWA . , . , .
. 30 . . "" SWA.
- Last.fm. . , . , Spotify Google Drive. Last.fm Spotify.
( GAS) ( , ). .
1) : , .
A seguir, criamos um gatilho por meio gráfico de GAS. Como resultado, por exemplo, uma vez por minuto, a lista de reprodução será atualizada com cinco faixas aleatórias.
function createHelloPlaylist() {
let tracks = Source.getSavedTracks();
Selector.keepRandom(tracks, 5);
Playlist.saveWithReplace({
name: 'Hello, playlist',
tracks: tracks,
});
}
2) Revele suas faixas favoritas que não foram ouvidas por mais de um mês.
function templateSavedAndForgot(){
let recentTracks = Source.getRecentTracks(2500);
let savedTracks = Source.getSavedTracks();
Filter.removeTracks(savedTracks, recentTracks);
let startDate = new Date('2006-01-01');
let endDate = Filter.getDateRel(30, 'endDay');
Filter.rangeDateAbs(savedTracks, startDate, endDate);
Selector.keepRandom(savedTracks, 20);
Order.sort(savedTracks, 'meta.added_at', 'asc');
Playlist.saveWithReplace({
name: ' ',
tracks: savedTracks,
randomCover: 'update', //
});
}
3) Obtenha faixas de álbuns e singles de artistas rastreados por semana.
function createNewRelease() {
const playlistId = 'abc';
let tracks = Source.getArtistsTracks({
artist: {
followed_include: true
},
album: {
groups: 'album,single',
release_date: { sinceDays: 7, beforeDays: 0 }
},
});
Order.shuffle(tracks);
Combiner.push(tracks, Source.getPlaylistTracks('name', playlistId));
Filter.removeTracks(tracks, RecentTracks.get(3000));
Filter.matchOriginalOnly(tracks);
Playlist.saveWithReplace({
id: playlistId,
name: ' ',
tracks: tracks,
randomCover: 'update',
});
}
Links
A documentação foi escrita com foco no usuário que não está familiarizado com programação. Para tornar possível usar o Goofy por meio de modelos e exemplos de copiar e colar.
Código-fonte no GitHub, incluindo fórum .