Erfahren Sie, wie Spotify Web API (SWA) und Google Apps Script (GAS) die Bibliothek in einen flexiblen Builder für Wiedergabelisten mit kostenloser geplanter Ausführung verwandelt haben.
Mit Wiedergabelistenkonstruktor meinen wir einen Mechanismus zum Sammeln, Filtern, Sortieren und Hinzufügen von Titeln.
Links zum Quellcode und zur Dokumentation am Ende des Artikels.
Problem
Eine offizielle API hat viele interessante Tools für Spotify hervorgebracht. Betrachten Sie in unserem Kontext intelligentere Wiedergabelisten . Die grafische Oberfläche in Form von Grafiken, viele Steuerblöcke machen es für den Durchschnittsbenutzer recht freundlich.
Die starke Inanspruchnahme des Dienstes ergab eine Reihe von Nachteilen:
Mangel an Hörgeschichte
begrenzte Hinzufügung von Spuren
begrenzte Anzahl geplanter Starts
falsche Arbeit mit Kyrillisch
Im Laufe der Zeit kommt hier der Wunsch nach neuen Quellen für Tracks hinzu; komplexere Filteralgorithmen. Der Dienst hat die Entwicklung neuer Funktionen eingestellt.
In diesem Zusammenhang bestand der Wunsch nach einer Alternative, die diese Nachteile beseitigt.
Entscheidung
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) : , .
Als nächstes erstellen wir einen Trigger mit grafischen Mitteln von GAS. So wird beispielsweise die Wiedergabeliste einmal pro Minute mit fünf zufälligen Titeln aktualisiert.
function createHelloPlaylist() {
let tracks = Source.getSavedTracks();
Selector.keepRandom(tracks, 5);
Playlist.saveWithReplace({
name: 'Hello, playlist',
tracks: tracks,
});
}
2) Zeigen Sie Ihre Lieblingstitel an, die seit mehr als einem Monat nicht mehr gehört wurden.
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) Holen Sie sich Titel von Alben und Singles von verfolgten Künstlern pro Woche.
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
Die Dokumentation wurde mit einem Fokus auf den Benutzer geschrieben, der mit der Programmierung nicht vertraut ist. Um die Verwendung von Goofy durch Kopieren und Einfügen von Vorlagen und Beispielen zu ermöglichen.
Quellcode auf GitHub , einschließlich Forum .