電波ビーチ

☆(ゝω・)v

scdlでLikeしたプレイリストをとってくる(こともできる)

ふつうにscdl -l https://soundcloud.com/userID -fとかやると、Likeしたプレイリストはとれず、なぜか先頭の曲だけ落ちるんですが、soundcloud APIの仕様ぽいので諦めてました。

or3.hatenablog.com

自分のアカウントからは/setsで見れるので、各プレイリストのidをスクレイピングで取得してscdlに投げる方法を以前やったのですが、他人のアカウントでは使えませんでした。

stackoverflow.com

ところがこちらの記事によれば、公開はされていない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で余裕をもたせています。