2017-01-23 2 views
0

YouTube Python API v3를 사용하여 인증 된 oauth2 사용자를 새 채널에 구독합니다.YouTube 파이썬 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 

https://developers.google.com/youtube/v3/docs/subscriptions/insert 잡아 것을 보인다 (아니면, I가 이해 ...) 사용자가 이미 channel_id 설명 채널에 등록되어있는 경우,이 함수는 subscriptionDuplicate위한 HttpError400 = e.resp.status으로 인상한다.

그러나 사용자가 이미 가입 한 채널을 구독하려고하면 함수는 일반적으로 subscription_idchannel_title을 반환합니다.

HttpError 400을 올려야하지 않습니까?

실수를하지 않고 함수가 올바르게 작동하는 경우 인증 된 사용자가 이미 channel_idsubscriptions().insert()만을 사용하여 구독하고 있는지 확인하려면 어떻게해야합니까?

사용자가 가입되어 있다면 확인하기 전에 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 

을하지만이 나는 또한 Subscriptions: insert 요청을 시도

답변

0

... 할당량 사용을 증가시키고 채널에서 사용할 것이라고 이미 구독했으며 오류가 발생하지 않았습니다 subscriptionDuplicate. 왜 API가이 오류를 반환하지 않았는지 알 수 없습니다.

인증 된 사용자가 이미 channel_id에 가입되어 있는지 확인하는 방법에 대한 질문에 답변하려면 Subscriptions: list을 사용하여 가입 한 모든 채널을 확인하십시오.

여기에 sample request입니다. channelId를 자신의 channelId로 바꾸십시오.

+0

@KENDdi 감사합니다. 예, 오늘 구독 내용을 확인하는 기능을 포함하도록 질문을 편집했습니다.하지만 할당량 사용량이 늘어납니다. 어쩌면 이것은'subscriptions()의 API 버그입니다. insert()'... –

+0

나중에 테스트 할 것입니다. 그것에 대한 단서를 찾으면 알려 드리겠습니다. – KENdi

+0

이 문제를 신고 한 사람이 있습니까? "https://code.google.com/p/gdata-issues/issues/detail?id=8935&q=subscriptionDuplicate&colspec=API%20ID%20Type%20Status%20Priority%20Stars%20Summary" 나는 이미이 문제에 투표. – KENdi