Rubyでの開発で最近学習したこと Rspec
Rubyでの開発について最近学習したこと rbenv, gem, rubygems, bundler
最近っつっても一月くらい前に書いて以降ほったらかしにしてたやつです。長いので目次付きです。
自分用のメモ代わりに書いてたもので、いちおうわりと知識がなくても頭からおっていけば忘れてからでも分かるように丁寧に書いたつもりですが、文体とか構成とか基礎知識がおかしいところには目をつむってくだしあ
- Ruby開発環境やツールの学習
- 続き
scdlでLikeしたプレイリストをとってくる(こともできる)
ふつうにscdl -l https://soundcloud.com/userID -f
とかやると、Likeしたプレイリストはとれず、なぜか先頭の曲だけ落ちるんですが、soundcloud APIの仕様ぽいので諦めてました。
自分のアカウントからは/setsで見れるので、各プレイリストのidをスクレイピングで取得してscdlに投げる方法を以前やったのですが、他人のアカウントでは使えませんでした。
ところがこちらの記事によれば、公開はされていないAPIを利用することで可能とのこと。
'playlist_likes': ('https://api.soundcloud.com/e1/users/{0}/playlist_likes?limit=5'),
これをソースのAPIのURLのdictに追加して、
elif dl_type == 'playlist_likes': download_playlist(item['playlist'])
みたいにすれば確かに任意のユーザのLikeのうちプレイリストのみDLすることができました。ただし、めっちゃ頻繁に503になってしまうので、limitパラメータとtime.sleepで余裕をもたせています。
Goでスライスの任意のインデックスに挿入
ちなみに「任意のインデックスを削除」はこれでやってます。
実装
package main import "fmt" func main(){ n := []int{1, 2, 3,} incert_target := 9999 intint := make([][]int, 0) for i:=0; i<len(n)+1; i++{ intint = append(intint, incert(i, incert_target, n)) } fmt.Println(intint) } func incert(index int, x int, origin []int)(ret []int){ ret = append([]int{}, origin...) ret = append(ret[:index], append([]int{x}, ret[index:]...)...) return }
Goのスライスの応用的な使い方はこれを一通りみればいいです
ちなみにdelete
はmapの組み込み関数なので注意。