Découvrez comment l' API Web Spotify (SWA) et Google Apps Script (GAS) ont transformé la bibliothèque en un générateur de playlist flexible avec une exécution planifiée gratuite.
Par constructeur de playlist, nous entendons un mécanisme de collecte, de filtrage, de tri et d'ajout de pistes.
Liens vers le code source et la documentation à la fin de l'article.
Problème
Avoir une API officielle a engendré de nombreux outils intéressants pour Spotify. Dans notre contexte, envisagez des playlists plus intelligentes . L'interface graphique sous forme de graphiques, de nombreux blocs de contrôle le rendent assez convivial pour l'utilisateur moyen.
Une utilisation intensive du service a révélé un certain nombre d'inconvénients:
manque d'historique d'écoute
ajout limité de pistes
nombre limité de démarrages programmés
travail incorrect avec cyrillique
Au fil du temps, le désir de nouvelles sources de pistes s'ajoute ici; algorithmes de filtrage plus complexes. Le service a cessé de se développer en termes de nouvelles fonctionnalités.
A cet égard, on souhaitait une alternative qui élimine ces inconvénients.
Décision
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) : , .
Ensuite, nous créons un déclencheur en utilisant des moyens graphiques de GAS. En conséquence, par exemple, une fois par minute, la liste de lecture sera mise à jour avec cinq pistes aléatoires.
function createHelloPlaylist() {
let tracks = Source.getSavedTracks();
Selector.keepRandom(tracks, 5);
Playlist.saveWithReplace({
name: 'Hello, playlist',
tracks: tracks,
});
}
2) Révélez vos morceaux préférés qui n'ont pas été écoutés depuis plus d'un mois.
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) Obtenez des pistes d'albums et de singles d'artistes suivis par semaine.
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',
});
}
Liens
La documentation a été rédigée en mettant l'accent sur l'utilisateur qui n'est pas familiarisé avec la programmation. Pour rendre possible l'utilisation de Goofy grâce à des modèles et exemples de copier-coller.
Code source sur GitHub , y compris le forum .