我正在使用YouTube python API v3將oauth2認證用戶訂閱到新頻道。YouTube python API v3 HttpError 400 subscriptionDeplicate
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
從https://developers.google.com/youtube/v3/docs/subscriptions/insert似乎(或也許,我理解,...),如果用戶已訂閱由channel_id
描述的信道,則該函數應該提高的HttpError
與e.resp.status
= 400
用於subscriptionDuplicate
。不過,如果我嘗試訂閱用戶已訂閱的頻道,則該功能通常會返回subscription_id
和channel_title
。
它不應該提高HttpError 400
?
而且,如果我沒有犯錯誤,而且這正是該功能的工作方式,那麼我該如何檢查經過身份驗證的用戶是否已使用subscriptions().insert()
訂閱channel_id
?
我可以調用之前subscriptions().list()
,以檢查是否用戶訂閱:
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感謝,是的,我知道(我只是編輯今天我的問題,包括檢查訂閱功能),但是這會增加配額使用情況。也許這是一個'訂閱()的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