ekuinox logs

Spotifyの再生待ちにgit stashしたかったみたいな話


Spotifyで何かしらのプレイリストを聴いているとき、ふと別のプレイリストを聴きたくなったりしないですか。

元々聴いていたプレイリストのどこまで視聴したかの情報は残して置きたいけど、別のを再生するとそれが飛んじゃうのでどうにかしたいんですよね。

「次に再生する」を工夫して使って普段はどうにかやっているのだけど、それをgit stashみたいな感じでできたら便利じゃんって思って適当にアプリを書いていました。

やりたかったこと

みたいなプレイリストでstashを再現してはどうかみたいな感じだった。

だめだった

ekuinox/stash-spotify - GitHub

なんかたまたま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件取れるようになった。再生中とキューの先頭が同じなのも気になるけど…。

なんか20件は取れてる

なので、手元のcurlを試したけどやっぱり2件だった。使えねえ!

どのみち、20件程度取れたところで、実用に向かないんですよねえ…

Spotify APIは本当に痒いところに手がとにかく届かない印象になってしまった(完)


気が向いたらっていうか、このAPIが使えそうだなってなったら続きやります。多分私には有用なので