Criador de lista de reprodução para Spotify

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 .








All Articles