私はYouTubeのPython API v3を使用して、oauth2認証ユーザーを新しいチャンネルに登録しています。 https://developers.google.com/youtube/v3/docs/subscriptions/insertからYouTubeのPython API v3 HttpError 400のサブスクリプション
def add_subscription(youtube, channel_id):
add_subscription_response = youtube.subscriptions().insert(
part='id,snippet',
body=dict(
snippet=dict(
resourceId=dict(
channelId=channel_id
)
)
)).execute()
return add_subscription_response["id"], add_subscription_response["snippet"]["title"]
youtube = get_authenticated_service(args)
try:
subscription_id,channel_title = add_subscription(youtube, args.channel_id)
except HttpError, e:
print "An HTTP error %d occurred:\n%s" % (e.resp.status, e.content)
else:
print "A subscription to '%s' was added." % channel_title
それはと思われる(または多分、私はそれを理解...)、ユーザーがすでにchannel_id
によって記述チャネルに登録されている場合、この関数はsubscriptionDuplicate
用= 400
e.resp.status
でHttpError
を上げる必要があります。
しかし、ユーザーが既に購読しているチャンネルを購読しようとすると、関数は通常subscription_id
とchannel_title
を返します。
HttpError 400
を上げるべきではありませんか?
私が間違いをしていない場合、これは機能がうまくいかなければならない場合、認証されたユーザーがすでにchannel_id
にサブスクライブしているかどうか確認するにはどうすればよいですか?subscriptions().insert()
?
私は、ユーザーが購読しているかどうかを確認するために、前subscriptions().list()
呼び出すことができます。私もSubscriptions: insert
リクエストを試してみましたし、そのチャネルで使用
def is_subscribed(youtube, channel_id):
is_subscription_response = youtube.subscriptions().list(
part='id',
mine='true',
forChannelId=channel_id
).execute()
if len(is_subscription_response["items"]) == 0:
return False
else:
return True
しかし、これは、クォータの使用率を増加させる...
@KENDdiありがとうございます、私は知っています(今はサブスクリプションをチェックする機能を含むように編集しました)が、これによりクォータの使用量が増えます。おそらく、これは 'subscriptions()のAPIバグです。insert()' ... –
私はそれについて何か手がかりを見つけたら、後でいくつかのテストを行います。 – KENdi
あなたはこの問題を提出していますか?「https://code.google.com/p/gdata-issues/issues/detail?id=8935&q=subscriptionDuplicate&colspec=API%20ID%20Type%20Status%20Priority%20Stars%20Summary」私はすでにこの問題に投票しています。 – KENdi