質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Q&A

1回答

583閲覧

spotifyのapiを使ってアルバムをプレイリストに追加したいです

serum_oishi

総合スコア10

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

0グッド

0クリップ

投稿2019/08/25 01:26

編集2019/08/25 01:30

SpotifyのAPIを使ってプレイリストにトラックを追加する事が以下の記事からできました。

TrackIDを取り、自分のプレイリストに追加する事ができました。

http://sakanaaas.hateblo.jp/entry/2017/07/02/122740

そこで、次はアルバムなどをプレイリストに丸ごと追加したいと思ったのですが、つまづいてしまいました。

python3(プレイリストに追加するコード)

1#!/usr/bin/env python3 2# add_tracks_to_playlist.py 3 4import pprint 5import sys 6 7import spotipy 8import spotipy.util as util 9from spotify_token import Spotify_token 10 11if len(sys.argv) > 3: 12 username = sys.argv[1] 13 playlist_id = sys.argv[2] 14 track_ids = sys.argv[3:] 15else: 16 print("Usage: %s username playlist_id track_id ..." % (sys.argv[0],)) 17 sys.exit() 18 19ST = Spotify_token(username) 20token = ST.set() 21 22if token: 23 sp = spotipy.Spotify(auth=token) 24 sp.trace = False 25 results = sp.user_playlist_add_tracks(username, playlist_id, track_ids) 26 print(results) 27else: 28 print("Can't get token for", username)```

このtrackIDをalbumIDに変えてみたのですが、

#!/usr/bin/env python3 # add_tracks_to_playlist.py import pprint import sys import spotipy import spotipy.util as util from spotify_token import Spotify_token if len(sys.argv) > 3: username = sys.argv[1] playlist_id = sys.argv[2] album_id = sys.argv[3:] else: print("Usage: %s username playlist_id track_id ..." % (sys.argv[0],)) sys.exit() ST = Spotify_token(username) token = ST.set() if token: sp = spotipy.Spotify(auth=token) sp.trace = False results = sp.user_playlist_add_albums(username, playlist_id, album_id) print(results) else: print("Can't get token for", username)

以下のようなエラーがでました。

error

1AttributeError: 'Spotify' object has no attribute 'user_playlist_add_albums' 2コード

どうするばアルバムごとプレイリストに追加できますでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Python は、インデントが消えると別のプログラムになるので、インデントは正しく表示してください。


AttributeError: 'Spotify' object has no attribute 'user_playlist_add_albums'

user_playlist_add_albums が存在しないからですね。

Spotipy のドキュメントを読むとuser_playlist_add_albums はありません。

user_playlist_add_albums は、どこから出てきたのでしょうか?


album_tracks で、 アルバムからトラックを取り出して、取り出したトラックをループで回して、トラック ID か uri を user_playlist_add_tracks で、追加する感じになると思います。

とりあえず、こんな感じかなぁ。(未確認)

投稿2019/08/27 04:49

CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2019/08/27 04:50

回答欄に記載したコードが消えたのですが、回答の修正がうまくいかないので、記載したコードをとりあえず、コメントに書いておきます。(後で回答を修正します。) ``` uris=[] tracks = sp.album_tracks(album_id) for i in range(len(tracks['items'])): uri = album_tracks['items'][i]['uri'] uris.append(uri) sp.user_playlist_add_tracks(username, playlist_id, track_uris) ```
serum_oishi

2019/09/01 04:01

ご回答ありがとうございます!!遅くなってすみません。 いただいたコードを上記の部分に入れてみたのですが。。。 ``` spotipy.client.SpotifyException: http status: 400, code:-1 Payload contains a non-existing ID ``` とでました。 ``` #!/usr/bin/env python3 # add_tracks_to_playlist.py import pprint import sys import spotipy import spotipy.util as util from spotify_token import Spotify_token if len(sys.argv) > 3: username = sys.argv[1] playlist_id = sys.argv[2] track_id = sys.argv[3:] else: print("Usage: %s username playlist_id track_id ..." % (sys.argv[0],)) sys.exit() ST = Spotify_token(username) token = ST.set() if token: sp = spotipy.Spotify(auth=token) sp.trace = False results = sp.user_playlist_add_tracks(username, playlist_id, track_id) uris=[] tracks = sp.album_tracks(album_id) for i in range(len(tracks['items'])): uri = album_tracks['items'][i]['uri'] uris.append(uri) sp.user_playlist_add_tracks(username, playlist_id, track_uris) print(results) else: print("Can't get token for", username) ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問