Spotify Web API(SWA)とGoogle Apps Script(GAS)が、ライブラリを無料のスケジュールされた実行を備えた柔軟なプレイリストビルダーにどのように変えたかをご覧ください。
プレイリストコンストラクターとは、トラックを収集、フィルタリング、並べ替え、追加するためのメカニズムを意味します。
記事の最後にあるソースコードとドキュメントへのリンク。
問題
公式APIを持つことで、Spotifyに多くの興味深いツールが生まれました。私たちの文脈では、よりスマートなプレイリストを検討してください。グラフ形式のグラフィカルインターフェイス、多くの制御ブロックにより、平均的なユーザーにとって非常に使いやすくなっています。
サービスを多用すると、いくつかの欠点が明らかになりました。
リスニング履歴の欠如
トラックの限定追加
限られた数の予定された開始
Cyrillicでの誤った作業
時間の経過とともに、新しいトラックソースへの欲求がここに追加されます。より複雑なフィルタリングアルゴリズム。このサービスは、新機能の観点から開発を停止しました。
これに関連して、これらの不利な点を排除する代替案が望まれていました。
決定
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) : , .
次に、GASのグラフィカルな手段を使用してトリガーを作成します。その結果、たとえば、1分に1回、プレイリストは5つのランダムなトラックで更新されます。
function createHelloPlaylist() {
let tracks = Source.getSavedTracks();
Selector.keepRandom(tracks, 5);
Playlist.saveWithReplace({
name: 'Hello, playlist',
tracks: tracks,
});
}
2)1か月以上聴いていないお気に入りのトラックを公開します。
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)毎週、追跡されたアーティストのアルバムとシングルのトラックを取得します。
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',
});
}
リンク
ドキュメントは、プログラミングに精通していないユーザーに焦点を当てて書かれています。コピー&ペーストのテンプレートと例を通じてGoofyを使用できるようにするため。