Spotifyの再生待ちにgit stashしたかったみたいな話
Spotifyで何かしらのプレイリストを聴いているとき、ふと別のプレイリストを聴きたくなったりしないですか。
元々聴いていたプレイリストのどこまで視聴したかの情報は残して置きたいけど、別のを再生するとそれが飛んじゃうのでどうにかしたいんですよね。
「次に再生する」を工夫して使って普段はどうにかやっているのだけど、それをgit stash
みたいな感じでできたら便利じゃんって思って適当にアプリを書いていました。
やりたかったこと
- 再生キューを取得する
- それを被らなさそうなprefixと日付で名前を付けたプレイリストに保存
- 再生キューを空にする
- prefixと日付を含むプレイリストを探す
- プレイリストから再生キューを書き換える
- プレイリストを削除する
みたいなプレイリストでstashを再現してはどうかみたいな感じだった。
だめだった
なんかたまたまRemixでアプリ書いてみたみたいな記事を見たのでRemixで実装してみていた。結局頓挫したんですけど。
なんか2曲分しか出てこねえ!
まあ僕の実装が悪いんだろって思って、curlとか、Spotifyのコンソールとかでも試したんですけど、どうにも2件、または稀に10件くらいが返ってくるだけっぽくてわけわからんくなってお手上げになりました。
ドキュメントみても付け忘れているクエリとかもなさそうだし、ていうかこれって件数が多かったときにどうしたら良いAPIなんだろうとか思ってしまう。やめやもうやめ!!
誰かSpotifyのAPI詳しいマンおったら教えてください…
remixちょっと触った所感
crypto
って使えないんですか?
OAuth2に使うstateを生成したくって、crypto.getRandomValues
を叩きたかったのですけど、npm run dev
で試している分にはダメでした。
これを実行しているのはサーバーサイドのNode.jsだと思っているんですけど、Node.jsでもcryptoって使える認識だった。ググってもイシュー漁っても出てこん、なにか壮大に勘違いしている説ある。
export const createState = (length: number = 64) => {
let result = '';
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
const charactersLength = characters.length;
for (let i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
};
めちゃくちゃ適当なことしてる
loader
, action
どこで動いてんだこれ
わかんなくなる
これってどっちもサーバーサイドで合ってると思うんですけど、ドキュメント斜め読みのためenvが漏れないか常にヒヤヒヤしてしまう。
一つの.tsx
の中にページになるJSXとそのページにアクセスする前に走るloader
みたいな存在だという認識。action
は<Form>
とかでPOSTするとここにくる認識。なのでまあ一つのファイルにそのページが担いたいことをまとめてかけるのは良いかもなあと思いました。なんとなく慣れない感覚がありますけど。
試しにvercelにデプロイしてみたら、毎回20件取れるようになった。再生中とキューの先頭が同じなのも気になるけど…。
なので、手元のcurlを試したけどやっぱり2件だった。使えねえ!
どのみち、20件程度取れたところで、実用に向かないんですよねえ…
Spotify APIは本当に痒いところに手がとにかく届かない印象になってしまった(完)
気が向いたらっていうか、このAPIが使えそうだなってなったら続きやります。多分私には有用なので