Pembuat Daftar Putar untuk Spotify

Pelajari bagaimana Spotify Web API (SWA) dan Google Apps Script (GAS) mengubah perpustakaan menjadi pembuat daftar putar yang fleksibel dengan eksekusi terjadwal gratis.





Yang kami maksud dengan pembuat daftar putar adalah mekanisme untuk mengumpulkan, memfilter, menyortir, dan menambahkan trek.





Tautan ke kode sumber dan dokumentasi di akhir artikel.





Masalah

Memiliki API resmi telah melahirkan banyak alat menarik untuk Spotify. Dalam konteks kami, pertimbangkan Daftar Putar yang Lebih Cerdas . Antarmuka grafis berupa grafik, banyak blok kontrol membuatnya cukup bersahabat untuk pengguna rata-rata.





Penggunaan layanan yang berlebihan menunjukkan sejumlah kerugian:





  • kurangnya riwayat mendengarkan





  • penambahan trek terbatas





  • jumlah terbatas dari jadwal mulai





  • pekerjaan yang salah dengan Cyrillic





Seiring waktu, keinginan untuk sumber trek baru ditambahkan di sini; algoritma penyaringan yang lebih kompleks. Layanan telah berhenti berkembang dalam hal fitur baru.

Dalam hubungan ini, ada keinginan akan alternatif yang menghilangkan kerugian tersebut.





Keputusan

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) : , .





Selanjutnya, kami membuat pemicu menggunakan sarana grafis GAS. Hasilnya, misalnya, satu menit sekali playlist akan diupdate dengan lima track acak.





function createHelloPlaylist() {
    let tracks = Source.getSavedTracks();
    Selector.keepRandom(tracks, 5);
    Playlist.saveWithReplace({
        name: 'Hello, playlist',
        tracks: tracks,
    });
}
      
      



2) Tampilkan trek favorit Anda yang tidak didengarkan selama lebih dari sebulan.





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) Dapatkan trek album dan single artis yang dilacak per minggu.





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',
    });
}
      
      



Tautan

Dokumentasi ditulis dengan fokus pada pengguna yang tidak terbiasa dengan pemrograman. Untuk memungkinkan penggunaan Goofy melalui templat dan contoh salin-tempel.





Kode sumber di GitHub , termasuk forum .








All Articles